/** * Remind a user about the document he is supposed to review * * @param Docman_ApprovalTable $table Approval table * @param Integer $reviewerId Id of the reviewer * * @return Boolean */ private function notifyIndividual(Docman_ApprovalTable $table, $reviewerId) { $hp = Codendi_HTMLPurifier::instance(); $um = UserManager::instance(); $reviewer = $um->getUserById($reviewerId); if (!$reviewer->getEmail()) { return; } if ($table instanceof Docman_ApprovalTableFile) { $versionFactory = new Docman_VersionFactory(); $version = $versionFactory->getSpecificVersionById($table->getVersionId(), 'plugin_docman_version'); $itemId = ""; if ($version) { $itemId = $version->getItemId(); } } elseif ($table) { $itemId = $table->getItemId(); } if (!$itemId) { return; } $itemFactory = new Docman_ItemFactory(); $docmanItem = $itemFactory->getItemFromDb($itemId); if (!$docmanItem) { return; } $subject = $GLOBALS['Language']->getText('plugin_docman', 'approval_reminder_mail_subject', array($GLOBALS['sys_name'], $docmanItem->getTitle())); $mailMgr = new MailManager(); $mailPrefs = $mailMgr->getMailPreferencesByUser($reviewer); if ($mailPrefs == Codendi_Mail_Interface::FORMAT_HTML) { $html_body = $this->getBodyHtml($table, $docmanItem); } $text_body = $this->getBodyText($table, $docmanItem); $mail_notification_builder = new MailNotificationBuilder(new MailBuilder(TemplateRendererFactory::build())); return $mail_notification_builder->buildAndSendEmail($this->getItemProject($docmanItem), array($reviewer->getEmail()), $subject, $html_body, $text_body, $this->getReviewUrl($docmanItem), DocmanPlugin::TRUNCATED_SERVICE_NAME, new MailEnhancer()); }
$groupId = $request->getValidated('group_id', 'uint', 0); $id = $request->getValidated('id', 'uint', 0); if ($request->existAndNonEmpty('func')) { switch ($func) { case 'confirm_restore_item': $itemFactory = new Docman_ItemFactory($groupId); $item = $itemFactory->getItemFromDb($id, array('ignore_deleted' => true)); if ($itemFactory->restore($item)) { $url = $p->getPluginPath() . '/?group_id=' . $groupId . '&action=details&id=' . $id . '§ion=properties'; $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_docman', 'item_restored', array($url)), CODENDI_PURIFIER_DISABLED); $GLOBALS['Response']->redirect('/admin/show_pending_documents.php?group_id=' . $groupId . '&focus=item'); } else { exit_error($Language->getText('plugin_docman', 'error'), $Language->getText('plugin_docman', 'item_not_restored')); } break; case 'confirm_restore_version': $versionFactory = new Docman_VersionFactory(); $version = $versionFactory->getSpecificVersionById($id); if ($versionFactory->restore($version)) { $url = $p->getPluginPath() . '/?group_id=' . $groupId . '&action=details&id=' . $version->getItemId() . '§ion=history'; $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_docman', 'version_restored', array($url)), CODENDI_PURIFIER_DISABLED); $GLOBALS['Response']->redirect('/admin/show_pending_documents.php?group_id=' . $groupId . '&focus=version'); } else { exit_error($Language->getText('plugin_docman', 'error'), $Language->getText('plugin_docman', 'version_not_restored')); } break; default: break; } exit; }
/** * Remind a user about the document he is supposed to review * * @param Docman_ApprovalTable $table Approval table * @param Integer $reviewerId Id of the reviewer * * @return Boolean */ private function notifyIndividual(Docman_ApprovalTable $table, $reviewerId) { $hp = Codendi_HTMLPurifier::instance(); $um = UserManager::instance(); $reviewer = $um->getUserById($reviewerId); if ($table instanceof Docman_ApprovalTableFile) { $versionFactory = new Docman_VersionFactory(); $version = $versionFactory->getSpecificVersionById($table->getVersionId(), 'plugin_docman_version'); $itemId = $version->getItemId(); } else { $itemId = $table->getItemId(); } $itemFactory = new Docman_ItemFactory(); $docmanItem = $itemFactory->getItemFromDb($itemId); $subject = $GLOBALS['Language']->getText('plugin_docman', 'approval_reminder_mail_subject', array($GLOBALS['sys_name'], $docmanItem->getTitle())); $mailMgr = new MailManager(); $mailPrefs = $mailMgr->getMailPreferencesByUser($reviewer); $mail = new Codendi_Mail(); $mail->getLookAndFeelTemplate()->set('title', $hp->purify($subject)); $mail->setFrom($GLOBALS['sys_noreply']); $mail->setTo($reviewer->getEmail()); $mail->setSubject($subject); if ($mailPrefs == Codendi_Mail_Interface::FORMAT_HTML) { $htmlBody = $this->getBodyHtml($table, $docmanItem); $mail->setBodyHtml($htmlBody); } $txtBody = $this->getBodyText($table, $docmanItem); $mail->setBodyText($txtBody); return $mail->send(); }