Пример #1
0
 /**
  * Send event notification to the list of users ($people)
  *
  * @param ProjectEvent $event Event
  * @param array $people
  * @return boolean
  * @throws NotifierConnectionError
  */
 static function notifEvent(ProjectEvent $object, $people, $notification, $sender)
 {
     if (!is_array($people) || !count($people) || !$sender instanceof User) {
         return;
         // nothing here...
     }
     // if
     $uid = $object->getUniqueObjectId();
     $name = $object->getObjectName();
     $type = $object->getObjectTypeName();
     $typename = lang($object->getObjectTypeName());
     $description = lang("{$notification} notification event desc", $object->getObjectName(), $sender->getDisplayName());
     $properties = array();
     $second_properties = array();
     $second_properties['unique id'] = $uid;
     //$properties['view event'] = str_replace('&', '&', $object->getViewUrl());
     tpl_assign('object', $object);
     tpl_assign('description', $description);
     tpl_assign('properties', $properties);
     $emails = array();
     foreach ($people as $user) {
         if ($user->getId() != $sender->getId()) {
             // send notification on user's locale and with user info
             $locale = $user->getLocale();
             Localization::instance()->loadSettings($locale, ROOT . '/language');
             $workspaces = $object->getUserWorkspaces($user);
             $ws = "";
             foreach ($workspaces as $w) {
                 if ($ws) {
                     $ws .= ", ";
                 }
                 $css = get_workspace_css_properties($w->getColor());
                 $ws .= "<span style=\"{$css}\">" . $w->getPath() . "</span>";
             }
             $properties['workspace'] = $ws;
             $properties['date'] = Localization::instance()->formatDescriptiveDate($object->getStart(), $user->getTimezone());
             if ($object->getTypeId() != 2) {
                 $properties['meeting_time'] = Localization::instance()->formatTime($object->getStart(), $user->getTimezone());
             }
             $properties['accept or reject invitation help, click on one of the links below'] = '';
             //	$properties['accept invitation'] = get_url('event', 'change_invitation_state', array('at' => 1, 'e' => $object->getId(), 'u' => $user->getId()));
             //	$properties['reject invitation'] = get_url('event', 'change_invitation_state', array('at' => 2, 'e' => $object->getId(), 'u' => $user->getId()));
             $links = array(array('img' => get_image_url("/16x16/complete.png"), 'text' => lang('accept invitation'), 'url' => get_url('event', 'change_invitation_state', array('at' => 1, 'e' => $object->getId(), 'u' => $user->getId()))), array('img' => get_image_url("/16x16/del.png"), 'text' => lang('reject invitation'), 'url' => get_url('event', 'change_invitation_state', array('at' => 2, 'e' => $object->getId(), 'u' => $user->getId()))));
             tpl_assign('links', $links);
             tpl_assign('properties', $properties);
             tpl_assign('second_properties', $second_properties);
             $from = self::prepareEmailAddress($sender->getEmail(), $sender->getDisplayName());
             $emails[] = array("to" => array(self::prepareEmailAddress($user->getEmail(), $user->getDisplayName())), "from" => self::prepareEmailAddress($sender->getEmail(), $sender->getDisplayName()), "subject" => $subject = lang("{$notification} notification {$type}", $name, $uid, $typename, $ws), "body" => tpl_fetch(get_template_path('general', 'notifier')));
         }
     }
     // foreach
     $locale = logged_user() instanceof User ? logged_user()->getLocale() : DEFAULT_LOCALIZATION;
     Localization::instance()->loadSettings($locale, ROOT . '/language');
     self::queueEmails($emails);
 }