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