1 <?php 2 /* vim: set expandtab tabstop=4 shiftwidth=4: */ 3 // +----------------------------------------------------------------------+ 4 // | PHP version 4.0 | 5 // +----------------------------------------------------------------------+ 6 // | Copyright (c) 1997-2003 The PHP Group | 7 // +----------------------------------------------------------------------+ 8 // | This source file is subject to version 2.0 of the PHP license, | 9 // | that is bundled with this package in the file LICENSE, and is | 10 // | available at through the world-wide-web at | 11 // | http://www.php.net/license/2_02.txt. | 12 // | If you did not receive a copy of the PHP license and are unable to | 13 // | obtain it through the world-wide-web, please send a note to | 14 // | license@php.net so we can mail you a copy immediately. | 15 // +----------------------------------------------------------------------+ 16 // | Author: Alexey Borzov <avb@php.net> | 17 // +----------------------------------------------------------------------+ 18 // 19 // $Id$ 20 21 require_once 'HTML/QuickForm/Rule.php'; 22 23 /** 24 * Rule to compare two form fields 25 * 26 * The most common usage for this is to ensure that the password 27 * confirmation field matches the password field 28 * 29 * @access public 30 * @package HTML_QuickForm 31 * @version $Revision$ 32 */ 33 class HTML_QuickForm_Rule_Compare extends HTML_QuickForm_Rule 34 { 35 /** 36 * Possible operators to use 37 * @var array 38 * @access private 39 */ 40 var $_operators = array( 41 'eq' => '==', 42 'neq' => '!=', 43 'gt' => '>', 44 'gte' => '>=', 45 'lt' => '<', 46 'lte' => '<=' 47 ); 48 49 50 /** 51 * Returns the operator to use for comparing the values 52 * 53 * @access private 54 * @param string operator name 55 * @return string operator to use for validation 56 */ 57 function _findOperator($name) 58 { 59 if (empty($name)) { 60 return '=='; 61 } elseif (isset($this->_operators[$name])) { 62 return $this->_operators[$name]; 63 } elseif (in_array($name, $this->_operators)) { 64 return $name; 65 } else { 66 return '=='; 67 } 68 } 69 70 71 function validate($values, $operator = null) 72 { 73 $operator = $this->_findOperator($operator); 74 $a = $values[0]; 75 $b = $values[1]; 76 if ($operator == '==') { 77 return $a == $b; 78 } else if ($operator == '!=') { 79 return $a != $b; 80 } else { 81 // One of: <= , >= , < , > . 82 return eval('return ' . floatval($a) . $operator . floatval($b) . ';'); 83 } 84 } 85 86 87 function getValidationScript($operator = null) 88 { 89 $operator = $this->_findOperator($operator); 90 if ('==' != $operator && '!=' != $operator) { 91 $check = "!(Number({jsVar}[0]) {$operator} Number({jsVar}[1]))"; 92 } else { 93 $check = "!({jsVar}[0] {$operator} {jsVar}[1])"; 94 } 95 return array('', "'' != {jsVar}[0] && {$check}"); 96 } 97 } 98 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body