From 18102958633a606b3e9dfc065bd55eab9437b67d Mon Sep 17 00:00:00 2001 From: Jonathan Byrne Date: Fri, 8 Feb 2008 10:13:29 +0000 Subject: [PATCH] KTS-2865 "Conditional metadata fieldsets failing validation" --- plugins/ktcore/KTValidators.php | 12 +++++++++++- plugins/ktcore/folder/addDocument.php | 7 +++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/plugins/ktcore/KTValidators.php b/plugins/ktcore/KTValidators.php index 7d35a6b..5636363 100644 --- a/plugins/ktcore/KTValidators.php +++ b/plugins/ktcore/KTValidators.php @@ -381,7 +381,17 @@ class KTMembershipValidator extends KTValidator { implode(', ', $failed))); } } else { - if (!$this->aVocab[$val]) { + + $mandatory=true; + + if (substr($this->sInputVariable, 0, 9) == 'metadata_') + { + $fieldid = substr($this->sInputVariable, 9); + $field = DocumentField::get($fieldid); + $mandatory = $field->getIsMandatory(); + } + + if (!array_key_exists($val, $this->aVocab) && $mandatory) { $errors[$this->sBasename] = KTUtil::arrayGet($this->aOptions, 'error_message', sprintf(_kt('"%s"is not a valid selection.'), $val)); } diff --git a/plugins/ktcore/folder/addDocument.php b/plugins/ktcore/folder/addDocument.php index 248dd77..6e643ea 100644 --- a/plugins/ktcore/folder/addDocument.php +++ b/plugins/ktcore/folder/addDocument.php @@ -285,6 +285,13 @@ class KTFolderAddDocumentAction extends KTFolderAction { foreach ($fields as $oField) { $val = KTUtil::arrayGet($values, 'metadata_' . $oField->getId()); + if ($oFieldset->getIsConditional()) + { + if ($val == _kt('No selection.')) + { + $val = null; + } + } // ALT.METADATA.LAYER.DIE.DIE.DIE if (!is_null($val)) { $MDPack[] = array( -- libgit2 0.21.4