Esempio n. 1
0
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_view($handler_id, array $args, array &$data)
 {
     midcom::get('auth')->require_valid_user();
     $qb = org_openpsa_documents_document_dba::new_query_builder();
     //check if there is another output-mode wanted
     if (isset($args[0])) {
         $this->_output_mode = $args[0];
     }
     if (isset($args[1])) {
         $current_topic = midcom_db_topic::get_cached($args[1]);
     } else {
         $current_topic = midcom_core_context::get()->get_key(MIDCOM_CONTEXT_CONTENTTOPIC);
     }
     switch ($this->_output_mode) {
         case 'xml':
             $current_component = $current_topic->component;
             $parent_link = "";
             $prefix = midcom_core_context::get()->get_key(MIDCOM_CONTEXT_ANCHORPREFIX);
             //check if id of a topic is passed
             if (isset($_POST['nodeid'])) {
                 $root_topic = new midcom_db_topic((int) $_POST['nodeid']);
                 while ($root_topic->get_parent()->component == $current_component && $root_topic->id != $current_topic->id) {
                     $parent_link = $root_topic->name . "/" . $parent_link;
                     $root_topic = $root_topic->get_parent();
                 }
                 $root_topic = new midcom_db_topic((int) $_POST['nodeid']);
                 $this->_request_data['parent_link'] = $parent_link;
             } else {
                 $root_topic = $current_topic;
                 $current_topic = $current_topic->get_parent();
                 if ($current_topic->get_parent()) {
                     $this->_request_data['parent_directory'] = $current_topic;
                     $parent_link = substr($prefix, 0, strlen($prefix) - (strlen($root_topic->name) + 1));
                 }
                 $this->_request_data['parent_up_link'] = $parent_link;
             }
             //show only documents of the right topic
             $qb->add_constraint('topic', '=', $root_topic->id);
             //get needed directories
             $this->_prepare_directories($root_topic, $current_component);
             //set header & style for xml
             midcom::get()->header("Content-type: text/xml; charset=UTF-8");
             midcom::get()->skip_page_style = true;
             break;
             //html
         //html
         default:
             $qb->add_constraint('orgOpenpsaObtype', '=', ORG_OPENPSA_OBTYPE_DOCUMENT);
             $qb->add_constraint('topic', '=', $this->_request_data['directory']->id);
             $this->_prepare_output();
             break;
     }
     $this->_request_data['current_guid'] = $current_topic->guid;
     $qb->add_constraint('nextVersion', '=', 0);
     $qb->add_order('title');
     $this->_documents = $qb->execute();
 }
Esempio n. 2
0
 /**
  * Prepare the indexer client
  */
 public function _on_reindex($topic, $config, &$indexer)
 {
     $qb_documents = org_openpsa_documents_document_dba::new_query_builder();
     $qb_documents->add_constraint('topic', '=', $topic->id);
     $qb_documents->add_constraint('nextVersion', '=', 0);
     $qb_documents->add_constraint('orgOpenpsaObtype', '=', ORG_OPENPSA_OBTYPE_DOCUMENT);
     $schemadb_documents = midcom_helper_datamanager2_schema::load_database($config->get('schemadb_document'));
     $qb_directories = org_openpsa_documents_directory::new_query_builder();
     $qb_directories->add_constraint('up', '=', $topic->id);
     $qb_directories->add_constraint('component', '=', $this->_component);
     $schemadb_directories = midcom_helper_datamanager2_schema::load_database($config->get('schemadb_directory'));
     $indexer = new org_openpsa_documents_midcom_indexer($topic, $indexer);
     $indexer->add_query('documents', $qb_documents, $schemadb_documents);
     $indexer->add_query('directories', $qb_directories, $schemadb_directories);
     return $indexer;
 }
Esempio n. 3
0
 function get_leaves()
 {
     $leaves = array();
     return $leaves;
     // OLD STUFF:
     // List the documents
     $qb = org_openpsa_documents_document_dba::new_query_builder();
     $qb->add_constraint('topic', '=', $this->_topic->id);
     $qb->add_constraint('nextVersion', '=', 0);
     $qb->add_constraint('orgOpenpsaObtype', '=', ORG_OPENPSA_OBTYPE_DOCUMENT);
     $ret = $qb->execute();
     if (is_array($ret) && count($ret) > 0) {
         foreach ($ret as $document) {
             $leaves[$document->id] = array(MIDCOM_NAV_URL => 'document/' . $document->guid . '/', MIDCOM_NAV_NAME => $document->title != "" ? $document->title : "document #" . $document->id, MIDCOM_NAV_OBJECT => $document, MIDCOM_NAV_GUID => $document->guid);
         }
     }
     return $leaves;
 }
Esempio n. 4
0
 private function _add_version_navigation()
 {
     $previous_version = false;
     $next_version = false;
     $qb = org_openpsa_documents_document_dba::new_query_builder();
     if ($this->_document->nextVersion) {
         $qb->add_constraint('nextVersion', '=', $this->_document->nextVersion);
         $qb->add_constraint('metadata.created', '<', gmstrftime('%Y-%m-%d %T', $this->_document->metadata->created));
     } else {
         $qb->add_constraint('nextVersion', '=', $this->_document->id);
     }
     $version = $qb->count() + 1;
     if ($version > 1) {
         $qb->add_order('metadata.created', 'DESC');
         $qb->set_limit(1);
         $results = $qb->execute();
         $previous_version = $results[0];
     }
     if ($this->_document->nextVersion != 0) {
         $qb = org_openpsa_documents_document_dba::new_query_builder();
         $qb->begin_group('OR');
         $qb->add_constraint('nextVersion', '=', $this->_document->nextVersion);
         $qb->add_constraint('id', '=', $this->_document->nextVersion);
         $qb->end_group();
         $qb->add_constraint('metadata.revised', '>', gmstrftime('%Y-%m-%d %T', $this->_document->metadata->created));
         $qb->add_order('nextVersion', 'DESC');
         $qb->add_order('metadata.created', 'ASC');
         $qb->set_limit(1);
         $results = $qb->execute();
         $next_version = $results[0];
         $current_version = org_openpsa_documents_document_dba::get_cached($this->_document->nextVersion);
         $this->add_breadcrumb('document/' . $current_version->guid . '/', $current_version->title);
         $this->add_breadcrumb('', sprintf($this->_l10n->get('version %s (%s)'), $version, strftime('%x %X', $this->_document->metadata->revised)));
     } else {
         $this->add_breadcrumb('document/' . $this->_document->guid . '/', $this->_document->title);
     }
     if ($next_version) {
         $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "document/{$next_version->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('next version'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/up.png'));
     }
     if ($previous_version) {
         $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "document/{$previous_version->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('previous version'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/down.png'));
     }
 }