summaryrefslogtreecommitdiff
path: root/includes/sys_page.php
blob: 6b71eb15efda8ed0a18b4a9d419cad5103538b80 (plain)
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
<?php

/**
 * Leitet den Browser an die übergebene URL weiter und hält das Script an.
 */
function redirect($to) {
  header("Location: " . $to, true, 302);
  raw_output("");
}

/**
 * Echoes given output and dies.
 *
 * @param String $output          
 */
function raw_output($output) {
  echo $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))->getTimestamp());
  }
  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
 */
function strip_request_item($name) {
  return strip_item($_REQUEST[$name]);
}

/**
 * Testet, ob der angegebene REQUEST Wert ein Integer ist, bzw.
 * eine ID sein könnte.
 */
function test_request_int($name) {
  if (isset($_REQUEST[$name])) {
    return preg_match("/^[0-9]*$/", $_REQUEST[$name]);
  }
  return false;
}

/**
 * Gibt den gefilterten REQUEST Wert mit Zeilenumbrüchen zurück
 */
function strip_request_item_nl($name) {
  return preg_replace("/([^\p{L}\p{S}\p{P}\p{Z}\p{N}+\n]{1,})/ui", '', strip_tags($_REQUEST[$name]));
}

/**
 * Entfernt unerwünschte Zeichen
 */
function strip_item($item) {
  return preg_replace("/([^\p{L}\p{S}\p{P}\p{Z}\p{N}+]{1,})/ui", '', strip_tags($item));
}

/**
 * Überprüft eine E-Mail-Adresse.
 */
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;
  }
}

?>