. */ /* */ /*************************************************************************************/ namespace Thelia\Action; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Thelia\Model\ConfigQuery; use Thelia\Model\Config as ConfigModel; use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Event\Config\ConfigUpdateEvent; use Thelia\Core\Event\Config\ConfigCreateEvent; use Thelia\Core\Event\Config\ConfigDeleteEvent; class Config extends BaseAction implements EventSubscriberInterface { /** * Create a new configuration entry * * @param \Thelia\Core\Event\Config\ConfigCreateEvent $event */ public function create(ConfigCreateEvent $event) { $config = new ConfigModel(); $config->setDispatcher($this->getDispatcher())->setName($event->getEventName())->setValue($event->getValue()) ->setLocale($event->getLocale())->setTitle($event->getTitle())->setHidden($event->getHidden()) ->setSecured($event->getSecured())->save(); $event->setConfig($config); } /** * Change a configuration entry value * * @param \Thelia\Core\Event\Config\ConfigUpdateEvent $event */ public function setValue(ConfigUpdateEvent $event) { if (null !== $config = $search->findPk($event->getConfigId())) { if ($event->getValue() !== $config->getValue()) { $config->setDispatcher($this->getDispatcher())->setValue($event->getValue())->save(); $event->setConfig($config); } } } /** * Change a configuration entry * * @param \Thelia\Core\Event\Config\ConfigUpdateEvent $event */ public function modify(ConfigUpdateEvent $event) { if (null !== $config = ConfigQuery::create()->findPk($event->getConfigId())) { $config->setDispatcher($this->getDispatcher())->setName($event->getEventName())->setValue($event->getValue()) ->setHidden($event->getHidden())->setSecured($event->getSecured())->setLocale($event->getLocale()) ->setTitle($event->getTitle())->setDescription($event->getDescription())->setChapo($event->getChapo()) ->setPostscriptum($event->getPostscriptum())->save(); $event->setConfig($config); } } /** * Delete a configuration entry * * @param \Thelia\Core\Event\Config\ConfigDeleteEvent $event */ public function delete(ConfigDeleteEvent $event) { if (null !== ($config = ConfigQuery::create()->findPk($event->getConfigId()))) { if (!$config->getSecured()) { $config->setDispatcher($this->getDispatcher())->delete(); $event->setConfig($config); } } } /** * {@inheritDoc} */ public static function getSubscribedEvents() { return array( TheliaEvents::CONFIG_CREATE => array( "create", 128 ), TheliaEvents::CONFIG_SETVALUE => array( "setValue", 128 ), TheliaEvents::CONFIG_UPDATE => array( "modify", 128 ), TheliaEvents::CONFIG_DELETE => array( "delete", 128 ), ); } }