/** * On kernel request action * * @param GetResponseEvent $event Event object * * @return void */ public function onKernelRequest(GetResponseEvent $event) { $request = $event->getRequest(); $requester = new Requester($request); if ($requester->hasUsername()) { $this->blameableListener->setUserValue($requester); } }
/** * Set the username from the security context by listening on core.request * * @param GetResponseEvent $event */ public function onKernelRequest(GetResponseEvent $event) { if (null === $this->securityContext) { return; } $token = $this->securityContext->getToken(); if (null !== $token && $this->securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')) { $this->blameableListener->setUserValue($token->getUser()); } }
/** * Set the username from the security context by listening on core.request * * @param GetResponseEvent $event */ public function onKernelRequest(GetResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } if (null === $this->tokenStorage || null === $this->authorizationChecker) { return; } $token = $this->tokenStorage->getToken(); if (null !== $token && $this->authorizationChecker->isGranted('IS_AUTHENTICATED_REMEMBERED')) { $this->blameableListener->setUserValue($token->getUser()); } }
/** * @param GetResponseEvent $event */ public function onKernelRequest(GetResponseEvent $event) { $em = ServiceUtil::get('doctrine.entitymanager'); try { if (\System::isInstalling()) { $uid = 2; } else { $uid = UserUtil::getVar('uid'); } $user = $em->getReference('ZikulaUsersModule:UserEntity', $uid); $this->blameableListener->setUserValue($user); } catch (\Exception $e) { // silently fail - likely installing and tables not available } }
/** * {@inheritDoc} */ public function setUserValue($user) { if (is_object($user) && $this->getUserClass() && !is_a($user, $this->getUserClass())) { throw new InvalidArgumentException(sprintf('User value must be an instance of %s; %s given', $this->getUserClass(), get_class($user))); } parent::setUserValue($user); }
/** * @param EventManager $manager * @param EntityManagerInterface $em * @param Reader $reader */ public function addSubscribers(EventManager $manager, EntityManagerInterface $em, Reader $reader = null) { $subscriber = new BlameableListener(); if ($this->guard->check()) { $subscriber->setUserValue($this->guard->user()); } $this->addSubscriber($subscriber, $manager, $reader); }
protected function setUp() { parent::setUp(); $evm = new EventManager(); $blameableListener = new BlameableListener(); $blameableListener->setUserValue('testuser'); $evm->addEventSubscriber($blameableListener); $this->getMockSqliteEntityManager($evm); }
protected function setUp() { parent::setUp(); if (version_compare(PHP_VERSION, '5.4.0') < 0) { $this->markTestSkipped('PHP >= 5.4 version required for this test.'); } $listener = new BlameableListener(); $listener->setUserValue('testuser'); $evm = new EventManager(); $evm->addEventSubscriber($listener); $this->getMockSqliteEntityManager($evm); }
protected function setUp() { parent::setUp(); $user = new User(); $user->setUsername(self::TEST_USERNAME); $listener = new BlameableListener(); $listener->setUserValue($user); $evm = new EventManager(); $evm->addEventSubscriber($listener); $manager = $this->getMockDocumentManager($evm); $manager->persist($user); $this->populate(); $manager->flush(); }
/** * * @return EntityManager */ public function getEntityManager() { $cache = new DoctrineCache\ArrayCache(); $annotationReader = new AnnotationReader(); $cachedAnnotationReader = new CachedReader($annotationReader, $cache); // create a driver chain for metadata reading $driverChain = new MappingDriverChain(); // load superclass metadata mapping only, into driver chain // also registers Gedmo annotations.NOTE: you can personalize it Gedmo\DoctrineExtensions::registerAbstractMappingIntoDriverChainORM($driverChain, $cachedAnnotationReader); // now we want to register our application entities, // for that we need another metadata driver used for Entity namespace $annotationDriver = new AnnotationDriver($cachedAnnotationReader, $this->paths); $driverChain->addDriver($annotationDriver, $this->namespace); // general ORM configuration $isDevMode = $this->env != "production"; $config = DoctrineSetup::createAnnotationMetadataConfiguration($this->paths, $isDevMode); $config->setMetadataCacheImpl($cache); $config->setQueryCacheImpl($cache); $config->setMetadataDriverImpl($driverChain); $config->setProxyDir($this->proxy_path); $config->setProxyNamespace($this->namespace . '\\Proxy'); $config->setAutoGenerateProxyClasses($isDevMode); // Third, create event manager and hook prefered extension listeners $evm = new EventManager(); // gedmo extension listeners // sluggable $sluggableListener = new Gedmo\Sluggable\SluggableListener(); // you should set the used annotation reader to listener, to avoid creating new one for mapping drivers $sluggableListener->setAnnotationReader($cachedAnnotationReader); $evm->addEventSubscriber($sluggableListener); // tree $treeListener = new Gedmo\Tree\TreeListener(); $treeListener->setAnnotationReader($cachedAnnotationReader); $evm->addEventSubscriber($treeListener); // loggable, not used in example $loggableListener = new Gedmo\Loggable\LoggableListener(); $loggableListener->setAnnotationReader($cachedAnnotationReader); $loggableListener->setUsername('unknown'); $evm->addEventSubscriber($loggableListener); // timestampable $timestampableListener = new Gedmo\Timestampable\TimestampableListener(); $timestampableListener->setAnnotationReader($cachedAnnotationReader); $evm->addEventSubscriber($timestampableListener); // blameable $blameableListener = new Gedmo\Blameable\BlameableListener(); $blameableListener->setAnnotationReader($cachedAnnotationReader); $blameableListener->setUserValue('unknown'); // determine from your environment $evm->addEventSubscriber($blameableListener); // translatable - buggy !!! /* $translatableListener = new Gedmo\Translatable\TranslatableListener(); // current translation locale should be set from session or hook later into the listener // most important, before entity manager is flushed $translatableListener->setTranslatableLocale('en'); $translatableListener->setDefaultLocale('en'); $translatableListener->setAnnotationReader($cachedAnnotationReader); $evm->addEventSubscriber($translatableListener); */ // sortable, not used in example $sortableListener = new Gedmo\Sortable\SortableListener(); $sortableListener->setAnnotationReader($cachedAnnotationReader); $evm->addEventSubscriber($sortableListener); // mysql set names UTF-8 if required $evm->addEventSubscriber(new \Doctrine\DBAL\Event\Listeners\MysqlSessionInit()); // Finally, create entity manager return EntityManager::create($this->dbParams, $config, $evm); }