1. class DateValidator extends CustomValidator
  2. {
  3.  
  4. private $form_element;
  5.  
  6. public function __construct($form_element)
  7. {
  8. $this->form_element = $form_element;
  9. }
  10.  
  11. function DoValidate(&$formars, &$error_hash)
  12. {
  13. $date = $formars[$this->form_element];
  14.  
  15. //check that input conforms to basic structure
  16. if (!preg_match('/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/', $date))
  17. {
  18. $error_hash[$this->form_element] = "Date Invalid - Format is day/month/year for example 1/1/2010 or 26/09/2011";
  19. return false;
  20. }
  21.  
  22. // break the date into a list and use checkdate to confirm the date is a valid real date
  23. list( $d, $m, $y ) = preg_split('/[-\.\/ ]/', $date);
  24. if (checkdate($m, $d, $y))
  25. {
  26. return true;
  27. }
  28. else
  29. {
  30. $error_hash[$this->form_element] = "That date does not exist, Format is day/month/year for example 1/1/2010 or 26/09/2011";
  31. return false;
  32. }
  33. }
  34.  
  35. }