From bd3d8f634753865b6eb2f79cdd50cfee36c4b34f Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Sun, 26 Jun 2011 16:17:41 -0500 Subject: [PATCH] added error type to validation rule. --- system/validation/rule.php | 8 ++++++++ system/validation/rules/size_of.php | 6 ++++++ system/validation/rules/upload_of.php | 19 ++++++++++++------- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/system/validation/rule.php b/system/validation/rule.php index 5eb4b4f8..fd89b5c0 100644 --- a/system/validation/rule.php +++ b/system/validation/rule.php @@ -18,6 +18,14 @@ abstract class Rule { */ public $message; + /** + * The error type. This is used for rules that have more than + * one type of error such as Size_Of and Upload_Of. + * + * @var string + */ + protected $error; + /** * Create a new validation Rule instance. * diff --git a/system/validation/rules/size_of.php b/system/validation/rules/size_of.php index 1f7e861d..e5f02b55 100644 --- a/system/validation/rules/size_of.php +++ b/system/validation/rules/size_of.php @@ -61,16 +61,19 @@ private function check_number($attribute, $attributes) { if ( ! is_null($this->length) and $attributes[$attribute] !== $this->length) { + $this->error = 'number_wrong_size'; return false; } if ( ! is_null($this->maximum) and $attributes[$attribute] > $this->maximum) { + $this->error = 'number_too_big'; return false; } if ( ! is_null($this->minimum and $attributes[$attribute] < $this->minimum)) { + $this->error = 'number_too_small'; return false; } @@ -90,16 +93,19 @@ public function check_string($attribute, $attributes) if ( ! is_null($this->length) and Str::length($value) !== $this->length) { + $this->error = 'string_wrong_size'; return false; } if ( ! is_null($this->maximum) and Str::length($value) > $this->maximum) { + $this->error = 'string_too_big'; return false; } if ( ! is_null($this->minimum) and Str::length($value) < $this->minimum) { + $this->error = 'string_too_small'; return false; } diff --git a/system/validation/rules/upload_of.php b/system/validation/rules/upload_of.php index e45dc56d..473b9b49 100644 --- a/system/validation/rules/upload_of.php +++ b/system/validation/rules/upload_of.php @@ -7,11 +7,11 @@ class Upload_Of extends Rule { /** - * The acceptable file extensions. + * The acceptable file types. * * @var array */ - public $extensions; + public $types = array(); /** * The maximum file size in bytes. @@ -38,25 +38,30 @@ public function check($attribute, $attributes) if ( ! is_null($this->maximum) and $file['size'] > $this->maximum) { + $this->error = 'file_too_big'; return false; } - if ( ! is_null($this->extensions) and ! in_array(File::extension($file['name']), $this->extensions)) + foreach ($this->types as $type) { - return false; + if ( ! File::is($type, $file['tmp_name'])) + { + $this->error = 'file_wrong_type'; + return false; + } } return true; } /** - * Set the acceptable file extensions. + * Set the acceptable file types. * * @return Upload_Of */ - public function has_extension() + public function is() { - $this->extensions = func_get_args(); + $this->types = func_get_args(); return $this; }