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);
             }
         }
     }
 }
 public function preUpdate(PreUpdateEventArgs $args)
 {
     $entity = $args->getEntity();
     if ($entity instanceof $this->orderProductClass) {
         $price = $entity->getPrice();
         if ($args->hasChangedField('quantity') || $args->hasChangedField('product')) {
             $price = $entity->getQuantity() * $entity->getProduct()->getPrice();
         }
         $entity->setPrice($price);
         $entity->setUpdatedAt(new \DateTime());
     }
 }
 private function markAsModified(PreUpdateEventArgs $args)
 {
     $entity = $args->getEntity();
     $securityToken = $this->securityContext->getToken();
     if (!$entity instanceof Advertisement || null == $securityToken) {
         return;
     }
     $user = $securityToken->getUser();
     if (($args->hasChangedField('description') || $args->hasChangedField('title')) && $user instanceof Advertiser && $user->getId() == $entity->getAdvertiser()->getId()) {
         $entity->markAsModified();
         $args->getEntityManager()->getUnitOfWork()->computeChangeSet($args->getEntityManager()->getClassMetadata(get_class($entity)), $entity);
     }
 }
예제 #5
0
 /**
  * @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();
     }
 }
예제 #6
0
 public function preUpdate(User $user, PreUpdateEventArgs $event)
 {
     if ($event->hasChangedField('email')) {
         $token = $this->tokenGenerator->generateEmailConfirmationToken($user);
         $this->emailDispatcher->sendEmailVerifyEmail($user, $token);
     }
 }
예제 #7
0
 /**
  * @param PreUpdateEventArgs $args
  */
 public function preUpdate(PreUpdateEventArgs $args)
 {
     if (!$args->getEntity() instanceof User || !$args->hasChangedField('email')) {
         return;
     }
     $args->getEntity()->setGoogleId(null);
 }
예제 #8
0
 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);
 }
예제 #9
0
 /**
  * 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) {
                 }
             }
         }
     }
 }
예제 #10
0
 /**
  * sets the modification date
  */
 public function preUpdate(Domains $domain, PreUpdateEventArgs $event)
 {
     $domain->setModified(new \DateTime());
     if ($event->hasChangedField('name')) {
         $domain->setNeedsSoaUpdate(true);
     }
     return true;
 }
예제 #11
0
 /**
  * Delete old avatar image from disk if it has been changed
  *
  * @param User $user
  * @param PreUpdateEventArgs $event
  */
 public function preUpdate(User $user, PreUpdateEventArgs $event)
 {
     if ($event->hasChangedField('avatarImage')) {
         $oldAvatarImage = $event->getOldValue('avatarImage');
         if (!empty($oldAvatarImage)) {
             $this->userService->deleteAvatar($oldAvatarImage);
         }
     }
 }
 public function preUpdate(PreUpdateEventArgs $eventArgs)
 {
     if ($eventArgs->getEntity() instanceof Tenue) {
         if ($eventArgs->hasChangedField('nombre_rendu')) {
             $date = new \DateTime('now');
             $eventArgs->getEntity()->setDateRendu($date);
         }
     }
 }
 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);
         }
     }
 }
 public function preUpdate(PreUpdateEventArgs $args)
 {
     $entity = $args->getEntity();
     if ($entity instanceof Issue) {
         if ($args->hasChangedField('assignee')) {
             $entity->addCollaborator($entity->getAssignee());
         }
     }
 }
예제 #15
0
 /** @ORM\PreUpdate */
 public function preUpdate(Company $company, PreUpdateEventArgs $event)
 {
     $entity = $event->getEntity();
     $entityManager = $event->getEntityManager();
     if ($event->hasChangedField('identification')) {
         $status = $entityManager->getRepository('MainCommonBundle:Status\\PhotographerStatus')->findOneById(1);
         //To verify
         $company->setStatus($status);
     }
 }
예제 #16
0
 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);
     }
 }
 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;
 }
