Overview

Packages

  • awl
    • AuthPlugin
    • AwlDatabase
    • Browser
    • classEditor
    • DataEntry
    • DataUpdate
    • EMail
    • iCalendar
    • MenuSet
    • PgQuery
    • Session
    • Translation
    • User
    • Utilities
    • Validation
    • vCalendar
    • vComponent
    • XMLDocument
    • XMLElement
  • None

Classes

  • AuthPlugin
  • AwlCache
  • AwlDatabase
  • AwlDBDialect
  • AwlQuery
  • AwlUpgrader
  • Browser
  • BrowserColumn
  • DBRecord
  • Editor
  • EditorField
  • EMail
  • EntryField
  • EntryForm
  • iCalComponent
  • iCalendar
  • iCalProp
  • MenuOption
  • MenuSet
  • Multipart
  • PgQuery
  • Session
  • SinglePart
  • User
  • Validation
  • vCalendar
  • vComponent
  • vObject
  • vProperty
  • XMLDocument
  • XMLElement

Functions

  • _awl_connect_configured_database
  • _CompareMenuSequence
  • auth_external
  • auth_other_awl
  • awl_replace_sql_args
  • awl_set_locale
  • awl_version
  • BuildXMLTree
  • check_by_regex
  • check_temporary_passwords
  • clean_string
  • connect_configured_database
  • dbg_error_log
  • dbg_log_array
  • define_byte_mappings
  • deprecated
  • duration
  • fatal
  • force_utf8
  • get_fields
  • getCacheInstance
  • gzdecode
  • i18n
  • init_gettext
  • olson_from_tzstring
  • param_to_global
  • qpg
  • quoted_printable_encode
  • replace_uri_params
  • session_salted_md5
  • session_salted_sha1
  • session_simple_md5
  • session_validate_password
  • sql_from_object
  • sql_from_post
  • trace_bug
  • translate
  • uuid
  • Overview
  • Package
  • Class
  1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 
<?php
/**
* Classes to handle validation of form data.
*
* @package   awl
* @subpackage   Validation
* @author    Emily Mossman <emily@mcmillan.net.nz>
* @copyright Catalyst IT Ltd
* @license   http://gnu.org/copyleft/gpl.html GNU GPL v2 or later
*/
require_once("AWLUtilities.php");

/**
* Rules used for validation of form fields.
* @package   awl
*/
class Validation
{
  /**#@+
  * @access private
  */
  /**
  * List of rules for validation
  * @var rules
  */
  var $rules = array();

  /**
  * The javascript function name to call onsubmit of the form
  * @var func_name
  */
  var $func_name = "";

  /**#@-*/

  /**
  * Initialise a new validation.
  * @param string $func_name The javascript function name to call onsubmit of the form
  */
  function Validation($func_name)
  {
    $this->func_name = $func_name;
  }


  /**
  * Adds a validation rule for a specific field upon submission of the form.
  * You must call RenderRules below RenderFields when outputing the page
  * @param string $fieldname The name of the field.
  * @param string $error_message The message to display on unsuccessful validation.
  * @param string $function_name The function to call to validate the field
  */
  function AddRule( $fieldname, $error_message, $function_name )
  {
    $this->rules[] = array($fieldname, $error_message, $function_name );
  }

  /**
  * Returns the javascript for form validation using the rules.
  * @param string $onsubmit The name of the function called on submission of the form.
  * @param string $prefix Optional prefix for form fields.
  * @return string HTML/Javascript for form validation.
  */
  function RenderJavascript($prefix = "")
  {
    if(! count($this->rules) ) return "";

    $html = <<<EOHTML
<script language="JavaScript">
function $this->func_name(form)
{
  var error_message = "";\n
EOHTML;

    foreach($this->rules as $rule) {
      list($fieldname, $error_message, $function_name) = $rule;

    $html .= <<<EOHTML
if(!$function_name(form.$prefix$fieldname)) error_message += "$error_message\\n";
EOHTML;
    }

    $html .= <<<EOHTML
if(error_message == "") return true;
alert("Errors:"+"\\n"+error_message);
return false;
}
</script>
EOHTML;

    return $html;
  }

