Commit 0ec7c0f37c9f3963f6a03bbc8e08f77aaf5e8859
1 parent
f97c4cd2
Implement metadata validation using the mandatory flag on fields and
verifying conditional metadata fieldsets. git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3893 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
39 additions
and
0 deletions
lib/documentmanagement/documentutil.inc.php
| @@ -37,6 +37,8 @@ require_once(KT_LIB_DIR . '/subscriptions/SubscriptionConstants.inc'); | @@ -37,6 +37,8 @@ require_once(KT_LIB_DIR . '/subscriptions/SubscriptionConstants.inc'); | ||
| 37 | // NEW PATHS | 37 | // NEW PATHS |
| 38 | require_once(KT_LIB_DIR . '/storage/storagemanager.inc.php'); | 38 | require_once(KT_LIB_DIR . '/storage/storagemanager.inc.php'); |
| 39 | require_once(KT_LIB_DIR . '/filelike/filelikeutil.inc.php'); | 39 | require_once(KT_LIB_DIR . '/filelike/filelikeutil.inc.php'); |
| 40 | +require_once(KT_LIB_DIR . '/metadata/metadatautil.inc.php'); | ||
| 41 | +require_once(KT_LIB_DIR . '/metadata/fieldset.inc.php'); | ||
| 40 | 42 | ||
| 41 | class KTDocumentUtil { | 43 | class KTDocumentUtil { |
| 42 | function createMetadataVersion($oDocument) { | 44 | function createMetadataVersion($oDocument) { |
| @@ -214,6 +216,35 @@ class KTDocumentUtil { | @@ -214,6 +216,35 @@ class KTDocumentUtil { | ||
| 214 | 216 | ||
| 215 | // {{{ validateMetadata | 217 | // {{{ validateMetadata |
| 216 | function validateMetadata(&$oDocument, $aMetadata) { | 218 | function validateMetadata(&$oDocument, $aMetadata) { |
| 219 | + $aFieldsets =& KTFieldset::getGenericFieldsets(); | ||
| 220 | + $aFieldsets =& array_merge($aFieldsets, | ||
| 221 | + KTFieldset::getForDocumentType($oDocument->getDocumentTypeId())); | ||
| 222 | + $aFailed = array(); | ||
| 223 | + foreach ($aFieldsets as $oFieldset) { | ||
| 224 | + $aFields =& $oFieldset->getFields(); | ||
| 225 | + $aFieldValues = array(); | ||
| 226 | + foreach ($aFields as $oField) { | ||
| 227 | + $v = KTUtil::arrayGet($aMetadata, $oField->getId()); | ||
| 228 | + if ($oField->getIsMandatory()) { | ||
| 229 | + if (empty($v)) { | ||
| 230 | + // XXX: What I'd do for a setdefault... | ||
| 231 | + $aFailed["field"][$oField->getId()] = 1; | ||
| 232 | + } | ||
| 233 | + } | ||
| 234 | + if (!empty($v)) { | ||
| 235 | + $aFieldValues[$oField->getId()] = $v; | ||
| 236 | + } | ||
| 237 | + } | ||
| 238 | + if ($oFieldset->getIsConditional()) { | ||
| 239 | + $res = KTMetadataUtil::getNext($oFieldset, $aFieldValues); | ||
| 240 | + if ($res) { | ||
| 241 | + $aFailed["fieldset"][$oFieldset->getId()] = 1; | ||
| 242 | + } | ||
| 243 | + } | ||
| 244 | + } | ||
| 245 | + if (!empty($aFailed)) { | ||
| 246 | + return new KTMetadataValidationError($aFailed); | ||
| 247 | + } | ||
| 217 | return $aMetadata; | 248 | return $aMetadata; |
| 218 | } | 249 | } |
| 219 | // }}} | 250 | // }}} |
| @@ -384,4 +415,12 @@ class KTDocumentUtil { | @@ -384,4 +415,12 @@ class KTDocumentUtil { | ||
| 384 | // }}} | 415 | // }}} |
| 385 | } | 416 | } |
| 386 | 417 | ||
| 418 | +class KTMetadataValidationError extends PEAR_Error { | ||
| 419 | + function KTMetadataValidationError ($aFailed) { | ||
| 420 | + $this->aFailed = $aFailed; | ||
| 421 | + $message = 'Validation Failed'; | ||
| 422 | + parent::PEAR_Error($message); | ||
| 423 | + } | ||
| 424 | +} | ||
| 425 | + | ||
| 387 | ?> | 426 | ?> |