Example #1
0
 /**
  * On after approve/kickback
  *
  * @return  void
  */
 public function onAfterStatusChange()
 {
     if ($this->getError()) {
         return;
     }
     $pub = $this->_pub;
     $status = $this->_pub->version->state;
     $activity = $status == 1 ? Lang::txt('COM_PUBLICATIONS_CURATION_ACTIVITY_PUBLISHED') : Lang::txt('COM_PUBLICATIONS_CURATION_ACTIVITY_KICKBACK');
     $pubtitle = \Hubzero\Utility\String::truncate($pub->title, 100);
     // Log activity in curation history
     $pub->_curationModel->saveHistory(User::get('id'), $pub->state, $status, 1);
     // Add activity
     $activity .= ' ' . strtolower(Lang::txt('version')) . ' ' . $pub->version_label . ' ' . Lang::txt('COM_PUBLICATIONS_OF') . ' ' . strtolower(Lang::txt('publication')) . ' "' . $pubtitle . '" ';
     // Record activity
     $aid = $pub->project()->recordActivity($activity, $pub->id, $pubtitle, $pub->link('version'), 'publication', 0, $admin = 1);
     // Start message
     $sef = 'publications' . DS . $pub->id . DS . $pub->version_number;
     $link = rtrim(Request::base(), DS) . DS . trim($pub->link('version'), DS);
     $manage = rtrim(Request::base(), DS) . DS . trim($pub->link('editversion'), DS);
     $message = $status == 1 ? Lang::txt('COM_PUBLICATIONS_CURATION_EMAIL_CURATOR_APPROVED') : Lang::txt('COM_PUBLICATIONS_CURATION_EMAIL_CURATOR_KICKED_BACK');
     if ($status != 1) {
         $message .= "\n" . "\n";
         $message .= Lang::txt('COM_PUBLICATIONS_CURATION_TAKE_ACTION') . ' ' . $manage;
     } else {
         $message .= ' ' . $link;
     }
     $pubtitle = \Hubzero\Utility\String::truncate($pub->title, 100);
     $subject = ucfirst(Lang::txt('COM_PUBLICATIONS_CURATION_VERSION')) . ' ' . $pub->version_label . ' ' . Lang::txt('COM_PUBLICATIONS_OF') . ' ' . strtolower(Lang::txt('COM_PUBLICATIONS_PUBLICATION')) . ' "' . $pubtitle . '" ';
     $subject .= $status == 1 ? Lang::txt('COM_PUBLICATIONS_MSG_ADMIN_PUBLISHED') : Lang::txt('COM_PUBLICATIONS_MSG_ADMIN_KICKED_BACK');
     // Get authors
     $authors = $pub->table('Author')->getAuthors($pub->version_id, 1, 1, 1);
     // No authors – send to publication creator
     if (count($authors) == 0) {
         $authors = array($pub->created_by);
     }
     // New version released?
     if ($status == 1 && $pub->get('version_number') > 1) {
         // Notify subsrcibers
         Event::trigger('publications.onWatch', array($pub));
     }
     // Make sure there are no duplicates
     $authors = array_unique($authors);
     // Notify authors
     Helpers\Html::notify($pub, $authors, $subject, $message, true);
     return;
 }
