/usr/share/awl/inc/Validation.php is in libawl-php 0.55-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | <?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));
}
}
|