예제 #1
0
 /**
  * @param EventArgs $args
  */
 public function prePersist(EventArgs $args)
 {
     $em = $args->getEntityManager();
     $entity = $args->getEntity();
     if ($entity instanceof InstanceInterface && !$entity->getInstance() && ($tenant = $em->getTenant())) {
         $entity->setTenant($tenant);
     }
 }
 /**
  * @param \Doctrine\ORM\Event\LifecycleEventArgs $args
  *
  * @return \Sonata\MediaBundle\Provider\MediaProviderInterface
  */
 protected function getProvider(EventArgs $args)
 {
     $media = $args->getEntity();
     if (!$media instanceof MediaInterface) {
         return null;
     }
     return $this->getPool()->getProvider($media->getProviderName());
 }
 /**
  * @param EventArgs $args
  * @param string $method
  * @return mixed|void
  */
 public function getLoggingInfo(EventArgs $args, $method = '')
 {
     $entity = $args->getEntity();
     if ($this->getSecurityContext()->getToken() && $this->getSecurityContext()->getToken()->getUser() != 'anon.') {
         $username = $this->getSecurityContext()->getToken()->getUser()->getUsername();
     } else {
         $username = '******';
     }
     $this->logger->info(sprintf('entity %s', $method), array('username' => $username, 'class' => get_class($entity), 'id' => $entity->getId()));
 }
 /**
  * @param EventArgs $args
  * @param string $method
  * @return mixed|void
  */
 public function getLoggingInfo(EventArgs $args, $method = '')
 {
     $entity = $args->getEntity();
     if ($this->getTokenStorage()->getToken() && $this->getTokenStorage()->getToken()->getUser() != 'anon.') {
         $username = $this->getTokenStorage()->getToken()->getUser()->getUsername();
     } else {
         $username = '******';
     }
     $id = method_exists($entity, 'getId') ? $entity->getId() : null;
     $this->logger->info(sprintf('entity %s', $method), array('username' => $username, 'class' => get_class($entity), 'id' => $id));
 }
 /**
  * @inheritdoc
  */
 protected function getMedia(EventArgs $args)
 {
     $media = $args->getEntity();
     if (!$media instanceof MediaInterface) {
         return $media;
     }
     if (!$media->getCategory()) {
         $media->setCategory($this->getRootCategory($media));
     }
     return $media;
 }
예제 #6
0
 /**
  * @param EventArgs $args
  * @return mixed|void
  */
 public function postPersist(EventArgs $args)
 {
     $entity = $args->getEntity();
     $em = $args->getEntityManager();
     if ($entity instanceof PageInterface) {
         if ($contentRoute = $entity->getContentRoute()) {
             $contentRoute->setObjectId($entity->getId());
             $contentRoute->setPath(PageHelper::getPageRoutePath($entity->getPath()));
             $em->persist($contentRoute);
             $em->getUnitOfWork()->computeChangeSet($em->getClassMetadata(get_class($contentRoute)), $contentRoute);
         }
     }
 }
 /**
  * @param EventArgs $args
  * @return mixed|void
  */
 public function preUpdate(EventArgs $args)
 {
     $entity = $args->getEntity();
     $em = $args->getEntityManager();
     $uow = $em->getUnitOfWork();
     if ($entity instanceof ContentRoute) {
         $template = $this->templates[$entity->getTemplateName()];
         $changeset = $uow->getEntityChangeSet($entity);
         if (isset($changeset['templateName']) && $args->hasChangedField('templateName')) {
             $entity->setTemplate($template['template']);
             $entity->setController($template['controller']);
             $uow->recomputeSingleEntityChangeSet($em->getClassMetadata("NetworkingInitCmsBundle:ContentRoute"), $entity);
         }
     }
 }
예제 #8
0
 /**
  * @inheritdoc
  */
 protected function getMedia(EventArgs $args)
 {
     return $args->getEntity();
 }
예제 #9
0
 public function postLoad(EventArgs $event)
 {
     $entity = $event->getEntity();
     $this->initializer->initialize($entity, $this->serviceLocator);
 }
