diff --git a/lib/database/dbutil.inc b/lib/database/dbutil.inc index 7a6945f..125186a 100644 --- a/lib/database/dbutil.inc +++ b/lib/database/dbutil.inc @@ -218,6 +218,15 @@ class DBUtil { $aParams = array($iId); return DBUtil::runQuery(array($sQuery, $aParams), $db); } + + function deReference($sTable, $iId, $db = null) { + global $default; + // $default->log->debug('AutoDelete called for table ' . $sTable . ' with id ' . $iId); + $db =& DBUtil::getDB(); + $sQuery = "UPDATE " . $sTable . " SET disabled = true WHERE id = ?"; + $aParams = array($iId); + return DBUtil::runQuery(array($sQuery, $aParams), $db); + } function &whereDelete($sTable, $aWhereFieldValues, $db = null) { global $default; diff --git a/lib/ktentity.inc b/lib/ktentity.inc index 2e7e6c7..981c25a 100644 --- a/lib/ktentity.inc +++ b/lib/ktentity.inc @@ -161,13 +161,17 @@ class KTEntity { * @return boolean true on successful deletion, false otherwise and set $_SESSION["errorMessage"] * */ - function delete() { + function delete($dereference = null) { $group = sprintf("%s/%s", get_class($this), 'id'); $oCache =& KTCache::getSingleton(); $oCache->remove($group, $this->iId); $this->clearCachedGroups(); if ($this->iId >= 0) { - $res = DBUtil::autoDelete($this->_table(), $this->iId); + if($dereference = 'true'){ + $res = DBUtil::deReference($this->_table(), $this->iId); + }else{ + $res = DBUtil::autoDelete($this->_table(), $this->iId); + } if (PEAR::isError($res)) { if ($this->_bUsePearError === false) { $_SESSION['errorMessage'] = $res->toString(); diff --git a/lib/metadata/fieldset.inc.php b/lib/metadata/fieldset.inc.php index aa5f549..c662391 100644 --- a/lib/metadata/fieldset.inc.php +++ b/lib/metadata/fieldset.inc.php @@ -158,6 +158,7 @@ class KTFieldset extends KTEntity { )); return KTEntityUtil::getByDict('KTFieldset', array( 'is_generic' => false, + 'disabled' => false, ), $aOptions); } @@ -168,6 +169,7 @@ class KTFieldset extends KTEntity { ); return KTEntityUtil::getByDict('KTFieldset', array( 'is_generic' => true, + 'disabled' => false, ), $aOptions); } @@ -231,12 +233,14 @@ class KTFieldset extends KTEntity { function &getByNamespace($sNamespace) { return KTEntityUtil::getByDict('KTFieldset', array( 'namespace' => $sNamespace, + 'disabled' => false, )); } function &getByName($sName) { return KTEntityUtil::getByDict('KTFieldset', array( 'name' => $sName, + 'disabled' => false, )); } } diff --git a/lib/metadata/metadatautil.inc.php b/lib/metadata/metadatautil.inc.php index 9a1e258..9c46958 100644 --- a/lib/metadata/metadatautil.inc.php +++ b/lib/metadata/metadatautil.inc.php @@ -684,7 +684,8 @@ class KTMetadataUtil { "FROM $default->document_metadata_version_table AS DM INNER JOIN document_fields_link AS DFL ON DM.id = DFL.metadata_version_id " . "INNER JOIN $default->document_fields_table AS DF ON DF.ID = DFL.document_field_id " . "INNER JOIN $default->fieldsets_table AS F ON F.id = DF.parent_fieldset " . - "WHERE DM.id = ?"; + "WHERE DM.id = ?" . + "AND F.disabled = false"; $aParam = array($iMetadataVersionId); $aDocumentFieldsetIds = DBUtil::getResultArrayKey(array($sQuery, $aParam), 'fieldset_id'); diff --git a/lib/upgrades/UpgradeFunctions.inc.php b/lib/upgrades/UpgradeFunctions.inc.php index b7ad367..41b03a3 100644 --- a/lib/upgrades/UpgradeFunctions.inc.php +++ b/lib/upgrades/UpgradeFunctions.inc.php @@ -785,7 +785,7 @@ class UpgradeFunctions { '-12' => 'ktcore.criteria.searchabletext', '-11' => 'ktcore.criteria.transactiontext'); - $aFieldsets =& KTFieldset::getList(); + $aFieldsets =& KTFieldset::getList('disabled != true'); foreach($aFieldsets as $oFieldset) { $aFields =& DocumentField::getByFieldset($oFieldset); foreach($aFields as $oField) { diff --git a/plugins/ktcore/admin/documentFieldsv2.php b/plugins/ktcore/admin/documentFieldsv2.php index d5b5b44..dfeb566 100644 --- a/plugins/ktcore/admin/documentFieldsv2.php +++ b/plugins/ktcore/admin/documentFieldsv2.php @@ -54,7 +54,7 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher { $oTemplate->setData(array( 'context' => $this, - 'fieldsets' => KTFieldset::getList(), + 'fieldsets' => KTFieldset::getList('disabled != true'), )); return $oTemplate; } @@ -270,7 +270,7 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher { function do_delete() { $this->startTransaction(); - $res = $this->oFieldset->delete(); + $res = $this->oFieldset->delete('true'); $this->oValidator->notErrorFalse($res, array( 'redirect_to' => array('main', ''), 'message' => _kt('Could not delete fieldset'), diff --git a/plugins/ktcore/admin/manageConditionals.php b/plugins/ktcore/admin/manageConditionals.php index 500cf2c..988200b 100755 --- a/plugins/ktcore/admin/manageConditionals.php +++ b/plugins/ktcore/admin/manageConditionals.php @@ -52,7 +52,7 @@ class ManageConditionalDispatcher extends KTAdminDispatcher { function do_main() { - $aFieldsets = KTFieldset::getList("is_conditional = 1"); + $aFieldsets = KTFieldset::getList("is_conditional = 1 AND disabled != true"); $oTemplating =& KTTemplating::getSingleton(); $oTemplate = $oTemplating->loadTemplate("ktcore/metadata/conditional/select_fieldset");