'browse', 'name' => 'Browse'), ); // FIXME identify the current location somehow. function addPortlets($currentaction = null) { $actions = KTDocumentActionUtil::getDocumentActionsForDocument($this->oDocument, $this->oUser); $oPortlet = new KTActionPortlet("Document Actions"); // FIXME i18n $oPortlet->setActions($actions, $currentaction); $this->oPage->addPortlet($oPortlet); } function do_main() { // fix legacy, broken items. if (KTUtil::arrayGet($_REQUEST, "fDocumentID", true) !== true) { $_REQUEST["fDocumentId"] = KTUtil::arrayGet($_REQUEST, "fDocumentID"); unset($_REQUEST["fDocumentID"]); } $document_data = array(); $document_id = KTUtil::arrayGet($_REQUEST, 'fDocumentId'); if ($document_id === null) { $this->oPage->addError('No document was requested. Please browse for one.'); return $this->do_error(); } $document_data["document_id"] = $document_id; // try get the document. $oDocument =& Document::get($document_id); if (PEAR::isError($oDocument)) { $this->oPage->addError('The document you attempted to retrieve is invalid. Please browse for one.'); return $this->do_error(); } if (!Permission::userHasDocumentReadPermission($oDocument)) { // FIXME inconsistent. $this->oPage->addError('You are not allowed to view this document'); return $this->do_error(); } $this->oDocument =& $oDocument; $this->aBreadcrumbs += KTBrowseUtil::breadcrumbsForDocument($oDocument); $this->oPage->setBreadcrumbDetails("document details"); $this->addPortlets("Document Details"); $document_data["document"] = $oDocument; $document_data["document_type"] =& DocumentType::get($oDocument->getDocumentTypeID()); $is_valid_doctype = true; if (PEAR::isError($document_data["document_type"])) { $this->oPage->addError('The document you requested has an invalid document type. Unfortunately, this means that we cannot effectively display it.'); $is_valid_doctype = false; } // we want to grab all the md for this doc, since its faster that way. $mdlist =& DocumentFieldLink::getList(array('document_id = ?', array($document_id))); $field_values = array(); foreach ($mdlist as $oFieldLink) { $field_values[$oFieldLink->getDocumentFieldID()] = $oFieldLink->getValue(); } //var_dump($field_values); $document_data["field_values"] = $field_values; // FIXME generate portlets // FIXME generate breadcrumb // Fieldset generation. // // we need to create a set of FieldsetDisplay objects // that adapt the Fieldsets associated with this lot // to the view (i.e. ZX3). Unfortunately, we don't have // any of the plumbing to do it, so we handle this here. $fieldsets = array(); // we always have a generic. array_push($fieldsets, new GenericFieldsetDisplay()); $fieldsetDisplayReg =& KTFieldsetDisplayRegistry::getSingleton(); foreach (KTMetadataUtil::fieldsetsForDocument($oDocument) as $oFieldset) { $displayClass = $fieldsetDisplayReg->getHandler($oFieldset->getNamespace()); array_push($fieldsets, new $displayClass($oFieldset)); } $oTemplating = new KTTemplating; $oTemplate = $oTemplating->loadTemplate("kt3/view_document"); $aTemplateData = array( "context" => $this, "document_id" => $document_id, "document" => $oDocument, "document_data" => $document_data, "fieldsets" => $fieldsets, ); //return '
' . print_r($aTemplateData, true) . ''; return $oTemplate->render($aTemplateData); } function do_history() { $document_data = array(); $document_id = KTUtil::arrayGet($_REQUEST, 'fDocumentId'); if ($document_id === null) { $this->oPage->addError('No document was requested. Please browse for one.'); return $this->do_error(); } $document_data["document_id"] = $document_id; // try get the document. $oDocument =& Document::get($document_id); if (PEAR::isError($oDocument)) { $this->oPage->addError('The document you attempted to retrieve is invalid. Please browse for one.'); return $this->do_error(); } // fixme check perms $this->oDocument =& $oDocument; $this->aBreadcrumbs += KTBrowseUtil::breadcrumbsForDocument($oDocument); $this->oPage->setBreadcrumbDetails("history"); $this->addPortlets("History"); $aTransactions = array(); // FIXME create a sane "view user information" page somewhere. // FIXME do we really need to use a raw db-access here? probably... $sQuery = "SELECT DTT.name AS transaction_name, U.name AS user_name, DT.version AS version, DT.comment AS comment, DT.datetime AS datetime " . "FROM " . KTUtil::getTableName("document_transactions") . " AS DT INNER JOIN " . KTUtil::getTableName("users") . " AS U ON DT.user_id = U.id " . "INNER JOIN " . KTUtil::getTableName("transaction_types") . " AS DTT ON DTT.id = DT.transaction_id " . "WHERE DT.document_id = ? ORDER BY DT.datetime DESC"; $aParams = array($document_id); $res = DBUtil::getResultArray(array($sQuery, $aParams)); if (PEAR::isError($res)) { var_dump($res); // FIXME be graceful on failure. exit(0); } // FIXME roll up view transactions $aTransactions = $res; // render pass. $this->oPage->title = "Document History : " . $oDocument->getName(); $oTemplating = new KTTemplating; $oTemplate = $oTemplating->loadTemplate("kt3/view_document_history"); $aTemplateData = array( "context" => $this, "document_id" => $document_id, "document" => $oDocument, "transactions" => $aTransactions, ); return $oTemplate->render($aTemplateData); } // FIXME refactor out the document-info creation into a single utility function. // this gets in: // fDocumentId (document to compare against) // fComparisonVersion (the metadata_version of the appropriate document) function do_viewComparison() { $document_data = array(); $document_id = KTUtil::arrayGet($_REQUEST, 'fDocumentId'); if ($document_id === null) { $this->oPage->addError('No document was requested. Please browse for one.'); return $this->do_error(); } $document_data["document_id"] = $document_id; // try get the document. $oDocument =& Document::get($document_id); if (PEAR::isError($oDocument)) { $this->oPage->addError('The document you attempted to retrieve is invalid. Please browse for one.'); return $this->do_error(); } if (!Permission::userHasDocumentReadPermission($oDocument)) { // FIXME inconsistent. $this->oPage->addError('You are not allowed to view this document'); return $this->do_error(); } $this->oDocument =& $oDocument; $this->aBreadcrumbs += KTBrowseUtil::breadcrumbsForDocument($oDocument); $this->oPage->setBreadcrumbDetails("compare versions"); $comparison_version = KTUtil::arrayGet($_REQUEST, 'fComparisonVersion'); if ($comparison_version=== null) { $this->oPage->addError('No comparison version was requested. Please select a version.'); return $this->do_error(); } // FIXME when transaction history accurately stores metadata_version, this is no longer required. // FIXME detect that the metadata_version was "manufactured" //