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