Example #2
0
 /**
  * On after change status
  *
  * @return     string
  */
 public function onAfterChangeState($pub, $originalStatus = 3)
 {
     $notify = 1;
     // Notify administrators/curators?
     // Log activity in curation history
     if (isset($pub->_curationModel)) {
         $pub->_curationModel->saveHistory($this->_uid, $originalStatus, $pub->version->get('state'), 0);
     }
     // Display status message
     switch ($pub->version->get('state')) {
         case 1:
         default:
             $this->_msg = Lang::txt('PLG_PROJECTS_PUBLICATIONS_PUBLICATION_SUCCESS_PUBLISHED');
             $action = $this->_task == 'republish' ? Lang::txt('PLG_PROJECTS_PUBLICATIONS_PUBLICATION_ACTIVITY_REPUBLISHED') : Lang::txt('PLG_PROJECTS_PUBLICATIONS_PUBLICATION_ACTIVITY_PUBLISHED');
             break;
         case 4:
             $this->_msg = $this->_task == 'revert' ? Lang::txt('PLG_PROJECTS_PUBLICATIONS_PUBLICATION_SUCCESS_REVERTED') : Lang::txt('PLG_PROJECTS_PUBLICATIONS_PUBLICATION_SUCCESS_SAVED');
             $action = $this->_task == 'revert' ? Lang::txt('PLG_PROJECTS_PUBLICATIONS_PUBLICATION_ACTIVITY_REVERTED') : Lang::txt('PLG_PROJECTS_PUBLICATIONS_PUBLICATION_ACTIVITY_SAVED');
             $notify = 0;
             break;
         case 5:
             $this->_msg = $originalStatus == 7 ? Lang::txt('PLG_PROJECTS_PUBLICATIONS_PUBLICATION_SUCCESS_PENDING_RESUBMITTED') : Lang::txt('PLG_PROJECTS_PUBLICATIONS_PUBLICATION_SUCCESS_PENDING');
             $action = $originalStatus == 7 ? Lang::txt('PLG_PROJECTS_PUBLICATIONS_PUBLICATION_ACTIVITY_RESUBMITTED') : Lang::txt('PLG_PROJECTS_PUBLICATIONS_PUBLICATION_ACTIVITY_SUBMITTED');
             break;
     }
     $this->_msg .= ' <a href="' . Route::url($pub->link('version')) . '">' . Lang::txt('PLG_PROJECTS_PUBLICATIONS_PUBLICATION_VIEWIT') . '</a>';
     $pubtitle = \Hubzero\Utility\String::truncate($pub->version->get('title'), 100);
     $action .= ' ' . $pub->version->get('version_label') . ' ';
     $action .= Lang::txt('PLG_PROJECTS_PUBLICATIONS_OF_PUBLICATION') . ' "' . html_entity_decode($pubtitle) . '"';
     $action = htmlentities($action, ENT_QUOTES, "UTF-8");
     // Record activity
     if (!$this->model->isProvisioned() && !$this->getError()) {
         $aid = $this->model->recordActivity($action, $pub->id, $pubtitle, Route::url($pub->link('editversion')), 'publication', 1);
     }
     // Send out notifications
     $profile = \Hubzero\User\Profile::getInstance($this->_uid);
     $actor = $profile ? $profile->get('name') : Lang::txt('PLG_PROJECTS_PUBLICATIONS_PROJECT_MEMBER');
     $sef = Route::url($pub->link('version'));
     $link = rtrim(Request::base(), DS) . DS . trim($sef, DS);
     $message = $actor . ' ' . html_entity_decode($action) . '  - ' . $link;
     // Notify admin group
     if ($notify) {
         $admingroup = $this->model->config()->get('admingroup', '');
         $group = \Hubzero\User\Group::getInstance($admingroup);
         $admins = array();
         if ($admingroup && $group) {
             $members = $group->get('members');
             $managers = $group->get('managers');
             $admins = array_merge($members, $managers);
             $admins = array_unique($admins);
             \Components\Projects\Helpers\Html::sendHUBMessage('com_projects', $this->model, $admins, Lang::txt('COM_PROJECTS_EMAIL_ADMIN_NEW_PUB_STATUS'), 'projects_new_project_admin', 'publication', $message);
         }
         // Notify curators by email
         $curatorMessage = $pub->version->get('state') == 5 ? $message . "\n" . "\n" . Lang::txt('PLG_PROJECTS_PUBLICATIONS_EMAIL_CURATORS_REVIEW') . ' ' . rtrim(Request::base(), DS) . DS . 'publications/curation' : $message;
         $curatorgroups = array($pub->masterType()->curatorgroup);
         if ($this->_pubconfig->get('curatorgroup', '')) {
             $curatorgroups[] = $this->_pubconfig->get('curatorgroup', '');
         }
         $admins = array();
         foreach ($curatorgroups as $curatorgroup) {
             if (trim($curatorgroup) && ($group = \Hubzero\User\Group::getInstance($curatorgroup))) {
                 $members = $group->get('members');
                 $managers = $group->get('managers');
                 $admins = array_merge($members, $managers, $admins);
                 $admins = array_unique($admins);
             }
         }
         \Components\Publications\Helpers\Html::notify($pub, $admins, Lang::txt('PLG_PROJECTS_PUBLICATIONS_EMAIL_CURATORS'), $curatorMessage);
     }
     // Notify project managers (in all cases)
     $objO = $this->model->table('Owner');
     $managers = $objO->getIds($this->model->get('id'), 1, 1);
     if (!$this->model->isProvisioned() && !empty($managers)) {
         \Components\Projects\Helpers\Html::sendHUBMessage('com_projects', $this->model, $managers, Lang::txt('COM_PROJECTS_EMAIL_MANAGERS_NEW_PUB_STATUS'), 'projects_admin_notice', 'publication', $message);
     }
     // Produce archival package
     if ($pub->version->get('state') == 1 || $pub->version->get('state') == 5) {
         $pub->_curationModel->package();
     }
     // Pass error or success message
     if ($this->getError()) {
         \Notify::message($this->getError(), 'error', 'projects');
     } elseif (!empty($this->_msg)) {
         \Notify::message($this->_msg, 'success', 'projects');
     }
     return;
 }