/** * @param EventArgs $args * @return mixed|void */ public function onFlush(EventArgs $args) { $em = $args->getEntityManager(); $unitOfWork = $em->getUnitOfWork(); foreach ($unitOfWork->getScheduledEntityUpdates() as $entity) { if ($entity instanceof PageInterface) { if ($contentRoute = $entity->getContentRoute()) { $contentRoute->setPath(PageHelper::getPageRoutePath($entity->getPath())); $em->persist($contentRoute); $unitOfWork->computeChangeSet($em->getClassMetadata(get_class($contentRoute)), $contentRoute); foreach ($entity->getAllChildren() as $child) { $contentRoute = $child->getContentRoute(); $contentRoute->setPath(PageHelper::getPageRoutePath($child->getPath())); $em->persist($contentRoute); $unitOfWork->computeChangeSet($em->getClassMetadata(get_class($contentRoute)), $contentRoute); if ($entity->getStatus() == Page::STATUS_PUBLISHED) { if ($childSnapshot = $child->getSnapshot()) { $snapshotRoute = $childSnapshot->getContentRoute(); $newPath = PageHelper::getPageRoutePath($child->getPath()); $snapshotRoute->setPath($newPath); $childSnapshot->setPath($newPath); $em->persist($childSnapshot); $em->persist($snapshotRoute); $unitOfWork->computeChangeSet($em->getClassMetadata(get_class($childSnapshot)), $childSnapshot); $unitOfWork->computeChangeSet($em->getClassMetadata(get_class($snapshotRoute)), $snapshotRoute); } } } } } } }
/** * @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 EventArgs $args */ private function preUpload(EventArgs $args) { $em = $args->getEntityManager(); $uow = $args->getEntityManager()->getUnitOfWork(); $entities = array(); foreach ($uow->getScheduledEntityInsertions() as $entity) { $entities[] = $entity; } foreach ($uow->getScheduledEntityUpdates() as $entity) { $entities[] = $entity; } foreach ($entities as $entity) { $bigfootFileFields = $this->getBigfootFileFields($entity); foreach ($bigfootFileFields as $bigfootFileField) { $this->fileManager->preUpload($entity, $bigfootFileField['filePathProperty'], $bigfootFileField['fileFieldProperty']); $meta = $em->getClassMetadata(get_class($entity)); $uow->recomputeSingleEntityChangeSet($meta, $entity); } } }
/** * @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); } } }
/** * @param EventArgs $eventArgs */ public function loadClassMetadata(EventArgs $eventArgs) { $metadata = $eventArgs->getClassMetadata(); if ($metadata->isMappedSuperclass) { return; } $mappings = $metadata->getAssociationMappings(); $name = $metadata->getName(); if (!isset($mappings['metadata']) && in_array($this->targetEntity, class_implements($name))) { $reflClass = $metadata->getReflectionClass(); $namespace = $reflClass->getNamespaceName(); $classShortName = $reflClass->getShortName(); $metadata->mapOneToMany(['targetEntity' => "{$namespace}\\{$classShortName}Metadata", 'fieldName' => 'metadata', 'mappedBy' => 'object', 'orphanRemoval' => true, 'cascade' => ['persist', 'remove'], 'fetch' => 'EXTRA_LAZY']); } elseif (!isset($mappings['object']) && is_subclass_of($name, $this->sourceEntity)) { $namingStrategy = $eventArgs->getEntityManager()->getConfiguration()->getNamingStrategy(); $metadata->mapManyToOne(['targetEntity' => str_replace('Metadata', '', $name), 'fieldName' => 'object', 'inversedBy' => 'metadata', 'joinColumn' => ['name' => 'object_id', 'referencedColumnName' => $namingStrategy->referenceColumnName(), 'onDelete' => 'CASCADE', 'onUpdate' => 'CASCADE']]); } }
/** * Compute sortRank for entities that are created * * @param EventArgs $args */ public function prePersist(EventArgs $args) { $em = $args->getEntityManager(); $object = $args->getObject(); $class = get_class($object); $meta = $em->getClassMetadata($class); $reflectionClass = $meta->getReflectionClass(); if (!$reflectionClass || !$this->hasTrait($reflectionClass, 'Librinfo\\DoctrineBundle\\Entity\\Traits\\Sortable')) { return; } // return if current entity doesn't use Sortable trait if ($object->getSortRank()) { return; } $maxPos = $this->getMaxPosition($em, $meta); $maxPos = $maxPos ? $maxPos + 1000 : 65536; $object->setSortRank($maxPos); $this->maxPositions[$class] = $maxPos; }
/** * {@inheritDoc} */ public function getLoadedMetaDatas(EventArgs $e) { return $e->getEntityManager()->getMetadataFactory()->getLoadedMetadata(); }
/** * @return object Manager */ public function getEntityManager() { return $this->eventArgs->getEntityManager(); }
public function postFlush(EventArgs $args) { if ($this->post_flush_persist_counter) { $om = $args->getEntityManager(); $om->flush(); } }
/** * 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; }
/** * {@inheritDoc} */ public function postFlush($obj, EventArgs $args) { $args->getEntityManager()->persist($obj); $args->getEntityManager()->flush(); }
/** * @param object $entity * @param EventArgs|DoctrineEvent $event * * @return \Doctrine\ORM\Mapping\ClassMetadataInfo */ private function getMetadata($entity, $event) { $em = $event->getEntityManager(); return $em->getMetadataFactory()->getMetadataFor(get_class($entity)); }
/** * Occur on postFlush events. * * @access public * * @param Doctrine\Common\EventArgs $eventArgs */ public function postFlush(EventArgs $eventArgs) { $em = $eventArgs->getEntityManager(); $uow = $em->getUnitOfWork(); foreach ($uow->getScheduledEntityInsertions() as $entity) { $this->_triggerEvent(Events::postFlush, $entity, $eventArgs); } foreach ($uow->getScheduledEntityUpdates() as $entity) { $this->_triggerEvent(Events::postFlush, $entity, $eventArgs); } foreach ($uow->getScheduledEntityDeletions() as $entity) { $this->_triggerEvent(Events::postFlush, $entity, $eventArgs); } }
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); } }
protected function broadcastEntyMgrEvent(EventArgs $previousEvent, $eventType) { $this->app->broadcast(strtolower("entitymanager.{$eventType}"), new EntityManagerEvent($previousEvent->getEntityManager(), $eventType, $previousEvent)); }
/** * Create a new activity * * @param EventArgs $eventArgs * @param string $verb * @param object $entity * * @return ActivityStream */ public function createActivity(EventArgs $eventArgs, $verb, $entity) { $em = $eventArgs->getEntityManager(); $entityClass = \Doctrine\Common\Util\ClassUtils::getClass($entity); $classMetaData = $em->getClassMetadata($entityClass); if (!$classMetaData->reflClass->implementsInterface('Jumph\\Bundle\\DashboardBundle\\Entity\\ActivityInterface')) { return ''; } $activityStreamMeta = $em->getClassMetadata("JumphDashboardBundle:ActivityStream"); $uow = $em->getUnitOfWork(); $activityStream = new ActivityStream(); $activityStream->setVerb($verb); $activityStream->setObjectType($entityClass); $activityStream->setUser($this->user); if ($verb === 'create') { $this->pendingInserts[spl_object_hash($entity)] = $activityStream; } else { $activityStream->setObjectId($entity->getId()); } $em->persist($activityStream); $uow->computeChangeSet($activityStreamMeta, $activityStream); return $activityStream; }
/** * @param \Doctrine\Common\EventArgs $args */ protected function recomputeSingleEntityChangeSet(EventArgs $args) { $em = $args->getEntityManager(); $em->getUnitOfWork()->recomputeSingleEntityChangeSet($em->getClassMetadata(get_class($args->getEntity())), $args->getEntity()); }
/** * @return EntityManagerInterface */ public function getEntityManager() { return $this->parent->getEntityManager(); }