예제 #1
0
 /** Send event notification to the list of users ($people)
  *
  * @param ProjectEvent $event Event
  * @param array $people
  * @return boolean
  * @throws NotifierConnectionError
  */
 static function notifEventAssistance(ProjectEvent $event, EventInvitation $invitation, $from_user, $invs = null)
 {
     if (!$event instanceof ProjectEvent || !$invitation instanceof EventInvitation || !$event->getCreatedBy() instanceof Contacts || !$from_user instanceof Contact) {
         return;
     }
     tpl_assign('event', $event);
     tpl_assign('invitation', $invitation);
     tpl_assign('from_user', $from_user);
     $assist = array();
     $not_assist = array();
     $pending = array();
     if (isset($invs)) {
         foreach ($invs as $inv) {
             if ($inv->getUserId() == $from_user->getId()) {
                 continue;
             }
             $decision = $inv->getInvitationState();
             $user_name = Contacts::findById($inv->getUserId())->getObjectName();
             if ($decision == 1) {
                 $assist[] = $user_name;
             } else {
                 if ($decision == 2) {
                     $not_assist[] = $user_name;
                 } else {
                     $pending[] = $user_name;
                 }
             }
         }
     }
     tpl_assign('assist', $assist);
     tpl_assign('not_assist', $not_assist);
     tpl_assign('pending', $pending);
     $people = array($event->getCreatedBy());
     $recepients = array();
     foreach ($people as $user) {
         $locale = $user->getLocale();
         Localization::instance()->loadSettings($locale, ROOT . '/language');
         $date = Localization::instance()->formatDescriptiveDate($event->getStart(), $user->getTimezone());
         if ($event->getTypeId() != 2) {
             $date .= " " . Localization::instance()->formatTime($event->getStart(), $user->getTimezone());
         }
         tpl_assign('date', $date);
         $toemail = $user->getEmailAddress();
         if (!$toemail) {
             continue;
         }
         self::queueEmail(array(self::prepareEmailAddress($toemail, $user->getObjectName())), null, null, self::prepareEmailAddress($from_user->getEmailAddress(), $from_user->getObjectName()), lang('event invitation response') . ': ' . $event->getSubject(), tpl_fetch(get_template_path('event_inv_response_notif', 'notifier')));
         // send
     }
     // foreach
     $locale = logged_user() instanceof Contact ? logged_user()->getLocale() : DEFAULT_LOCALIZATION;
     Localization::instance()->loadSettings($locale, ROOT . '/language');
 }