157 lines
4.5 KiB
PHP
157 lines
4.5 KiB
PHP
<?php
|
|
|
|
class stAdminGeneratorUserConfiguration
|
|
{
|
|
protected $context;
|
|
protected $modified = array();
|
|
protected $moduleName;
|
|
protected $actionName;
|
|
|
|
/**
|
|
* Domyślna instancja
|
|
*
|
|
* @var self
|
|
*/
|
|
protected static $default = null;
|
|
|
|
/**
|
|
* Zwraca domyślną instancje - Konfiguracja ogólną
|
|
*
|
|
* @param sfContext $context
|
|
* @return self
|
|
*/
|
|
public static function getDefault(sfContext $context)
|
|
{
|
|
if (null === self::$default)
|
|
{
|
|
self::$default = new self($context, 'stAdminGenerator', 'default');
|
|
}
|
|
|
|
return self::$default;
|
|
}
|
|
|
|
public function __construct(sfContext $context, ?string $moduleName = null, ?string $actionName = null)
|
|
{
|
|
$this->context = $context;
|
|
$this->moduleName = null !== $moduleName ? $moduleName : $context->getModuleName();
|
|
$this->actionName = null !== $actionName ? $actionName : $context->getActionName();
|
|
}
|
|
|
|
/**
|
|
* Zwraca wartość parametru
|
|
*
|
|
* @param string $name Nazwa parametru
|
|
* @param mixed $default Wartość domyślna
|
|
* @param mixed $moduleName Opcjonalna nazwa modułu dla którego ma zostać zwrócona wartość parametru
|
|
* @param mixed $actionName Opcjonana nazwa akcji dla której ma zostać zwrócona wartość parametru
|
|
* @return mixed Wartość
|
|
* @throws PropelException
|
|
*/
|
|
public function getParameter(string $name, $default = null, $moduleName = null, $actionName = null)
|
|
{
|
|
if (null === $moduleName)
|
|
{
|
|
$moduleName = $this->moduleName;
|
|
}
|
|
|
|
if (null === $actionName)
|
|
{
|
|
$actionName = $this->actionName;
|
|
}
|
|
|
|
$namespace = stAdminGenerator::getModuleNamespace($moduleName, $actionName, 'config');
|
|
|
|
$parameters = $this->load($namespace);
|
|
|
|
return isset($parameters[$name]) ? $parameters[$name] : $default;
|
|
}
|
|
|
|
/**
|
|
* Ustawia wartość dla parametru
|
|
*
|
|
* @param string $name Nazwa parametru
|
|
* @param mixed $value Wartość
|
|
* @param string|null $moduleName Opcjonalna nazwa modułu dla którego ma zostać zapamiętana wartość parametru
|
|
* @param string|null $actionName Opcjonana nazwa akcji dla której ma zostać zapamiętana wartość parametru
|
|
* @return void
|
|
*/
|
|
public function setParameter(string $name, $value, $moduleName = null, $actionName = null)
|
|
{
|
|
if (null === $moduleName)
|
|
{
|
|
$moduleName = $this->moduleName;
|
|
}
|
|
|
|
if (null === $actionName)
|
|
{
|
|
$actionName = $this->actionName;
|
|
}
|
|
|
|
$namespace = stAdminGenerator::getModuleNamespace($moduleName, $actionName, 'config');
|
|
|
|
$this->load($namespace);
|
|
|
|
$this->context->getUser()->setParameter($name, $value, $namespace);
|
|
|
|
$this->modified[$namespace] = $namespace;
|
|
}
|
|
|
|
/**
|
|
* Zapisuje konfiguracje
|
|
*
|
|
* @return void
|
|
* @throws PropelException
|
|
*/
|
|
public function save()
|
|
{
|
|
foreach ($this->modified as $namespace)
|
|
{
|
|
$parameters = $this->context->getUser()->getParameterHolder()->getAll($namespace);
|
|
|
|
if ($parameters)
|
|
{
|
|
$configuration = AdminGeneratorUserConfigurationPeer::retrieveByNamespace($this->context->getUser()->getGuardUser(), $namespace);
|
|
|
|
if (null === $configuration)
|
|
{
|
|
$configuration = AdminGeneratorUserConfigurationPeer::create($this->context->getUser()->getGuardUser(), $namespace);
|
|
}
|
|
|
|
$configuration->setParameters($parameters);
|
|
|
|
$configuration->save();
|
|
}
|
|
}
|
|
|
|
$this->modified = array();
|
|
}
|
|
|
|
/**
|
|
* Wczytuje konfiguracja
|
|
*
|
|
* @param string $namespace
|
|
* @return mixed
|
|
* @throws PropelException
|
|
*/
|
|
protected function load(string $namespace)
|
|
{
|
|
if (!$this->context->getUser()->getParameterHolder()->hasNamespace($namespace))
|
|
{
|
|
$configuration = AdminGeneratorUserConfigurationPeer::retrieveByNamespace($this->context->getUser()->getGuardUser(), $namespace);
|
|
|
|
if ($configuration)
|
|
{
|
|
$parameters = $configuration->getParameters();
|
|
}
|
|
else
|
|
{
|
|
$parameters = array();
|
|
}
|
|
|
|
$parameters = $this->context->getUser()->getParameterHolder()->add($parameters, $namespace);
|
|
}
|
|
|
|
return $this->context->getUser()->getParameterHolder()->getAll($namespace);
|
|
}
|
|
}
|