public function preUpdate(PreUpdateEventArgs $eventArgs) { $order = $eventArgs->getEntity(); if (!$order instanceof \Shopware\Models\Order\Order) { return; } //order or payment status changed? if ($eventArgs->hasChangedField('paymentStatus') || $eventArgs->hasChangedField('orderStatus')) { $historyData = array('userID' => null, 'change_date' => date('Y-m-d H:i:s'), 'orderID' => $order->getId()); if (Shopware()->Auth()->getIdentity() && Shopware()->Auth()->getIdentity()->id) { $user = $eventArgs->getEntityManager()->find('Shopware\\Models\\User\\User', Shopware()->Auth()->getIdentity()->id); $historyData['userID'] = $user->getId(); } //order status changed? if ($eventArgs->hasChangedField('orderStatus')) { $historyData['previous_order_status_id'] = $eventArgs->getOldValue('orderStatus')->getId(); $historyData['order_status_id'] = $eventArgs->getNewValue('orderStatus')->getId(); } else { $historyData['previous_order_status_id'] = $order->getOrderStatus()->getId(); $historyData['order_status_id'] = $order->getOrderStatus()->getId(); } //payment status changed? if ($eventArgs->hasChangedField('paymentStatus')) { $historyData['previous_payment_status_id'] = $eventArgs->getOldValue('paymentStatus')->getId(); $historyData['payment_status_id'] = $eventArgs->getNewValue('paymentStatus')->getId(); } else { $historyData['previous_payment_status_id'] = $order->getPaymentStatus()->getId(); $historyData['payment_status_id'] = $order->getPaymentStatus()->getId(); } $eventArgs->getEntityManager()->getConnection()->insert('s_order_history', $historyData); } }
/** * @param PreUpdateEventArgs $event */ public function preUpdate(PreUpdateEventArgs $event) { $entity = $event->getEntity(); if ($entity instanceof CalendarEvent) { if ($event->hasChangedField('start') || $event->hasChangedField('reminder')) { $needChangeSetsComputing = false; if ($event->hasChangedField('reminder')) { if ($event->getNewValue('reminder')) { $start = $event->hasChangedField('start') ? $event->getNewValue('start') : $entity->getStart(); $entity->setRemindAt($this->remindTimeCalculator->calculateRemindAt($start)); } else { $entity->setRemindAt(null); } if ($entity->getReminded()) { $entity->setReminded(false); } $needChangeSetsComputing = true; } else { if ($entity->getReminder()) { $entity->setRemindAt($this->remindTimeCalculator->calculateRemindAt($event->getNewValue('start'))); $needChangeSetsComputing = true; } if ($entity->getReminded()) { $entity->setReminded(false); $needChangeSetsComputing = true; } } if ($needChangeSetsComputing) { $em = $event->getEntityManager(); $uow = $em->getUnitOfWork(); $uow->recomputeSingleEntityChangeSet($em->getClassMetadata('OroCalendarBundle:CalendarEvent'), $entity); } } } }
private function getChangesets(PreUpdateEventArgs $args) { $oldValues = array(); $newValues = array(); $fields = array('avatar' => 'Фото', 'firstName' => 'Имя', 'lastName' => 'Фамилия', 'surName' => 'Отчество', 'birthdate' => 'Дата рождения', 'hideBirthdate' => 'Скрывать дату рождения', 'city' => 'Город', 'address' => 'Адрес', 'university' => 'ВУЗ', 'graduateYear' => 'Год окончания ВУЗа', 'primarySpecialty' => 'Основная специальность', 'secondarySpecialty' => 'Второстепенная специальность', 'specialization' => 'Специализация', 'academicTitle' => 'Звание', 'jobType' => 'Место работы', 'job' => 'Название организации', 'jobAlignment' => 'Место организации', 'phone' => 'Телефон', 'position' => 'Должность', 'diploma' => 'Диплом ВУЗа', 'achievements' => 'О себе', 'academicDegree' => 'Ученая степень', 'dissertation' => 'Тема диссертации', 'diplomaScientic' => 'Диплом ученой степени', 'digestSubscribed' => 'Подписка на дайджест', 'commentSubscribed' => 'Подписка ответов на комментарии'); foreach ($fields as $field => $label) { if ($args->hasChangedField($field)) { $old = $args->getOldValue($field); $new = $args->getNewValue($field); if ($old == $new || is_array($old) && empty($new)) { continue; } if ($new instanceof UploadedFile) { $this->imgFields[$field] = $label; $oldValues[] = "<b>{$label}:</b> ~"; } else { $oldValues[] = "<b>{$label}:</b> " . ($old instanceof \DateTime ? $old->format('d.m.Y') : $old); $newValues[] = "<b>{$label}:</b> " . ($new instanceof \DateTime ? $new->format('d.m.Y') : $new); } } } if (count($oldValues)) { $oldValues = implode('<br/>', $oldValues); $newValues = implode('<br/>', $newValues); return array($oldValues, $newValues); } return array(null, null); }
/** * @ORM\PreUpdate */ public function preUpdate($item, PreUpdateEventArgs $event) { if ($item->getLevel() > 0) { $item->setRootSequence(NULL); } elseif ($event->hasChangedField('parent') && is_null($event->getNewValue('parent')) && !is_null($event->getOldValue('parent'))) { $this->setMaxRootSequence($item, $event); } else { if (!$event->hasChangedField('rootSequence')) { return; } $oldSequence = $event->getOldValue('rootSequence'); $newSequence = $event->getNewValue('rootSequence'); if ($oldSequence === $newSequence) { return; } $em = $event->getEntityManager(); $qb = $em->createQueryBuilder(); $qb->update(get_class($item), 'i')->where('i.rootSequence = ' . $newSequence); if ($newSequence > $oldSequence) { $qb->set('i.rootSequence', 'i.rootSequence - 1'); } elseif ($newSequence < $oldSequence) { $qb->set('i.rootSequence', 'i.rootSequence + 1'); } $qb->getQuery()->execute(); } }
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); } } } }
public function preUpdate(PreUpdateEventArgs $eventArgs) { if ($eventArgs->getEntity() instanceof Badge) { if ($eventArgs->hasChangedField('remis') && $eventArgs->getNewValue('remis') == false) { $date = new \DateTime('now'); $eventArgs->getEntity()->setDateRendu($date); } } }
private function hasChanged(PreUpdateEventArgs $event) { $hasChanged = FALSE; foreach ($this->propertyInfos as $property => $value) { if ($event->hasChangedField($property) && !empty($event->getOldValue($property)) && \trim($event->getOldValue($property)) !== \trim($event->getNewValue($property))) { $hasChanged = TRUE; } } return $hasChanged; }
public function preUpdate(PreUpdateEventArgs $eventArgs) { if ($eventArgs->getEntity() instanceof Role && $eventArgs->hasChangedField('role')) { $oldRoleName = $eventArgs->getOldValue('role'); $newRoleName = $eventArgs->getNewValue('role'); /** @var $aclSidManager AclSidManager */ $aclSidManager = $this->aclSidManagerLink->getService(); $aclSidManager->updateSid($aclSidManager->getSid($newRoleName), $oldRoleName); } }
/** * Listen a preUpdate lifecycle event. Checking and encrypt entities fields * which have @Encrypted annotation. Using changesets to avoid preUpdate event * restrictions * @param LifecycleEventArgs $args */ public function preUpdate(PreUpdateEventArgs $args) { $reflectionClass = new ReflectionClass($args->getEntity()); $properties = $reflectionClass->getProperties(); foreach ($properties as $refProperty) { $propName = $refProperty->getName(); if ($this->annReader->getPropertyAnnotation($refProperty, self::ENCRYPTED_ANN_NAME) && $args->hasChangedField($propName)) { $args->setNewValue($propName, $this->encryptor->encrypt($args->getNewValue($propName))); } } }
public function preUpdate(PreUpdateEventArgs $eventArgs) { if ($eventArgs->getEntity() instanceof Registration) { if ($eventArgs->hasChangedField('status') && $eventArgs->getNewValue('status') == 'paid') { $registration = $eventArgs->getEntity(); $user = $registration->getUser(); $systemMailer = $this->container->get('system_mailer'); $systemMailer->send('App:paid_registration', ['user' => $user, 'registration' => $registration], 'es'); } } }
/** * Maj des scripts du serveur si la config du serveur (port, maxplayers, dir) a été modifié * Ou si la config du jeu (bin, binDir, launchName, map, orangebox, source) a été modifié * Ou si l'IP publique de la machine a été modifié * * Réinstallation du serveur * Si des modifs ont été faites sur la machine (IP privée, home, user) * Ou si le serveur de jeu n'est plus sur la meme machine * Ou si le jeu du serveur est modifié * * @param \Doctrine\ORM\Event\PreUpdateEventArgs $args */ public function preUpdate(PreUpdateEventArgs $args) { $entity = $args->getEntity(); if ($entity instanceof SteamServer) { if ($args->hasChangedField('port') || $args->hasChangedField('maxplayers') && $entity->getGame()->getLaunchName() != "csgo" || $args->hasChangedField('core') || $args->hasChangedField('mode')) { try { $entity->uploadHldsScript($this->getTwig()); } catch (\Exception $e) { } } if ($args->hasChangedField('maxplayers') && $entity->getGame()->getLaunchName() == "csgo") { try { $entity->modifyGameModesCfg(); } catch (\Exception $e) { } } if ($args->hasChangedField('dir')) { try { $entity->uploadShellScripts($this->getTwig()); } catch (\Exception $e) { } } if ($args->hasChangedField('rebootAt')) { //suppression del'ancienne tâche cron $entity->removeAutoReboot($args->getOldValue('rebootAt')); if ($args->getNewValue('rebootAt') != null) { $entity->addAutoReboot(); } } if ($args->hasChangedField('name') || $args->hasChangedField('rconPassword')) { try { $entity->modifyServerCfgFile(); } catch (\Exception $e) { } } } elseif ($entity instanceof Machine) { // Upload des scripts si l'IP publique ou le home de la machine a été modifié if ($args->hasChangedField('publicIp') || $args->hasChangedField('home')) { $servers = $entity->getGameServers(); foreach ($servers as $server) { if (!$server instanceof SteamServer) { continue; } try { $server->uploadShellScripts($this->getTwig()); } catch (\Exception $e) { } } } } }
public function preUpdate(PreUpdateEventArgs $args) { $entity = $args->getEntity(); $entityManager = $args->getEntityManager(); if (!$entity instanceof User) { return; } if ($args->hasChangedField('username')) { $class = ClassUtils::getRealClass($entity); $old_username = $args->getOldValue('username'); $new_username = $args->getNewValue('username'); $entityManager->getConnection()->update('acl_security_identities', array('identifier' => sprintf('%s-%s', $class, $new_username)), array('identifier' => sprintf('%s-%s', $class, $old_username))); } }
public function preUpdate(PreUpdateEventArgs $event) { $entity = $event->getEntity(); foreach ($this->getFileReferenceFields($entity) as $field) { if ($event->hasChangedField($field)) { $newFileReference = $event->getNewValue($field); $oldFileReference = $event->getOldValue($field); } else { $newFileReference = $this->getFieldValue($event, $field); $oldFileReference = $this->getOldValues($event, $field); } $id = $this->getIdentity($entity, $field); $this->uploader->update($id, $newFileReference, $oldFileReference); } }
/** * @ORM\PreUpdate */ public function preUpdate($item, PreUpdateEventArgs $event) { if (!$event->hasChangedField('sequence')) { return; } $oldSequence = $event->getOldValue('sequence'); $newSequence = $event->getNewValue('sequence'); $em = $event->getEntityManager(); //posouvam o jedno, ci-li v $newSequence je hodnota toho na ktere posouvam $qb = $em->createQueryBuilder(); $qb->update(get_class($item), 'i')->where('i.sequence = ' . $newSequence); if ($newSequence > $oldSequence) { $qb->set('i.sequence', 'i.sequence - 1'); } elseif ($newSequence < $oldSequence) { $qb->set('i.sequence', 'i.sequence + 1'); } $qb->getQuery()->execute(); }
/** * Handle pre update event * * @param PreUpdateEventArgs $args Event arguments */ public function preUpdate(PreUpdateEventArgs $args) { $annotations = $this->container->get('cyber_app.metadata.reader')->getUploadebleFieldsAnnotations($args->getEntity()); if (0 === count($annotations)) { return; } foreach ($annotations as $field => $annotation) { if (!($args->hasChangedField($field) && $args->getOldValue($field))) { continue; } $config = $this->container->getParameter('oneup_uploader.config.' . $annotation->endpoint); if ($annotation->multiple) { $files = array_diff((array) $args->getOldValue($field), (array) $args->getNewValue($field)); foreach ($files as $file) { $this->unlink($annotation->endpoint, $config['storage'], $file); } continue; } if ($args->getOldValue($field)) { $this->unlink($annotation->endpoint, $config['storage'], $args->getOldValue($field)); } } }
/** * @param PreUpdateEventArgs */ public function preUpdate(PreUpdateEventArgs $args) { if (!$args->getEntity() instanceof ISortable) { return; } if (!$args->hasChangedField('position')) { return; } $oldPos = (int) $args->getOldValue('position'); $newPos = max(1, (int) $args->getNewValue('position')); $entity = $args->getEntity(); $rp = $this->getPropReflection($entity); $em = $args->getEntityManager(); $qb = $this->createBaseQb($em, $entity); $this->configureUpdateQb($qb, $newPos, $oldPos); try { $res = $qb->getQuery()->getSingleScalarResult(); } catch (NoResultException $e) { $res = 0; } if ($newPos > $oldPos) { if ($res === 0) { //entity was last already, keep old position $newPos = $oldPos; } else { $newPos = min($newPos, $this->getMaxPosition($em, $entity)); } } $rp->setValue($entity, $newPos); $uow = $em->getUnitOfWork(); $meta = $em->getClassMetadata(get_class($entity)); $uow->recomputeSingleEntityChangeSet($meta, $entity); $uow->getEntityPersister(get_class($entity))->update($entity); $uow->setOriginalEntityProperty(spl_object_hash($entity), 'position', $newPos); //$uow->scheduleExtraUpdate($entity, $uow->getEntityChangeSet($entity)); }
/** * @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); } } } }
/** * @ORM\PreUpdate */ public function updateTaskHours(PreUpdateEventArgs $event) { if ($event->hasChangedField('hours')) { $this->task->changeHours($event->getNewValue('hours') - $event->getOldValue('hours')); } }
public function preUpdate(PreUpdateEventArgs $args) { $em = $args->getEntityManager(); $autocompleteManager = $this->autocompleteManager; $autocompleteManager->setEntityManager($em); $entity = $args->getEntity(); if ($entity instanceof Hotel) { if ($entity->getId() && $entity->getBrand()) { $brand = strtolower($entity->getBrand()->getArtsysID()); if ($args->hasChangedField('region')) { /** @var Region $oldRegion */ $oldRegion = $args->getOldValue('region'); /** @var Region $newRegion */ $newRegion = $args->getNewValue('region'); $oldCountry = null; if ($oldRegion) { $this->incrementRegion($oldRegion, $brand, -1); $oldCountry = $oldRegion->getCountry(); if ($oldCountry) { $this->incrementCountry($oldCountry, $brand, -1); } } if ($newRegion) { if ($newRegion->getId()) { $this->incrementRegion($newRegion, $brand, 1); } $newCountry = $newRegion->getCountry(); if ($newCountry->getId() && $oldCountry && $oldCountry->getId() != $newCountry->getId()) { $this->incrementCountry($newCountry, $brand, 1); } } } if ($args->hasChangedField('city')) { /** @var City $oldCity */ $oldCity = $args->getOldValue('city'); /** @var City $newCity */ $newCity = $args->getNewValue('city'); if ($oldCity) { $this->incrementCity($oldCity, $brand, -1); } if ($newCity && $newCity->getId()) { $this->incrementCity($newCity, $brand, 1); } } if ($args->hasChangedField('department')) { /** @var Department $oldDepartment */ $oldDepartment = $args->getOldValue('department'); /** @var Department $newDepartment */ $newDepartment = $args->getNewValue('department'); if ($oldDepartment) { $this->incrementDepartment($oldDepartment, $brand, -1); } if ($newDepartment && $newDepartment->getId()) { $this->incrementDepartment($newDepartment, $brand, 1); } } } elseif ($entity instanceof Region) { if ($args->hasChangedField('country')) { /** @var Country $oldCity */ $oldCountry = $args->getOldValue('country'); /** @var Country $newCity */ $newCountry = $args->getNewValue('country'); if ($oldCountry) { $this->removeRegion($entity, $oldCountry); } if ($newCountry && $newCountry->getId()) { $this->addRegion($entity); } } $autocompleteManager->updateRegion($entity); } elseif ($entity instanceof Department) { if ($args->hasChangedField('region')) { /** @var Region $oldRegion */ $oldRegion = $args->getOldValue('region'); /** @var Region $newRegion */ $newRegion = $args->getNewValue('region'); if ($oldRegion) { $this->removeDepartment($entity, $oldRegion); } if ($newRegion && $newRegion->getId()) { $this->addDepartment($entity, $newRegion); } } } elseif ($entity instanceof City) { if ($args->hasChangedField('region')) { /** @var Department $oldDepartment */ $oldDepartment = $args->getOldValue('department'); /** @var Department $newDepartment */ $newDepartment = $args->getNewValue('department'); if ($oldDepartment) { $this->removeCity($entity, $oldDepartment); } if ($newDepartment && $newDepartment->getId()) { $this->addCity($entity, $newDepartment); } } } } }
/** * we create the historic change of TranslationPage status. * * @param PreUpdateEventArgs $eventArgs The PreUpdateEventArgs class * * @return void * @access protected * @final * @author Etienne de Longeaux <*****@*****.**> */ protected final function _TranslationPage(PreUpdateEventArgs $eventArgs) { $entity = $eventArgs->getEntity(); $entityManager = $eventArgs->getEntityManager(); // we set the persist of the Page entity if ($this->isUsernamePasswordToken() && $entity instanceof TranslationPage) { if ($eventArgs->hasChangedField('status') && $eventArgs->getOldValue('status') != $eventArgs->getNewValue('status')) { $historicalStatus = new HistoricalStatus(); $historicalStatus->setCreatedAt(new \DateTime(date('Y-m-d'))); $historicalStatus->setPageTranslation($entity); $historicalStatus->setStatus($entity->getStatus()); $historicalStatus->setComment('Historical status change'); $historicalStatus->setCreatedAt(new \DateTime()); $historicalStatus->setEnabled(true); // we add the entity to be persisted. $this->_addPersistEntities($historicalStatus); } } }
/** * Checks whether the update of the review needs an update of the site * * @param PreUpdateEventArgs $args * @return boolean */ protected function needsUpdate(PreUpdateEventArgs $args) { if ($args->hasChangedField('status') && $args->getNewValue('status') == 'ok') { return true; } if ($args->hasChangedField('score') && $args->getEntity()->getStatus() == 'ok') { return true; } return false; }
/** * Обработка изменений полей врача перед сохранением для изменения рейтинга и шкалы заполненности профайла * @param Doctor $doctor * @param PreUpdateEventArgs $args */ public function changeDoctor(Doctor $doctor, PreUpdateEventArgs $args) { # изменение рейтинговых полей foreach ($this->ratingFields as $field => $bonus) { # если рейтинговое поле изменилось if ($args->hasChangedField($field)) { $new = $args->getNewValue($field); $old = $args->getOldValue($field); # если поле заполнили - добавляем баллы в рейтинг. Если очистили - снимаем. if (empty($old) && !empty($new)) { $doctor->addRating($bonus); } elseif (empty($new) && !empty($old) && !is_array($old)) { $doctor->subRating($bonus); } } } $filledBonus = intval(100 / count($this->filledFields)); // = 5 # изменение полей, влияющих на заполненность профайла foreach ($this->filledFields as $field) { if ($args->hasChangedField($field)) { $new = $args->getNewValue($field); $old = $args->getOldValue($field); # если поле заполнили - заполняем шкалу профиля, иначе снимаем if (empty($old) && !empty($new)) { $doctor->addFilled($filledBonus); } elseif (empty($new) && !empty($old) && !is_array($old)) { $doctor->subFilled($filledBonus); } } } }