Files
grzanieplus.pl/plugins/stAdminGeneratorPlugin/lib/stAdminGeneratorUserConfiguration.php
2025-03-12 17:06:23 +01:00

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);
}
}