%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/components/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/components/SettingsManager.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2017 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\components;
use Yii;
use humhub\libs\BaseSettingsManager;
use humhub\modules\content\components\ContentContainerActiveRecord;
use humhub\modules\content\components\ContentContainerSettingsManager;
/**
* SettingsManager application component
*
* @since 1.1
* @author Luke
*/
class SettingsManager extends BaseSettingsManager
{
/**
* @var ContentContainerSettingsManager[] already loaded content container settings managers
*/
protected $contentContainers = [];
/**
* Returns content container
*
* @param ContentContainerActiveRecord $container
* @return ContentContainerSettingsManager
*/
public function contentContainer(ContentContainerActiveRecord $container)
{
if (isset($this->contentContainers[$container->contentcontainer_id])) {
return $this->contentContainers[$container->contentcontainer_id];
}
$this->contentContainers[$container->contentcontainer_id] = new ContentContainerSettingsManager([
'moduleId' => $this->moduleId,
'contentContainer' => $container,
]);
return $this->contentContainers[$container->contentcontainer_id];
}
/**
* Clears runtime cached content container settings
*
* @param ContentContainerActiveRecord|null $container if null all content containers will be flushed
*/
public function flushContentContainer(ContentContainerActiveRecord $container = null)
{
if ($container === null) {
$this->contentContainers = [];
} else {
unset($this->contentContainers[$container->contentcontainer_id]);
}
}
/**
* Returns ContentContainerSettingsManager for the given $user or current logged in user
* @return ContentContainerSettingsManager
*/
public function user($user = null)
{
if (!$user) {
$user = Yii::$app->user->getIdentity();
}
return $this->contentContainer($user);
}
/**
* Returns ContentContainerSettingsManager for the given $space or current controller space
* @return ContentContainerSettingsManager
*/
public function space($space = null)
{
if ($space != null) {
return $this->contentContainer($space);
} elseif (Yii::$app->controller instanceof \humhub\modules\content\components\ContentContainerController) {
if (Yii::$app->controller->contentContainer instanceof \humhub\modules\space\models\Space) {
return $this->contentContainer(Yii::$app->controller->contentContainer);
}
}
}
/**
* Indicates this setting is fixed in configuration file and cannot be
* changed at runtime.
*
* @param string $name
* @return boolean
*/
public function isFixed($name)
{
return isset(Yii::$app->params['fixed-settings'][$this->moduleId][$name]);
}
/**
* @inheritdoc
*/
public function get($name, $default = null)
{
if ($this->isFixed($name)) {
return Yii::$app->params['fixed-settings'][$this->moduleId][$name];
}
return parent::get($name, $default);
}
}