function getTable($params)
 {
     $this->defaultUrl = $params['default_url'];
     $content = '';
     $content .= html_build_list_table_top(array($GLOBALS['Language']->getText('plugin_docman', 'view_documenttable_title'), $GLOBALS['Language']->getText('plugin_docman', 'view_documenttable_location'), $GLOBALS['Language']->getText('plugin_docman', 'admin_lock_infos_who'), $GLOBALS['Language']->getText('plugin_docman', 'admin_lock_infos_when')));
     // Get list of all locked documents in the project.
     $dPM = Docman_PermissionsManager::instance($params['group_id']);
     $lockInfos = $dPM->getLockFactory()->getProjectLockInfos($params['group_id']);
     $uH = UserHelper::instance();
     $hp = Codendi_HTMLPurifier::instance();
     require_once dirname(__FILE__) . '/../Docman_ItemFactory.class.php';
     $dIF = new Docman_ItemFactory($params['group_id']);
     $altRowClass = 0;
     foreach ($lockInfos as $row) {
         $trclass = html_get_alt_row_color($altRowClass++);
         $item = $dIF->getItemFromDb($row['item_id']);
         $parent = $dIF->getItemFromDb($item->getParentId());
         $content .= '<tr class="' . $trclass . '">';
         $content .= '<td>' . '<a href="/plugins/docman/?group_id=' . $params['group_id'] . '&action=details&id=' . $item->getId() . '">' . $item->getTitle() . '</a></td>';
         $content .= '<td>';
         if ($dIF->isRoot($parent)) {
             $content .= '</td>';
         } else {
             $content .= '<a href="' . $this->defaultUrl . '&action=show&id=' . $parent->getId() . '">' . $parent->getTitle() . '</a></td>';
         }
         $content .= '<td>' . $hp->purify($uH->getDisplayNameFromUserId($row['user_id'])) . '</td>';
         $content .= '<td>' . format_date($GLOBALS['Language']->getText('system', 'datefmt'), $row['lock_date']) . '</td>';
         $content .= '</tr>';
     }
     $content .= '</table>';
     return $content;
 }
 /**
  * Constuctor of the class
  *
  * @param User $user
  * @param Project $project
  * @param Docman_Document $item
  *
  * @return void
  */
 function __construct($user, $project, $item)
 {
     $this->user = $user;
     $this->project = $project;
     $docmanItemFactory = new Docman_ItemFactory();
     $this->item = $docmanItemFactory->getItemFromDb($item->getId());
 }
 public function docmanwatermark_toggle_item()
 {
     $itemId = $this->_controler->request->getValidated('item_id', 'UInt');
     if ($itemId != null && $this->_controler->userCanManage($itemId) && $this->_controler->request->isPost()) {
         $itemFactory = new Docman_ItemFactory();
         $dwItemFactory = new DocmanWatermark_ItemFactory();
         $dwLog = new DocmanWatermark_Log();
         $item = $itemFactory->getItemFromDb($itemId);
         $user = $this->_controler->getUser();
         if ($this->_controler->request->existAndNonEmpty('disable_watermarking')) {
             if ($dwItemFactory->disableWatermarking($itemId)) {
                 $dwLog->disableWatermarking($item, $user);
                 $dwItemFactory->notifyOnDisable($item, $user, $this->_controler->getDefaultUrl());
                 $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_docmanwatermark', 'action_watermarking_disabled'));
             } else {
                 $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_docmanwatermark', 'action_watermarking_disable_error'));
             }
         } else {
             if ($dwItemFactory->enableWatermarking($itemId)) {
                 $dwLog->enableWatermarking($item, $user);
                 $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_docmanwatermark', 'action_watermarking_enabled'));
             } else {
                 $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_docmanwatermark', 'action_watermarking_enable_error'));
             }
         }
         $this->_controler->view = 'RedirectAfterCrud';
         $this->_controler->_viewParams['redirect_to'] = $this->_controler->getDefaultUrl() . '&action=details&id=' . $itemId . '&section=watermarking';
     } else {
         // Bad Item Id or attempt to fake the server, redirect to root
         // @todo: log those kind of attempt.
         $this->_controler->view = 'RedirectAfterCrud';
         $this->_controler->_viewParams['redirect_to'] = $this->_controler->getDefaultUrl();
     }
 }
 /**
  * For a given Item, add the default metadata values.
  */
 function appendDefaultValuesToItem(&$item)
 {
     // Get parent
     $itemFactory = new Docman_ItemFactory();
     $parentItem = $itemFactory->getItemFromDb($item->getParentId());
     $this->appendItemMetadataList($parentItem);
     // Get inheritables metadata
     $inheritableMdla = $this->getInheritableMdLabelArray();
     $this->appliesItem1MetadataToItem2($parentItem, $item, $inheritableMdla);
 }