예제 #10
0
 /**
  * {@inheritDoc}
  */
 public function getObject(EventArgs $e)
 {
     return $e->getEntity();
 }
 /**
  * @param \Doctrine\Common\EventArgs $args
  * @return void
  */
 protected function recomputeSingleEntityChangeSet(EventArgs $args)
 {
     $em = $args->getEntityManager();
     $em->getUnitOfWork()->recomputeSingleEntityChangeSet($em->getClassMetadata(get_class($args->getEntity())), $args->getEntity());
 }
 /**
  * Sets the specific sortOrders.
  *
  * @param EventArgs $eventArgs
  * 
  * @access private
  * @return array
  * @author Etienne de Longeaux <*****@*****.**>
  */
 private function getSortableOrders($eventArgs)
 {
     $entity = $eventArgs->getEntity();
     $entityManager = $eventArgs->getEntityManager();
     $entity_name = get_class($entity);
     $metadata = $entityManager->getClassMetadata($entity_name);
     $reflectionClass = new ReflectionClass($entity);
     $properties = $reflectionClass->getProperties();
     // initialize sort values;
     $results['sort_position_by_and'] = " ";
     $results['sort_position_by_where'] = " ";
     //
     foreach ($properties as $refProperty) {
         if ($this->annReader->getPropertyAnnotation($refProperty, $this->annotationclass)) {
             // we have annotation and if it decrypt operation, we must avoid duble decryption
             $propName = $refProperty->getName();
             $methodName = \Sfynx\ToolBundle\Util\PiStringManager::capitalize($propName);
             if ($reflectionClass->hasMethod($getter = 'get' . $methodName) && $reflectionClass->hasMethod($setter = 'set' . $methodName)) {
                 $properties = $this->annReader->getPropertyAnnotation($refProperty, $this->annotationclass);
                 if (is_array($properties->SortableOrders) && isset($properties->SortableOrders['field']) && isset($properties->SortableOrders['type'])) {
                     $field = $properties->SortableOrders['field'];
                     $columnName = $properties->SortableOrders['columnName'];
                     $methode = 'get' . \Sfynx\ToolBundle\Util\PiStringManager::capitalize($field);
                     $type = $properties->SortableOrders['type'];
                     if (method_exists($entity, $methode) && $type == 'relationship' && !is_null($entity->{$methode}())) {
                         $results['sort_position_by_and'] = " AND (mytable.{$columnName} = '{$entity->{$methode}()->getId()}')";
                         $results['sort_position_by_where'] = " WHERE (mytable.{$columnName} = '{$entity->{$methode}()->getId()}')";
                     } elseif (method_exists($entity, $methode)) {
                         $results['sort_position_by_and'] = " AND (mytable.{$columnName} = '{$entity->{$methode}()}')";
                         $results['sort_position_by_where'] = " WHERE (mytable.{$columnName} = '{$entity->{$methode}()}')";
                     }
                 }
             }
         }
     }
     //    Exemple :
     //   		@PI\Positioned(SortableOrders = {"type":"relationship","field":"page","columnName":"page_id"})
     //    is like this :
     //         if (($entity instanceof \MyEnity && method_exists($entity, 'getObject')){
     //             $obj    = $entity->getObject();
     //             if ($obj instanceof \MyObject){
     //                 $results['sort_position_by_and']     = " AND (mytable.page_id  = '{$obj->getId()}')";
     //                 $results['sort_position_by_where']    = " WHERE (mytable.page_id  = '{$obj->getId()}')";
     //             }
     //         }
     return $results;
 }
 /**
  * Description.
  *
  * @param EventArgs $event
  * @param string    $name
  * @param boolean   $onTerminate
  */
 private function process($event, $name, $onTerminate)
 {
     $entity = $event->getEntity();
     if (false === $this->supportsEntity($entity)) {
         return;
     }
     $metadata = $this->getMetadata($entity, $event);
     $newEvent = new DoctrineEvent($entity, $event);
     $classes = array_merge([$metadata->getName()], $metadata->parentClasses);
     if (true === $onTerminate) {
         $this->registerTerminate($entity, $newEvent, $name);
     }
     foreach (array_reverse($classes) as $class) {
         $this->notify($class, $name, $newEvent);
     }
 }
 private function articleFlux(EventArgs $eventArgs)
 {
     $entity = $eventArgs->getEntity();
     $entityManager = $eventArgs->getEntityManager();
     $locale = $this->container->get('request')->getLocale();
     //
     if ($entity instanceof \Cmf\ContentBundle\Entity\Article || $entity instanceof \Cmf\ContentBundle\Entity\BlocGeneral) {
         $flux = $this->container->get('doctrine')->getRepository('PluginsContentBundle:Article')->findFlux();
         $tab = array();
         $tab['references'] = array();
         //
         foreach ($flux as $key => $zone) {
             // we refrseh in the locale language
             $zone->setTranslatableLocale($locale);
             $entityManager->refresh($zone);
             //
             if ($key == 0) {
                 $item = array();
                 $item['type'] = "logo";
                 $item['name'] = "Marie de Broissia Header";
                 $item['date'] = "";
                 $item['dimension'] = "simple";
                 $item['classname'] = array();
                 $item['content'] = "<h1><a href='http://www.mariedebroissia.fr/' target='_blank' alt='mariedebroissia.fr'><img src='/ressources/photos/img_logo_mariedebroissia.jpg' alt='Marie de Broissia' /><span class='tnoir'>L'observatoire</span><span class='tblanc'>Communication Managériale</span></a></h1>";
                 array_push($item['classname'], "main-header");
                 array_push($tab['references'], $item);
             }
             $key = $key + 1;
             //
             $item = array();
             $title = $zone->getBlocgeneral()->getTitle();
             if ($zone->getType() == 'image' || $zone->getType() == 'grande_image') {
                 $item['type'] = "photo";
             } elseif ($zone->getType() == 'large_image') {
                 $item['type'] = "infography";
             } elseif ($zone->getType() == 'video') {
                 $item['type'] = "video";
             } elseif ($zone->getType() == 'article') {
                 $item['type'] = "info";
                 $item['title'] = $title;
             }
             $item['name'] = $title;
             $item['caption'] = $title;
             if ($zone->getType() == 'grande_image') {
                 $item['dimension'] = "doublesize";
             } elseif ($zone->getType() == 'large_image') {
                 $item['dimension'] = "doublewidth";
             } else {
                 $item['dimension'] = "simple";
             }
             //
             $item['date'] = date("d/m/Y", $zone->getBlocgeneral()->getPublishedAt()->getTimestamp());
             if (!is_null($zone->getBlocgeneral()->getArchiveAt())) {
                 $item['date_expiration'] = date("d/m/Y", $zone->getBlocgeneral()->getArchiveAt()->getTimestamp());
             } else {
                 $item['date_expiration'] = '';
             }
             if ($zone->getType() != 'article') {
                 $obj_media = $zone->getBlocgeneral()->getMedia();
                 if ($obj_media) {
                     try {
                         //
                         //$mediaPath = $this->container->get('pi_app_admin.twig.extension.route')->getMediaUrlFunction($obj_media->getImage(), 'reference', true, $obj_media->getUpdatedAt(), 'plugin_content_article_media_reference');
                         //$src 	   = $this->container->get('kernel')->getRootDir() . '/../web/' . $mediaPath;
                         //
                         $item['imageUri'] = $this->container->get('pi_app_admin.twig.extension.route')->getMediaUrlFunction($obj_media->getImage(), 'default_mosaique', true, $obj_media->getUpdatedAt(), 'plugin_content_article_media_default_mosaique');
                         //
                         $item['imageBigUri'] = $this->container->get('pi_app_admin.twig.extension.route')->getMediaUrlFunction($obj_media->getImage(), 'default_big', true, $obj_media->getUpdatedAt(), 'plugin_content_article_media_default_big');
                         //
                     } catch (\Exception $e) {
                         $item['imageUri'] = '';
                         $item['imageBigUri'] = '';
                     }
                 } else {
                     $item['imageUri'] = '';
                     $item['imageBigUri'] = '';
                 }
             }
             $item['description'] = $zone->getBlocgeneral()->getDescriptif() . '<br/><br/>' . $zone->getContent();
             if ($zone->getType() == 'image' || $zone->getType() == 'grande_image' || $zone->getType() == 'article') {
                 if ($zone->getUrl() == null) {
                     $item['externalUrl'] = "";
                     $item['aliasUrl'] = "";
                 } else {
                     $item['externalUrl'] = $zone->getUrl();
                     $item['aliasUrl'] = $zone->getAlias();
                 }
             }
             if ($zone->getType() == 'video') {
                 $item['videoUri'] = $zone->getUrl();
             }
             if ($zone->getPopin() == true) {
                 $item['visite'] = true;
             } else {
                 $item['visite'] = false;
             }
             array_push($tab['references'], $item);
         }
         //
         $file = $this->container->get('kernel')->getRootDir() . "/../web/ressources/references_{$locale}.json";
         \PiApp\AdminBundle\Util\PiFileManager::save($file, json_encode($tab), 0777, LOCK_EX);
     }
 }
 /**
  * Sets the specific sortOrders.
  *
  * @return void
  * @access private
  * @author etienne de Longeaux <*****@*****.**>
  */
 private function deleteCacheTranslationFiles(EventArgs $eventArgs)
 {
     $entity = $eventArgs->getEntity();
     if ($entity instanceof Word) {
         $this->container->get("sfynx.translator.wordsloader")->deleteCacheTranslationFiles();
     }
 }