Example #1
0
 /**
  * Grabs notification and sends it out via available drivers
  *
  * @access  public
  * @params  string  $shouter    The shouting gadget
  * @params  array   $params     [user, group, title, summary, description, priority, send]
  */
 function Execute($shouter, $params)
 {
     if (isset($params['send']) && $params['send'] === false) {
         return;
     }
     $users = array();
     $jUser = new Jaws_User();
     if (isset($params['group']) && !empty($params['group'])) {
         $group_users = $jUser->GetGroupUsers($params['group'], true, false, true);
         if (!Jaws_Error::IsError($group_users) && !empty($group_users)) {
             $users = $group_users;
         }
     }
     if (isset($params['user']) && !empty($params['user'])) {
         $user = $jUser->GetUser($params['user'], true, false, true);
         if (!Jaws_Error::IsError($user) && !empty($user)) {
             $users[] = $user;
         }
     }
     if (empty($users)) {
         return;
     }
     if (!isset($params['summary'])) {
         $params['summary'] = '';
     }
     $drivers = glob(JAWS_PATH . 'include/Jaws/Notification/*.php');
     foreach ($drivers as $driver) {
         $driver = basename($driver, '.php');
         $options = unserialize($this->gadget->registry->fetch($driver . '_options'));
         $driverObj = Jaws_Notification::getInstance($driver, $options);
         $driverObj->notify($users, strip_tags($params['title']), strip_tags($params['summary']), $params['description']);
     }
 }
Example #2
0
 /**
  * Grabs notification and sends it out via available drivers
  *
  * @access  public
  * @param   string  $shouter    The shouting gadget
  * @param   array   $params     [user, group, title, summary, description, priority, send]
  * @return  bool
  */
 function Execute($shouter, $params)
 {
     if (isset($params['send']) && $params['send'] === false) {
         return false;
     }
     $model = $this->gadget->model->load('Notification');
     $gadget = empty($params['gadget']) ? $shouter : $params['gadget'];
     $params['publish_time'] = !isset($params['publish_time']) ? time() : $params['publish_time'];
     // detect if publish_time = 0 then must delete the notifications
     if ($params['publish_time'] < 0) {
         return $model->DeleteNotificationsByKey($params['key']);
     }
     $users = array();
     $jUser = new Jaws_User();
     if (isset($params['group']) && !empty($params['group'])) {
         $group_users = $jUser->GetGroupUsers($params['group'], true, false, true);
         if (!Jaws_Error::IsError($group_users) && !empty($group_users)) {
             $users = $group_users;
         }
     }
     if (isset($params['emails']) && !empty($params['emails'])) {
         foreach ($params['emails'] as $email) {
             if (!empty($email)) {
                 $users[] = array('email' => $email);
             }
         }
     }
     if (isset($params['mobiles']) && !empty($params['mobiles'])) {
         foreach ($params['mobiles'] as $mobile) {
             if (!empty($mobile)) {
                 $users[] = array('mobile_number' => $mobile);
             }
         }
     }
     if (isset($params['user']) && !empty($params['user'])) {
         $user = $jUser->GetUser($params['user'], true, false, true);
         if (!Jaws_Error::IsError($user) && !empty($user)) {
             $users[] = $user;
         }
     }
     // FIXME: increase performance for getting users data
     if (isset($params['users']) && !empty($params['users'])) {
         foreach ($params['users'] as $userId) {
             if (!empty($userId)) {
                 $user = $jUser->GetUser($userId, true, false, true);
                 if (!Jaws_Error::IsError($user) && !empty($user)) {
                     $users[] = $user;
                 }
             }
         }
     }
     if (empty($users)) {
         return false;
     }
     // get gadget driver settings
     $configuration = unserialize($this->gadget->registry->fetch('configuration'));
     $notificationsEmails = array();
     $notificationsMobiles = array();
     // notification for this gadget was disabled
     if (isset($configuration[$gadget]) && $configuration[$gadget] == 0) {
         return false;
     }
     foreach ($users as $user) {
         // generate email array
         if (!isset($configuration[$gadget]) || $configuration[$gadget] == 1 || $configuration[$gadget] == 'Mail') {
             if (!empty($user['email'])) {
                 $notificationsEmails[] = array('contact' => $user['email'], 'publish_time' => $params['publish_time']);
             }
         }
         // generate mobile array
         if (!isset($configuration[$gadget]) || $configuration[$gadget] == 1 || $configuration[$gadget] == 'Mobile') {
             if (!empty($user['mobile_number'])) {
                 $notificationsMobiles[] = array('contact' => $user['mobile_number'], 'publish_time' => $params['publish_time']);
             }
         }
     }
     if (!empty($notificationsEmails) || !empty($notificationsMobiles)) {
         $res = $model->InsertNotifications(array('emails' => $notificationsEmails, 'mobiles' => $notificationsMobiles), $params['key'], strip_tags($params['title']), strip_tags($params['summary']), $params['description']);
         if (Jaws_Error::IsError($res)) {
             return $res;
         }
         return true;
     }
     return false;
 }