Example #5
0
$pm = PluginManager::instance();
$p = $pm->getPluginByName('docman');
if ($p && $pm->isPluginAvailable($p)) {
    // Need to setup the controller so the notification & logging works (setup in controler constructor)
    $controler = new Docman_Controller($p, $p->getPluginPath(), $p->getThemePath(), $request);
} else {
    $GLOBALS['Response']->redirect('/');
}
$func = $request->getValidated('func', new Valid_WhiteList('func', array('confirm_restore_item', 'confirm_restore_version')));
$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');
 function delete()
 {
     $user =& $this->_controler->getUser();
     $request =& $this->_controler->request;
     $_sGroupId = (int) $request->get('group_id');
     $_sId = (int) $request->get('id');
     if ($request->exist('cascadeWikiPageDeletion') && $request->get('cascadeWikiPageDeletion') == 'on') {
         $cascade = true;
     } else {
         $cascade = false;
     }
     $itemFactory = new Docman_ItemFactory($_sGroupId);
     $parentItem = $itemFactory->getItemFromDb($_sId);
     try {
         if ($itemFactory->deleteSubTree($parentItem, $user, $cascade)) {
             $this->_controler->feedback->log('info', $GLOBALS['Language']->getText('plugin_docman', 'info_item_deleted'));
         }
     } catch (Exception $e) {
         $this->_controler->feedback->log('error', $e->getMessage());
     }
     $this->event_manager->processEvent('send_notifications', array());
 }
 function getReportImage()
 {
     $html = '';
     if ($this->report->getImage() !== null) {
         $itemId = $this->report->getImage();
         if ($itemId > 0) {
             // Get Item
             $itemFactory = new Docman_ItemFactory($this->report->getGroupId());
             $item = $itemFactory->getItemFromDb($itemId);
             if ($item !== null) {
                 // Check perms
                 $dPm =& Docman_PermissionsManager::instance($item->getGroupId());
                 $user =& $this->getCurrentUser();
                 $html .= "<div style=\"text-align:center\">\n";
                 if ($dPm->userCanRead($user, $item->getId())) {
                     $html .= '<img src="' . $this->defaultUrl . '&id=' . $itemId . '" >';
                 } else {
                     $html .= $GLOBALS['Language']->getText('plugin_docman', 'report_image_not_readable');
                 }
                 $html .= "</div>\n";
             }
         }
     }
     return $html;
 }
Example #8
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());
 }
 /**
  * @param int   $item_id The id of the item to retrieve
  * @param array $params  Various parameters for the retrieval. @see Docman_ItemFactory->getItemFromDb()
  *
  * @return Docman_Item
  */
 protected function getItem($item_id, $params = array())
 {
     return $this->item_factory->getItemFromDb($item_id, $params);
 }
Example #10
0
 public function get_reference($params)
 {
     $keyword = $params['keyword'];
     $reference_row = $this->getSystemDocmanReferenceByKeyword($keyword);
     if ($reference_row) {
         $docman_element_id = $params['value'];
         $docman_item_factory = new Docman_ItemFactory();
         $reference_factory = new Docman_ReferenceFactory();
         $docman_item = $docman_item_factory->getItemFromDb($docman_element_id);
         if ($docman_item) {
             $reference = $reference_factory->getInstanceFromRowAndProjectId($reference_row, $docman_item->getGroupId());
             $params['reference'] = $reference;
         }
     }
 }
 /**
  * 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();
 }