  /**
  * Validates the form according to it's rules.
  * @param object $object The data object that requires form validation.
  * @return boolean True if the validation succeeded.
  */
  function Validate($object)
  {
    global $c;

    if(! count($this->rules) ) return;

    $valid = true;

    foreach($this->rules as $rule) {
      list($fieldname, $error_message, $function_name) = $rule;

      if (!$this->$function_name($object->Get($fieldname))) {
        $valid = false;
        $c->messages[] = $error_message;
      }

    }

    return $valid;
  }

///////////////////////////
// VALIDATION FUNCTIONS
///////////////////////////

  /**
  * Checks if a string is empty
  * @param string $field_string The field value that is being checked.
  * @return boolean True if the string is not empty.
  */
  function not_empty($field_string)
  {
    return ($field_string != "");
  }

  /**
  * Checks that a string is not empty or zero
  * @param string $select_string The select value that is being checked.
  * @return boolean True if the string is not empty or equal to 0.
  */
  function selected($field_string)
  {
    return (!($field_string == "" || $field_string == "0"));
  }

  /**
  * Check that the given string is a positive dollar amount.
  * Use not_empty first if string is required.
  * @param string $field_string The amount to be checked.
  * @return boolean Returns true if the given string is a positive dollar amount.
  */
  function positive_dollars($field_string)
  {
   if(!$field_string) return true;
   if( preg_match('/^\$?[0-9]*\.?[0-9]?[0-9]?$/', $field_string) ) {
     $field_string = preg_replace("/\$/", "", $field_string);
     $field_string = preg_replace("/\./", "", $field_string);
     if( intval($field_string) > 0 ) return true;
   }
   return false;
  }

  /**
  * Check that the given string is a positive integer.
  * Use not_empty first if string is required.
  * @param string $field_string The amount to be checked.
  * @return boolean Returns true if the given string is a positive integer.
  */
  function positive_integer($field_string)
  {
   if(!$field_string) return true;
    return ( preg_match('/^[0-9]*$/', $field_string) );
  }

  /**
  * Check that the given string is a valid email address.
  * Use not_empty first if string is required.
  * @param string $field_string The string to be checked.
  * @return boolean Returns true if the given string is a valid email address.
  */
  function valid_email_format($field_string)
  {
   if(!$field_string) return true;
   // Anything printable, followed by between 1 & 5 valid domain components, with a TLD to finish
   $pattern = "/^[[:print:]]+@([a-z0-9][a-z0-9-]*\.){1,5}[a-z]{2,5}$/i";
   return (preg_match($pattern, $field_string));
  }

  /**
  * Check that the given string matches the user's date format.
  * Use not_empty first if string is required.
  * @param string $field_string The string to be checked.
  * @return boolean Returns true if the given string matches the user's date format from session.
  */
  function valid_date_format($field_string)
  {
   global $session;

   if(!$field_string) return true;

   switch($session->date_format_type) {
      case 'J':
        if (!preg_match('/^([0-9]{4})[\/\-]([0-9]{1,2})[\/\-]([0-9]{1,2})$/', $field_string, $regs)) return false;
        $day = intval($regs[3]);
        $month = intval($regs[2]);
        $year = intval($regs[1]);
        break;

      case 'U':
        if (!preg_match('/^([0-9]{1,2})[\/\-]([0-9]{1,2})[\/\-]([0-9]{4})$/', $field_string, $regs)) return false;
        $day = intval($regs[2]);
        $month = intval($regs[1]);
        $year = intval($regs[3]);
        break;

      case 'E':
      default:
        if (!preg_match('/^([0-9]{1,2})[\/\-]([0-9]{1,2})[\/\-]([0-9]{4})$/', $field_string, $regs)) return false;
        $day = intval($regs[1]);
        $month = intval($regs[2]);
        $year = intval($regs[3]);
   }
   return (checkdate ($month, $day, $year));
  }
}

API documentation generated by ApiGen