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); } } } }
/** * @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; } }
/** * 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; }
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); } }
/** * @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]; } } } }
/** * @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); } } } }
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); } } }
/** * @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; } } } }
private function getOldValues(PreUpdateEventArgs $event) { $oldValues = []; foreach ($event->getEntityChangeSet() as $name => $field) { if (false !== strpos($name, '.')) { continue; } $oldValues[$name] = $field[0]; } return $oldValues ?: null; }
/** * @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); } } } }
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; }
/** * 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')); } }
/** * @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; } } } }
/** * 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()))); }
/** * 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')); } }