/**
  * postPersist
  *
  * @param LifecycleEventArgs $event
  */
 public function postPersist(LifecycleEventArgs $event)
 {
     //When the parent is created, the resource is load
     if ($event->getObject() == $this->context) {
         if ($this->accessor->isReadable($this->context, $this->property) && ($resource = $this->accessor->getValue($this->context, $this->property))) {
             if ($resource instanceof ResourceObjectInterface) {
                 $resource = $this->loader->load($this->context, $this->property, $this->file);
                 //to avoid bubbling with the preUpdate
                 //$this->context = null;
                 $event->getEntityManager()->flush($resource);
             }
         }
     } else {
         $meta = $event->getEntityManager()->getClassMetadata(get_class($this->context));
         $identifier = $meta->getSingleIdentifierColumnName();
         //when the parent exists but the resource is created
         if ($meta->getFieldValue($this->context, $identifier)) {
             if ($this->accessor->isReadable($this->context, $this->property) && $event->getObject() == $this->accessor->getValue($this->context, $this->property)) {
                 if (($resource = $event->getObject()) && $resource instanceof ResourceObjectInterface) {
                     $this->loader->load($this->context, $this->property, $this->file);
                     //to avoid bubbling with the preUpdate
                     //$this->context = null;
                     $event->getEntityManager()->flush($resource);
                 }
             }
         }
     }
 }
 public function prePersist(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     $classHierarchyMetadata = $this->metadataFactory->getMetadataForClass(get_class($entity));
     $classMetadata = $classHierarchyMetadata->classMetadata[get_class($entity)];
     foreach ($classMetadata->propertyMetadata as $propertyMetadata) {
         switch ($propertyMetadata->type) {
             case 'odm':
                 $dm = $this->doctrine->getManager($propertyMetadata->targetManager);
                 // Copied following two lines from Doctrine\ORM\Mapping\ClassMetadataFactory
                 list($namespaceAlias, $simpleClassName) = explode(':', $propertyMetadata->targetObject);
                 $realClassName = $dm->getConfiguration()->getDocumentNamespace($namespaceAlias) . '\\' . $simpleClassName;
                 /**
                  * @var \Doctrine\Common\Persistence\Mapping\ClassMetadata $documentMetaData
                  */
                 $documentMetaData = $dm->getClassMetadata($realClassName);
                 $document = $propertyMetadata->getValue($entity);
                 if (is_null($document)) {
                     continue;
                 }
                 $idValues = $documentMetaData->getIdentifierValues($document);
                 $propertyMetadata->setValue($entity, serialize($idValues));
                 $class = $args->getEntityManager()->getClassMetadata(get_class($entity));
                 $args->getEntityManager()->getUnitOfWork()->recomputeSingleEntityChangeSet($class, $entity);
                 break;
             case 'mongodb':
                 throw new \Exception('MongoDB is not yet implemented');
                 break;
             default:
                 break;
         }
     }
 }
Пример #3
0
 public function postPersist(LifecycleEventArgs $args)
 {
     $obj = $args->getEntity();
     // On veut envoyer un email que pour les entités Application
     if ($obj instanceof Article) {
         $article = $obj;
         $em = $args->getEntityManager();
         $news = new News();
         $news->setType("article");
         $news->setArticle($article);
         $news->createAbstract($article->getContent());
         $em->persist($news);
         $em->flush();
         //On flush pour créer l'id du content
     }
     if ($obj instanceof Playlist) {
         $playlist = $obj;
         $em = $args->getEntityManager();
         $news = new News();
         $news->setType("playlist");
         $news->setPlaylist($playlist);
         $news->createAbstract("");
         $em->persist($news);
         $em->flush();
         //On flush pour créer l'id du content
     }
     return;
 }
Пример #4
0
 /**
  * @param LifecycleEventArgs $args
  */
 public function prePersist(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     if (!$this->isContactEntity($entity)) {
         return;
     }
     /** @var Contact $entity */
     $this->setCreatedProperties($entity, $args->getEntityManager());
     $this->setUpdatedProperties($entity, $args->getEntityManager());
 }
Пример #5
0
 public function prePersist(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     if ($entity instanceof Vacancy) {
         $encoder = new UrlEncoder($args->getEntityManager());
         $entity->setUrlId($encoder->encode($entity, $entity->getTitle()));
     } else {
         if ($entity instanceof Organisation) {
             $encoder = new UrlEncoder($args->getEntityManager());
             $entity->setUrlId($encoder->encode($entity, $entity->getName()));
         }
     }
 }
 /**
  * @param LifecycleEventArgs $args
  */
 public function prePersist(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     if (!$this->isActivityListEntity($entity)) {
         return;
     }
     /** @var ActivityList $entity */
     if (!$entity->getCreatedAt()) {
         $this->setCreatedProperties($entity, $args->getEntityManager());
     }
     if (!$entity->getUpdatedAt()) {
         $this->setUpdatedProperties($entity, $args->getEntityManager());
     }
 }
Пример #7
0
 /**
  * @param LifecycleEventArgs $event
  */
 public function postPersist(LifecycleEventArgs $event)
 {
     if (!$this->enabled) {
         return;
     }
     $this->loggableManager->handlePostPersist($event->getEntity(), $event->getEntityManager());
 }
Пример #8
0
 public function preRemove(LifecycleEventArgs $eventArgs)
 {
     $entity = $eventArgs->getEntity();
     if ($entity instanceof $this->objectClass) {
         $this->scheduleForRemoval($entity, $eventArgs->getEntityManager());
     }
 }
Пример #9
0
 /**
  * Este escucha permite esteblecer el consecutivo de las entidades 
  * al momento de ser almacenadas en base de datos
  * @author Cesar Giraldo <*****@*****.**> 23/12/2015
  * @param LifecycleEventArgs $args
  */
 public function postPersist(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     $className = get_class($entity);
     $entityManager = $args->getEntityManager();
     $reflectedClass = new \ReflectionClass($className);
     if ($reflectedClass->hasProperty('consecutive')) {
         $consecutive = null;
         $enabledEntity = false;
         if ($entity instanceof Entity\Item) {
             $enabledEntity = true;
             //buscamos la cantidad de items que tiene creado un proyecto para asignar el consecutivo
             $project = $entity->getProject();
             $consecutive = $project->getLastItemConsecutive() + 1;
             $project->setLastItemConsecutive($consecutive);
             $entityManager->persist($project);
         } elseif ($entity instanceof Entity\Sprint) {
             $enabledEntity = true;
             //buscamos la cantidad de items que tiene creado un proyecto para asignar el consecutivo
             $project = $entity->getProject();
             $consecutive = $project->getLastSprintConsecutive() + 1;
             $project->setLastSprintConsecutive($consecutive);
             $entityManager->persist($project);
         }
         if ($enabledEntity) {
             if ($consecutive != null) {
                 $entity->setConsecutive($consecutive);
             } else {
                 $entity->setConsecutive(1);
             }
             $entityManager->flush();
         }
     }
 }
Пример #10
0
 public function postPersist(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     $entityManager = $args->getEntityManager();
     if ($entity instanceof Attachment) {
         //var_dump($entity); exit();
         if (null === $entity->getFile()) {
             return;
         }
         $id = sprintf('%010d', $entity->getId());
         $path = $entity->getStoragePath() . substr($id, 6, 4) . '/' . substr($id, 2, 4) . '/' . $id;
         $filename = $entity->getId() . '.' . $entity->getFile()->guessExtension();
         if (!file_exists($path)) {
             mkdir($path, 0777, true);
         }
         $entity->setFullpath($path . '/' . $filename);
         $entity->getFile()->move($path, $filename);
         $entity->setFile(null);
         /*
         $changelog = new Changelog();
         $changelog->setTable($entityManager->getClassMetadata('ProductsBundle:Product')->getTableName());
         $changelog->setAction('U');
         $changelog->setRecordId($entity->getId());
         $changelog->setUser($this->userCallable->getCurrentUser()->getId());
         $changelog->setRecordData($entity->jsonSerialize());
         */
         $entityManager->flush();
     }
 }
 /**
  * @param LifecycleEventArgs $args
  */
 public function preUpdate(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     if ($entity instanceof NodeTranslation) {
         $this->setSlugWhenEmpty($entity, $args->getEntityManager());
     }
 }
 /**
  * @param LifecycleEventArgs $args
  * @return bool
  * @throws \Exception
  */
 public function checkBadWords(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     if (!$entity instanceof BadWordDetectorInterface) {
         return true;
     }
     $badWords = $args->getEntityManager()->getRepository('RenowazeBundle:BadWord')->findAll();
     /** @var BadWordDetector $annotationParams */
     $annotationParams = $this->reader->getClassAnnotation(new \ReflectionClass($entity), 'RenowazeBundle\\Annotation\\BadWordDetector');
     foreach ($annotationParams->fields as $field) {
         $methodName = 'get' . ucfirst($field);
         if (!method_exists($entity, $methodName)) {
             throw new \Exception(sprintf('Field "%s" not found in entity "%s"', $methodName, get_class($entity)));
         }
         /** @var BadWord $badWord */
         foreach ($badWords as $badWord) {
             if (strpos($entity->{$methodName}(), $badWord->getWord()) !== false) {
                 $entity->setHasBadWords(true);
                 return true;
             }
         }
     }
     $entity->setHasBadWords(false);
     return true;
 }
Пример #13
0
 /**
  * @param LifecycleEventArgs $event
  */
 protected function process(LifecycleEventArgs $event)
 {
     /** @var Page $page */
     $page = $event->getEntity();
     if (!$this->isApplicable($page)) {
         return;
     }
     $expectedRoute = 'orob2b_cms_page_view';
     $expectedParameters = ['id' => $page->getId()];
     foreach ($page->getSlugs() as $slug) {
         $actualRoute = $slug->getRouteName();
         $actualParameters = $slug->getRouteParameters();
         $changeSet = [];
         if ($actualRoute !== $expectedRoute) {
             $slug->setRouteName($expectedRoute);
             $changeSet['routeName'] = [$actualRoute, $expectedRoute];
         }
         if ($actualParameters !== $expectedParameters) {
             $slug->setRouteParameters($expectedParameters);
             $changeSet['routeParameters'] = [$actualParameters, $expectedParameters];
         }
         if ($changeSet) {
             $unitOfWork = $event->getEntityManager()->getUnitOfWork();
             $unitOfWork->scheduleExtraUpdate($slug, $changeSet);
         }
     }
 }
Пример #14
0
 protected function checkRelations(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     $entityManager = $args->getEntityManager();
     $entityName = (new \ReflectionClass($entity))->getShortName();
     if (in_array($entityManager->getClassMetadata(get_class($entity))->name, $this->excludedEntities)) {
         return;
     }
     $mappings = $entityManager->getClassMetadata(get_class($entity))->getAssociationMappings();
     foreach ($mappings as $mapping) {
         if ($mapping['type'] === ClassMetadataInfo::ONE_TO_MANY || $mapping['type'] === ClassMetadataInfo::MANY_TO_MANY) {
             $targetEntityMeta = $entityManager->getClassMetadata($mapping['targetEntity']);
             if ($targetEntityMeta->reflClass->getParentClass()) {
                 if (in_array($targetEntityMeta->reflClass->getParentClass()->name, $this->ignoredEntities)) {
                     continue;
                 }
             }
             $accessor = PropertyAccess::createPropertyAccessor();
             $value = $accessor->getValue($entity, $mapping['fieldName']);
             if (count($value) === 0) {
                 continue;
             }
             $exception = new HasRelationException();
             $exception->setEntityName($entityName);
             $exception->setEntity($entity);
             $exception->setMapping($mapping);
             throw $exception;
         }
     }
 }
 /**
  * Pre remove event handler
  *
  * @param LifecycleEventArgs $args
  */
 public function preRemove(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     $classMetadata = $args->getEntityManager()->getClassMetadata(get_class($entity));
     $identifiers = $classMetadata->getIdentifierValues($entity);
     $this->inventory->setIdentifiers($entity, $identifiers);
 }
 /**
  * Before persist updates WorkflowItem with WorkflowDefinition
  *
  * @param LifecycleEventArgs $args
  */
 public function prePersist(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     if ($entity instanceof WorkflowItem) {
         $this->updateWorkflowDefinition($args->getEntityManager(), $entity);
     }
 }
