mirror of
https://github.com/WhatCD/Gazelle.git
synced 2024-12-13 10:56:26 +00:00
297 lines
10 KiB
PHP
297 lines
10 KiB
PHP
<?
|
|
/*-- TODO ---------------------------//
|
|
Writeup how to use the VALIDATE class, add in support for form id checks
|
|
Complete the number and date validation
|
|
Finish the GenerateJS stuff
|
|
//-----------------------------------*/
|
|
|
|
class VALIDATE {
|
|
var $Fields=array();
|
|
|
|
function SetFields($FieldName,$Required,$FieldType,$ErrorMessage,$Options=array()) {
|
|
$this->Fields[$FieldName]['Type'] = strtolower($FieldType);
|
|
$this->Fields[$FieldName]['Required'] = $Required;
|
|
$this->Fields[$FieldName]['ErrorMessage'] = $ErrorMessage;
|
|
if (!empty($Options['maxlength'])) {
|
|
$this->Fields[$FieldName]['MaxLength'] = $Options['maxlength'];
|
|
}
|
|
if (!empty($Options['minlength'])) {
|
|
$this->Fields[$FieldName]['MinLength'] = $Options['minlength'];
|
|
}
|
|
if (!empty($Options['comparefield'])) {
|
|
$this->Fields[$FieldName]['CompareField'] = $Options['comparefield'];
|
|
}
|
|
if (!empty($Options['allowperiod'])) {
|
|
$this->Fields[$FieldName]['AllowPeriod'] = $Options['allowperiod'];
|
|
}
|
|
if (!empty($Options['allowcomma'])) {
|
|
$this->Fields[$FieldName]['AllowComma'] = $Options['allowcomma'];
|
|
}
|
|
if (!empty($Options['inarray'])) {
|
|
$this->Fields[$FieldName]['InArray'] = $Options['inarray'];
|
|
}
|
|
if (!empty($Options['regex'])) {
|
|
$this->Fields[$FieldName]['Regex'] = $Options['regex'];
|
|
}
|
|
}
|
|
|
|
function ValidateForm($ValidateArray) {
|
|
reset($this->Fields);
|
|
foreach ($this->Fields as $FieldKey => $Field) {
|
|
$ValidateVar = $ValidateArray[$FieldKey];
|
|
|
|
if ($ValidateVar != '' || !empty($Field['Required']) || $Field['Type'] == 'date') {
|
|
if ($Field['Type'] == 'string') {
|
|
if (isset($Field['MaxLength'])) {
|
|
$MaxLength = $Field['MaxLength'];
|
|
} else {
|
|
$MaxLength = 255;
|
|
}
|
|
if (isset($Field['MinLength'])) {
|
|
$MinLength = $Field['MinLength'];
|
|
} else {
|
|
$MinLength = 1;
|
|
}
|
|
|
|
if (strlen($ValidateVar) > $MaxLength) {
|
|
return $Field['ErrorMessage'];
|
|
} elseif (strlen($ValidateVar) < $MinLength) {
|
|
return $Field['ErrorMessage'];
|
|
}
|
|
|
|
} elseif ($Field['Type'] == 'number') {
|
|
if (isset($Field['MaxLength'])) {
|
|
$MaxLength = $Field['MaxLength'];
|
|
} else {
|
|
$MaxLength = '';
|
|
}
|
|
if (isset($Field['MinLength'])) {
|
|
$MinLength = $Field['MinLength'];
|
|
} else {
|
|
$MinLength = 0;
|
|
}
|
|
|
|
$Match = '0-9';
|
|
if (isset($Field['AllowPeriod'])) {
|
|
$Match.='.';
|
|
}
|
|
if (isset($Field['AllowComma'])) {
|
|
$Match.=',';
|
|
}
|
|
|
|
if (preg_match('/[^'.$Match.']/', $ValidateVar) || strlen($ValidateVar) < 1) {
|
|
return $Field['ErrorMessage'];
|
|
} elseif ($MaxLength != '' && $ValidateVar > $MaxLength) {
|
|
return $Field['ErrorMessage'].'!!';
|
|
} elseif ($ValidateVar < $MinLength) {
|
|
return $Field['ErrorMessage']."$MinLength";
|
|
}
|
|
|
|
} elseif ($Field['Type'] == 'email') {
|
|
if (isset($Field['MaxLength'])) {
|
|
$MaxLength = $Field['MaxLength'];
|
|
} else {
|
|
$MaxLength = 255;
|
|
}
|
|
if (isset($Field['MinLength'])) {
|
|
$MinLength = $Field['MinLength'];
|
|
} else {
|
|
$MinLength = 6;
|
|
}
|
|
|
|
if (!preg_match("/^".EMAIL_REGEX."$/i", $ValidateVar)) {
|
|
return $Field['ErrorMessage'];
|
|
} elseif (strlen($ValidateVar) > $MaxLength) {
|
|
return $Field['ErrorMessage'];
|
|
} elseif (strlen($ValidateVar) < $MinLength) {
|
|
return $Field['ErrorMessage'];
|
|
}
|
|
|
|
} elseif ($Field['Type'] == 'link') {
|
|
if (isset($Field['MaxLength'])) {
|
|
$MaxLength = $Field['MaxLength'];
|
|
} else {
|
|
$MaxLength = 255;
|
|
}
|
|
if (isset($Field['MinLength'])) {
|
|
$MinLength = $Field['MinLength'];
|
|
} else {
|
|
$MinLength = 10;
|
|
}
|
|
|
|
if (!preg_match('/^(https?):\/\/([a-z0-9\-\_]+\.)+([a-z]{1,5}[^\.])(\/[^<>]+)*$/i', $ValidateVar)) {
|
|
return $Field['ErrorMessage'];
|
|
} elseif (strlen($ValidateVar) > $MaxLength) {
|
|
return $Field['ErrorMessage'];
|
|
} elseif (strlen($ValidateVar) < $MinLength) {
|
|
return $Field['ErrorMessage'];
|
|
}
|
|
|
|
} elseif ($Field['Type'] == 'username') {
|
|
if (isset($Field['MaxLength'])) {
|
|
$MaxLength = $Field['MaxLength'];
|
|
} else {
|
|
$MaxLength = 20;
|
|
}
|
|
if (isset($Field['MinLength'])) {
|
|
$MinLength = $Field['MinLength'];
|
|
} else {
|
|
$MinLength = 1;
|
|
}
|
|
|
|
if (preg_match('/[^a-z0-9_\-?]/i', $ValidateVar)) {
|
|
return $Field['ErrorMessage'];
|
|
} elseif (strlen($ValidateVar) > $MaxLength) {
|
|
return $Field['ErrorMessage'];
|
|
} elseif (strlen($ValidateVar) < $MinLength) {
|
|
return $Field['ErrorMessage'];
|
|
}
|
|
|
|
} elseif ($Field['Type'] == 'checkbox') {
|
|
if (!isset($ValidateArray[$FieldKey])) {
|
|
return $Field['ErrorMessage'];
|
|
}
|
|
|
|
} elseif ($Field['Type'] == 'compare') {
|
|
if ($ValidateArray[$Field['CompareField']]!=$ValidateVar) {
|
|
return $Field['ErrorMessage'];
|
|
}
|
|
|
|
} elseif ($Field['Type'] == 'inarray') {
|
|
if (array_search($ValidateVar, $Field['InArray']) === false) {
|
|
return $Field['ErrorMessage'];
|
|
}
|
|
|
|
} elseif ($Field['Type'] == 'regex') {
|
|
if (!preg_match($Field['Regex'], $ValidateVar)) {
|
|
return $Field['ErrorMessage'];
|
|
}
|
|
}
|
|
}
|
|
} // while
|
|
} // function
|
|
|
|
function GenerateJS($FormID) {
|
|
$ReturnJS="<script type=\"text/javascript\" language=\"javascript\">\r\n";
|
|
$ReturnJS.="//<![CDATA[\r\n";
|
|
$ReturnJS.="function formVal() {\r\n";
|
|
$ReturnJS.=" clearErrors('".$FormID."');\r\n";
|
|
|
|
reset($this->Fields);
|
|
foreach ($this->Fields as $FieldKey => $Field) {
|
|
if ($Field['Type'] == 'string') {
|
|
$ValItem=' if ($(\'#'.$FieldKey.'\').raw().value==""';
|
|
if (!empty($Field['MaxLength'])) {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value.length>'.$Field['MaxLength'];
|
|
} else {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value.length>255';
|
|
}
|
|
if (!empty($Field['MinLength'])) {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value.length<'.$Field['MinLength'];
|
|
}
|
|
$ValItem.=') { return showError(\''.$FieldKey.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n";
|
|
|
|
} elseif ($Field['Type'] == 'number') {
|
|
$Match='0-9';
|
|
if (!empty($Field['AllowPeriod'])) {
|
|
$Match.='.';
|
|
}
|
|
if (!empty($Field['AllowComma'])) {
|
|
$Match.=',';
|
|
}
|
|
|
|
$ValItem=' if ($(\'#'.$FieldKey.'\').raw().value.match(/[^'.$Match.']/) || $(\'#'.$FieldKey.'\').raw().value.length<1';
|
|
if (!empty($Field['MaxLength'])) {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value/1>'.$Field['MaxLength'];
|
|
}
|
|
if (!empty($Field['MinLength'])) {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value/1<'.$Field['MinLength'];
|
|
}
|
|
$ValItem.=') { return showError(\''.$FieldKey.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n";
|
|
|
|
} elseif ($Field['Type'] == 'email') {
|
|
$ValItem=' if (!validEmail($(\'#'.$FieldKey.'\').raw().value)';
|
|
if (!empty($Field['MaxLength'])) {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value.length>'.$Field['MaxLength'];
|
|
} else {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value.length>255';
|
|
}
|
|
if (!empty($Field['MinLength'])) {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value.length<'.$Field['MinLength'];
|
|
} else {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value.length<6';
|
|
}
|
|
$ValItem.=') { return showError(\''.$FieldKey.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n";
|
|
|
|
} elseif ($Field['Type'] == 'link') {
|
|
$ValItem=' if (!validLink($(\'#'.$FieldKey.'\').raw().value)';
|
|
if (!empty($Field['MaxLength'])) {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value.length>'.$Field['MaxLength'];
|
|
} else {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value.length>255';
|
|
}
|
|
if (!empty($Field['MinLength'])) {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value.length<'.$Field['MinLength'];
|
|
} else {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value.length<10';
|
|
}
|
|
$ValItem.=') { return showError(\''.$FieldKey.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n";
|
|
|
|
} elseif ($Field['Type'] == 'username') {
|
|
$ValItem = ' if ($(\'#'.$FieldKey.'\').raw().value.match(/[^a-zA-Z0-9_\-]/)';
|
|
if (!empty($Field['MaxLength'])) {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value.length>'.$Field['MaxLength'];
|
|
}
|
|
if (!empty($Field['MinLength'])) {
|
|
$ValItem.=' || $(\'#'.$FieldKey.'\').raw().value.length<'.$Field['MinLength'];
|
|
}
|
|
$ValItem.=') { return showError(\''.$FieldKey.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n";
|
|
|
|
} elseif ($Field['Type'] == 'regex') {
|
|
$ValItem=' if (!$(\'#'.$FieldKey.'\').raw().value.match('.$Field['Regex'].')) { return showError(\''.$FieldKey.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n";
|
|
|
|
} elseif ($Field['Type'] == 'date') {
|
|
$DisplayError = $FieldKey.'month';
|
|
if (isset($Field['MinLength']) && $Field['MinLength'] == 3) {
|
|
$Day = '$(\'#'.$FieldKey.'day\').raw().value'; $DisplayError.=",".$FieldKey."day";
|
|
} else {
|
|
$Day = '1';
|
|
}
|
|
$DisplayError.=",".$FieldKey."year";
|
|
$ValItemHold=' if (!validDate($(\'#'.$FieldKey.'month\').raw().value+\'/\'+'.$Day.'+\'/\'+$(\'#'.$FieldKey.'year\').raw().value)) { return showError(\''.$DisplayError.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n";
|
|
|
|
if (empty($Field['Required'])) {
|
|
$ValItem=' if ($(\'#'.$FieldKey.'month\').raw().value!=""';
|
|
if (isset($Field['MinLength']) && $Field['MinLength'] == 3) { $ValItem.=' || $(\'#'.$FieldKey.'day\').raw().value!=""'; }
|
|
$ValItem.=' || $(\'#'.$FieldKey.'year\').raw().value!="") {'."\r\n";
|
|
$ValItem.=$ValItemHold;
|
|
$ValItem.=" }\r\n";
|
|
} else {
|
|
$ValItem.=$ValItemHold;
|
|
}
|
|
|
|
} elseif ($Field['Type'] == 'checkbox') {
|
|
$ValItem=' if (!$(\'#'.$FieldKey.'\').checked) { return showError(\''.$FieldKey.'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n";
|
|
|
|
} elseif ($Field['Type'] == 'compare') {
|
|
$ValItem=' if ($(\'#'.$FieldKey.'\').raw().value!=$(\'#'.$Field['CompareField'].'\').raw().value) { return showError(\''.$FieldKey.','.$Field['CompareField'].'\',\''.$Field['ErrorMessage'].'\'); }'."\r\n";
|
|
}
|
|
|
|
if (empty($Field['Required']) && $Field['Type'] != 'date') {
|
|
$ReturnJS.=' if ($(\'#'.$FieldKey.'\').raw().value!="") {'."\r\n ";
|
|
$ReturnJS.=$ValItem;
|
|
$ReturnJS.=" }\r\n";
|
|
} else {
|
|
$ReturnJS.=$ValItem;
|
|
}
|
|
$ValItem='';
|
|
}
|
|
|
|
$ReturnJS.="}\r\n";
|
|
$ReturnJS.="//]]>\r\n";
|
|
$ReturnJS.="</script>\r\n";
|
|
return $ReturnJS;
|
|
}
|
|
}
|
|
?>
|