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
|
<?php
abstract class Form {
const Name = 'name';
const Teacher = 'teacher';
const Description = 'description';
const Group = 'group';
const Credits = 'credits';
static function to_bg(string $name) {
switch ($name) {
case Form::Name: return 'Име на учебен предмет';
case Form::Teacher: return 'Преподавател';
case Form::Description: return 'Описание';
case Form::Group: return 'Група';
case Form::Credits: return 'Кредити';
default: throw new Exception("'$name' isn't an acceptable value!");
}
}
}
class Errors {
private static function get_error_submitted(string $name) {
if (!array_key_exists($name, $_POST) || mb_strlen($_POST[$name]) == 0) {
return Form::to_bg($name) . ' не е предадено! Полето е задължително!';
}
}
private static function get_error_len_min(string $name, int $min) {
if (mb_strlen($_POST[$name]) < $min) {
return Form::to_bg($name) . " е твърде късо! Дължината може да е минимум $min на брой символа!";
}
}
private static function get_error_len_max(string $name, int $max) {
if (mb_strlen($_POST[$name]) > $max) {
return Form::to_bg($name) . " е твърде дълго! Дължината може да е максимум $max на брой символа!";
}
}
private static function get_error_len(string $name, int $min, int $max) {
return Errors::get_error_len_min($name, $min) ??
Errors::get_error_len_max($name, $max);
}
private static function get_error_enumerate(string $name, array $valid_values) {
if (!in_array($_POST[$name], $valid_values)) {
return Form::to_bg($name) . ' не е измежду ' . implode(', ', $valid_values) . '!';
}
}
private static function get_error_int(string $name) {
if (!is_numeric($_POST[$name])) {
return Form::to_bg($name) . " не е число!";
}
elseif (floor($_POST[$name]) != $_POST[$name]) {
return Form::to_bg($name) . " не е цяло число!";
}
elseif ($_POST[$name] <= 0) {
return Form::to_bg($name) . " не е положително число!";
}
}
private $messages;
public function __construct() {
$this->messages[Form::Name] = Errors::get_error_submitted(Form::Name) ??
Errors::get_error_len(Form::Name, 2, 150);
$this->messages[Form::Teacher] = Errors::get_error_submitted(Form::Teacher) ??
Errors::get_error_len(Form::Teacher, 3, 200);
$this->messages[Form::Description] = Errors::get_error_submitted(Form::Description) ??
Errors::get_error_len_min(Form::Description, 10);
$this->messages[Form::Group] = Errors::get_error_submitted(Form::Group) ??
Errors::get_error_enumerate(Form::Group, array(
'М', 'ПМ', 'ОКН', 'ЯКН'));
$this->messages[Form::Credits] = Errors::get_error_submitted(Form::Credits) ??
Errors::get_error_int(Form::Credits);
}
public function get_messages() {
return array_filter($this->messages, function ($m) { return !is_null($m); });
}
}
$errors = new Errors();
$messages = $errors->get_messages();
if (!empty($messages)) {
echo json_encode(
array(
"success" => false,
"errors" => $messages
),
JSON_UNESCAPED_UNICODE
);
}
else {
echo json_encode(array("success" => true));
}
|