. */ /* */ /*************************************************************************************/ 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\ConfigChangeEvent; use Thelia\Core\Event\ConfigCreateEvent; use Thelia\Core\Event\ConfigDeleteEvent; class Config extends BaseAction implements EventSubscriberInterface { /** * Create a new configuration entry * * @param 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 ConfigChangeEvent $event */ public function setValue(ConfigChangeEvent $event) { $search = ConfigQuery::create(); if (null !== $config = $search->findOneById($event->getConfigId())) { if ($event->getValue() !== $config->getValue()) { $config ->setDispatcher($this->getDispatcher()) ->setValue($event->getValue()) ->save() ; $event->setConfig($config); } } } /** * Change a configuration entry * * @param ConfigChangeEvent $event */ public function modify(ConfigChangeEvent $event) { $search = ConfigQuery::create(); if (null !== $config = ConfigQuery::create()->findOneById($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 ConfigDeleteEvent $event */ public function delete(ConfigDeleteEvent $event) { if (null !== ($config = ConfigQuery::create()->findOneById($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), ); } }