示例#1
0
 /**
  * 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());
 }
示例#2
0
$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 . '&section=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() . '&section=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();
 }