setDispatcher($dispatcher) ->setCode($event->getCode()) ->setLocale($event->getLocale()) ->setTitle($event->getTitle()) ->setChapo($event->getChapo()) ->setDescription($event->getDescription()) ->setPostscriptum($event->getPostscriptum()) ; $profile->save(); $event->setProfile($profile); } /** * @param ProfileEvent $event * @param $eventName * @param EventDispatcherInterface $dispatcher */ public function update(ProfileEvent $event, $eventName, EventDispatcherInterface $dispatcher) { if (null !== $profile = ProfileQuery::create()->findPk($event->getId())) { $profile ->setDispatcher($dispatcher) ->setLocale($event->getLocale()) ->setTitle($event->getTitle()) ->setChapo($event->getChapo()) ->setDescription($event->getDescription()) ->setPostscriptum($event->getPostscriptum()) ; $profile->save(); $event->setProfile($profile); } } /** * @param ProfileEvent $event */ public function updateResourceAccess(ProfileEvent $event) { if (null !== $profile = ProfileQuery::create()->findPk($event->getId())) { ProfileResourceQuery::create()->filterByProfileId($event->getId())->delete(); foreach ($event->getResourceAccess() as $resourceCode => $accesses) { $manager = new AccessManager(0); $manager->build($accesses); $profileResource = new ProfileResource(); $profileResource->setProfileId($event->getId()) ->setResource(ResourceQuery::create()->findOneByCode($resourceCode)) ->setAccess($manager->getAccessValue()); $profileResource->save(); } $event->setProfile($profile); } } /** * @param ProfileEvent $event */ public function updateModuleAccess(ProfileEvent $event) { if (null !== $profile = ProfileQuery::create()->findPk($event->getId())) { ProfileModuleQuery::create()->filterByProfileId($event->getId())->delete(); foreach ($event->getModuleAccess() as $moduleCode => $accesses) { $manager = new AccessManager(0); $manager->build($accesses); $profileModule = new ProfileModule(); $profileModule->setProfileId($event->getId()) ->setModule(ModuleQuery::create()->findOneByCode($moduleCode)) ->setAccess($manager->getAccessValue()); $profileModule->save(); } $event->setProfile($profile); } } /** * @param ProfileEvent $event */ public function delete(ProfileEvent $event) { if (null !== $profile = ProfileQuery::create()->findPk($event->getId())) { $profile ->delete() ; $event->setProfile($profile); } } /** * {@inheritDoc} */ public static function getSubscribedEvents() { return array( TheliaEvents::PROFILE_CREATE => array("create", 128), TheliaEvents::PROFILE_UPDATE => array("update", 128), TheliaEvents::PROFILE_DELETE => array("delete", 128), TheliaEvents::PROFILE_RESOURCE_ACCESS_UPDATE => array("updateResourceAccess", 128), TheliaEvents::PROFILE_MODULE_ACCESS_UPDATE => array("updateModuleAccess", 128), ); } }