$entry->get_id() ); $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->appbox); $Query->include_phantoms(true)->include_invite(false)->include_templates(false); if ($entry->get_feed()->get_collection()) { $Query->on_base_ids(array($entry->get_feed()->get_collection()->get_base_id())); } $start = 0; $perLoop = 100; $from = array( 'email' => $entry->get_author_email(), 'name' => $entry->get_author_name() ); do { $results = $Query->limit($start, $perLoop)->execute()->get_results(); foreach ($results as $user_to_notif) { /* @var $user_to_notif \User_Adapter */ $mailed = false; $send_notif = ($this->get_prefs(__CLASS__, $user_to_notif->get_id()) != '0'); if ($send_notif) { $email = array( 'email' => $user_to_notif->get_email(), 'name' => $user_to_notif->get_display_name() ); $token = \random::getUrlToken( \random::TYPE_FEED_ENTRY , $user_to_notif->get_id() , null , $entry->get_id() ); $url = $this->appbox->get_registry()->get('GV_ServerName') . 'lightbox/index.php?LOG=' . $token; if (self::mail($email, $from, $url, $entry)) $mailed = true; } $this->broker->notify($user_to_notif->get_id(), __CLASS__, $datas, $mailed); } $start += $perLoop; } while (count($results) > 0); return true; } /** * * @param Array $datas * @param boolean $unread * @return Array */ public function datas($datas, $unread) { $sx = simplexml_load_string($datas); try { $entry = \Feed_Entry_Adapter::load_from_id($this->appbox, (int) $sx->entry_id); } catch (\Exception $e) { return array(); } $ret = array( 'text' => sprintf( _('%1$s has published %2$s') , $entry->get_author_name() , '' . $entry->get_title() . '' ) , 'class' => ($unread == 1 ? 'reload_baskets' : '') ); return $ret; } /** * * @return string */ public function get_name() { return _('Feeds'); } /** * * @return string */ public function get_description() { return _('Recevoir des notifications lorsqu\'on me push quelque chose'); } /** * * @return boolean */ public function is_available() { return true; } /** * * @param Array $to * @param Array $from * @param string $message * @param string $url * @param boolean $accuse * @return boolean */ public function mail($to, $from, $url, \Feed_Entry_Adapter $entry) { $subject = sprintf(_('Nouvelle publication : %s'), $entry->get_title()); $body = "
" . sprintf('%s vient de publier %s', $entry->get_author_name(), $entry->get_title()) . _('Connectez vous a l\'adresse suivante pour la consulter') . "
\n"; $body .= '
' . $url . "
\n"; $body .= "
"; $body .= "
\n
\n
\n" . _('push::atention: ce lien est unique et son contenu confidentiel, ne divulguez pas'); return mail::send_mail($subject, $body, $to, $from, array()); } }