Source for file Validators.php

Documentation is available at Validators.php

  1. <?php
  2.     /**
  3.      * Web form validator classes
  4.      * 
  5.      * @copyright Copyright (c) 2006 Mirchev Ideas Ltd. All rights reserved.
  6.      * @package MIPHPF
  7.      */
  8.     
  9.     /**
  10.      * The base validator class
  11.      * 
  12.      * @copyright Copyright (c) 2006 Mirchev Ideas Ltd. All rights reserved.
  13.      * @package MIPHPF
  14.      */
  15.     class miValidator {
  16.         /**
  17.          * @var miWebForm 
  18.          */
  19.         protected $_webForm;
  20.         
  21.         /**
  22.          * 
  23.          * @var string 
  24.          */
  25.         protected $_fieldName;
  26.         
  27.         /**
  28.          * Constructs the validator class
  29.          * 
  30.          * @access public
  31.          * @param miWebForm $webForm 
  32.          * @param string $fieldName 
  33.          */
  34.         public function __construct(miWebForm &$webForm$fieldName)
  35.         {
  36.             $this->_webForm = $webForm;
  37.             $this->_fieldName = $fieldName;
  38.         }
  39.         
  40.         /**
  41.          * Retrieve the field name
  42.          * 
  43.          * @return string the field name
  44.          */
  45.         public function getFieldName()
  46.         {
  47.             return $this->_fieldName;
  48.         }
  49.         
  50.         /**
  51.          * Set the field name
  52.          * 
  53.          * @param string $fieldName the field name
  54.          */
  55.         public function setFieldName($fieldName)
  56.         {
  57.             $this->_fieldName = $fieldName;
  58.         }
  59.         
  60.         /**
  61.          * Performs validation
  62.          *
  63.          * @access public
  64.          * @param miWebFormErrorsHandler 
  65.          * @return void 
  66.          */
  67.         public function validate(miWebFormErrorsHandler &$errors)
  68.         {
  69.         }
  70.     }
  71.     
  72.     /**
  73.      * Validates email set by user
  74.      * @copyright Copyright (c) 2006 Mirchev Ideas Ltd. All rights reserved.
  75.      * @package MIPHPF
  76.      */
  77.     class miValidatorEmail extends miValidator {
  78.         public function validate(miWebFormErrorsHandler &$errors)
  79.         {
  80.             $fieldValue $this->_webForm->getSubmittedData($this->_fieldName);
  81.             if (preg_match('/^[A-Za-z0-9]+([_\.-A-Za-z0-9]+)*@[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*\.([A-Za-z]){2,4}$/iU'$fieldValue))
  82.                 return;
  83.             $errors->addError($this->_fieldName'Invalid email format');
  84.         }
  85.     }
  86.     
  87.     /**
  88.      * Validates date set by user
  89.      * @copyright Copyright (c) 2006 Mirchev Ideas Ltd. All rights reserved.
  90.      * @package MIPHPF
  91.      */
  92.     class miValidatorDate extends miValidator {
  93.         public function validate(miWebFormErrorsHandler &$errors)
  94.         {
  95.             $fieldValue $this->_webForm->getSubmittedData($this->_fieldName);
  96.             if (preg_match('#^\d{4}-\d{2}-\d{2}$#'$fieldValue)) {
  97.                 $pieces explode("-"$fieldValue);
  98.                 if (checkdate($pieces[1]$pieces[2]$pieces[0]))
  99.                     return;
  100.             }
  101.             $errors->addError($this->_fieldName'Invalid date format');
  102.         }
  103.     }
  104.     
  105.     /**
  106.      * Validates integer set by user
  107.      * @copyright Copyright (c) 2006 Mirchev Ideas Ltd. All rights reserved.
  108.      * @package MIPHPF
  109.      */
  110.     class miValidatorInt extends miValidator {
  111.         public function validate(miWebFormErrorsHandler &$errors)
  112.         {
  113.             $fieldValue $this->_webForm->getSubmittedData($this->_fieldName);
  114.             if (preg_match('#^[0-9]+$#'$fieldValue))
  115.                 return;
  116.             
  117.             $errors->addError($this->_fieldName'Invalid integer');
  118.         }
  119.     }
  120.  
  121.     /**
  122.      * Validates decimal set by user
  123.      * @copyright Copyright (c) 2006 Mirchev Ideas Ltd. All rights reserved.
  124.      * @package MIPHPF
  125.      */
  126.     class miValidatorDecimal extends miValidator {
  127.         public function validate(miWebFormErrorsHandler &$errors)
  128.         {
  129.             $fieldValue $this->_webForm->getSubmittedData($this->_fieldName);
  130.             if (preg_match('#^[0-9]{1,10}\.?([0-9]){0,2}$#'$fieldValue))
  131.                 return;
  132.             
  133.             $errors->addError($this->_fieldName'Invalid decimal');
  134.         }
  135.     }
  136.     
  137.     /**
  138.      * Validates ICQ set by user
  139.      * @copyright Copyright (c) 2006 Mirchev Ideas Ltd. All rights reserved.
  140.      * @package MIPHPF
  141.      */
  142.     class miValidatorIcq extends miValidator {
  143.         public function validate(miWebFormErrorsHandler &$errors)
  144.         {
  145.             $fieldValue $this->_webForm->getSubmittedData($this->_fieldName);
  146.             if ($fieldValue 10000 and $fieldValue 2147483646)
  147.                 return;
  148.             
  149.             $errors->addError($this->_fieldName'Invalid ICQ');
  150.         }
  151.     }
  152.     
  153.     /**
  154.      * Validates http url set by user
  155.      * @copyright Copyright (c) 2006 Mirchev Ideas Ltd. All rights reserved.
  156.      * @package MIPHPF
  157.      */
  158.     class miValidatorHttp extends miValidator {
  159.         public function validate(miWebFormErrorsHandler &$errors)
  160.         {
  161.             $fieldValue $this->_webForm->getSubmittedData($this->_fieldName);
  162.             if (substr($fieldValue07== 'http://')
  163.                 return;
  164.             
  165.             $errors->addError($this->_fieldName'Invalid http url');
  166.         }
  167.     }
  168.     
  169.     
  170.     /**
  171.      * Validates GSM set by user
  172.      * @copyright Copyright (c) 2006 Mirchev Ideas Ltd. All rights reserved.
  173.      * @package MIPHPF
  174.      */
  175.     class miValidatorGsm extends miValidator {
  176.         public function validate(miWebFormErrorsHandler &$errors)
  177.         {
  178.             $fieldValue $this->_webForm->getSubmittedData($this->_fieldName);
  179.             if (preg_match('#^[0-9]{10}$#'$fieldValue))
  180.                 return;
  181.             
  182.             $errors->addError($this->_fieldName'Invalid GSM');
  183.         }
  184.     }
  185.     
  186.     /**
  187.      * Validates IP address set by user
  188.      * @copyright Copyright (c) 2006 Mirchev Ideas Ltd. All rights reserved.
  189.      * @package MIPHPF
  190.      */
  191.     class miValidatorIp extends miValidator {
  192.         public function validate(miWebFormErrorsHandler &$errors)
  193.         {
  194.             $fieldValue $this->_webForm->getSubmittedData($this->_fieldName);
  195.             if (ip2long($fieldValue!== -1)
  196.                 return;
  197.                 
  198.             $errors->addError($this->_fieldName'Invalid IP address');
  199.         }
  200.     }
  201.     
  202.     /**
  203.      * Unique validator
  204.      * Makes sure that the field value is unqiue.
  205.      * There is a special allowence that if the value is already in the database it is allowed even if duplicate
  206.      * 
  207.      * @copyright Copyright (c) 2006 Mirchev Ideas Ltd. All rights reserved.
  208.      * @package MIPHPF
  209.      */
  210.     class miValidatorUnique extends miValidator {
  211.         /**
  212.          * The actual record used to read the data
  213.          * 
  214.          * @access protected
  215.          */
  216.         protected $_record;
  217.         
  218.         /**
  219.          * Constructs the unique validator class
  220.          * 
  221.          * @access public
  222.          * @param miWebForm $webForm 
  223.          * @param string $fieldName 
  224.          * @param miSqlRecord $record 
  225.          */
  226.         public function __construct(miWebForm &$webForm$fieldNamemiSqlRecord $record)
  227.         {
  228.             $this->_record = $record;
  229.             parent::__construct($webForm$fieldName);
  230.         }
  231.         
  232.         /**
  233.          * Validate
  234.          */
  235.         public function validate(miWebFormErrorsHandler &$errors)
  236.         {
  237.             $fieldValue $this->_webForm->getSubmittedData($this->_fieldName);
  238.             
  239.             // In case such record already exists, i.e. editing
  240.             if (count($this->_record->getRow()) 0{
  241.                 $oldValue $this->_record->get($this->_fieldName);
  242.                 // If there is no change, do not bother validating
  243.                 if ($fieldValue == $oldValue)
  244.                     return;
  245.             }
  246.             
  247.             // Check if there is another record with the value
  248.             $checkRecord new miSqlRecord($this->_record->getTableName()$this->_record->getPrimaryKeyColumn());
  249.             try {
  250.                 $checkRecord->read($this->_fieldName$fieldValue);
  251.             catch (miDBException $exception{
  252.                 // Record doesn't exists. The value is unqiue
  253.                 if ($exception->getCode(== miDBException::EXCEPTION_RECORD_NOT_FOUND)
  254.                     return;
  255.                 
  256.                 // OOps, different exception. Rethrow
  257.                 throw $exception;
  258.             }
  259.             
  260.             // The value is not unique
  261.             $errors->addError($this->_fieldName'Not unique');
  262.         }
  263.     }
  264. ?>

Documentation generated on Thu, 08 May 2008 16:57:53 +0300 by phpDocumentor 1.4.1