/** * @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(); }
/** * 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; }
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; }
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')); } }