Advertisement
visavi

Untitled

Jan 23rd, 2013
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 8.51 KB | None | 0 0
  1. <?php
  2. #-----------------------------------------------------#
  3. #          ********* ROTORCMS *********               #
  4. #              Made by  :  VANTUZ                     #
  5. #               E-mail  :  visavi.net@mail.ru         #
  6. #                 Site  :  http://pizdec.ru           #
  7. #             WAP-Site  :  http://visavi.net          #
  8. #                  ICQ  :  36-44-66                   #
  9. #  Вы не имеете право вносить изменения в код скрипта #
  10. #        для его дальнейшего распространения          #
  11. #-----------------------------------------------------#
  12. if (!defined('BASEDIR')) {
  13.     header('Location:../index.php');
  14.     exit;
  15. }
  16.  
  17. class Validation{
  18.  
  19.     /*
  20.     * @errors array
  21.     */
  22.     public $errors = array();
  23.  
  24.     /*
  25.     * @the validation rules array
  26.     */
  27.     private $validation_rules = array();
  28.  
  29.     /**
  30.      *
  31.      * @the constructor, duh!
  32.      *
  33.      */
  34.     public function __construct()
  35.     {
  36.     }
  37.  
  38.     /**
  39.      *
  40.      * @run the validation rules
  41.      *
  42.      * @access public
  43.      *
  44.      */
  45.     public function run()
  46.     {
  47.         /*** set the vars ***/
  48.         foreach( new ArrayIterator($this->validation_rules) as $var=>$opt)
  49.         {
  50.  
  51.             switch($opt['type'])
  52.             {
  53.                 case 'string':
  54.                     $this->validateString($opt['var'], $opt['label'], $opt['min'], $opt['max'], $opt['required']);
  55.                 break;
  56.  
  57.                 case 'numeric':
  58.                     $this->validateNumeric($opt['var'], $opt['label'], $opt['min'], $opt['max'], $opt['required']);
  59.                 break;
  60.  
  61.                 case 'equal':
  62.                     $this->validateEqual($opt['var'], $opt['label']);
  63.                 break;
  64.  
  65.                 case 'email':
  66.                     $this->validateEmail($opt['var'], $opt['label'], $opt['required']);
  67.                 break;
  68.  
  69.                 case 'url':
  70.                     $this->validateUrl($opt['var'], $opt['label'], $opt['required']);
  71.                  break;
  72.  
  73.                 case 'float':
  74.                     $this->validateFloat($opt['var'], $opt['label'], $opt['required']);
  75.                 break;
  76.  
  77.                 case 'bool':
  78.                     $this->validateBool($opt['var'], $opt['label'], $opt['required']);
  79.                 break;
  80.             }
  81.         }
  82.  
  83.         $total_errors = count($this->errors);
  84.        
  85.         if (empty($total_errors)){
  86.             return true;
  87.         }
  88.     }
  89.  
  90.     /**
  91.      *
  92.      * @add a rule to the validation rules array
  93.      *
  94.      * @access public
  95.      *
  96.      * @param string $var The variable name
  97.      *
  98.      * @param string $label The label of variable
  99.      *
  100.      * @param string $type The type of variable
  101.      *
  102.      * @param bool $required If the field is required
  103.      *
  104.      * @param int $min The minimum length or range
  105.      *
  106.      * @param int $max the maximum length or range
  107.      *
  108.      */
  109.     public function addRule($var, $label, $type, $required=false, $min=0, $max=0)
  110.     {
  111.         $this->validation_rules[] = array('var'=>$var, 'label'=>$label, 'type'=>$type, 'required'=>$required, 'min'=>$min, 'max'=>$max);
  112.         var_dump($this->validation_rules);
  113.         /*** allow chaining ***/
  114.         return $this;
  115.     }
  116.  
  117.     /**
  118.      *
  119.      * @validate a string
  120.      *
  121.      * @access private
  122.      *
  123.      * @param string $var The variable name
  124.      *
  125.      * @param string $label The label of variable
  126.      *
  127.      * @param int $min the minimum string length
  128.      *
  129.      * @param int $max The maximum string length
  130.      *
  131.      * @param bool $required
  132.      *
  133.      */
  134.     private function validateString($var, $label, $min=0, $max=0, $required=false)
  135.     {
  136.         if($required==false && utf_strlen($var) == 0)
  137.         {
  138.             return true;
  139.         }
  140.  
  141.         if(isset($var))
  142.         {
  143.             if(utf_strlen($var) < $min)
  144.             {
  145.                 $this->errors[] = 'Ошибка! Значение поля &quot;'.$label.'&quot; слишком короткое! (Не менее '.$min.' симв.)';
  146.             }
  147.             elseif(utf_strlen($var) > $max)
  148.             {
  149.                 $this->errors[] = 'Ошибка! Значение поля &quot;'.$label.'&quot; слишком длинное! (Не более '.$max.' симв.)';
  150.             }
  151.             elseif(!is_string($var))
  152.             {
  153.                 $this->errors[] = 'Ошибка! Значение поля &quot;'.$label.'&quot; является недопустимой строкой!';
  154.             }
  155.         }
  156.     }
  157.  
  158.     /**
  159.      *
  160.      * @validate an number
  161.      *
  162.      * @access private
  163.      *
  164.      * @param string $var the variable name
  165.      *
  166.      * @param string $label The label of variable
  167.      *
  168.      * @param int $min The minimum number range
  169.      *
  170.      * @param int $max The maximum number range
  171.      *
  172.      * @param bool $required
  173.      *
  174.      */
  175.     private function validateNumeric($var, $label, $min=0, $max=0, $required=false)
  176.     {
  177.         if($required==false && utf_strlen($var) == 0)
  178.         {
  179.             return true;
  180.         }
  181.         if(filter_var($var, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$min, "max_range"=>$max)))===FALSE)
  182.         {
  183.             $this->errors[] = 'Ошибка! Значение поля &quot;'.$label.'&quot; должно быть в числовом диапазоне от '.$min.' до '.$max.'!';
  184.         }
  185.     }
  186.  
  187.     public function validateEqual($var, $label)
  188.     {
  189.         if (!is_array($var) || $var[0] != $var[1]) {
  190.             $this->errors[] = 'Ошибка! Не совпадают данные поля &quot;'.$label.'&quot;!';
  191.         }
  192.  
  193.     }
  194.  
  195.     /**
  196.      *
  197.      * @validate a floating point number
  198.      *
  199.      * @access private
  200.      *
  201.      * @param $var The variable name
  202.      *
  203.      * @param string $label The label of variable
  204.      *
  205.      * @param bool $required
  206.      */
  207.     private function validateFloat($var, $label, $required=false)
  208.     {
  209.         if($required==false && utf_strlen($var) == 0)
  210.         {
  211.             return true;
  212.         }
  213.         if(filter_var($var, FILTER_VALIDATE_FLOAT) === false)
  214.         {
  215.             $this->errors[] = 'Ошибка! Значение поля &quot;'.$label.'&quot; является недопустимым числом!';
  216.         }
  217.     }
  218.  
  219.     /**
  220.      *
  221.      * @validate a url
  222.      *
  223.      * @access private
  224.      *
  225.      * @param string $var The variable name
  226.      *
  227.      * @param string $label The label of variable
  228.      *
  229.      * @param bool $required
  230.      *
  231.      */
  232.     private function validateUrl($var, $label, $required=false)
  233.     {
  234.         if($required==false && utf_strlen($var) == 0)
  235.         {
  236.             return true;
  237.         }
  238.         if (!preg_match('#^http://([а-яa-z0-9_\-\.])+(\.([а-яa-z0-9\/])+)+$#u', $var))
  239.         //if(filter_var($var, FILTER_VALIDATE_URL) === FALSE)
  240.         {
  241.             $this->errors[] = 'Ошибка! Значение поля &quot;'.$label.'&quot; не является допустимым URL!';
  242.         }
  243.     }
  244.  
  245.  
  246.     /**
  247.      *
  248.      * @validate an email address
  249.      *
  250.      * @access private
  251.      *
  252.      * @param string $var The variable name
  253.      *
  254.      * @param string $label The label of variable
  255.      *
  256.      * @param bool $required
  257.      *
  258.      */
  259.     private function validateEmail($var, $label, $required=false)
  260.     {
  261.         if($required==false && utf_strlen($var) == 0)
  262.         {
  263.             return true;
  264.         }
  265.         if(!preg_match('#^([a-z0-9_\-\.])+\@([a-z0-9_\-\.])+(\.([a-z0-9])+)+$#', $var))
  266.         //if(filter_var($var, FILTER_VALIDATE_EMAIL) === FALSE)
  267.         {
  268.             $this->errors[] = 'Ошибка! Значение поля &quot;'.$label.'&quot; не является допустимым адресом электронной почты!';
  269.         }
  270.     }
  271.  
  272.  
  273.     /**
  274.      * @validate a boolean
  275.      *
  276.      * @access private
  277.      *
  278.      * @param string $var the variable name
  279.      *
  280.      * @param string $label The label of variable
  281.      *
  282.      * @param bool $required
  283.      *
  284.      */
  285.     private function validateBool($var, $label, $required=false)
  286.     {
  287.         if($required==false && utf_strlen($var) == 0)
  288.         {
  289.             return true;
  290.         }
  291.         filter_var($var, FILTER_VALIDATE_BOOLEAN);
  292.         {
  293.             $this->errors[] = 'Ошибка! Значение поля &quot;'.$label.'&quot; недопустимое (true или false)!';
  294.         }
  295.     }
  296.  
  297. } /*** end of class ***/
  298. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement