コード例 #1
0
 public function preUpdate(\Doctrine\ORM\Event\PreUpdateEventArgs $eventArgs)
 {
     if ($eventArgs->getEntity() instanceof User) {
         /**
          * SET DATE_SORTIE ON NULL IF USER IS REACTIVATE AFTER DESACTIVATION (because date_sortie < now)
          */
         if ($eventArgs->hasChangedField('enabled') && $eventArgs->getNewValue('enabled') == true && $eventArgs->getEntity()->getDateSortie() < new \DateTime('now')) {
             $eventArgs->getEntity()->setDateSortie(null);
             $eventArgs->getEntity()->setRaisonSortie(null);
         }
         /**
          * Change in profile => pointeur field to 1 (back to 0 by the admin in the BDD directly)
          */
         if ($eventArgs->hasChangedField('email') || $eventArgs->hasChangedField('phone') || $eventArgs->hasChangedField('adresse') || $eventArgs->hasChangedField('ville') || $eventArgs->hasChangedField('zip') || $eventArgs->hasChangedField('photo_id') || $eventArgs->hasChangedField('service_id') || $eventArgs->hasChangedField('enabled') || $eventArgs->hasChangedField('password') || $eventArgs->hasChangedField('date_of_birth') || $eventArgs->hasChangedField('firstname') || $eventArgs->hasChangedField('lastname') || $eventArgs->hasChangedField('date_entree') || $eventArgs->hasChangedField('date_sortie') || $eventArgs->hasChangedField('raison_sortie') || $eventArgs->hasChangedField('username')) {
             $eventArgs->getEntity()->setPointeur(true);
         }
         /**
          * SEND MAIL ON PROFILE CHANGES
          */
         if ($this->container->getParameter('mail.edit_profil.enabled') == true) {
             if ($eventArgs->hasChangedField('email') || $eventArgs->hasChangedField('phone') || $eventArgs->hasChangedField('adresse') || $eventArgs->hasChangedField('ville') || $eventArgs->hasChangedField('zip')) {
                 if ($this->container->hasParameter('mail.edit_profil')) {
                     $mail = $this->container->getParameter('mail.edit_profil');
                 } else {
                     $this->container->setParameter('mail.edit_profil.enabled', false);
                 }
                 $message = \Swift_Message::newInstance()->setSubject('Changements dans le profil de ' . $eventArgs->getEntity())->setFrom('*****@*****.**')->setTo($mail)->setBody($this->getMailBody($eventArgs->getEntityChangeSet(), $eventArgs->getEntity()), 'text/html');
                 $this->mailer->send($message);
             }
         }
     }
 }
コード例 #2
0
ファイル: OrderListener.php プロジェクト: antrampa/crm
 /**
  * @param PreUpdateEventArgs $event
  */
 public function preUpdate(PreUpdateEventArgs $event)
 {
     $entity = $event->getEntity();
     // if subtotal or status has been changed
     if ($this->isOrderValid($entity) && array_intersect(['subtotalAmount', 'discountAmount', 'status'], array_keys($event->getEntityChangeSet()))) {
         $this->ordersForUpdate[$entity->getId()] = true;
     }
 }
コード例 #3
0
 /**
  * Pre update event process
  *
  * @param LifecycleEventArgs $args
  * @return $this
  */
 public function preUpdate(PreUpdateEventArgs $args)
 {
     $entityClass = ClassUtils::getClass($args->getEntity());
     if (array_key_exists($entityClass, $this->notificationRules)) {
         $rules = $this->notificationRules[$entityClass];
         $event = new PreUpdateNotificationEvent($args->getEntity(), $args->getEntityChangeSet(), array('em' => $args->getEntityManager(), 'rules' => $rules));
         $this->eventDispatcher->dispatch('numerique1.notification.event.entity_pre_update', $event);
     }
     return $this;
 }
コード例 #4
0
 public function preUpdate(PreUpdateEventArgs $args)
 {
     $entity = $args->getEntity();
     if ($entity instanceof Ticket) {
         $followers = array();
         foreach ($entity->getFollowers() as $key => $value) {
             $followers[] = $value->getEmail();
         }
         $changelog = $args->getEntityChangeSet();
         $body = $this->container->get('templating')->render('TaskeetMainBundle:Default:email.txt.twig', array('entity' => $entity, 'changelog' => $changelog));
         $message = \Swift_Message::newInstance()->setSubject("Tarea modificada")->setFrom('*****@*****.**')->setTo($followers)->setBody($body);
         $this->container->get('mailer')->send($message);
     }
 }
