-
Notifications
You must be signed in to change notification settings - Fork 0
/
lunch.php
105 lines (85 loc) · 4.34 KB
/
lunch.php
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
<?php
/*
Прога, в которой каждый человек будет отмечаться о том, в какое время он идет на обед и идет ли вообще
Напротив каждого имени будут 3 радио-баттона и два тайм-пикера.
Радио: Иду, Не иду, Не определился(лась)
Тайм-пикеры: Готов(а) пойти в ..., но не позже ...
Тайм-пикеры будут неактивны, пока не выбран "иду"
Данные сохраняются сразу после изменения (если не лень будет прикручивать ajax) или при нажатии на "Сохранить"
Если выбрано "иду", то подкрашить поле, чтобы было заметней
*/
define("SEX_MALE", 0);
define("SEX_FEMALE", 1);
define("VOTE_YES", 0);
define("VOTE_NO", 1);
define("VOTE_UNKNOWN", 2);
define("DATA_STORAGE", 'data.srl');
function inPost($name, $default = false)
{
return (isset($_POST[$name]) ? $_POST[$name] : $default);
}
//Юзеры и их значения полей по умолчанию
$aPeople = array(
1 => array("name" => "Артем Тымченко", "sex" => SEX_MALE, "vote" => VOTE_UNKNOWN, "time_start" => '', "time_end" => ''),
2 => array("name" => "Денис Гуров", "sex" => SEX_MALE, "vote" => VOTE_UNKNOWN, "time_start" => '', "time_end" => ''),
3 => array("name" => "Максим Липовский", "sex" => SEX_MALE, "vote" => VOTE_UNKNOWN, "time_start" => '', "time_end" => ''),
4 => array("name" => "Оля Политыко", "sex" => SEX_FEMALE, "vote" => VOTE_UNKNOWN, "time_start" => '', "time_end" => ''),
5 => array("name" => "Юля Власова", "sex" => SEX_FEMALE, "vote" => VOTE_UNKNOWN, "time_start" => '', "time_end" => ''),
);
if (!file_exists(DATA_STORAGE)) {
echo "Не найден файл данных";
exit;
}
//Если файл данных устаревший (редактировался более дня назад), его надо очистить
$iModificationDay = date("Ymd", filemtime(DATA_STORAGE));
$iToday = date("Ymd");
if ($iModificationDay < $iToday) {
file_put_contents(DATA_STORAGE, '');
}
//Сохранение данных на диск
//Если нажата кнопка "Сохранить"
if (inPost('save')) {
$aPeopleToSave = array();
$aVotes = inPost('votes');
$aTimeStart = inPost('time_start');
$aTimeEnd = inPost('time_end');
//Собрать значения каждого человека
foreach ($aPeople as $iPersonId => $aPerson) {
if (isset($aVotes[$iPersonId]) && is_numeric($aVotes[$iPersonId])) {
$aPeopleToSave[$iPersonId]['vote'] = $aVotes[$iPersonId];
}
if (isset($aTimeStart[$iPersonId])) {
$aPeopleToSave[$iPersonId]['time_start'] = $aTimeStart[$iPersonId];
}
if (isset($aTimeEnd[$iPersonId])) {
$aPeopleToSave[$iPersonId]['time_end'] = $aTimeEnd[$iPersonId];
}
}
$sPeopleToSave = serialize($aPeopleToSave);
file_put_contents(DATA_STORAGE, $sPeopleToSave);
//Можно было бы и без редиректа, но тогда при обновлении страницы юзер может пересохранить данные
header("Location: ".$_SERVER['PHP_SELF']);
}
//Получение данных с диска
$sPeopleSaved = file_get_contents(DATA_STORAGE);
$aPeopleSaved = unserialize($sPeopleSaved);
//Установить значения полей, сохраненные ранее
foreach ($aPeopleSaved as $iPersonId => $aPersonSaved) {
if (isset($aPersonSaved['vote'])) {
$aPeople[$iPersonId]['vote'] = $aPersonSaved['vote'];
if ($aPersonSaved['vote'] == VOTE_YES) {
$aPeople[$iPersonId]['name_color'] = "red";
} elseif ($aPersonSaved['vote'] == VOTE_NO) {
$aPeople[$iPersonId]['name_color'] = "gray";
} else {
$aPeople[$iPersonId]['name_color'] = "black";
}
}
if (isset($aPersonSaved['time_start'])) {
$aPeople[$iPersonId]['time_start'] = $aPersonSaved['time_start'];
}
if (isset($aPersonSaved['time_end'])) {
$aPeople[$iPersonId]['time_end'] = $aPersonSaved['time_end'];
}
}
require_once "template.php";