summaryrefslogtreecommitdiffstats
path: root/system/libraries/Form_validation.php
diff options
context:
space:
mode:
Diffstat (limited to 'system/libraries/Form_validation.php')
-rw-r--r--system/libraries/Form_validation.php242
1 files changed, 75 insertions, 167 deletions
diff --git a/system/libraries/Form_validation.php b/system/libraries/Form_validation.php
index c78583f4f..0a6a2af0d 100644
--- a/system/libraries/Form_validation.php
+++ b/system/libraries/Form_validation.php
@@ -1,13 +1,25 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* CodeIgniter
*
* An open source application development framework for PHP 5.1.6 or newer
*
+ * NOTICE OF LICENSE
+ *
+ * Licensed under the Open Software License version 3.0
+ *
+ * This source file is subject to the Open Software License (OSL 3.0) that is
+ * bundled with this package in the files license.txt / license.rst. It is
+ * also available through the world wide web at this URL:
+ * http://opensource.org/licenses/OSL-3.0
+ * If you did not receive a copy of the license and are unable to obtain it
+ * through the world wide web, please send an email to
+ * licensing@ellislab.com so we can send you a copy immediately.
+ *
* @package CodeIgniter
- * @author ExpressionEngine Dev Team
- * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc.
- * @license http://codeigniter.com/user_guide/license.html
+ * @author EllisLab Dev Team
+ * @copyright Copyright (c) 2008 - 2012, EllisLab, Inc. (http://ellislab.com/)
+ * @license http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
* @link http://codeigniter.com
* @since Version 1.0
* @filesource
@@ -21,7 +33,7 @@
* @package CodeIgniter
* @subpackage Libraries
* @category Validation
- * @author ExpressionEngine Dev Team
+ * @author EllisLab Dev Team
* @link http://codeigniter.com/user_guide/libraries/form_validation.html
*/
class CI_Form_validation {
@@ -66,7 +78,6 @@ class CI_Form_validation {
* This function takes an array of field names and validation
* rules as input, validates the info, and stores it
*
- * @access public
* @param mixed
* @param string
* @return void
@@ -74,7 +85,7 @@ class CI_Form_validation {
public function set_rules($field, $label = '', $rules = '')
{
// No reason to set rules if we have no POST data
- if (count($_POST) == 0)
+ if (count($_POST) === 0)
{
return $this;
}
@@ -101,7 +112,7 @@ class CI_Form_validation {
}
// No fields? Nothing to do...
- if ( ! is_string($field) OR ! is_string($rules) OR $field == '')
+ if ( ! is_string($field) OR ! is_string($rules) OR $field == '')
{
return $this;
}
@@ -109,21 +120,20 @@ class CI_Form_validation {
// If the field label wasn't passed we use the field name
$label = ($label == '') ? $field : $label;
- // Is the field name an array? We test for the existence of a bracket "[" in
- // the field name to determine this. If it is an array, we break it apart
+ // Is the field name an array? If it is an array, we break it apart
// into its components so that we can fetch the corresponding POST data later
- if (strpos($field, '[') !== FALSE AND preg_match_all('/\[(.*?)\]/', $field, $matches))
+ if (preg_match_all('/\[(.*?)\]/', $field, $matches))
{
// Note: Due to a bug in current() that affects some versions
// of PHP we can not pass function call directly into it
$x = explode('[', $field);
$indexes[] = current($x);
- for ($i = 0; $i < count($matches['0']); $i++)
+ for ($i = 0, $c = count($matches[0]); $i < $c; $i++)
{
- if ($matches['1'][$i] != '')
+ if ($matches[1][$i] != '')
{
- $indexes[] = $matches['1'][$i];
+ $indexes[] = $matches[1][$i];
}
}
@@ -157,7 +167,6 @@ class CI_Form_validation {
* Lets users set their own error messages on the fly. Note: The key
* name has to match the function name that it corresponds to.
*
- * @access public
* @param string
* @param string
* @return string
@@ -181,7 +190,6 @@ class CI_Form_validation {
*
* Permits a prefix/suffix to be added to each error message
*
- * @access public
* @param string
* @param string
* @return void
@@ -201,7 +209,6 @@ class CI_Form_validation {
*
* Gets the error message associated with a particular field
*
- * @access public
* @param string the field name
* @return void
*/
@@ -232,7 +239,6 @@ class CI_Form_validation {
*
* Returns the error messages as a string, wrapped in the error delimiters
*
- * @access public
* @param string
* @param string
* @return str
@@ -275,23 +281,22 @@ class CI_Form_validation {
*
* This function does all the work.
*
- * @access public
* @return bool
*/
public function run($group = '')
{
// Do we even have any data to process? Mm?
- if (count($_POST) == 0)
+ if (count($_POST) === 0)
{
return FALSE;
}
// Does the _field_data array containing the validation rules exist?
// If not, we look to see if they were assigned via a config file
- if (count($this->_field_data) == 0)
+ if (count($this->_field_data) === 0)
{
// No validation rules? We're done...
- if (count($this->_config_rules) == 0)
+ if (count($this->_config_rules) === 0)
{
return FALSE;
}
@@ -309,7 +314,7 @@ class CI_Form_validation {
}
// We're we able to set the rules correctly?
- if (count($this->_field_data) == 0)
+ if (count($this->_field_data) === 0)
{
log_message('debug', "Unable to find validation rules");
return FALSE;
@@ -326,7 +331,7 @@ class CI_Form_validation {
// Fetch the data from the corresponding $_POST array and cache it in the _field_data array.
// Depending on whether the field name is an array or a string will determine where we get it from.
- if ($row['is_array'] == TRUE)
+ if ($row['is_array'] === TRUE)
{
$this->_field_data[$field]['postdata'] = $this->_reduce_array($_POST, $row['keys']);
}
@@ -352,14 +357,7 @@ class CI_Form_validation {
// Now we need to re-set the POST data with the new, processed data
$this->_reset_post_array();
- // No errors, validation passes!
- if ($total_errors == 0)
- {
- return TRUE;
- }
-
- // Validation fails
- return FALSE;
+ return ($total_errors === 0);
}
// --------------------------------------------------------------------
@@ -367,7 +365,6 @@ class CI_Form_validation {
/**
* Traverse a multidimensional $_POST array index until the data is found
*
- * @access private
* @param array
* @param array
* @param integer
@@ -375,23 +372,9 @@ class CI_Form_validation {
*/
protected function _reduce_array($array, $keys, $i = 0)
{
- if (is_array($array))
+ if (is_array($array) && isset($keys[$i]))
{
- if (isset($keys[$i]))
- {
- if (isset($array[$keys[$i]]))
- {
- $array = $this->_reduce_array($array[$keys[$i]], $keys, ($i+1));
- }
- else
- {
- return NULL;
- }
- }
- else
- {
- return $array;
- }
+ return isset($array[$keys[$i]]) ? $this->_reduce_array($array[$keys[$i]], $keys, ($i+1)) : NULL;
}
return $array;
@@ -402,7 +385,6 @@ class CI_Form_validation {
/**
* Re-populate the _POST array with our finalized and processed data
*
- * @access private
* @return null
*/
protected function _reset_post_array()
@@ -411,7 +393,7 @@ class CI_Form_validation {
{
if ( ! is_null($row['postdata']))
{
- if ($row['is_array'] == FALSE)
+ if ($row['is_array'] === FALSE)
{
if (isset($_POST[$row['field']]))
{
@@ -424,7 +406,7 @@ class CI_Form_validation {
$post_ref =& $_POST;
// before we assign values, make a reference to the right POST key
- if (count($row['keys']) == 1)
+ if (count($row['keys']) === 1)
{
$post_ref =& $post_ref[current($row['keys'])];
}
@@ -460,7 +442,6 @@ class CI_Form_validation {
/**
* Executes the Validation routines
*
- * @access private
* @param array
* @param array
* @param mixed
@@ -502,7 +483,7 @@ class CI_Form_validation {
// --------------------------------------------------------------------
// Isset Test. Typically this rule will only apply to checkboxes.
- if (is_null($postdata) AND $callback == FALSE)
+ if (is_null($postdata) AND $callback === FALSE)
{
if (in_array('isset', $rules, TRUE) OR in_array('required', $rules))
{
@@ -593,7 +574,7 @@ class CI_Form_validation {
$result = $this->CI->$rule($postdata, $param);
// Re-assign the result to the master data array
- if ($_in_array == TRUE)
+ if ($_in_array === TRUE)
{
$this->_field_data[$row['field']]['postdata'][$cycles] = (is_bool($result)) ? $postdata : $result;
}
@@ -618,7 +599,7 @@ class CI_Form_validation {
{
$result = $rule($postdata);
- if ($_in_array == TRUE)
+ if ($_in_array === TRUE)
{
$this->_field_data[$row['field']]['postdata'][$cycles] = (is_bool($result)) ? $postdata : $result;
}
@@ -637,7 +618,7 @@ class CI_Form_validation {
$result = $this->$rule($postdata, $param);
- if ($_in_array == TRUE)
+ if ($_in_array === TRUE)
{
$this->_field_data[$row['field']]['postdata'][$cycles] = (is_bool($result)) ? $postdata : $result;
}
@@ -664,7 +645,7 @@ class CI_Form_validation {
// Is the parameter we are inserting into the error message the name
// of another field? If so we need to grab its "field label"
- if (isset($this->_field_data[$param]) AND isset($this->_field_data[$param]['label']))
+ if (isset($this->_field_data[$param], $this->_field_data[$param]['label']))
{
$param = $this->_translate_fieldname($this->_field_data[$param]['label']);
}
@@ -690,7 +671,6 @@ class CI_Form_validation {
/**
* Translate a field name
*
- * @access private
* @param string the field name
* @return string
*/
@@ -698,7 +678,7 @@ class CI_Form_validation {
{
// Do we need to translate the field name?
// We look for the prefix lang: to determine this
- if (substr($fieldname, 0, 5) == 'lang:')
+ if (substr($fieldname, 0, 5) === 'lang:')
{
// Grab the variable
$line = substr($fieldname, 5);
@@ -721,7 +701,6 @@ class CI_Form_validation {
* Permits you to repopulate a form field with the value it was submitted
* with, or, if that value doesn't exist, with the default
*
- * @access public
* @param string the field name
* @param string
* @return void
@@ -734,7 +713,7 @@ class CI_Form_validation {
}
// If the data is an array output them one at a time.
- // E.g: form_input('name[]', set_value('name[]');
+ // E.g: form_input('name[]', set_value('name[]');
if (is_array($this->_field_data[$field]['postdata']))
{
return array_shift($this->_field_data[$field]['postdata']);
@@ -751,7 +730,6 @@ class CI_Form_validation {
* Enables pull-down lists to be set to the value the user
* selected in the event of an error
*
- * @access public
* @param string
* @param string
* @return string
@@ -795,7 +773,6 @@ class CI_Form_validation {
* Enables radio buttons to be set to the value the user
* selected in the event of an error
*
- * @access public
* @param string
* @param string
* @return string
@@ -839,40 +816,14 @@ class CI_Form_validation {
* Enables checkboxes to be set to the value the user
* selected in the event of an error
*
- * @access public
* @param string
* @param string
* @return string
*/
public function set_checkbox($field = '', $value = '', $default = FALSE)
{
- if ( ! isset($this->_field_data[$field]) OR ! isset($this->_field_data[$field]['postdata']))
- {
- if ($default === TRUE AND count($this->_field_data) === 0)
- {
- return ' checked="checked"';
- }
- return '';
- }
-
- $field = $this->_field_data[$field]['postdata'];
-
- if (is_array($field))
- {
- if ( ! in_array($value, $field))
- {
- return '';
- }
- }
- else
- {
- if (($field == '' OR $value == '') OR ($field != $value))
- {
- return '';
- }
- }
-
- return ' checked="checked"';
+ // Logic is exactly the same as for radio fields
+ return $this->set_radio($field, $value, $default);
}
// --------------------------------------------------------------------
@@ -880,20 +831,12 @@ class CI_Form_validation {
/**
* Required
*
- * @access public
* @param string
* @return bool
*/
public function required($str)
{
- if ( ! is_array($str))
- {
- return (trim($str) == '') ? FALSE : TRUE;
- }
- else
- {
- return ( ! empty($str));
- }
+ return ( ! is_array($str)) ? (trim($str) !== '') : ( ! empty($str));
}
// --------------------------------------------------------------------
@@ -901,19 +844,13 @@ class CI_Form_validation {
/**
* Performs a Regular Expression match test.
*
- * @access public
* @param string
* @param regex
* @return bool
*/
public function regex_match($str, $regex)
{
- if ( ! preg_match($regex, $str))
- {
- return FALSE;
- }
-
- return TRUE;
+ return (bool) preg_match($regex, $str);
}
// --------------------------------------------------------------------
@@ -921,7 +858,6 @@ class CI_Form_validation {
/**
* Match one field to another
*
- * @access public
* @param string
* @param field
* @return bool
@@ -935,33 +871,37 @@ class CI_Form_validation {
$field = $_POST[$field];
- return ($str !== $field) ? FALSE : TRUE;
+ return ($str === $field);
}
-
+
// --------------------------------------------------------------------
/**
- * Match one field to another
+ * Is Unique
+ *
+ * Check if the input value doesn't already exist
+ * in the specified database field.
*
- * @access public
* @param string
* @param field
* @return bool
*/
public function is_unique($str, $field)
{
- list($table, $field)=explode('.', $field);
- $query = $this->CI->db->limit(1)->get_where($table, array($field => $str));
-
- return $query->num_rows() === 0;
- }
+ list($table, $field) = explode('.', $field);
+ if (isset($this->CI->db))
+ {
+ $query = $this->CI->db->limit(1)->get_where($table, array($field => $str));
+ return $query->num_rows() === 0;
+ }
+ return FALSE;
+ }
// --------------------------------------------------------------------
/**
* Minimum Length
*
- * @access public
* @param string
* @param value
* @return bool
@@ -975,10 +915,10 @@ class CI_Form_validation {
if (function_exists('mb_strlen'))
{
- return (mb_strlen($str) < $val) ? FALSE : TRUE;
+ return ! (mb_strlen($str) < $val);
}
- return (strlen($str) < $val) ? FALSE : TRUE;
+ return ! (strlen($str) < $val);
}
// --------------------------------------------------------------------
@@ -986,7 +926,6 @@ class CI_Form_validation {
/**
* Max Length
*
- * @access public
* @param string
* @param value
* @return bool
@@ -1000,10 +939,10 @@ class CI_Form_validation {
if (function_exists('mb_strlen'))
{
- return (mb_strlen($str) > $val) ? FALSE : TRUE;
+ return ! (mb_strlen($str) > $val);
}
- return (strlen($str) > $val) ? FALSE : TRUE;
+ return ! (strlen($str) > $val);
}
// --------------------------------------------------------------------
@@ -1011,7 +950,6 @@ class CI_Form_validation {
/**
* Exact Length
*
- * @access public
* @param string
* @param value
* @return bool
@@ -1025,10 +963,10 @@ class CI_Form_validation {
if (function_exists('mb_strlen'))
{
- return (mb_strlen($str) != $val) ? FALSE : TRUE;
+ return (mb_strlen($str) == $val);
}
- return (strlen($str) != $val) ? FALSE : TRUE;
+ return (strlen($str) == $val);
}
// --------------------------------------------------------------------
@@ -1036,13 +974,12 @@ class CI_Form_validation {
/**
* Valid Email
*
- * @access public
* @param string
* @return bool
*/
public function valid_email($str)
{
- return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
+ return (bool) preg_match('/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix', $str);
}
// --------------------------------------------------------------------
@@ -1050,7 +987,6 @@ class CI_Form_validation {
/**
* Valid Emails
*
- * @access public
* @param string
* @return bool
*/
@@ -1063,7 +999,7 @@ class CI_Form_validation {
foreach (explode(',', $str) as $email)
{
- if (trim($email) != '' && $this->valid_email(trim($email)) === FALSE)
+ if (trim($email) !== '' && $this->valid_email(trim($email)) === FALSE)
{
return FALSE;
}
@@ -1077,7 +1013,6 @@ class CI_Form_validation {
/**
* Validate IP Address
*
- * @access public
* @param string
* @return bool
*/
@@ -1091,13 +1026,12 @@ class CI_Form_validation {
/**
* Alpha
*
- * @access public
* @param string
* @return bool
*/
public function alpha($str)
{
- return ( ! preg_match("/^([a-z])+$/i", $str)) ? FALSE : TRUE;
+ return (bool) preg_match('/^[a-z]+$/i', $str);
}
// --------------------------------------------------------------------
@@ -1105,13 +1039,12 @@ class CI_Form_validation {
/**
* Alpha-numeric
*
- * @access public
* @param string
* @return bool
*/
public function alpha_numeric($str)
{
- return ( ! preg_match("/^([a-z0-9])+$/i", $str)) ? FALSE : TRUE;
+ return (bool) preg_match('/^[a-z0-9]+$/i', $str);
}
// --------------------------------------------------------------------
@@ -1119,13 +1052,12 @@ class CI_Form_validation {
/**
* Alpha-numeric with underscores and dashes
*
- * @access public
* @param string
* @return bool
*/
public function alpha_dash($str)
{
- return ( ! preg_match("/^([-a-z0-9_-])+$/i", $str)) ? FALSE : TRUE;
+ return (bool) preg_match('/^[a-z0-9_-]+$/i', $str);
}
// --------------------------------------------------------------------
@@ -1133,13 +1065,12 @@ class CI_Form_validation {
/**
* Numeric
*
- * @access public
* @param string
* @return bool
*/
public function numeric($str)
{
- return (bool)preg_match( '/^[\-+]?[0-9]*\.?[0-9]+$/', $str);
+ return (bool) preg_match('/^[\-+]?[0-9]*\.?[0-9]+$/', $str);
}
@@ -1148,13 +1079,12 @@ class CI_Form_validation {
/**
* Is Numeric
*
- * @access public
* @param string
* @return bool
*/
public function is_numeric($str)
{
- return ( ! is_numeric($str)) ? FALSE : TRUE;
+ return is_numeric($str);
}
// --------------------------------------------------------------------
@@ -1162,7 +1092,6 @@ class CI_Form_validation {
/**
* Integer
*
- * @access public
* @param string
* @return bool
*/
@@ -1176,7 +1105,6 @@ class CI_Form_validation {
/**
* Decimal number
*
- * @access public
* @param string
* @return bool
*/
@@ -1190,7 +1118,6 @@ class CI_Form_validation {
/**
* Greather than
*
- * @access public
* @param string
* @return bool
*/
@@ -1208,7 +1135,6 @@ class CI_Form_validation {
/**
* Less than
*
- * @access public
* @param string
* @return bool
*/
@@ -1226,13 +1152,12 @@ class CI_Form_validation {
/**
* Is a Natural number (0,1,2,3, etc.)
*
- * @access public
* @param string
* @return bool
*/
public function is_natural($str)
{
- return (bool) preg_match( '/^[0-9]+$/', $str);
+ return (bool) preg_match('/^[0-9]+$/', $str);
}
// --------------------------------------------------------------------
@@ -1240,23 +1165,12 @@ class CI_Form_validation {
/**
* Is a Natural number, but not a zero (1,2,3, etc.)
*
- * @access public
* @param string
* @return bool
*/
public function is_natural_no_zero($str)
{
- if ( ! preg_match( '/^[0-9]+$/', $str))
- {
- return FALSE;
- }
-
- if ($str == 0)
- {
- return FALSE;
- }
-
- return TRUE;
+ return ($str != 0 AND preg_match('/^[0-9]+$/', $str));
}
// --------------------------------------------------------------------
@@ -1267,7 +1181,6 @@ class CI_Form_validation {
* Tests a string for characters outside of the Base64 alphabet
* as defined by RFC 2045 http://www.faqs.org/rfcs/rfc2045
*
- * @access public
* @param string
* @return bool
*/
@@ -1284,7 +1197,6 @@ class CI_Form_validation {
* This function allows HTML to be safely shown in a form.
* Special characters are converted.
*
- * @access public
* @param string
* @return string
*/
@@ -1313,7 +1225,6 @@ class CI_Form_validation {
/**
* Prep URL
*
- * @access public
* @param string
* @return string
*/
@@ -1324,7 +1235,7 @@ class CI_Form_validation {
return '';
}
- if (substr($str, 0, 7) != 'http://' && substr($str, 0, 8) != 'https://')
+ if (substr($str, 0, 7) !== 'http://' && substr($str, 0, 8) !== 'https://')
{
$str = 'http://'.$str;
}
@@ -1337,7 +1248,6 @@ class CI_Form_validation {
/**
* Strip Image Tags
*
- * @access public
* @param string
* @return string
*/
@@ -1351,7 +1261,6 @@ class CI_Form_validation {
/**
* XSS Clean
*
- * @access public
* @param string
* @return string
*/
@@ -1365,7 +1274,6 @@ class CI_Form_validation {
/**
* Convert PHP tags to entities
*
- * @access public
* @param string
* @return string
*/