コード例 #5
0
 /**
  * @param PreUpdateEventArgs $args
  */
 public function preUpdate(PreUpdateEventArgs $args)
 {
     $annotationReader = $this->getReaderFromEntityManager($args->getEntityManager());
     $entity = $args->getEntity();
     $changeSet = $args->getEntityChangeSet();
     $reflObject = new \ReflectionObject($entity);
     foreach ($changeSet as $propertyName => $values) {
         $property = $reflObject->getProperty($propertyName);
         /** @var PostUpdate $annotation */
         if ($annotation = $annotationReader->getPropertyAnnotation($property, PostUpdate::class)) {
             $className = $annotation->value;
             if (is_subclass_of($className, HandlerInterface::class)) {
                 $this->changedProperties[] = ['handlerClassName' => $className, 'entity' => $entity, 'propertyName' => $propertyName, 'args' => $args];
             }
         }
     }
 }
コード例 #6
0
 /**
  * @param PreUpdateEventArgs $args
  */
 public function preUpdate(PreUpdateEventArgs $args)
 {
     $annotationReader = $this->getReaderFromEntityManager($args->getEntityManager());
     $entity = $args->getEntity();
     $changeSet = $args->getEntityChangeSet();
     $reflObject = new \ReflectionObject($entity);
     foreach ($changeSet as $propertyName => $values) {
         $property = $reflObject->getProperty($propertyName);
         /** @var PreUpdate $annotation */
         if ($annotation = $annotationReader->getPropertyAnnotation($property, PreUpdate::class)) {
             $className = $annotation->value;
             if (is_subclass_of($className, HandlerInterface::class)) {
                 /** @var HandlerInterface $propertySubscriber */
                 $propertySubscriber = new $className();
                 $propertySubscriber->handle($entity, $propertyName, $args);
             }
         }
     }
 }
コード例 #7
0
 public function preUpdate(\Doctrine\ORM\Event\PreUpdateEventArgs $eventArgs)
 {
     if ($eventArgs->getEntity() instanceof User) {
         if ($eventArgs->hasChangedField('email') || $eventArgs->hasChangedField('phone') || $eventArgs->hasChangedField('adresse') || $eventArgs->hasChangedField('ville') || $eventArgs->hasChangedField('zip')) {
             $service = $eventArgs->getEntity()->getService();
             if ($service != null) {
                 if ($service->getChefService()) {
                     $mail = $service->getChefService()->getEmail();
                 } else {
                     $mail = $service->getEmail();
                 }
             } else {
                 $mail = '*****@*****.**';
             }
             /**
              * TODO setFrom
              */
             $message = \Swift_Message::newInstance()->setSubject('Changements dans le profil de ' . $eventArgs->getEntity())->setFrom('*****@*****.**')->setTo('*****@*****.**')->addCc($mail)->setBody($this->getMailBody($eventArgs->getEntityChangeSet(), $eventArgs->getEntity()), 'text/html');
             $this->mailer->send($message);
         }
     }
 }
コード例 #8
0
 /**
  * @param PreUpdateEventArgs $eventArgs
  */
 public function preUpdate(PreUpdateEventArgs $eventArgs)
 {
     $entity = $eventArgs->getEntity();
     if ($this->prepareMedia($entity)) {
         // Hack ? Don't know, that's the behaviour Doctrine 2 seems to want
         // See : http://www.doctrine-project.org/jira/browse/DDC-1020
         $em = $eventArgs->getEntityManager();
         $uow = $em->getUnitOfWork();
         $uow->recomputeSingleEntityChangeSet($em->getClassMetadata(ClassLookup::getClass($entity)), $eventArgs->getEntity());
         // local media is soft-deleted or soft-delete is reverted
         $changeSet = $eventArgs->getEntityChangeSet();
         if (isset($changeSet['deleted']) && $entity->getLocation() === 'local') {
             $deleted = !$changeSet['deleted'][0] && $changeSet['deleted'][1];
             $reverted = $changeSet['deleted'][0] && !$changeSet['deleted'][1];
             if ($deleted || $reverted) {
                 $oldFileUrl = $entity->getUrl();
                 $newFileName = $reverted ? $entity->getOriginalFilename() : uniqid();
                 $newFileUrl = dirname($oldFileUrl) . '/' . $newFileName . '.' . pathinfo($oldFileUrl, PATHINFO_EXTENSION);
                 $entity->setUrl($newFileUrl);
                 $this->fileUrlMap[$newFileUrl] = $oldFileUrl;
             }
         }
     }
 }
