/**
  * Raise a notification event event
  *
  * @param $event           the event raised for the itemtype
  * @param $item            the object which raised the event
  * @param $options array   of options used
  * @param $label           used for debugEvent() (default '')
  **/
 static function raiseEvent($event, $item, $options = array(), $label = '')
 {
     global $CFG_GLPI;
     //If notifications are enabled in GLPI's configuration
     if ($CFG_GLPI["use_mailing"]) {
         $email_processed = array();
         $email_notprocessed = array();
         //Get template's information
         $template = new NotificationTemplate();
         $notificationtarget = NotificationTarget::getInstance($item, $event, $options);
         if (!$notificationtarget) {
             return false;
         }
         $entity = $notificationtarget->getEntity();
         //Foreach notification
         foreach (Notification::getNotificationsByEventAndType($event, $item->getType(), $entity) as $data) {
             $targets = getAllDatasFromTable('glpi_notificationtargets', 'notifications_id = ' . $data['id']);
             $notificationtarget->clearAddressesList();
             //Process more infos (for example for tickets)
             $notificationtarget->addAdditionnalInfosForTarget();
             $template->getFromDB($data['notificationtemplates_id']);
             $template->resetComputedTemplates();
             //Set notification's signature (the one which corresponds to the entity)
             $template->setSignature(Notification::getMailingSignature($entity));
             $notify_me = false;
             if (Session::isCron()) {
                 // Cron notify me
                 $notify_me = true;
             } else {
                 // Not cron see my pref
                 $notify_me = $_SESSION['glpinotification_to_myself'];
             }
             //Foreach notification targets
             foreach ($targets as $target) {
                 //Get all users affected by this notification
                 $notificationtarget->getAddressesByTarget($target, $options);
                 foreach ($notificationtarget->getTargets() as $user_email => $users_infos) {
                     if ($label || $notificationtarget->validateSendTo($event, $users_infos, $notify_me)) {
                         //If the user have not yet been notified
                         if (!isset($email_processed[$users_infos['language']][$users_infos['email']])) {
                             //If ther user's language is the same as the template's one
                             if (isset($email_notprocessed[$users_infos['language']][$users_infos['email']])) {
                                 unset($email_notprocessed[$users_infos['language']][$users_infos['email']]);
                             }
                             $options['item'] = $item;
                             if ($tid = $template->getTemplateByLanguage($notificationtarget, $users_infos, $event, $options)) {
                                 //Send notification to the user
                                 if ($label == '') {
                                     $datas = $template->getDataToSend($notificationtarget, $tid, $users_infos, $options);
                                     $datas['_notificationtemplates_id'] = $data['notificationtemplates_id'];
                                     $datas['_itemtype'] = $item->getType();
                                     $datas['_items_id'] = $item->getID();
                                     $datas['_entities_id'] = $entity;
                                     Notification::send($datas);
                                 } else {
                                     $notificationtarget->getFromDB($target['id']);
                                     echo "<tr class='tab_bg_2'><td>" . $label . "</td>";
                                     echo "<td>" . $notificationtarget->getNameID() . "</td>";
                                     echo "<td>" . sprintf(__('%1$s (%2$s)'), $template->getName(), $users_infos['language']) . "</td>";
                                     echo "<td>" . $users_infos['email'] . "</td>";
                                     echo "</tr>";
                                 }
                                 $email_processed[$users_infos['language']][$users_infos['email']] = $users_infos;
                             } else {
                                 $email_notprocessed[$users_infos['language']][$users_infos['email']] = $users_infos;
                             }
                         }
                     }
                 }
             }
         }
     }
     unset($email_processed);
     unset($email_notprocessed);
     $template = null;
     return true;
 }
 /**
  * @param $template        NotificationTemplate object
  * @param $options   array
  **/
 function showSummary(NotificationTemplate $template, $options = array())
 {
     global $DB, $CFG_GLPI;
     $nID = $template->getField('id');
     $canedit = Config::canUpdate();
     if ($canedit) {
         echo "<div class='center'>" . "<a class='vsubmit' href='" . Toolbox::getItemTypeFormURL('NotificationTemplateTranslation') . "?notificationtemplates_id=" . $nID . "'>" . __('Add a new translation') . "</a></div><br>";
     }
     echo "<div class='center' id='tabsbody'>";
     Session::initNavigateListItems('NotificationTemplateTranslation', sprintf(__('%1$s = %2$s'), NotificationTemplate::getTypeName(1), $template->getName()));
     if ($canedit) {
         $rand = mt_rand();
         Html::openMassiveActionsForm('mass' . __CLASS__ . $rand);
         $massiveactionparams = array('container' => 'mass' . __CLASS__ . $rand);
         Html::showMassiveActions($massiveactionparams);
     }
     echo "<table class='tab_cadre_fixe'>";
     echo "<tr class='tab_bg_1'>";
     if ($canedit) {
         echo "<th width='10'>";
         Html::checkAllAsCheckbox('mass' . __CLASS__ . $rand);
         echo "</th>";
     }
     echo "<th>" . __('Language') . "</th></tr>";
     foreach ($DB->request('glpi_notificationtemplatetranslations', array('notificationtemplates_id' => $nID)) as $data) {
         if ($this->getFromDB($data['id'])) {
             Session::addToNavigateListItems('NotificationTemplateTranslation', $data['id']);
             echo "<tr class='tab_bg_1'>";
             if ($canedit) {
                 echo "<td class='center'>";
                 Html::showMassiveActionCheckBox(__CLASS__, $data["id"]);
                 echo "</td>";
             }
             echo "<td class='center'>";
             echo "<a href='" . Toolbox::getItemTypeFormURL('NotificationTemplateTranslation') . "?id=" . $data['id'] . "&amp;notificationtemplates_id=" . $nID . "'>";
             if ($data['language'] != '') {
                 echo $CFG_GLPI['languages'][$data['language']][0];
             } else {
                 _e('Default translation');
             }
             echo "</a></td></tr>";
         }
     }
     echo "</table>";
     if ($canedit) {
         $massiveactionparams['ontop'] = false;
         Html::showMassiveActions($massiveactionparams);
         Html::closeForm();
     }
     echo "</div>";
 }