Date.class.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. /**
  3. * @author scott
  4. *
  5. *
  6. */
  7. class Staple_Form_Validate_Date extends Staple_Form_Validator
  8. {
  9. const REGEX = '/^(((0?[13578]|1[02])[\- \/\.](0?[1-9]|[12][0-9]|3[01]))|(0?2[\- \/\.](0?[1-9]|[12][0-9]))|((0?[469]|11)[\- \/\.](0?[1-9]|[12][0-9]|3[0])))[\- \/\.]((19|20)\d\d)$/';
  10. const DEFAULT_ERROR = 'Field must be a valid date.';
  11. /**
  12. * @param mixed $data
  13. * @return bool
  14. * @see Staple_Form_Validator::check()
  15. */
  16. public function check($data)
  17. {
  18. if(preg_match(self::REGEX, $data, $this->matches))
  19. {
  20. return true;
  21. }
  22. else
  23. {
  24. $this->addError();
  25. return false;
  26. }
  27. }
  28. /**
  29. * (non-PHPdoc)
  30. * @see Staple_Form_Validator::clientJQuery()
  31. */
  32. public function clientJQuery($fieldType, Staple_Form_Element $field)
  33. {
  34. switch ($fieldType)
  35. {
  36. case 'Staple_Form_SelectElement':
  37. $fieldid = "#{$field->getId()}";
  38. $valstring = "#{$field->getId()} option:selected";
  39. break;
  40. case 'Staple_Form_RadioGroup':
  41. $fieldid = "input:radio[name={$field->getName()}]";
  42. $valstring = "input:radio[name={$field->getName()}]:checked";
  43. break;
  44. case 'Staple_Form_CheckboxElement':
  45. return '';
  46. break;
  47. default:
  48. $fieldid = "#{$field->getId()}";
  49. $valstring = $fieldid;
  50. }
  51. $script = "\t//Date Validator for ".addslashes($field->getLabel())."\n";
  52. $script .= "\tif(!(".self::REGEX.".test($('$valstring').val())))\n\t{\n";
  53. $script .= "\t\terrors.push('".addslashes($field->getLabel()).": \\n{$this->clientJSError()}\\n');\n";
  54. $script .= "\t\t$('$fieldid').addClass('form_error');\n";
  55. $script .= "\t}\n";
  56. $script .= "\telse {\n";
  57. $script .= "\t\t$('$fieldid').removeClass('form_error');\n";
  58. $script .= "\t}\n";
  59. return $script;
  60. }
  61. }
  62. ?>