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 . '§ion=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); }
$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 . '§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');
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; }
/** * 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); }
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(); }