diff --git a/presentation/lookAndFeel/knowledgeTree/documentmanagement/modifySpecificMetaDataBL.php b/presentation/lookAndFeel/knowledgeTree/documentmanagement/modifySpecificMetaDataBL.php index 2da3041..f8e4f0c 100644 --- a/presentation/lookAndFeel/knowledgeTree/documentmanagement/modifySpecificMetaDataBL.php +++ b/presentation/lookAndFeel/knowledgeTree/documentmanagement/modifySpecificMetaDataBL.php @@ -27,35 +27,62 @@ require_once("../../../../config/dmsDefaults.php"); -KTUtil::extractGPC('fDocumentID', 'fFirstEdit'); - -if (checkSession()) { - require_once("$default->fileSystemRoot/lib/security/Permission.inc"); - require_once("$default->fileSystemRoot/lib/documentmanagement/Document.inc"); - require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); - require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); - require_once("$default->fileSystemRoot/lib/visualpatterns/PatternEditableTableSqlQuery.inc"); - require_once("$default->fileSystemRoot/lib/visualpatterns/PatternMetaData.inc"); - require_once("$default->fileSystemRoot/presentation/Html.inc"); - require_once("documentUI.inc"); - require_once("modifySpecificMetaDataUI.inc"); - - $oDocument = Document::get($fDocumentID); - if (Permission::userHasDocumentWritePermission($oDocument)) { - - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); - $oPatternCustom = & new PatternCustom(); - $oPatternCustom->setHtml(getPage($fDocumentID, $oDocument->getDocumentTypeID(), $fFirstEdit)); - $main->setCentralPayload($oPatternCustom); - if (isset($fFirstEdit)) { - $_SESSION["pageAccess"][$default->rootUrl . '/presentation/lookAndFeel/knowledgeTree/store.php'] = true; - $main->setFormAction("$default->rootUrl/presentation/lookAndFeel/knowledgeTree/store.php?fReturnURL=" . urlencode("$default->rootUrl/control.php?action=viewDocument&fDocumentID=$fDocumentID")); - } else { - $_SESSION["pageAccess"][$default->rootUrl . '/presentation/lookAndFeel/knowledgeTree/store.php'] = true; - $main->setFormAction("$default->rootUrl/presentation/lookAndFeel/knowledgeTree/store.php?fReturnURL=" . urlencode("$default->rootUrl/control.php?action=viewDocument&fDocumentID=$fDocumentID&fShowSection=typeSpecificMetaData")); - } - $main->setHasRequiredFields(true); - $main->render(); - } +KTUtil::extractGPC('fDocumentID', 'fFirstEdit', 'fForStore'); + +if (!checkSession()) { + die(); } + +require_once("$default->fileSystemRoot/lib/security/Permission.inc"); +require_once("$default->fileSystemRoot/lib/documentmanagement/Document.inc"); +require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternEditableTableSqlQuery.inc"); +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternMetaData.inc"); +require_once("$default->fileSystemRoot/presentation/Html.inc"); +require_once("documentUI.inc"); +require_once("modifySpecificMetaDataUI.inc"); + +require_once(KT_LIB_DIR . '/documentmanagement/documentutil.inc.php'); + +$oDocument = Document::get($fDocumentID); +if (!Permission::userHasDocumentWritePermission($oDocument)) { + die(); +} + +if (empty($fForStore)) { + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + $oPatternCustom = & new PatternCustom(); + $oPatternCustom->setHtml(getPage($fDocumentID, $oDocument->getDocumentTypeID(), $fFirstEdit)); + $main->setCentralPayload($oPatternCustom); + $main->setFormAction($_SERVER["PHP_SELF"] . "?fForStore=1"); + $main->setHasRequiredFields(true); + $main->render(); + exit(0); +} + +$matches = array(); +$aFields = array(); +foreach ($_REQUEST as $k => $v) { + if (preg_match('/^emd(\d+)$/', $k, $matches)) { + $aFields[] = array(DocumentField::get($matches[1]), $v); + } +} + +DBUtil::startTransaction(); +$res = KTDocumentUtil::saveMetadata($oDocument, $aFields); +if (PEAR::isError($res)) { + DBUtil::rollback(); + $_SESSION['KTErrorMessages'][] = $res->getMessage(); + controllerRedirect('modifyDocumentTypeMetaData', "fDocumentID=$fDocumentID"); + exit(0); +} +DBUtil::commit(); + +if (isset($fFirstEdit)) { + controllerRedirect('viewDocument', "fDocumentID=$fDocumentID"); +} else { + controllerRedirect('viewDocument', "fDocumentID=$fDocumentID&fShowSection=typeSpecificMetaData"); +} + ?> diff --git a/presentation/lookAndFeel/knowledgeTree/documentmanagement/modifySpecificMetaDataUI.inc b/presentation/lookAndFeel/knowledgeTree/documentmanagement/modifySpecificMetaDataUI.inc index b7be5e2..3a08aee 100644 --- a/presentation/lookAndFeel/knowledgeTree/documentmanagement/modifySpecificMetaDataUI.inc +++ b/presentation/lookAndFeel/knowledgeTree/documentmanagement/modifySpecificMetaDataUI.inc @@ -25,30 +25,30 @@ * @package documentmanagement */ +require_once(KT_LIB_DIR . '/templating/templating.inc.php'); +require_once(KT_LIB_DIR . '/documentmanagement/DocumentField.inc'); + function getEditableTypeSpecificMetaData($iDocumentID, $iDocumentTypeID) { - global $default; - /*ok*/ $sQuery = array("SELECT DISTINCT $iDocumentID AS document_id, COALESCE(DFL.id, -1) AS id, DF.id AS document_field_id, DFL.value AS value, DF.name AS field_name, DTFL.is_mandatory AS is_mandatory " . - "FROM document_type_fields_link AS DTFL INNER JOIN document_fields AS DF ON DTFL.field_id = DF.id " . - "LEFT OUTER JOIN document_fields_link AS DFL ON DFL.document_field_id = DTFL.field_id AND DFL.document_id = ? " . - "WHERE DF.is_generic = 0 " . - "AND DTFL.document_type_id = ?", array($iDocumentID, $iDocumentTypeID)); + global $default; + /*ok*/ $sQuery = array("SELECT DF.id AS id " . + "FROM document_fields AS DF LEFT JOIN document_type_fields_link AS DTFL ON DTFL.field_id = DF.id " . + "WHERE DF.is_generic = ? " . + "AND DTFL.document_type_id = ?", array(false, $iDocumentTypeID)); - $aStoreColumnNames = array("document_id", "document_field_id", "value"); - $aDisplayColumnNames = array("document_id", "field_name", "value"); - $aColumnsEditable = array(0,0,1); - $aColumnsVisible = array(0,1,1); - $aColumnDisplayTypes = array(1,1,4); - $aColumnDatabaseTypes = array(0,0,1); - $aMetaDataColumnNames = array(2=>"field_name"); + $aIDs = DBUtil::getResultArray($sQuery); - $oPatternTableSqlQuery = & new PatternEditableTableSqlQuery($sQuery, "document_fields_link", $aStoreColumnNames, $aDisplayColumnNames, $aColumnsEditable, $aColumnsVisible, $aColumnDisplayTypes, $aColumnDatabaseTypes); - $oPatternTableSqlQuery->setTableCaption(_("Type specific meta data")); - $oPatternTableSqlQuery->setEmptyTableMessage(_("No Type Specific Meta Data")); - $oPatternTableSqlQuery->setUniqueName("tsmd"); - $oPatternTableSqlQuery->setMetaDataFields($aMetaDataColumnNames); - $oPatternTableSqlQuery->setPreCode(sprintf('require_once(KT_LIB_DIR . "/documentmanagement/documentutil.inc.php"); KTDocumentUtil::createMetadataVersion(%d);', (int)$iDocumentID)); - $oPatternTableSqlQuery->setPostCode(sprintf('require_once(KT_LIB_DIR . "/documentmanagement/documentutil.inc.php"); KTDocumentUtil::bumpVersion(%d); KTDocumentUtil::setModifiedDate(%d);', (int)$iDocumentID, (int)$iDocumentID)); - return $oPatternTableSqlQuery->render(); + $aFields = array(); + foreach ($aIDs as $iID) { + $aFields[] =& call_user_func(array('DocumentField', 'get'), $iID); + } + $aTemplateData = array( + 'caption' => _('Type specific meta data'), + 'empty_message' => _("No Type Specific Meta Data"), + 'fields' => $aFields, + ); + $oTemplating = KTTemplating::getSingleton(); + $oTemplate = $oTemplating->loadTemplate("ktcore/metadata_fields/editable_metadata_fields"); + return $oTemplate->render($aTemplateData); } function getPage($iDocumentID, $iDocumentTypeID, $bFirstEdit) {