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 | 37 | // NEW PATHS |
| 38 | 38 | require_once(KT_LIB_DIR . '/storage/storagemanager.inc.php'); |
| 39 | 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 | 43 | class KTDocumentUtil { |
| 42 | 44 | function createMetadataVersion($oDocument) { |
| ... | ... | @@ -214,6 +216,35 @@ class KTDocumentUtil { |
| 214 | 216 | |
| 215 | 217 | // {{{ validateMetadata |
| 216 | 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 | 248 | return $aMetadata; |
| 218 | 249 | } |
| 219 | 250 | // }}} |
| ... | ... | @@ -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 | ?> | ... | ... |