protected function appendItemMetadataNode(DOMElement $node, Docman_Item $item)
 {
     $metaDataFactory = new Docman_MetadataFactory($item->getGroupId());
     $metaDataFactory->appendItemMetadataList($item);
     foreach ($item->getMetadata() as $metadata) {
         $real = $this->getNodeForMetadata($metadata);
         if ($real) {
             $node->appendChild($real);
         }
     }
 }
Esempio n. 2
0
 function setupNewItem($params)
 {
     $mdFactory = new Docman_MetadataFactory($params['group_id']);
     if (isset($params['force_item'])) {
         $this->newItem = $params['force_item'];
     } else {
         $this->newItem = $this->_getNewItem();
         $this->newItem->setParentId($params['item']->getId());
         $this->newItem->setGroupId($params['group_id']);
         $mdFactory->appendItemMetadataList($this->newItem);
         // Get default values
         $mdFactory->appendDefaultValuesToItem($this->newItem);
     }
     // Append, for list Metadata the list of values associated in the DB
     // (content of select box)
     $mdFactory->appendAllListOfValuesToItem($this->newItem);
 }
 function request()
 {
     if ($this->request->exist('action') && ($this->request->get('action') == 'plugin_docman_approval_reviewer' || $this->request->get('action') == 'plugin_docman_approval_requester')) {
         if ($this->request->get('hide')) {
             user_set_preference('hide_' . $this->request->get('action'), 1);
         } else {
             user_del_preference('hide_' . $this->request->get('action'));
         }
         exit;
     }
     if (!$this->request->exist('group_id')) {
         $this->feedback->log('error', 'Project is missing.');
         $this->_setView('Error');
     } else {
         $_groupId = (int) $this->request->get('group_id');
         $pm = ProjectManager::instance();
         $project = $pm->getProject($_groupId);
         if ($project == false) {
             $this->feedback->log('error', 'Project is missing.');
             $this->_setView('Error');
             return;
         }
         // Browser alert
         $this->_checkBrowserCompliance();
         //token for redirection
         $tok =& new Docman_Token();
         $this->_viewParams['docman'] =& $this;
         $this->_viewParams['user'] =& $this->getUser();
         $this->_viewParams['token'] = $tok->getToken();
         $this->_viewParams['default_url'] = $this->getDefaultUrl();
         $this->_viewParams['theme_path'] = $this->getThemePath();
         $this->_viewParams['group_id'] = (int) $this->request->get('group_id');
         if ($this->request->exist('version_number')) {
             $this->_viewParams['version_number'] = (int) $this->request->get('version_number');
         }
         if ($this->request->exist('section')) {
             $this->_viewParams['section'] = $this->request->get('section');
         } else {
             if ($this->request->get('action') == 'permissions') {
                 $this->_viewParams['section'] = 'permissions';
             }
         }
         $view = $this->request->exist('action') ? $this->request->get('action') : 'show';
         $this->_viewParams['action'] = $view;
         // Start is used by Table view (like LIMIT start,offset)
         if ($this->request->exist('start')) {
             $this->_viewParams['start'] = (int) $this->request->get('start');
         }
         if ($this->request->exist('pv')) {
             $this->_viewParams['pv'] = (int) $this->request->get('pv');
         }
         if ($this->request->exist('report')) {
             $this->_viewParams['report'] = $this->request->get('report');
             $views = Docman_View_Browse::getDefaultViews();
             $validator = new Valid_WhiteList('report', $views);
             $views_keys = array_keys($views);
             $default_view = $views[$views_keys[0]];
             $this->_viewParams['report'] = $this->request->getValidated('report', $validator, $default_view);
         }
         $item_factory =& $this->_getItemFactory();
         $root =& $item_factory->getRoot($this->request->get('group_id'));
         if (!$root) {
             // Install
             $_gid = (int) $this->request->get('group_id');
             $pm = ProjectManager::instance();
             $project = $pm->getProject($_gid);
             $tmplGroupId = (int) $project->getTemplate();
             $this->_cloneDocman($tmplGroupId, $_gid, false);
             if (!$item_factory->getRoot($_gid)) {
                 $item_factory->createRoot($_gid, 'roottitle_lbl_key');
             }
             $this->_viewParams['redirect_to'] = $_SERVER['REQUEST_URI'];
             $this->view = 'Redirect';
         } else {
             $id = $this->request->get('id');
             if (!$id && $this->request->exist('item')) {
                 $i = $this->request->get('item');
                 if (isset($i['id'])) {
                     $id = $i['id'];
                 }
             }
             if ($id) {
                 $item =& $item_factory->getItemFromDb($id);
                 if (!$item) {
                     $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_item_deleted'));
                     $this->_setView('DocmanError');
                 }
             } else {
                 $item =& $root;
             }
             if ($item) {
                 // Load report
                 // If the item (folder) defined in the report is not the
                 // same than the current one, replace it.
                 $this->_initReport($item);
                 if ($this->_viewParams['filter'] !== null && $this->_viewParams['filter']->getItemId() !== null && $this->_viewParams['filter']->getItemId() != $item->getId()) {
                     $reportItem = $item_factory->getItemFromDb($this->_viewParams['filter']->getItemId());
                     // If item defined in the report exists, use it
                     // otherwise raise an error
                     if (!$reportItem) {
                         $this->feedback->log('warning', $GLOBALS['Language']->getText('plugin_docman', 'error_report_baditemid'));
                     } else {
                         unset($item);
                         $item = $reportItem;
                     }
                 }
                 if ($this->request->get('action') == 'ajax_reference_tooltip') {
                     $this->groupId = $item->getGroupId();
                 }
                 if ($item->getGroupId() != $this->getGroupId()) {
                     $pm = ProjectManager::instance();
                     $g = $pm->getProject($this->getGroupId());
                     $this->_set_doesnot_belong_to_project_error($item, $g);
                 } else {
                     $user = $this->getUser();
                     $dpm = $this->_getPermissionsManager();
                     $can_read = $dpm->userCanAccess($user, $item->getId());
                     $folder_or_document = is_a($item, 'Docman_Folder') ? 'folder' : 'document';
                     if (!$can_read) {
                         if ($this->request->get('action') == 'ajax_reference_tooltip') {
                             $this->_setView('AjaxReferenceTooltipError');
                         } else {
                             $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_view'));
                             $this->_setView('PermissionDeniedError');
                         }
                     } else {
                         $mdFactory = new Docman_MetadataFactory($this->_viewParams['group_id']);
                         $mdFactory->appendItemMetadataList($item);
                         $get_show_view =& new Docman_View_GetShowViewVisitor();
                         $this->_viewParams['item'] =& $item;
                         if (strpos($view, 'admin') === 0 && !$this->userCanAdmin()) {
                             $this->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'error_perms_admin'));
                             $this->view = $item->accept($get_show_view, $this->request->get('report'));
                         } else {
                             if ($item->isObsolete()) {
                                 $this->feedback->log('warning', $this->txt('warning_obsolete'));
                             }
                             $this->_dispatch($view, $item, $root, $get_show_view);
                         }
                     }
                 }
             }
         }
     }
 }