From 45bbf95972777e9499996d56a873c2a304815b3f Mon Sep 17 00:00:00 2001 From: msquare Date: Tue, 27 Sep 2016 17:24:18 +0200 Subject: fix settings validation --- includes/sys_page.php | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) (limited to 'includes/sys_page.php') diff --git a/includes/sys_page.php b/includes/sys_page.php index 6863c517..67da83c7 100644 --- a/includes/sys_page.php +++ b/includes/sys_page.php @@ -18,6 +18,46 @@ function raw_output($output) { die(); } +/** + * Checks if given request item (name) can be parsed to a date. + * If not parsable, given error message is put into msg() and null is returned. + * + * @param string $input + * String to be parsed into a date. + * @param string $error_message + * the error message displayed if $input is not parsable + * @param boolean $null_allowed + * is a null value allowed? + * @return ValidationResult containing the parsed date + */ +function check_request_date($name, $error_message = null, $null_allowed = false) { + if (! isset($_REQUEST[$name])) + return new ValidationResult($null_allowed, null); + return check_date($_REQUEST[$name], $error_message, $null_allowed); +} + +/** + * Checks if given string can be parsed to a date. + * If not parsable, given error message is put into msg() and null is returned. + * + * @param string $input + * String to be parsed into a date. + * @param string $error_message + * the error message displayed if $input is not parsable + * @param boolean $null_allowed + * is a null value allowed? + * @return ValidationResult containing the parsed date + */ +function check_date($input, $error_message = null, $null_allowed = false) { + if (DateTime::createFromFormat("Y-m-d", trim($input))) + return new ValidationResult(true, DateTime::createFromFormat("Y-m-d", trim($input))); + if ($null_allowed) + return new ValidationResult(true, null); + + error($error_message); + return new ValidationResult(false, null); +} + /** * Gibt den gefilterten REQUEST Wert ohne Zeilenumbrüche zurück */ @@ -57,4 +97,38 @@ function check_email($email) { return (bool) filter_var($email, FILTER_VALIDATE_EMAIL); } +class ValidationResult { + + private $ok; + + private $value; + + /** + * Constructor. + * + * @param boolean $ok + * Is the value valid? + * @param * $value + * The validated value + */ + public function ValidationResult($ok, $value) { + $this->ok = $ok; + $this->value = $value; + } + + /** + * Is the value valid? + */ + public function isOk() { + return $this->ok; + } + + /** + * The parsed/validated value. + */ + public function getValue() { + return $this->value; + } +} + ?> -- cgit v1.2.3-54-g00ecf