summaryrefslogtreecommitdiff
path: root/framework/Web/UI/WebControls/TCompareValidator.php
diff options
context:
space:
mode:
Diffstat (limited to 'framework/Web/UI/WebControls/TCompareValidator.php')
-rw-r--r--framework/Web/UI/WebControls/TCompareValidator.php528
1 files changed, 264 insertions, 264 deletions
diff --git a/framework/Web/UI/WebControls/TCompareValidator.php b/framework/Web/UI/WebControls/TCompareValidator.php
index 57b42018..c936f140 100644
--- a/framework/Web/UI/WebControls/TCompareValidator.php
+++ b/framework/Web/UI/WebControls/TCompareValidator.php
@@ -1,265 +1,265 @@
-<?php
-/**
- * TCompareValidator class file
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @link http://www.pradosoft.com/
+<?php
+/**
+ * TCompareValidator class file
+ *
+ * @author Qiang Xue <qiang.xue@gmail.com>
+ * @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2012 PradoSoft
- * @license http://www.pradosoft.com/license/
- * @version $Id$
- * @package System.Web.UI.WebControls
- */
-
-/**
- * Using TBaseValidator class
- */
-Prado::using('System.Web.UI.WebControls.TBaseValidator');
-
-/**
- * TCompareValidator class
- *
- * TCompareValidator compares the value entered by the user into an input
- * control with the value entered into another input control or a constant value.
- * To compare the associated input control with another input control,
- * set the {@link setControlToCompare ControlToCompare} property to the ID path
- * of the control to compare with. To compare the associated input control with
- * a constant value, specify the constant value to compare with by setting the
- * {@link setValueToCompare ValueToCompare} property.
- *
- * The {@link setDataType DataType} property is used to specify the data type
- * of both comparison values. Both values are automatically converted to this data
- * type before the comparison operation is performed. The following value types are supported:
- * - <b>Integer</b> A 32-bit signed integer data type.
- * - <b>Float</b> A double-precision floating point number data type.
- * - <b>Date</b> A date data type. The format can be specified by the
- * {@link setDateFormat DateFormat} property
- * - <b>String</b> A string data type.
- *
- * Use the {@link setOperator Operator} property to specify the type of comparison
- * to perform. Valid operators include Equal, NotEqual, GreaterThan, GreaterThanEqual,
- * LessThan and LessThanEqual.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id$
- * @package System.Web.UI.WebControls
- * @since 3.0
- */
-class TCompareValidator extends TBaseValidator
-{
- /**
- * Gets the name of the javascript class responsible for performing validation for this control.
- * This method overrides the parent implementation.
- * @return string the javascript class name
- */
- protected function getClientClassName()
- {
- return 'Prado.WebUI.TCompareValidator';
- }
-
- /**
- * @return TValidationDataType the data type that the values being compared are converted to before the comparison is made. Defaults to TValidationDataType::String.
- */
- public function getDataType()
- {
- return $this->getViewState('DataType',TValidationDataType::String);
- }
-
- /**
- * Sets the data type that the values being
- * compared are converted to before the comparison is made.
- * @param TValidationDataType the data type
- */
- public function setDataType($value)
- {
- $this->setViewState('DataType',TPropertyValue::ensureEnum($value,'TValidationDataType'),TValidationDataType::String);
- }
-
- /**
- * @return string the input component to compare with the input control being validated.
- */
- public function getControlToCompare()
- {
- return $this->getViewState('ControlToCompare','');
- }
-
- /**
- * Sets the input component to compare with the input control being validated.
- * @param string the ID path of the component to compare with
- */
- public function setControlToCompare($value)
- {
- $this->setViewState('ControlToCompare',$value,'');
- }
-
- /**
- * @return string the constant value to compare with the value entered by the user into the input component being validated.
- */
- public function getValueToCompare()
- {
- return $this->getViewState('ValueToCompare','');
- }
-
- /**
- * Sets the constant value to compare with the value entered by the user into the input component being validated.
- * @param string the constant value
- */
- public function setValueToCompare($value)
- {
- $this->setViewState('ValueToCompare',$value,'');
- }
-
- /**
- * @return TValidationCompareOperator the comparison operation to perform. Defaults to TValidationCompareOperator::Equal.
- */
- public function getOperator()
- {
- return $this->getViewState('Operator',TValidationCompareOperator::Equal);
- }
-
- /**
- * Sets the comparison operation to perform
- * @param TValidationCompareOperator the comparison operation
- */
- public function setOperator($value)
- {
- $this->setViewState('Operator',TPropertyValue::ensureEnum($value,'TValidationCompareOperator'),TValidationCompareOperator::Equal);
- }
-
- /**
- * Sets the date format for a date validation
- * @param string the date format value
- */
- public function setDateFormat($value)
- {
- $this->setViewState('DateFormat', $value, '');
- }
-
- /**
- * @return string the date validation date format if any
- */
- public function getDateFormat()
- {
- return $this->getViewState('DateFormat', '');
- }
-
- /**
- * This method overrides the parent's implementation.
- * The validation succeeds if the input data compares successfully.
- * The validation always succeeds if ControlToValidate is not specified
- * or the input data is empty.
- * @return boolean whether the validation succeeds
- */
- public function evaluateIsValid()
- {
- if(($value=$this->getValidationValue($this->getValidationTarget()))==='')
- return true;
-
- if(($controlToCompare=$this->getControlToCompare())!=='')
- {
- if(($control2=$this->findControl($controlToCompare))===null)
- throw new TInvalidDataValueException('comparevalidator_controltocompare_invalid');
- if(($value2=$this->getValidationValue($control2))==='')
- return false;
- }
- else
- $value2=$this->getValueToCompare();
-
- $values = $this->getComparisonValues($value, $value2);
- switch($this->getOperator())
- {
- case TValidationCompareOperator::Equal:
- return $values[0] == $values[1];
- case TValidationCompareOperator::NotEqual:
- return $values[0] != $values[1];
- case TValidationCompareOperator::GreaterThan:
- return $values[0] > $values[1];
- case TValidationCompareOperator::GreaterThanEqual:
- return $values[0] >= $values[1];
- case TValidationCompareOperator::LessThan:
- return $values[0] < $values[1];
- case TValidationCompareOperator::LessThanEqual:
- return $values[0] <= $values[1];
- }
-
- return false;
- }
-
- /**
- * Parse the pair of values into the appropriate value type.
- * @param string value one
- * @param string second value
- * @return array appropriate type of the value pair, array($value1, $value2);
- */
- protected function getComparisonValues($value1, $value2)
- {
- switch($this->getDataType())
- {
- case TValidationDataType::Integer:
- return array(intval($value1), intval($value2));
- case TValidationDataType::Float:
- return array(floatval($value1), floatval($value2));
- case TValidationDataType::Date:
- $dateFormat = $this->getDateFormat();
- if($dateFormat!=='')
- {
- $formatter = Prado::createComponent('System.Util.TSimpleDateFormatter', $dateFormat);
- return array($formatter->parse($value1), $formatter->parse($value2));
- }
- else
- return array(strtotime($value1), strtotime($value2));
- }
- return array($value1, $value2);
- }
-
- /**
- * Returns an array of javascript validator options.
- * @return array javascript validator options.
- */
- protected function getClientScriptOptions()
- {
- $options = parent::getClientScriptOptions();
- if(($name=$this->getControlToCompare())!=='')
- {
- if(($control=$this->findControl($name))!==null)
- $options['ControlToCompare']=$control->getClientID();
- }
- if(($value=$this->getValueToCompare())!=='')
- $options['ValueToCompare']=$value;
- if(($operator=$this->getOperator())!==TValidationCompareOperator::Equal)
- $options['Operator']=$operator;
- $options['DataType']=$this->getDataType();
- if(($dateFormat=$this->getDateFormat())!=='')
- $options['DateFormat']=$dateFormat;
- return $options;
- }
-}
-
-
-/**
- * TValidationCompareOperator class.
- * TValidationCompareOperator defines the enumerable type for the comparison operations
- * that {@link TCompareValidator} can perform validation with.
- *
- * The following enumerable values are defined:
- * - Equal
- * - NotEqual
- * - GreaterThan
- * - GreaterThanEqual
- * - LessThan
- * - LessThanEqual
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id$
- * @package System.Web.UI.WebControls
- * @since 3.0.4
- */
-class TValidationCompareOperator extends TEnumerable
-{
- const Equal='Equal';
- const NotEqual='NotEqual';
- const GreaterThan='GreaterThan';
- const GreaterThanEqual='GreaterThanEqual';
- const LessThan='LessThan';
- const LessThanEqual='LessThanEqual';
-}
-
+ * @license http://www.pradosoft.com/license/
+ * @version $Id$
+ * @package System.Web.UI.WebControls
+ */
+
+/**
+ * Using TBaseValidator class
+ */
+Prado::using('System.Web.UI.WebControls.TBaseValidator');
+
+/**
+ * TCompareValidator class
+ *
+ * TCompareValidator compares the value entered by the user into an input
+ * control with the value entered into another input control or a constant value.
+ * To compare the associated input control with another input control,
+ * set the {@link setControlToCompare ControlToCompare} property to the ID path
+ * of the control to compare with. To compare the associated input control with
+ * a constant value, specify the constant value to compare with by setting the
+ * {@link setValueToCompare ValueToCompare} property.
+ *
+ * The {@link setDataType DataType} property is used to specify the data type
+ * of both comparison values. Both values are automatically converted to this data
+ * type before the comparison operation is performed. The following value types are supported:
+ * - <b>Integer</b> A 32-bit signed integer data type.
+ * - <b>Float</b> A double-precision floating point number data type.
+ * - <b>Date</b> A date data type. The format can be specified by the
+ * {@link setDateFormat DateFormat} property
+ * - <b>String</b> A string data type.
+ *
+ * Use the {@link setOperator Operator} property to specify the type of comparison
+ * to perform. Valid operators include Equal, NotEqual, GreaterThan, GreaterThanEqual,
+ * LessThan and LessThanEqual.
+ *
+ * @author Qiang Xue <qiang.xue@gmail.com>
+ * @version $Id$
+ * @package System.Web.UI.WebControls
+ * @since 3.0
+ */
+class TCompareValidator extends TBaseValidator
+{
+ /**
+ * Gets the name of the javascript class responsible for performing validation for this control.
+ * This method overrides the parent implementation.
+ * @return string the javascript class name
+ */
+ protected function getClientClassName()
+ {
+ return 'Prado.WebUI.TCompareValidator';
+ }
+
+ /**
+ * @return TValidationDataType the data type that the values being compared are converted to before the comparison is made. Defaults to TValidationDataType::String.
+ */
+ public function getDataType()
+ {
+ return $this->getViewState('DataType',TValidationDataType::String);
+ }
+
+ /**
+ * Sets the data type that the values being
+ * compared are converted to before the comparison is made.
+ * @param TValidationDataType the data type
+ */
+ public function setDataType($value)
+ {
+ $this->setViewState('DataType',TPropertyValue::ensureEnum($value,'TValidationDataType'),TValidationDataType::String);
+ }
+
+ /**
+ * @return string the input component to compare with the input control being validated.
+ */
+ public function getControlToCompare()
+ {
+ return $this->getViewState('ControlToCompare','');
+ }
+
+ /**
+ * Sets the input component to compare with the input control being validated.
+ * @param string the ID path of the component to compare with
+ */
+ public function setControlToCompare($value)
+ {
+ $this->setViewState('ControlToCompare',$value,'');
+ }
+
+ /**
+ * @return string the constant value to compare with the value entered by the user into the input component being validated.
+ */
+ public function getValueToCompare()
+ {
+ return $this->getViewState('ValueToCompare','');
+ }
+
+ /**
+ * Sets the constant value to compare with the value entered by the user into the input component being validated.
+ * @param string the constant value
+ */
+ public function setValueToCompare($value)
+ {
+ $this->setViewState('ValueToCompare',$value,'');
+ }
+
+ /**
+ * @return TValidationCompareOperator the comparison operation to perform. Defaults to TValidationCompareOperator::Equal.
+ */
+ public function getOperator()
+ {
+ return $this->getViewState('Operator',TValidationCompareOperator::Equal);
+ }
+
+ /**
+ * Sets the comparison operation to perform
+ * @param TValidationCompareOperator the comparison operation
+ */
+ public function setOperator($value)
+ {
+ $this->setViewState('Operator',TPropertyValue::ensureEnum($value,'TValidationCompareOperator'),TValidationCompareOperator::Equal);
+ }
+
+ /**
+ * Sets the date format for a date validation
+ * @param string the date format value
+ */
+ public function setDateFormat($value)
+ {
+ $this->setViewState('DateFormat', $value, '');
+ }
+
+ /**
+ * @return string the date validation date format if any
+ */
+ public function getDateFormat()
+ {
+ return $this->getViewState('DateFormat', '');
+ }
+
+ /**
+ * This method overrides the parent's implementation.
+ * The validation succeeds if the input data compares successfully.
+ * The validation always succeeds if ControlToValidate is not specified
+ * or the input data is empty.
+ * @return boolean whether the validation succeeds
+ */
+ public function evaluateIsValid()
+ {
+ if(($value=$this->getValidationValue($this->getValidationTarget()))==='')
+ return true;
+
+ if(($controlToCompare=$this->getControlToCompare())!=='')
+ {
+ if(($control2=$this->findControl($controlToCompare))===null)
+ throw new TInvalidDataValueException('comparevalidator_controltocompare_invalid');
+ if(($value2=$this->getValidationValue($control2))==='')
+ return false;
+ }
+ else
+ $value2=$this->getValueToCompare();
+
+ $values = $this->getComparisonValues($value, $value2);
+ switch($this->getOperator())
+ {
+ case TValidationCompareOperator::Equal:
+ return $values[0] == $values[1];
+ case TValidationCompareOperator::NotEqual:
+ return $values[0] != $values[1];
+ case TValidationCompareOperator::GreaterThan:
+ return $values[0] > $values[1];
+ case TValidationCompareOperator::GreaterThanEqual:
+ return $values[0] >= $values[1];
+ case TValidationCompareOperator::LessThan:
+ return $values[0] < $values[1];
+ case TValidationCompareOperator::LessThanEqual:
+ return $values[0] <= $values[1];
+ }
+
+ return false;
+ }
+
+ /**
+ * Parse the pair of values into the appropriate value type.
+ * @param string value one
+ * @param string second value
+ * @return array appropriate type of the value pair, array($value1, $value2);
+ */
+ protected function getComparisonValues($value1, $value2)
+ {
+ switch($this->getDataType())
+ {
+ case TValidationDataType::Integer:
+ return array(intval($value1), intval($value2));
+ case TValidationDataType::Float:
+ return array(floatval($value1), floatval($value2));
+ case TValidationDataType::Date:
+ $dateFormat = $this->getDateFormat();
+ if($dateFormat!=='')
+ {
+ $formatter = Prado::createComponent('System.Util.TSimpleDateFormatter', $dateFormat);
+ return array($formatter->parse($value1), $formatter->parse($value2));
+ }
+ else
+ return array(strtotime($value1), strtotime($value2));
+ }
+ return array($value1, $value2);
+ }
+
+ /**
+ * Returns an array of javascript validator options.
+ * @return array javascript validator options.
+ */
+ protected function getClientScriptOptions()
+ {
+ $options = parent::getClientScriptOptions();
+ if(($name=$this->getControlToCompare())!=='')
+ {
+ if(($control=$this->findControl($name))!==null)
+ $options['ControlToCompare']=$control->getClientID();
+ }
+ if(($value=$this->getValueToCompare())!=='')
+ $options['ValueToCompare']=$value;
+ if(($operator=$this->getOperator())!==TValidationCompareOperator::Equal)
+ $options['Operator']=$operator;
+ $options['DataType']=$this->getDataType();
+ if(($dateFormat=$this->getDateFormat())!=='')
+ $options['DateFormat']=$dateFormat;
+ return $options;
+ }
+}
+
+
+/**
+ * TValidationCompareOperator class.
+ * TValidationCompareOperator defines the enumerable type for the comparison operations
+ * that {@link TCompareValidator} can perform validation with.
+ *
+ * The following enumerable values are defined:
+ * - Equal
+ * - NotEqual
+ * - GreaterThan
+ * - GreaterThanEqual
+ * - LessThan
+ * - LessThanEqual
+ *
+ * @author Qiang Xue <qiang.xue@gmail.com>
+ * @version $Id$
+ * @package System.Web.UI.WebControls
+ * @since 3.0.4
+ */
+class TValidationCompareOperator extends TEnumerable
+{
+ const Equal='Equal';
+ const NotEqual='NotEqual';
+ const GreaterThan='GreaterThan';
+ const GreaterThanEqual='GreaterThanEqual';
+ const LessThan='LessThan';
+ const LessThanEqual='LessThanEqual';
+}
+