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