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