예제 #1
0
 public function onCreate(OrderEvent $event)
 {
     $params = ['usr_id' => $event->getOrder()->getUser()->getId(), 'order_id' => $event->getOrder()->getId()];
     $base_ids = array_unique(array_map(function (OrderElement $element) {
         return $element->getBaseId();
     }, iterator_to_array($event->getOrder()->getElements())));
     $query = $this->app['phraseanet.user-query'];
     $users = $query->on_base_ids($base_ids)->who_have_right(['order_master'])->execute()->get_results();
     if (count($users) == 0) {
         return;
     }
     $datas = json_encode($params);
     $orderInitiator = $event->getOrder()->getUser();
     foreach ($users as $user) {
         $mailed = false;
         if ($this->shouldSendNotificationFor($user, 'eventsmanager_notify_order')) {
             try {
                 $receiver = Receiver::fromUser($user);
             } catch (\Exception $e) {
                 continue;
             }
             $mail = MailInfoNewOrder::create($this->app, $receiver);
             $mail->setUser($orderInitiator);
             $this->app['notification.deliverer']->deliver($mail);
             $mailed = true;
         }
         $this->app['events-manager']->notify($user->getId(), 'eventsmanager_notify_order', $datas, $mailed);
     }
 }
예제 #2
0
 public function getMail()
 {
     $mail = MailInfoNewOrder::create($this->getApp(), $this->getReceiverMock(), $this->getEmitterMock(), $this->getMessage());
     $user = $this->createUserMock();
     $user->expects($this->any())->method('getDisplayName')->will($this->returnValue('JeanPhil'));
     $mail->setUser($user);
     return $mail;
 }
예제 #3
0
 /**
  *
  * @param  string        $event
  * @param  Array         $params
  * @param  mixed content $object
  * @return Void
  */
 public function fire($event, $params, &$object)
 {
     $default = ['usr_id' => '', 'order_id' => []];
     $params = array_merge($default, $params);
     $order_id = $params['order_id'];
     $users = [];
     try {
         $repository = $this->app['EM']->getRepository('Phraseanet:OrderElement');
         $results = $repository->findBy(['orderId' => $order_id]);
         $base_ids = [];
         foreach ($results as $result) {
             $base_ids[] = $result->getBaseId();
         }
         $base_ids = array_unique($base_ids);
         $query = new User_Query($this->app);
         $users = $query->on_base_ids($base_ids)->who_have_right(['order_master'])->execute()->get_results();
     } catch (\Exception $e) {
     }
     if (count($users) == 0) {
         return;
     }
     $dom_xml = new DOMDocument('1.0', 'UTF-8');
     $dom_xml->preserveWhiteSpace = false;
     $dom_xml->formatOutput = true;
     $root = $dom_xml->createElement('datas');
     $usr_id_dom = $dom_xml->createElement('usr_id');
     $order_id_dom = $dom_xml->createElement('order_id');
     $usr_id_dom->appendChild($dom_xml->createTextNode($params['usr_id']));
     $order_id_dom->appendChild($dom_xml->createTextNode($order_id));
     $root->appendChild($usr_id_dom);
     $root->appendChild($order_id_dom);
     $dom_xml->appendChild($root);
     $datas = $dom_xml->saveXml();
     if (null === ($orderInitiator = $this->app['manipulator.user']->getRepository()->find($params['usr_id']))) {
         return;
     }
     foreach ($users as $user) {
         $mailed = false;
         if ($this->shouldSendNotificationFor($user->getId())) {
             $readyToSend = false;
             try {
                 $receiver = Receiver::fromUser($user);
                 $readyToSend = true;
             } catch (\Exception $e) {
                 continue;
             }
             if ($readyToSend) {
                 $mail = MailInfoNewOrder::create($this->app, $receiver);
                 $mail->setUser($orderInitiator);
                 $this->app['notification.deliverer']->deliver($mail);
                 $mailed = true;
             }
         }
         $this->broker->notify($user->getId(), __CLASS__, $datas, $mailed);
     }
     return;
 }