Пример #17
0
 public function preUpdate(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     $entityManager = $args->getEntityManager();
     //echo $this->userCallable->getCurrentUser()->getId();
     if ($entity instanceof Product) {
         /*
         $changelog = new Changelog();
         $changelog->setTable($entityManager->getClassMetadata('ProductsBundle:Product')->getTableName());
         $changelog->setAction('U');
         $changelog->setRecordId($entity->getId());
         $changelog->setUser($this->userCallable->getCurrentUser()->getId());
         $changelog->setRecordData($entity->jsonSerialize());
         */
         /*
         $item_id = $entity->getItemId();
         $item = $entityManager->getRepository('Surgeworks\CoreBundle\Entity\Item')->find($item_id);
         $stat_symb = $item->getItemStatus()->getStatusSymbol();
         if ($stat_symb != 'st_live') {
             $entity->setStatusId($item->getStatusId());
         }
         */
         //$entityManager->persist($changelog);
         //$entityManager->flush();
     }
 }
Пример #18
0
 /**
  * Перед удаление альбома, удаляем все фотограффии, находящиеся в нем,
  * и уменьшаем у всех последующих альбомов sortIndex на 10
  *
  * @param LifecycleEventArgs $args
  */
 public function preRemove(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     $em = $args->getEntityManager();
     if ($entity instanceof \PhotoBundle\Entity\Album) {
         $photos = $entity->getPhotos();
         foreach ($photos as $photo) {
             $em->remove($photo);
         }
         $sortIndex = $entity->getSortIndex();
         $albums = $em->getRepository('PhotoBundle:Album')->getAlbumsWithMoreSortIndex($sortIndex);
         foreach ($albums as $album) {
             $currentSortIndex = $album->getSortIndex();
             $album->setSortIndex($currentSortIndex - 10);
         }
     } elseif ($entity instanceof Photo) {
         $name = $entity->getName();
         $pathToImageDirectory = $this->_container->get('request')->server->get('DOCUMENT_ROOT') . '/uploaded/images';
         $paths = array($pathToImageDirectory . '/800x800/', $pathToImageDirectory . '/200x200/');
         foreach ($paths as $path) {
             $fullName = $path . $name;
             if (file_exists($fullName)) {
                 unlink($fullName);
             }
         }
     }
 }
    /**
     * @param \Doctrine\ORM\Event\LifecycleEventArgs $eventArgs
     */
    public function postLoad(LifecycleEventArgs $eventArgs)
    {
        $action = $eventArgs->getEntity();
        $className = get_class($action);
        $em = $eventArgs->getEntityManager();
        $metadata = $em->getClassMetadata($className);

        if ($metadata->reflClass->implementsInterface('Redpanda\Bundle\ActivityStreamBundle\Model\ActionInterface')) {

            if ($this->streamableResolver->supports($eventArgs, $action->getActorType())) {
                $actorReflProp = $metadata->reflClass->getProperty('actor');
                $actorReflProp->setAccessible(true);
                $actorReflProp->setValue(
                    $action, $this->streamableResolver->resolve($eventArgs, $action->getActorType(), $action->getActorId())
                );
            }

            if ($this->streamableResolver->supports($eventArgs, $action->getTargetType())) {
                $targetReflProp = $metadata->reflClass->getProperty('target');
                $targetReflProp->setAccessible(true);
                $targetReflProp->setValue(
                    $action, $this->streamableResolver->resolve($eventArgs, $action->getTargetType(), $action->getTargetId())
                );
            }

            if (null !== $action->getActionObjectType() && $this->streamableResolver->supports($eventArgs, $action->getActionObjectType())) {
                $actionObjReflProp = $metadata->reflClass->getProperty('actionObject');
                $actionObjReflProp->setAccessible(true);
                $actionObjReflProp->setValue(
                    $action, $this->streamableResolver->resolve($eventArgs, $action->getActionObjectType(), $action->getActionObjectId())
                );
            }
        }
    }