コード例 #9
0
ファイル: ORMListener.php プロジェクト: atom-azimov/uploader
 private function getOldValues(PreUpdateEventArgs $event)
 {
     $oldValues = [];
     foreach ($event->getEntityChangeSet() as $name => $field) {
         if (false !== strpos($name, '.')) {
             continue;
         }
         $oldValues[$name] = $field[0];
     }
     return $oldValues ?: null;
 }
コード例 #10
0
 /**
  * @param PreUpdateEventArgs $args
  */
 public function preUpdate(PreUpdateEventArgs $args)
 {
     if (!$this->enabled) {
         return;
     }
     $entity = $args->getEntity();
     $entityClass = ClassUtils::getClass($entity);
     $event = ProcessTrigger::EVENT_UPDATE;
     if (!$this->triggerCache->hasTrigger($entityClass, $event)) {
         return;
     }
     $entityTriggers = $this->getTriggers($entityClass, $event);
     foreach ($entityTriggers as $trigger) {
         $this->scheduleProcess($trigger, $entity);
     }
     foreach (array_keys($args->getEntityChangeSet()) as $field) {
         $fieldTriggers = $this->getTriggers($entityClass, $event, $field);
         foreach ($fieldTriggers as $trigger) {
             $oldValue = $args->getOldValue($field);
             $newValue = $args->getNewValue($field);
             if ($newValue != $oldValue) {
                 $this->scheduleProcess($trigger, $entity, $oldValue, $newValue);
             }
         }
     }
 }
コード例 #11
0
 private function getOldValues(PreUpdateEventArgs $event, $fieldName)
 {
     $oldValue = [];
     $fieldLength = strlen($fieldName) + 1;
     foreach ($event->getEntityChangeSet() as $name => $field) {
         if (false === strpos($name, $fieldName)) {
             continue;
         }
         $oldValue[substr($name, $fieldLength)] = $field[0];
     }
     return $oldValue ?: null;
 }
コード例 #12
0
ファイル: User.php プロジェクト: eltrino/platform
 /**
  * Invoked before the entity is updated.
  *
  * @ORM\PreUpdate
  *
  * @param PreUpdateEventArgs $event
  */
 public function preUpdate(PreUpdateEventArgs $event)
 {
     $excludedFields = ['lastLogin', 'loginCount'];
     if (array_diff_key($event->getEntityChangeSet(), array_flip($excludedFields))) {
         $this->updatedAt = new \DateTime('now', new \DateTimeZone('UTC'));
     }
 }
コード例 #13
0
ファイル: Company.php プロジェクト: bzis/zomba
 /**
  * @ORM\PreUpdate
  * @param PreUpdateEventArgs $event
  */
 public function preUpdate(PreUpdateEventArgs $event)
 {
     if (!$this->isApproved()) {
         return;
     }
     $changes = $event->getEntityChangeSet();
     if ($changes) {
         $changes = array_keys($changes);
         foreach ($changes as $field) {
             if (!in_array($field, ['isApproved', 'contactName', 'position', 'phone'])) {
                 $this->setIsApproved(false);
                 break;
             }
         }
     }
 }
コード例 #14
0
 /**
  * Dispatch entity.update on preUpdate.
  *
  * @param Doctrine\ORM\Event\PreUpdateEventArgs $args
  * @return void
  */
 public function preUpdate(PreUpdateEventArgs $args)
 {
     $entityName = $this->getEntityName($args->getEntity());
     $this->events["{$entityName}.update"] = new GenericEvent($args->getEntity(), array('id' => $this->getEntityId($args->getEntity(), $args->getEntityManager()), 'diff' => $args->getEntityChangeSet(), 'title' => $this->getEntityTitle($args->getEntity())));
 }
コード例 #15
0
ファイル: Organization.php プロジェクト: Maksold/platform
 /**
  * Pre update event handler
  *
  * @ORM\PreUpdate
  *
  * @param PreUpdateEventArgs $event
  */
 public function preUpdate(PreUpdateEventArgs $event)
 {
     // prevent invoke update query if changesets updatedAt, createdAt field
     $excludedFields = ['createdAt', 'updatedAt'];
     if (array_diff_key($event->getEntityChangeSet(), array_flip($excludedFields))) {
         $this->updatedAt = new \DateTime('now', new \DateTimeZone('UTC'));
     }
 }