예제 #18
0
 private function sendChangeEmails(Show $show, PreUpdateEventArgs $event)
 {
     $authorisationEmailSent = false;
     if ($event->hasChangedField('society') && $show->getSociety() instanceof Society) {
         if ($show->isAuthorised()) {
             $this->moderationManager->notifySocietyChanged($show);
         } else {
             $this->moderationManager->autoApproveOrEmailModerators($show);
             $authorisationEmailSent = true;
         }
     }
     if ($event->hasChangedField('venue') && $show->getVenue() instanceof Venue) {
         if ($show->isAuthorised()) {
             $this->moderationManager->notifyVenueChanged($show);
         } elseif (!$authorisationEmailSent) {
             $this->moderationManager->autoApproveOrEmailModerators($show);
         }
     }
 }
 public function preUpdate(PreUpdateEventArgs $eventArgs)
 {
     $issue = $eventArgs->getEntity();
     $entityManager = $eventArgs->getEntityManager();
     if ($issue instanceof Issue) {
         $user = $this->container->get('security.context')->getToken()->getUser();
         if ($eventArgs->hasChangedField('status')) {
             $this->setActivity($issue, $user, Activity::CHANGE_ISSUE_STATUS, $entityManager, true);
         }
     }
 }
 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');
         }
     }
 }
예제 #21
0
 public function preUpdate(PreUpdateEventArgs $eventArgs)
 {
     $user = $eventArgs->getEntity();
     if ($user instanceof User) {
         if ($eventArgs->hasChangedField('password')) {
             $password = $this->encodePassword($user);
             $eventArgs->setNewValue('password', $password);
             $user->setPassword($password);
         }
     }
 }
 /**
  * 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)));
         }
     }
 }
예제 #23
0
 public function preUpdate(PreUpdateEventArgs $eventArgs)
 {
     $post = $eventArgs->getEntity();
     if ($post instanceof Post) {
         if (null === $post->getImageName()) {
             return;
         }
         if ($eventArgs->hasChangedField('imageName') && file_exists($eventArgs->getOldValue('imageName'))) {
             unlink($eventArgs->getOldValue('imageName'));
         }
     }
 }
예제 #24
0
 public function preUpdate(PreUpdateEventArgs $eventArgs)
 {
     $article = $eventArgs->getEntity();
     if ($article instanceof Article) {
         if (null === $article->getPathToImage()) {
             return;
         }
         if ($eventArgs->hasChangedField('imageName') && file_exists($eventArgs->getOldValue('pathToImage'))) {
             unlink($eventArgs->getOldValue('pathToImage'));
         }
     }
 }
 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);
         }
     }
 }
 /**
  * PreUpdate event listener
  *
  * Only computes password change if password is one of file to be changed
  *
  * @param PreUpdateEventArgs $eventArgs Event args
  */
 public function preUpdate(PreUpdateEventArgs $eventArgs)
 {
     $entity = $eventArgs->getEntity();
     if ($this->checkEntityType($entity)) {
         if ($eventArgs->hasChangedField('password')) {
             $password = $entity->getPassword();
             if (!empty($password)) {
                 $encodedPassword = $this->encryptPassword($password);
                 $eventArgs->setNewValue('password', $encodedPassword);
             }
         }
     }
 }
예제 #27
0
 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)));
     }
 }
예제 #28
0
 public function preUpdate(PreUpdateEventArgs $args)
 {
     $entity = $args->getEntity();
     if ($entity instanceof Machine) {
         // Réinstallation de la machine si l'IP privé ou l'utilisateur a été modifié
         if ($args->hasChangedField('ip') || $args->hasChangedField('home')) {
             $em = $args->getEntityManager();
             $uow = $em->getUnitOfWork();
             $servers = $entity->getGameServers();
             foreach ($servers as $server) {
                 try {
                     $server->installServer($this->container->get('twig'));
                 } catch (\Exception $e) {
                     $server->setInstallationStatus(0);
                 }
                 $meta = $em->getClassMetadata(get_class($server));
                 $uow->recomputeSingleEntityChangeSet($meta, $server);
             }
             $meta = $em->getClassMetadata(get_class($entity));
             $uow->recomputeSingleEntityChangeSet($meta, $entity);
         }
     }
 }
예제 #29
0
 public function PreUpdate(PreUpdateEventArgs $args)
 {
     $entity = $args->getEntity();
     $this->em = $args->getEntityManager();
     if ($entity instanceof Order) {
         $this->order = $entity;
         if ($args->hasChangedField('status')) {
             $log = $this->createLog();
             $this->order->addStatusLog($log);
             $this->em->getUnitOfWork()->scheduleExtraUpdate($entity, ['statusLogs' => $this->order->getStatusLogs()]);
             //                $this->em->getUnitOfWork()->computeChangeSets();
             //                $this->em->getUnitOfWork()->commit();
         }
     }
 }
예제 #30
-1
 /**
  * Обработка изменений полей врача перед сохранением для изменения рейтинга и шкалы заполненности профайла
  * @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);
             }
         }
     }
 }