Пример #20
0
 /** @ORM\PostLoad */
 public function postLoadHandler(RouteEntity $route, LifecycleEventArgs $event)
 {
     $em = $event->getEntityManager();
     $route->setExtendedRouteCallback(function () use($em, $route) {
         return $em->getRepository($route->getClass())->findOneBy(array('route' => $route->id));
     });
 }
 public function postPersist(LifecycleEventArgs $event)
 {
     /** @var OroEntityManager $em */
     $em = $event->getEntityManager();
     $entity = $event->getEntity();
     $configProvider = $em->getExtendManager()->getConfigProvider();
     $className = get_class($entity);
     if ($configProvider->hasConfig($className)) {
         $config = $configProvider->getConfig($className);
         $schema = $config->get('schema');
         if (isset($schema['relation'])) {
             foreach ($schema['relation'] as $fieldName) {
                 /** @var Config $fieldConfig */
                 $fieldConfig = $configProvider->getConfig($className, $fieldName);
                 if ($fieldConfig->getId()->getFieldType() == 'optionSet' && ($setData = $entity->{Inflector::camelize('get_' . $fieldName)}())) {
                     $model = $configProvider->getConfigManager()->getConfigFieldModel($fieldConfig->getId()->getClassName(), $fieldConfig->getId()->getFieldName());
                     /**
                      * in case of single select field type, should wrap value in array
                      */
                     if ($setData && !is_array($setData)) {
                         $setData = [$setData];
                     }
                     foreach ($setData as $option) {
                         $optionSetRelation = new OptionSetRelation();
                         $optionSetRelation->setData(null, $entity->getId(), $model, $em->getRepository(OptionSet::ENTITY_NAME)->find($option));
                         $em->persist($optionSetRelation);
                         $this->needFlush = true;
                     }
                 }
             }
         }
     }
 }
Пример #22
0
 /**
  * @param LifecycleEventArgs $args
  */
 public function postRemove(LifecycleEventArgs $args)
 {
     $entity = $args->getObject();
     $em = $args->getEntityManager();
     $meta = $em->getClassMetadata(get_class($entity));
     $this->logEntityChange('removed', $meta, $entity);
 }
 protected function getTranslationMetadataForLifecycleEvent(LifecycleEventArgs $event)
 {
     $entity = $event->getEntity();
     $em = $event->getEntityManager();
     $className = get_class($entity);
     return $this->getTranslationMetadata($className, $em);
 }
