Initial import: Carteasy Shop (Dev-Stand)
This commit is contained in:
@@ -0,0 +1,299 @@
|
||||
<?php
|
||||
|
||||
abstract class Validate {
|
||||
|
||||
private static $_lastErrors = array();
|
||||
|
||||
private static $_errorMessages = array(
|
||||
'LEN' => 'Länge stimmt nicht (%1$s Zeichen)',
|
||||
'SET' => 'Darf nicht leer sein',
|
||||
'ALN' => 'Nur alphanummerische Zeichen',
|
||||
'EXP' => 'Nur alphanummerische, Satz- und Leerzeichen',
|
||||
'NUM' => 'Nur Ziffern',
|
||||
'DEC' => 'Muss eine Kommazahl sein',
|
||||
'DAT' => 'Muss ein gültiges Datum sein',
|
||||
'INT' => 'Muss eine Ganzzahl sein',
|
||||
'INTRANGE' => 'Nicht im Wertebereich',
|
||||
'INTRANGEERROR' => 'Gegebener Wertebereich ist ungültig',
|
||||
'CUR' => 'Muss eine Währungsangabe sein'
|
||||
);
|
||||
|
||||
public function validateArray(Array $pattern, Array $data, $returnType = 'ALL') {
|
||||
$checked = array();
|
||||
$allPassed = true;
|
||||
$errors = array();
|
||||
|
||||
foreach ($pattern as $key => $expression) {
|
||||
self::$_lastErrors = array();
|
||||
|
||||
$expArr = explode('|', $expression);
|
||||
$checked[$key] = true;
|
||||
$errors[$key] = '';
|
||||
|
||||
foreach ($expArr as $checkExp) {
|
||||
$exprTmp = explode(':', $checkExp);
|
||||
|
||||
if (preg_match("@^\?@", $exprTmp[0]) && strlen($data[$key]) == 0) {
|
||||
$currentCheck = true;
|
||||
} else {
|
||||
$valTest = strtolower(str_replace('?', '', $exprTmp[0]));
|
||||
$currentCheck = self::$valTest($data[$key], isset($exprTmp[1]) ? $exprTmp[1] : false);
|
||||
if (!$currentCheck) {
|
||||
$errors[$key] = implode(' | ', self::$_lastErrors);
|
||||
}
|
||||
}
|
||||
|
||||
$allPassed = $allPassed & $currentCheck;
|
||||
$checked[$key] = $checked[$key] & $currentCheck;
|
||||
}
|
||||
}
|
||||
|
||||
if ($returnType == 'BOOL') {
|
||||
return $allPassed;
|
||||
} else if ($returnType == 'CHECKED') {
|
||||
return $checked;
|
||||
} else if ($returnType == 'ERRORS') {
|
||||
return $errors;
|
||||
} else if ($returnType == 'ALL') {
|
||||
return array('passed' => $allPassed, 'checked' => $checked, 'errors' => $errors);
|
||||
}
|
||||
// Debugger::pr($checked);
|
||||
}
|
||||
|
||||
public function int($val, $args = false) {
|
||||
$check = true;
|
||||
|
||||
if (preg_replace("@([^0-9])@", '', $val) != $val) {
|
||||
self::$_lastErrors[] = self::$_errorMessages['INT'];
|
||||
|
||||
$check &= false;
|
||||
}
|
||||
|
||||
if ($args) {
|
||||
$check &= self::len($val, $args);
|
||||
}
|
||||
|
||||
return $check;
|
||||
}
|
||||
|
||||
public function intrange($val, $args = false) {
|
||||
$check = true;
|
||||
|
||||
if (preg_replace("@([^0-9])@", '', $val) != $val) {
|
||||
self::$_lastErrors[] = self::$_errorMessages['INT'];
|
||||
|
||||
$check &= false;
|
||||
}
|
||||
|
||||
if ($args) {
|
||||
//valid args [mininteger],[maxinteger]
|
||||
$argsList = explode(',',$args);
|
||||
if (count($argsList)=2) {
|
||||
if (intval($var)>=intval($argsList[0]) AND intval($var)<=intval($argsList[1])) {
|
||||
$check &= true;
|
||||
} else {
|
||||
self::$_lastErrors[] = self::$_errorMessages['INTRANGE'];
|
||||
$check &= false;
|
||||
}
|
||||
} else if (count($argsList)=1) {
|
||||
if (intval($var)>=intval($argsList[0])) {
|
||||
$check &= true;
|
||||
} else {
|
||||
self::$_lastErrors[] = self::$_errorMessages['INTRANGE'];
|
||||
$check &= false;
|
||||
}
|
||||
} else {
|
||||
self::$_lastErrors[] = self::$_errorMessages['INTRANGEERROR'];
|
||||
$check &= false;
|
||||
}
|
||||
}
|
||||
|
||||
return $check;
|
||||
}
|
||||
|
||||
public function cur($val, $args = false) {
|
||||
$check = true;
|
||||
|
||||
if (empty($val)) {
|
||||
return $check;
|
||||
}
|
||||
|
||||
if ($args) {
|
||||
$float_arg = explode('.', $args);
|
||||
$pre = '{1,'.$float_arg[0].'}';
|
||||
$pos = '{1,'.$float_arg[1].'}';
|
||||
} else {
|
||||
$pre = '+';
|
||||
$pos = '+';
|
||||
}
|
||||
|
||||
$pattern = "@^[+-]?(([0-9]".$pre.")|([0-9]".$pre."[\.,][0-9]".$pos."|[0-9]".$pre."[\.,][0-9]".$pos.")|(([0-9]".$pre."|([0-9]".$pre."[\.,][0-9]".$pos."|[0-9]".$pre."[\.,][0-9]".$pos."))[eE][+-]?[0-9]".$pre."))$@";
|
||||
|
||||
if (!preg_match($pattern, $val)) {
|
||||
self::$_lastErrors[] = self::$_errorMessages['CUR'];
|
||||
|
||||
$check &= false;
|
||||
}
|
||||
|
||||
return $check;
|
||||
}
|
||||
|
||||
public function dec($val, $args = false) {
|
||||
$check = true;
|
||||
|
||||
if (empty($val)) {
|
||||
return $check;
|
||||
}
|
||||
|
||||
if ($args) {
|
||||
$float_arg = explode('.', $args);
|
||||
$pre = '{1,'.$float_arg[0].'}';
|
||||
$pos = '{1,'.$float_arg[1].'}';
|
||||
} else {
|
||||
$pre = '+';
|
||||
$pos = '+';
|
||||
}
|
||||
|
||||
$pattern = "@^[+-]?(([0-9]".$pre.")|([0-9]".$pre."[\.,][0-9]".$pos."|[0-9]".$pre."[\.,][0-9]".$pos.")|(([0-9]".$pre."|([0-9]".$pre."[\.,][0-9]".$pos."|[0-9]".$pre."[\.,][0-9]".$pos."))[eE][+-]?[0-9]".$pre."))$@";
|
||||
|
||||
if (!preg_match($pattern, $val)) {
|
||||
self::$_lastErrors[] = self::$_errorMessages['DEC'];
|
||||
|
||||
$check &= false;
|
||||
}
|
||||
|
||||
|
||||
return $check;
|
||||
}
|
||||
|
||||
public function num($val, $args = false) {
|
||||
$check = true;
|
||||
|
||||
if (!is_numeric($val)) {
|
||||
self::$_lastErrors[] = self::$_errorMessages['NUM'];
|
||||
|
||||
$check &= false;
|
||||
}
|
||||
|
||||
if ($args) {
|
||||
$check &= self::len($val, $args);
|
||||
}
|
||||
|
||||
return $check;
|
||||
}
|
||||
|
||||
public function set($val, $args = false) {
|
||||
if ((!isset($val) || empty($val)) && $val != '0') {
|
||||
self::$_lastErrors[] = self::$_errorMessages['SET'];
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function aln($val, $args = false) {
|
||||
$check = true;
|
||||
|
||||
$pattern = '/[^\p{L}\p{N}]/u';
|
||||
|
||||
if (preg_replace($pattern, '', $val) != $val) {
|
||||
self::$_lastErrors[] = self::$_errorMessages['ALN'];
|
||||
|
||||
$check &= false;
|
||||
}
|
||||
|
||||
if ($args) {
|
||||
$check &= self::len($val, $args);
|
||||
}
|
||||
|
||||
return $check;
|
||||
}
|
||||
|
||||
public function exp($val, $args = false) {
|
||||
$check = true;
|
||||
|
||||
$pattern = '/[^\p{L}\p{N}\s\.\,\-\_\+]/u';
|
||||
|
||||
if (preg_replace($pattern, '', $val) != $val) {
|
||||
self::$_lastErrors[] = self::$_errorMessages['EXP'];
|
||||
|
||||
$check &= false;
|
||||
}
|
||||
|
||||
if ($args) {
|
||||
$check &= self::len($val, $args);
|
||||
}
|
||||
|
||||
return $check;
|
||||
}
|
||||
|
||||
public function len($val, $args) {
|
||||
|
||||
if (preg_match("@^=[0-9]+$@", $args)) {
|
||||
if (strlen($val) != (int)preg_replace("@[^0-9]@", '', $args)) {
|
||||
self::$_lastErrors[] = sprintf(self::$_errorMessages['LEN'], $args);
|
||||
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
if (preg_match("@^<[0-9]+$@", $args)) {
|
||||
return (strlen($val) < (int)preg_replace("@[^0-9]@", '', $args));
|
||||
}
|
||||
|
||||
if (preg_match("@^>[0-9]+$@", $args)) {
|
||||
return (strlen($val) > (int)preg_replace("@[^0-9]@", '', $args));
|
||||
}
|
||||
|
||||
if (preg_match("@^<=[0-9]+$@", $args)) {
|
||||
if (strlen($val) > (int)preg_replace("@[^0-9]@", '', $args)) {
|
||||
self::$_lastErrors[] = sprintf(self::$_errorMessages['LEN'], $args);
|
||||
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
if (preg_match("@^>=[0-9]+$@", $args)) {
|
||||
return (strlen($val) >= (int)preg_replace("@[^0-9]@", '', $args));
|
||||
}
|
||||
|
||||
if (preg_match("@^[0-9]+-[0-9]+$@", $args)) {
|
||||
return (strlen($val) >= (int)preg_replace("@([0-9]+)-([0-9]+)@", "$1", $args)) & (strlen($val) <= (int)preg_replace("@([0-9]+)-([0-9]+)@", "$2", $args));
|
||||
}
|
||||
}
|
||||
|
||||
public function dat($date, $args = false) {
|
||||
$check = true;
|
||||
|
||||
if (!empty($date) && strlen($date) != 10) {
|
||||
$check = false;
|
||||
}
|
||||
|
||||
if (!empty($date) && $check) {
|
||||
if (preg_match("/^(\d{2})\.(\d{2})\.(\d{4})$/", $date, $matches)) {
|
||||
$user_date = array('m' => $matches[2], 'd' => $matches[1], 'y' => $matches[3]);
|
||||
} else if (preg_match("/^(\d{4})\-(\d{2})\-(\d{2})$/", $date, $matches)) {
|
||||
$user_date = array('m' => $matches[2], 'd' => $matches[3], 'y' => $matches[1]);
|
||||
} else if (preg_match("/^(\d{2})\/(\d{2})\/(\d{4})$/", $date, $matches)) {
|
||||
$user_date = array('m' => $matches[1], 'd' => $matches[2], 'y' => $matches[3]);
|
||||
} else {
|
||||
$check &= false;
|
||||
}
|
||||
|
||||
if (isset($user_date) && !checkdate($user_date['m'], $user_date['d'], $user_date['y'])) {
|
||||
$check &= false;
|
||||
}
|
||||
}
|
||||
|
||||
if ($check == false) {
|
||||
self::$_lastErrors[] = self::$_errorMessages['DAT'];
|
||||
}
|
||||
|
||||
return $check;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user