public function getMail()
 {
     $mail = MailInfoNewPublication::create($this->getApp(), $this->getReceiverMock(), $this->getEmitterMock(), $this->getMessage(), $this->getUrl(), $this->getExpiration());
     $mail->setTitle('joli titre');
     $mail->setAuthor('bel author');
     return $mail;
 }
Exemplo n.º 2
0
 /**
  *
  * @param  string        $event
  * @param  Array         $params
  * @param  mixed content $object
  * @return boolean
  */
 public function fire($event, $params, &$entry)
 {
     $params = ['entry_id' => $entry->getId(), 'notify_email' => $params['notify_email']];
     $dom_xml = new DOMDocument('1.0', 'UTF-8');
     $dom_xml->preserveWhiteSpace = false;
     $dom_xml->formatOutput = true;
     $root = $dom_xml->createElement('datas');
     $entry_id = $dom_xml->createElement('entry_id');
     $entry_id->appendChild($dom_xml->createTextNode($params['entry_id']));
     $root->appendChild($entry_id);
     $dom_xml->appendChild($root);
     $datas = $dom_xml->saveXml();
     $Query = new \User_Query($this->app);
     $Query->include_phantoms(true)->include_invite(false)->include_templates(false)->email_not_null(true);
     if ($entry->getFeed()->getCollection($this->app)) {
         $Query->on_base_ids([$entry->getFeed()->getCollection($this->app)->get_base_id()]);
     }
     $start = 0;
     $perLoop = 100;
     $from = ['email' => $entry->getAuthorEmail(), 'name' => $entry->getAuthorName()];
     do {
         $results = $Query->limit($start, $perLoop)->execute()->get_results();
         foreach ($results as $user_to_notif) {
             $mailed = false;
             if ($params['notify_email'] && $this->shouldSendNotificationFor($user_to_notif->getId())) {
                 $readyToSend = false;
                 try {
                     $token = $this->app['tokens']->getUrlToken(\random::TYPE_FEED_ENTRY, $user_to_notif->getId(), null, $entry->getId());
                     $url = $this->app->url('lightbox', ['LOG' => $token]);
                     $receiver = Receiver::fromUser($user_to_notif);
                     $readyToSend = true;
                 } catch (\Exception $e) {
                 }
                 if ($readyToSend) {
                     $mail = MailInfoNewPublication::create($this->app, $receiver);
                     $mail->setButtonUrl($url);
                     $mail->setAuthor($entry->getAuthorName());
                     $mail->setTitle($entry->getTitle());
                     $this->app['notification.deliverer']->deliver($mail);
                     $mailed = true;
                 }
             }
             $this->broker->notify($user_to_notif->getId(), __CLASS__, $datas, $mailed);
         }
         $start += $perLoop;
     } while (count($results) > 0);
     return true;
 }
Exemplo n.º 3
0
 public function onCreate(FeedEntryEvent $event)
 {
     $entry = $event->getFeedEntry();
     $params = ['entry_id' => $entry->getId(), 'notify_email' => $event->hasEmailNotification()];
     $this->app['manipulator.webhook-event']->create(WebhookEvent::NEW_FEED_ENTRY, WebhookEvent::FEED_ENTRY_TYPE, array_merge(array('feed_id' => $entry->getFeed()->getId()), $params));
     $datas = json_encode($params);
     $Query = $this->app['phraseanet.user-query'];
     $Query->include_phantoms(true)->include_invite(false)->include_templates(false)->email_not_null(true);
     if ($entry->getFeed()->getCollection($this->app)) {
         $Query->on_base_ids([$entry->getFeed()->getCollection($this->app)->get_base_id()]);
     }
     $start = 0;
     $perLoop = 100;
     do {
         $results = $Query->limit($start, $perLoop)->execute()->get_results();
         foreach ($results as $user_to_notif) {
             $mailed = false;
             if ($params['notify_email'] && $this->shouldSendNotificationFor($user_to_notif, 'eventsmanager_notify_feed')) {
                 $readyToSend = false;
                 try {
                     $token = $this->app['manipulator.token']->createFeedEntryToken($user_to_notif, $entry);
                     $url = $this->app->url('lightbox', ['LOG' => $token->getValue()]);
                     $receiver = Receiver::fromUser($user_to_notif);
                     $readyToSend = true;
                 } catch (\Exception $e) {
                 }
                 if ($readyToSend) {
                     $mail = MailInfoNewPublication::create($this->app, $receiver);
                     $mail->setButtonUrl($url);
                     $mail->setAuthor($entry->getAuthorName());
                     $mail->setTitle($entry->getTitle());
                     $this->app['notification.deliverer']->deliver($mail);
                     $mailed = true;
                 }
             }
             $this->app['events-manager']->notify($user_to_notif->getId(), 'eventsmanager_notify_feed', $datas, $mailed);
         }
         $start += $perLoop;
     } while (count($results) > 0);
 }