Пример #24
0
 /**
  * Genera un registro de auditoría con un detalle de los cambios realizados a la entidad.
  *
  * @param LifecycleEventArgs $eventArgs
  */
 public function logChangeSet(LifecycleEventArgs $eventArgs, $action)
 {
     $em = $eventArgs->getEntityManager();
     $uow = $em->getUnitOfWork();
     $entity = $eventArgs->getEntity();
     $classMetadata = $em->getClassMetadata(get_class($entity));
     $user = $this->container->get('security.token_storage')->getToken()->getUser();
     if ($this->isEntitySupported($classMetadata->reflClass)) {
         $uow->computeChangeSet($classMetadata, $entity);
         $changeSet = $uow->getEntityChangeSet($entity);
         $this->WriteToLog($action, $entity, $user, $changeSet);
         $Registro = new \Tapir\BaseBundle\Entity\AuditoriaRegistro();
         $Registro->setAccion($action);
         $Registro->setElementoTipo($classMetadata->reflClass->getName());
         $Registro->setElementoId($entity->getId());
         $Registro->setEstacion($this->container->get('request')->getClientIp());
         if (\Tapir\BaseBundle\Helper\ClassHelper::UsaTrait($user, 'Tapir\\BaseBundle\\Entity\\ConIdMetodos')) {
             // Algunas veces el usuario no tiene ID (por ejemplo en el entorno de pruebas unitarias)
             $Registro->setUsuario($user->getId());
         }
         //echo '<pre>' . json_encode($changeSet, JSON_PRETTY_PRINT) . '</pre>';
         $Registro->setCambios(json_encode($changeSet));
         $em->persist($Registro);
         $em->flush();
         //$em->clear();
         //$RegistroMeta = $em->getClassMetadata(get_class($Registro));
         //$uow->computeChangeSet($RegistroMeta, $Registro);
     }
 }
 public function postLoad(LifecycleEventArgs $eventArgs)
 {
     $em = $eventArgs->getEntityManager();
     $uow = $em->getUnitOfWork();
     $entity = $eventArgs->getEntity();
     $classname = get_class($entity);
     if (!array_key_exists($classname, $this->getEntities())) {
         return null;
     }
     /** @var Schema $schema */
     $schema = $em->getRepository('Padam87AttributeBundle:Schema')->findOneBy(array('className' => $classname));
     if ($schema === null) {
         throw new \UnexpectedValueException('Schema not found for ' . $classname);
     }
     $qb = $em->getRepository($classname)->createQueryBuilder('main');
     $qb->distinct()->select('d.id')->join('main.attributes', 'a')->join('a.definition', 'd', null, null, 'd.id')->where('main = :main')->setParameter('main', $entity);
     $definitions = $qb->getQuery()->getScalarResult();
     $ids = array_map('current', $definitions);
     foreach ($schema->getDefinitions() as $definition) {
         if (!in_array($definition->getId(), $ids)) {
             $attribute = new Attribute();
             $attribute->setDefinition($definition);
             $entity->addAttribute($attribute);
         }
     }
     if ($uow->getEntityState($entity) == UnitOfWork::STATE_MANAGED) {
         $em->persist($entity);
         $em->flush($entity);
     }
 }
Пример #26
0
 /** @ORM\PostUpdate */
 public function postUpdate(Iban $iban, LifecycleEventArgs $event)
 {
     $entity = $event->getEntity();
     $entityManager = $event->getEntityManager();
     $cacheDriver = $entityManager->getConfiguration()->getResultCacheImpl();
     $cacheDriver->delete('getIban_' . $iban->getPhotographer()->getId());
 }
Пример #27
0
 /**
  * @ORM\PostLoad
  *
  * @param \Venne\Security\User $user
  * @param \Doctrine\ORM\Event\LifecycleEventArgs $event
  */
 public function postLoadHandler(User $user, LifecycleEventArgs $event)
 {
     $em = $event->getEntityManager();
     $user->setExtendedUserCallback(function () use($em, $user) {
         return $em->getRepository($user->getClass())->findOneBy(array('user' => $user->id));
     });
 }
 public function postPersist(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     $entityManager = $args->getEntityManager();
     if ($entity instanceof Comment) {
         $issue = $entity->getIssue();
         $this->setActivity($issue, $entity->getAuthor(), Activity::COMMENT_ISSUE, $entityManager);
     }
     if ($entity instanceof Issue) {
         $currentUser = $this->container->get('security.context')->getToken();
         if ($currentUser !== null) {
             $user = $currentUser->getUser();
             $this->setActivity($entity, $user, Activity::CREATE_ISSUE, $entityManager);
         }
     }
     if ($entity instanceof Activity) {
         $collaborators = $entity->getIssue()->getCollaborators();
         $emails = [];
         foreach ($collaborators as $collaborator) {
             $emails[] = $collaborator->getEmail();
         }
         $message = \Swift_Message::newInstance()->setSubject('Issue activity: ' . $entity->getIssue()->getSummary())->setFrom('*****@*****.**')->setTo($emails)->setBody($this->container->get('templating')->render('AppBundle:Activity:activity.html.twig', ['activities' => $entity]), 'text/html');
         $this->container->get('mailer')->send($message);
     }
 }
 public function prePersist(LifecycleEventArgs $event)
 {
     $object = $event->getObject();
     if ($object instanceof UuidAwareInterface and !$object->getId()) {
         $object->setId((new UuidGenerator())->generate($event->getEntityManager(), $object));
     }
 }
Пример #30
0
 public function postRemove(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     if ($entity instanceof TransactionEntity) {
         $this->updateBalance($args->getEntityManager());
     }
 }