Beispiel #1
0
 /**
  * Notify subscribers of new activity
  *
  * @param      object  $publication 	Publication model
  * @return     array
  */
 public function onWatch($publication, $activity = 'newversion')
 {
     $database = App::get('db');
     $this->publication = $publication;
     // Item watch class
     $watch = new \Hubzero\Item\Watch($database);
     $filters = array('item_type' => 'publication', 'item_id' => $publication->get('id'), 'state' => 1);
     // Get subscribers
     $subscribers = $watch->getRecords($filters);
     // Determine message and url
     switch ($activity) {
         case 'newversion':
             $message = Lang::txt('PLG_PUBLICATIONS_WATCH_MESSAGE_NEWVERSION');
             $subject = Lang::txt('PLG_PUBLICATIONS_WATCH_PUBLICATIONS') . ': ' . Lang::txt('PLG_PUBLICATIONS_WATCH_SUBJECT_EMAIL');
             $url = Route::url($this->publication->link('version'));
             break;
     }
     // Do we have subscribers?
     if (!empty($message) && count($subscribers) > 0) {
         foreach ($subscribers as $subscriber) {
             // Check that user wants to receive update on specific activity
             // TBD
             // Send message
             if ($subscriber->email) {
                 $this->_sendEmail($subscriber, $message, $subject, $url);
             }
         }
     }
     return;
 }
Beispiel #2
0
 /**
  * Notify subscribers of new activity
  *
  * @param      object  $project 	Project model
  * @param      string  $area 		Project area of activity
  * @param      array   $activities  Project activities (array of IDs)
  * @param      integer $actor       Uid of team member posting the activity (to exclude from subscribers)
  * @return     array
  */
 public function onWatch($project, $area = '', $activities = array(), $actor = 0)
 {
     $database = App::get('db');
     $this->project = $project;
     // Item watch class
     $watch = new \Hubzero\Item\Watch($database);
     $filters = array('item_type' => 'project', 'item_id' => $project->get('id'), 'state' => 1, 'area' => $area, 'frequency' => 'immediate');
     // Get subscribers
     $subscribers = $watch->getRecords($filters);
     // Get full activity info from IDs
     if ($activities) {
         $activities = $project->table('Activity')->getActivities($project->get('id'), $filters = array('id' => $activities));
     }
     if (empty($activities)) {
         // Nothing to report
         return false;
     }
     $subject = Lang::txt('PLG_PROJECTS_WATCH_EMAIL_SUBJECT');
     // Do we have subscribers?
     if (count($subscribers) > 0) {
         foreach ($subscribers as $subscriber) {
             if ($actor && $subscriber->created_by == $actor) {
                 // Skip
                 continue;
             }
             // Send message
             if ($subscriber->email) {
                 $this->_sendEmail($project, $subscriber, $activities, $subject);
             }
         }
     }
     return;
 }