mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 11:28:25 +00:00
Merge branch '1.3-validation' into 1.3-misc
This commit is contained in:
commit
fa14f9cebc
2 changed files with 86 additions and 15 deletions
|
@ -608,12 +608,14 @@ class Validation extends Object {
|
||||||
/**
|
/**
|
||||||
* Validate a multiple select.
|
* Validate a multiple select.
|
||||||
*
|
*
|
||||||
|
* Valid Options
|
||||||
|
*
|
||||||
|
* - in => provide a list of choices that selections must be made from
|
||||||
|
* - max => maximun number of non-zero choices that can be made
|
||||||
|
* - min => minimum number of non-zero choices that can be made
|
||||||
|
*
|
||||||
* @param mixed $check Value to check
|
* @param mixed $check Value to check
|
||||||
* @param mixed $options Options for the check.
|
* @param mixed $options Options for the check.
|
||||||
* Valid options
|
|
||||||
* in => provide a list of choices that selections must be made from
|
|
||||||
* max => maximun number of non-zero choices that can be made
|
|
||||||
* min => minimum number of non-zero choices that can be made
|
|
||||||
* @return boolean Success
|
* @return boolean Success
|
||||||
* @access public
|
* @access public
|
||||||
*/
|
*/
|
||||||
|
@ -672,12 +674,16 @@ class Validation extends Object {
|
||||||
if (is_null($_this->regex)) {
|
if (is_null($_this->regex)) {
|
||||||
switch ($_this->country) {
|
switch ($_this->country) {
|
||||||
case 'us':
|
case 'us':
|
||||||
|
case 'all':
|
||||||
|
case 'can':
|
||||||
// includes all NANPA members. see http://en.wikipedia.org/wiki/North_American_Numbering_Plan#List_of_NANPA_countries_and_territories
|
// includes all NANPA members. see http://en.wikipedia.org/wiki/North_American_Numbering_Plan#List_of_NANPA_countries_and_territories
|
||||||
default:
|
|
||||||
$_this->regex = '/^(?:\+?1)?[-. ]?\\(?[2-9][0-8][0-9]\\)?[-. ]?[2-9][0-9]{2}[-. ]?[0-9]{4}$/';
|
$_this->regex = '/^(?:\+?1)?[-. ]?\\(?[2-9][0-8][0-9]\\)?[-. ]?[2-9][0-9]{2}[-. ]?[0-9]{4}$/';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (empty($_this->regex)) {
|
||||||
|
return $_this->_pass('phone', $check, $country);
|
||||||
|
}
|
||||||
return $_this->_check();
|
return $_this->_check();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -698,6 +704,9 @@ class Validation extends Object {
|
||||||
if (is_array($check)) {
|
if (is_array($check)) {
|
||||||
$_this->_extract($check);
|
$_this->_extract($check);
|
||||||
}
|
}
|
||||||
|
if (empty($country)) {
|
||||||
|
$_this->country = 'us';
|
||||||
|
}
|
||||||
|
|
||||||
if (is_null($_this->regex)) {
|
if (is_null($_this->regex)) {
|
||||||
switch ($_this->country) {
|
switch ($_this->country) {
|
||||||
|
@ -715,11 +724,13 @@ class Validation extends Object {
|
||||||
$_this->regex = '/^[1-9]{1}[0-9]{3}$/i';
|
$_this->regex = '/^[1-9]{1}[0-9]{3}$/i';
|
||||||
break;
|
break;
|
||||||
case 'us':
|
case 'us':
|
||||||
default:
|
|
||||||
$_this->regex = '/\\A\\b[0-9]{5}(?:-[0-9]{4})?\\b\\z/i';
|
$_this->regex = '/\\A\\b[0-9]{5}(?:-[0-9]{4})?\\b\\z/i';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (empty($_this->regex)) {
|
||||||
|
return $_this->_pass('postal', $check, $country);
|
||||||
|
}
|
||||||
return $_this->_check();
|
return $_this->_check();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -783,13 +794,14 @@ class Validation extends Object {
|
||||||
* Checks that a value is a valid URL according to http://www.w3.org/Addressing/URL/url-spec.txt
|
* Checks that a value is a valid URL according to http://www.w3.org/Addressing/URL/url-spec.txt
|
||||||
*
|
*
|
||||||
* The regex checks for the following component parts:
|
* The regex checks for the following component parts:
|
||||||
* a valid, optional, scheme
|
*
|
||||||
* a valid ip address OR
|
* - a valid, optional, scheme
|
||||||
|
* - a valid ip address OR
|
||||||
* a valid domain name as defined by section 2.3.1 of http://www.ietf.org/rfc/rfc1035.txt
|
* a valid domain name as defined by section 2.3.1 of http://www.ietf.org/rfc/rfc1035.txt
|
||||||
* with an optional port number
|
* with an optional port number
|
||||||
* an optional valid path
|
* - an optional valid path
|
||||||
* an optional query string (get parameters)
|
* - an optional query string (get parameters)
|
||||||
* an optional fragment (anchor tag)
|
* - an optional fragment (anchor tag)
|
||||||
*
|
*
|
||||||
* @param string $check Value to check
|
* @param string $check Value to check
|
||||||
* @param boolean $strict Require URL to be prefixed by a valid scheme (one of http(s)/ftp(s)/file/news/gopher)
|
* @param boolean $strict Require URL to be prefixed by a valid scheme (one of http(s)/ftp(s)/file/news/gopher)
|
||||||
|
@ -834,6 +846,31 @@ class Validation extends Object {
|
||||||
return call_user_func_array(array(&$object, $method), array($check, $args));
|
return call_user_func_array(array(&$object, $method), array($check, $args));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to pass unhandled Validation locales to a class starting with $classPrefix
|
||||||
|
* and ending with Validation. For example $classPrefix = 'nl', the class would be
|
||||||
|
* `NlValidation`.
|
||||||
|
*
|
||||||
|
* @param string $method The method to call on the other class.
|
||||||
|
* @param mixed $check The value to check or an array of parameters for the method to be called.
|
||||||
|
* @param string $classPrefix The prefix for the class to do the validation.
|
||||||
|
* @return mixed Return of Passed method, false on failure
|
||||||
|
* @access protected
|
||||||
|
**/
|
||||||
|
function _pass($method, $check, $classPrefix) {
|
||||||
|
$className = ucwords($classPrefix) . 'Validation';
|
||||||
|
if (!class_exists($className)) {
|
||||||
|
trigger_error(sprintf(__('Could not find %s class, unable to complete validation.', true), $className), E_USER_WARNING);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!method_exists($className, $method)) {
|
||||||
|
trigger_error(sprintf(__('Method %s does not exist on %s unable to complete validation.', true), $method, $className), E_USER_WARNING);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$check = (array)$check;
|
||||||
|
return call_user_func_array(array($className, $method), $check);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs a regular expression match.
|
* Runs a regular expression match.
|
||||||
*
|
*
|
||||||
|
|
|
@ -41,6 +41,25 @@ class CustomValidator {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TestNlValidation class
|
||||||
|
*
|
||||||
|
* Used to test pass through of Validation
|
||||||
|
*
|
||||||
|
* @package cake.tests.cases.libs
|
||||||
|
*/
|
||||||
|
class TestNlValidation {
|
||||||
|
/**
|
||||||
|
* postal function, for testing postal pass through.
|
||||||
|
*
|
||||||
|
* @param string $check
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function postal($check) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test Case for Validation Class
|
* Test Case for Validation Class
|
||||||
*
|
*
|
||||||
|
@ -1998,6 +2017,21 @@ class ValidationTest extends CakeTestCase {
|
||||||
$this->assertTrue(Validation::postal('13089-3333'));
|
$this->assertTrue(Validation::postal('13089-3333'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* test the pass through calling of an alternate locale with postal()
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
**/
|
||||||
|
function testPassThroughMethod() {
|
||||||
|
$this->assertTrue(Validation::postal('text', null, 'testNl'));
|
||||||
|
|
||||||
|
$this->expectError('Could not find AUTOFAILValidation class, unable to complete validation.');
|
||||||
|
Validation::postal('text', null, 'AUTOFAIL');
|
||||||
|
|
||||||
|
$this->expectError('Method phone does not exist on TestNlValidation unable to complete validation.');
|
||||||
|
Validation::phone('text', null, 'testNl');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* testSsn method
|
* testSsn method
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue