Commit fff7a9ebaa1b68dd4f4e6560895c4d3078ac1c12
1 parent
a20fe6eb
Added date validation for the date field.
PT: 1347284 Jira: KTC-793 Committed by: Megan Watson
Showing
4 changed files
with
87 additions
and
11 deletions
plugins/ktcore/KTCorePlugin.php
| @@ -216,6 +216,7 @@ class KTCorePlugin extends KTPlugin { | @@ -216,6 +216,7 @@ class KTCorePlugin extends KTPlugin { | ||
| 216 | $this->registerValidator('KTRequiredFileValidator', 'ktcore.validators.requiredfile', 'KTValidators.php'); | 216 | $this->registerValidator('KTRequiredFileValidator', 'ktcore.validators.requiredfile', 'KTValidators.php'); |
| 217 | $this->registerValidator('KTFileIllegalCharValidator', 'ktcore.validators.fileillegalchar', 'KTValidators.php'); | 217 | $this->registerValidator('KTFileIllegalCharValidator', 'ktcore.validators.fileillegalchar', 'KTValidators.php'); |
| 218 | $this->registerValidator('KTArrayValidator', 'ktcore.validators.array', 'KTValidators.php'); | 218 | $this->registerValidator('KTArrayValidator', 'ktcore.validators.array', 'KTValidators.php'); |
| 219 | + $this->registerValidator('KTDateValidator', 'ktcore.validators.date', 'KTValidators.php'); | ||
| 219 | 220 | ||
| 220 | // criterion | 221 | // criterion |
| 221 | $this->registerCriterion('NameCriterion', 'ktcore.criteria.name', KT_LIB_DIR . '/browse/Criteria.inc'); | 222 | $this->registerCriterion('NameCriterion', 'ktcore.criteria.name', KT_LIB_DIR . '/browse/Criteria.inc'); |
plugins/ktcore/KTValidators.php
| @@ -6,31 +6,31 @@ | @@ -6,31 +6,31 @@ | ||
| 6 | * Document Management Made Simple | 6 | * Document Management Made Simple |
| 7 | * Copyright (C) 2008, 2009 KnowledgeTree Inc. | 7 | * Copyright (C) 2008, 2009 KnowledgeTree Inc. |
| 8 | * Portions copyright The Jam Warehouse Software (Pty) Limited | 8 | * Portions copyright The Jam Warehouse Software (Pty) Limited |
| 9 | - * | 9 | + * |
| 10 | * This program is free software; you can redistribute it and/or modify it under | 10 | * This program is free software; you can redistribute it and/or modify it under |
| 11 | * the terms of the GNU General Public License version 3 as published by the | 11 | * the terms of the GNU General Public License version 3 as published by the |
| 12 | * Free Software Foundation. | 12 | * Free Software Foundation. |
| 13 | - * | 13 | + * |
| 14 | * This program is distributed in the hope that it will be useful, but WITHOUT | 14 | * This program is distributed in the hope that it will be useful, but WITHOUT |
| 15 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 15 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
| 16 | * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | 16 | * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
| 17 | * details. | 17 | * details. |
| 18 | - * | 18 | + * |
| 19 | * You should have received a copy of the GNU General Public License | 19 | * You should have received a copy of the GNU General Public License |
| 20 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 20 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 21 | - * | ||
| 22 | - * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco, | 21 | + * |
| 22 | + * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco, | ||
| 23 | * California 94120-7775, or email info@knowledgetree.com. | 23 | * California 94120-7775, or email info@knowledgetree.com. |
| 24 | - * | 24 | + * |
| 25 | * The interactive user interfaces in modified source and object code versions | 25 | * The interactive user interfaces in modified source and object code versions |
| 26 | * of this program must display Appropriate Legal Notices, as required under | 26 | * of this program must display Appropriate Legal Notices, as required under |
| 27 | * Section 5 of the GNU General Public License version 3. | 27 | * Section 5 of the GNU General Public License version 3. |
| 28 | - * | 28 | + * |
| 29 | * In accordance with Section 7(b) of the GNU General Public License version 3, | 29 | * In accordance with Section 7(b) of the GNU General Public License version 3, |
| 30 | * these Appropriate Legal Notices must retain the display of the "Powered by | 30 | * these Appropriate Legal Notices must retain the display of the "Powered by |
| 31 | - * KnowledgeTree" logo and retain the original copyright notice. If the display of the | 31 | + * KnowledgeTree" logo and retain the original copyright notice. If the display of the |
| 32 | * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices | 32 | * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices |
| 33 | - * must display the words "Powered by KnowledgeTree" and retain the original | 33 | + * must display the words "Powered by KnowledgeTree" and retain the original |
| 34 | * copyright notice. | 34 | * copyright notice. |
| 35 | * Contributor( s): ______________________________________ | 35 | * Contributor( s): ______________________________________ |
| 36 | */ | 36 | */ |
| @@ -434,6 +434,9 @@ class KTFieldsetValidator extends KTValidator { | @@ -434,6 +434,9 @@ class KTFieldsetValidator extends KTValidator { | ||
| 434 | $d = (array) KTUtil::arrayGet($data, $this->sInputVariable); | 434 | $d = (array) KTUtil::arrayGet($data, $this->sInputVariable); |
| 435 | //var_dump($this); exit(0); | 435 | //var_dump($this); exit(0); |
| 436 | foreach ($this->_validators as $v) { | 436 | foreach ($this->_validators as $v) { |
| 437 | + if(is_null($v)){ | ||
| 438 | + continue; | ||
| 439 | + } | ||
| 437 | $res = $v->validate($d); | 440 | $res = $v->validate($d); |
| 438 | 441 | ||
| 439 | // results comes out with a set of names and values. | 442 | // results comes out with a set of names and values. |
| @@ -562,4 +565,58 @@ class KTArrayValidator extends KTValidator { | @@ -562,4 +565,58 @@ class KTArrayValidator extends KTValidator { | ||
| 562 | } | 565 | } |
| 563 | } | 566 | } |
| 564 | 567 | ||
| 568 | +class KTDateValidator extends KTValidator { | ||
| 569 | + var $sNamespace = 'ktcore.validators.date'; | ||
| 570 | + | ||
| 571 | + var $sFormat; | ||
| 572 | + var $sFormatWarning; | ||
| 573 | + | ||
| 574 | + function configure($aOptions) { | ||
| 575 | + $res = parent::configure($aOptions); | ||
| 576 | + if (PEAR::isError($res)) { | ||
| 577 | + return $res; | ||
| 578 | + } | ||
| 579 | + | ||
| 580 | + $this->sFormat = KTUtil::arrayGet($aOptions, 'format', 'YYYY-MM-DD'); | ||
| 581 | + | ||
| 582 | + $this->sFormatWarning = KTUtil::arrayGet($aOptions, 'format_warning', | ||
| 583 | + sprintf(_kt('The date entered must be in the format "%s".'), $this->sFormat)); | ||
| 584 | + | ||
| 585 | + $this->bTrim = KTUtil::arrayGet($aOptions, 'trim', true, false); | ||
| 586 | + } | ||
| 587 | + | ||
| 588 | + function validate($data) { | ||
| 589 | + $results = array(); | ||
| 590 | + $errors = array(); | ||
| 591 | + | ||
| 592 | + // very simple if we're required and not present, fail | ||
| 593 | + // otherwise, its ok. | ||
| 594 | + $val = KTUtil::arrayGet($data, $this->sInputVariable); | ||
| 595 | + | ||
| 596 | + if ($this->bTrim) { | ||
| 597 | + $val = trim($val); | ||
| 598 | + } | ||
| 599 | + | ||
| 600 | + if (preg_match ("/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/", $val, $parts)) | ||
| 601 | + { | ||
| 602 | + //check weather the date is valid of not | ||
| 603 | + if(checkdate($parts[2],$parts[3],$parts[1])){ | ||
| 604 | + }else{ | ||
| 605 | + $errors[$this->sBasename] = $this->sFormatWarning; | ||
| 606 | + } | ||
| 607 | + }else { | ||
| 608 | + $errors[$this->sBasename] = $this->sFormatWarning; | ||
| 609 | + } | ||
| 610 | + | ||
| 611 | + if ($this->bProduceOutput) { | ||
| 612 | + $results[$this->sOutputVariable] = $val; | ||
| 613 | + } | ||
| 614 | + | ||
| 615 | + return array( | ||
| 616 | + 'errors' => $errors, | ||
| 617 | + 'results' => $results, | ||
| 618 | + ); | ||
| 619 | + } | ||
| 620 | +} | ||
| 621 | + | ||
| 565 | ?> | 622 | ?> |
plugins/ktcore/KTWidgets.php
| @@ -953,4 +953,22 @@ class KTCoreTextAreaWidget extends KTWidget { | @@ -953,4 +953,22 @@ class KTCoreTextAreaWidget extends KTWidget { | ||
| 953 | class KTCoreDateWidget extends KTWidget { | 953 | class KTCoreDateWidget extends KTWidget { |
| 954 | var $sNamespace = 'ktcore.widgets.date'; | 954 | var $sNamespace = 'ktcore.widgets.date'; |
| 955 | var $sTemplate = 'ktcore/forms/widgets/date'; | 955 | var $sTemplate = 'ktcore/forms/widgets/date'; |
| 956 | + | ||
| 957 | + function getValidators() { | ||
| 958 | + if (!$this->bAutoValidate) { | ||
| 959 | + return null; | ||
| 960 | + } | ||
| 961 | + $validators = parent::getValidators(); // required, etc. | ||
| 962 | + | ||
| 963 | + $oVF =& KTValidatorFactory::getSingleton(); | ||
| 964 | + | ||
| 965 | + $val = array(); | ||
| 966 | + if(!empty($validators) && !PEAR::isError($validators)) $val[] = $validators; | ||
| 967 | + $val[] = $oVF->get('ktcore.validators.date', array( | ||
| 968 | + 'test' => $this->sOrigname, | ||
| 969 | + 'basename' => $this->sBasename | ||
| 970 | + )); | ||
| 971 | + | ||
| 972 | + return $val; | ||
| 973 | + } | ||
| 956 | } | 974 | } |
| 957 | \ No newline at end of file | 975 | \ No newline at end of file |
plugins/ktcore/document/edit.php
| @@ -217,14 +217,14 @@ class KTDocumentEditAction extends KTDocumentAction { | @@ -217,14 +217,14 @@ class KTDocumentEditAction extends KTDocumentAction { | ||
| 217 | foreach ($fields as $oField) { | 217 | foreach ($fields as $oField) { |
| 218 | $val = KTUtil::arrayGet($values, 'metadata_' . $oField->getId()); | 218 | $val = KTUtil::arrayGet($values, 'metadata_' . $oField->getId()); |
| 219 | 219 | ||
| 220 | - if($oField->getDataType() == "LARGE TEXT") | 220 | + if($oField->getDataType() == "LARGE TEXT" && !is_null($oField->getMaxLength())) |
| 221 | { | 221 | { |
| 222 | if(strlen(strip_tags($val)) > $oField->getMaxLength()) | 222 | if(strlen(strip_tags($val)) > $oField->getMaxLength()) |
| 223 | { | 223 | { |
| 224 | $oForm->handleError(sprintf(_kt("Value exceeds max allowed length of %d characters for %s. Current value is %d characters."), $oField->getMaxLength(), $oField->getName(), strlen(strip_tags($val)))); | 224 | $oForm->handleError(sprintf(_kt("Value exceeds max allowed length of %d characters for %s. Current value is %d characters."), $oField->getMaxLength(), $oField->getName(), strlen(strip_tags($val)))); |
| 225 | } | 225 | } |
| 226 | } | 226 | } |
| 227 | - | 227 | + |
| 228 | // FIXME "null" has strange meanings here. | 228 | // FIXME "null" has strange meanings here. |
| 229 | if (!is_null($val)) { | 229 | if (!is_null($val)) { |
| 230 | if(KTPluginUtil::pluginIsActive('inet.multiselect.lookupvalue.plugin') && is_array($val) && $oField->getHasInetLookup()) { | 230 | if(KTPluginUtil::pluginIsActive('inet.multiselect.lookupvalue.plugin') && is_array($val) && $oField->getHasInetLookup()) { |