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); } }
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; }
/** * * @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; }