1 |
vitalif |
2 |
<html> |
2 |
|
|
<head> |
3 |
|
|
<title>Администрирование</title> |
4 |
|
|
<meta name="GENERATOR" content="VMX"> |
5 |
|
|
<meta name="description" content="Главная страница системы администрирования тестов"> |
6 |
|
|
<meta http-equiv=Content-Type content="text/html; charset=windows-1251"> |
7 |
|
|
<link rel="stylesheet" href="../styles.css"> |
8 |
|
|
<?php |
9 |
vitalif |
6 |
// Скрипт |
10 |
vitalif |
2 |
|
11 |
|
|
// Интерфейс администрирования |
12 |
|
|
// Copyright (c) 2006, Виталий Филиппов [VMX] |
13 |
|
|
|
14 |
vitalif |
8 |
require_once '../lib/config.php'; |
15 |
|
|
require_once '../lib/info.php'; |
16 |
|
|
require_once '../lib/init.php'; |
17 |
|
|
require_once '../lib/load.php'; |
18 |
vitalif |
2 |
|
19 |
|
|
import_request_variables ("gp", "req_"); |
20 |
|
|
mysql_start (); |
21 |
vitalif |
6 |
|
22 |
|
|
function get_search_where ($prefix = '') |
23 |
|
|
{ |
24 |
|
|
global $req_searchdate, $req_searchlogin; |
25 |
|
|
if (isset ($req_searchdate) && strlen ($req_searchdate) > 0) |
26 |
|
|
{ |
27 |
|
|
$req_searchdate = mysql_escape_string ($req_searchdate); |
28 |
|
|
return "$prefix`date` >= '$req_searchdate'"; |
29 |
|
|
} |
30 |
|
|
else |
31 |
|
|
{ |
32 |
|
|
$subl = mysql_escape_string($req_searchlogin); |
33 |
|
|
return "!(INSTR($prefix`login`,'$subl')=0)"; |
34 |
|
|
} |
35 |
|
|
return "1"; |
36 |
|
|
} |
37 |
|
|
|
38 |
vitalif |
2 |
// Выполняем команду |
39 |
|
|
if (isset ($req_cmd)) |
40 |
|
|
{ |
41 |
|
|
if ($req_cmd == 'init') |
42 |
|
|
{ |
43 |
|
|
$initres = init_database(); |
44 |
|
|
mysql_finish (); |
45 |
|
|
if ($initres) |
46 |
|
|
echo '<meta http-equiv=\'refresh\' content=\'0; url="/admin/?cok=0"\'>'; |
47 |
|
|
else echo '<meta http-equiv=\'refresh\' content=\'0; url="/admin/?cfail=0"\'>'; |
48 |
vitalif |
8 |
exit; |
49 |
vitalif |
2 |
} |
50 |
|
|
else if ($req_cmd == 'load') |
51 |
|
|
{ |
52 |
|
|
$ldres = false; |
53 |
|
|
if (isset ($_FILES['loadfilename']['tmp_name']) && $_FILES['loadfilename']['size']) |
54 |
|
|
{ |
55 |
|
|
$quest = load_questions ($_FILES['loadfilename']['tmp_name']); |
56 |
|
|
if ($quest) |
57 |
|
|
{ |
58 |
|
|
if (isset ($req_loadoverwrite) && $req_loadoverwrite == 'on') |
59 |
|
|
amysql_query ("TRUNCATE TABLE `$QuestionsTable`"); |
60 |
|
|
if (load_into_database ($QuestionsTable, $quest)) |
61 |
|
|
$ldres = true; |
62 |
|
|
} |
63 |
|
|
if (is_uploaded_file ($_FILES['loadfilename']['tmp_name'])) |
64 |
|
|
unlink ($_FILES['loadfilename']['tmp_name']); |
65 |
|
|
} |
66 |
|
|
mysql_finish (); |
67 |
|
|
if ($ldres) |
68 |
|
|
echo '<meta http-equiv=\'refresh\' content=\'0; url="/admin/?cok=1"\'>'; |
69 |
|
|
else echo '<meta http-equiv=\'refresh\' content=\'0; url="/admin/?cfail=1"\'>'; |
70 |
vitalif |
8 |
exit; |
71 |
vitalif |
2 |
} |
72 |
|
|
else if ($cmd == 'plustest' || $cmd == 'minustest' || $cmd == 'cleartest') |
73 |
|
|
{ |
74 |
vitalif |
6 |
$where_def = get_search_where (); |
75 |
vitalif |
8 |
$cmdtail = (isset($req_searchdate) && strlen ($req_searchdate) > 0 ? 'searchdate=' . urlencode($req_searchdate) : 'searchlogin=' . urlencode($req_searchlogin)); |
76 |
vitalif |
2 |
if ($cmd == 'plustest') |
77 |
vitalif |
6 |
$result = amysql_query ("UPDATE `$UsersTable` SET `testlimit`=`testlimit`+1 WHERE $where_def"); |
78 |
vitalif |
2 |
else if ($cmd == 'minustest') |
79 |
vitalif |
6 |
$result = amysql_query ("UPDATE `$UsersTable` SET `testlimit`=`testlimit`-1 WHERE $where_def AND `testlimit`>0"); |
80 |
vitalif |
2 |
else |
81 |
vitalif |
6 |
$result = amysql_query ("UPDATE `$UsersTable` SET `testlimit`=0 WHERE $where_def"); |
82 |
vitalif |
2 |
mysql_finish (); |
83 |
|
|
if ($result) |
84 |
vitalif |
8 |
echo '<meta http-equiv=\'refresh\' content=\'0; url="/admin/?cok=2&cmd=users&' . $cmdtail . '"\'>'; |
85 |
|
|
else echo '<meta http-equiv=\'refresh\' content=\'0; url="/admin/?cfail=2&cmd=users&' . $cmdtail . '"\'>'; |
86 |
|
|
exit; |
87 |
vitalif |
2 |
} |
88 |
|
|
} |
89 |
|
|
|
90 |
vitalif |
6 |
// Продолжение статического содержимого |
91 |
vitalif |
2 |
?> |
92 |
|
|
</head> |
93 |
|
|
<body link="#000000" vlink="#000000" alink="#000000" bgcolor="#FFFFFF" text="#000000"> |
94 |
|
|
<table class="frmLoginText" style="border-color: black; border-width: 1; border-style: solid" width="700" bgcolor="#E0E0FF" align="center" cellspacing="0"> |
95 |
vitalif |
8 |
<tr><td align="center" bgcolor="#FFF0E0"><b><a href="/admin/"><font size="+1" color="#000000">Система администрирования тестирования слушателей</font></a></b><br><a href="/admin/archive.php">к архиву</a></td></tr> |
96 |
vitalif |
2 |
</table><br> |
97 |
|
|
<?php |
98 |
vitalif |
6 |
// Продолжение скрипта |
99 |
vitalif |
2 |
|
100 |
vitalif |
6 |
// Выполняем команды, связанные с выводом информации |
101 |
|
|
if (isset ($req_cmd)) |
102 |
|
|
{ |
103 |
|
|
$where_def = get_search_where (); |
104 |
|
|
$cmdtail = (isset($req_searchdate) && strlen ($req_searchdate) > 0 ? 'searchdate=' . urlencode($req_searchdate) : 'searchlogin=' . urlencode($req_searchlogin)); |
105 |
|
|
if ($req_cmd == 'users' || $req_cmd == 'prnusers') |
106 |
|
|
print_users_info ($where_def, $cmdtail, $req_cmd == 'prnusers'); |
107 |
|
|
else if (($req_cmd == 'results' || $req_cmd == 'prnresults') && isset ($req_uid)) |
108 |
vitalif |
8 |
{ |
109 |
vitalif |
6 |
print_results_info ($req_uid, $req_cmd == 'prnresults'); |
110 |
vitalif |
8 |
if ($req_cmd != 'prnresults') |
111 |
|
|
echo '<p class="frmLoginText" style="margin-top: 0" align="center"><a href="/admin/?cmd=prnresults&uid=' . $req_uid . '">Версия для печати</a> <a href="javascript:history.back();">Назад</a></p></body></html>'; |
112 |
|
|
else |
113 |
|
|
{ |
114 |
|
|
echo '<p class="frmLoginText" style="margin-top: 0" align="center"><a href="javascript:history.back();">Назад</a></p></body></html>'; |
115 |
|
|
exit; |
116 |
|
|
} |
117 |
|
|
} |
118 |
vitalif |
6 |
else if ($cmd == 'prntests') |
119 |
|
|
{ |
120 |
|
|
$where_def = get_search_where ('t1.'); |
121 |
|
|
print_tests_detailed_info ($where_def, $cmdtail); |
122 |
|
|
} |
123 |
|
|
} |
124 |
|
|
|
125 |
vitalif |
2 |
mysql_finish (); |
126 |
|
|
|
127 |
vitalif |
6 |
// Выводим статусные сообщения |
128 |
vitalif |
2 |
if (isset ($req_cok) || isset ($req_cfail)) |
129 |
|
|
{ |
130 |
|
|
echo '<table class="frmLoginText" style="border-color: black; border-width: 1; border-style: solid" width="700" bgcolor="#E0E0FF" align="center" cellspacing="0"><tr><td align="center" bgcolor="#FFC0C0">Результат операции: '; |
131 |
|
|
if (isset ($req_cok)) |
132 |
|
|
{ |
133 |
|
|
if ($req_cok == 0) |
134 |
|
|
echo 'Инициализация БД прошла успешно.'; |
135 |
|
|
else if ($req_cok == 1) |
136 |
|
|
echo 'Файл успешно загружен в БД.'; |
137 |
|
|
else if ($req_cok == 2) |
138 |
|
|
echo 'Количество предписанных тестов успешно изменено.'; |
139 |
|
|
} |
140 |
|
|
else |
141 |
|
|
{ |
142 |
|
|
if ($req_cfail == 0) |
143 |
|
|
echo 'При инициализации БД произошла ошибка.'; |
144 |
|
|
else if ($req_cfail == 1) |
145 |
|
|
echo 'При загрузке файла в БД произошла ошибка.'; |
146 |
|
|
else if ($req_cfail == 2) |
147 |
|
|
echo 'Ошибка изменения количества предписанных тестов.'; |
148 |
|
|
else if ($req_cfail == 10) |
149 |
|
|
echo 'Ошибка запроса к БД при выводе списка пользователей.'; |
150 |
|
|
else if ($req_cfail == 11) |
151 |
|
|
echo 'Таких пользователей нет.'; |
152 |
|
|
} |
153 |
|
|
echo '</td></tr></table><br>'; |
154 |
|
|
} |
155 |
vitalif |
6 |
error_reporting (E_ALL & ~E_NOTICE); |
156 |
|
|
// Статическое содержимое |
157 |
vitalif |
2 |
?> |
158 |
|
|
<table class="frmLoginText" style="border-color: black; border-width: 1; border-style: solid" width="700" bgcolor="#E0E0FF" align="center" cellspacing="0"> |
159 |
|
|
<tr><td align="center" bgcolor="#FFF0E0" style="border-width: 0 0 1 0; border-style: solid"><b>Возможные операции</b><br> </td></tr> |
160 |
|
|
<tr><td align="center"><b>Вывод информации о пользователях</b><br> </td></tr> |
161 |
|
|
<form name="searchusers" action="?cmd=users" method="POST"> |
162 |
vitalif |
6 |
<tr><td align="center">Логин (пустой=все): <input class="frmLoginEdit" type="text" maxlength="256" name="searchlogin" onChange="(document.getElementById('searchdate')).value='';" onClick="(document.getElementById('searchdate')).value='';" value=<?php echo "\"$req_searchlogin\""; ?>></td></tr> |
163 |
vitalif |
2 |
<tr><td align="center" colspan="2"><b>или зарегистрировавшиеся:</b></td></tr> |
164 |
vitalif |
6 |
<tr><td align="center">После YYYY-MM-DD: <input class="frmLoginEdit" type="text" maxlength="256" id="searchdate" name="searchdate" value=<?php echo "\"$req_searchdate\""; ?>></td></tr> |
165 |
vitalif |
2 |
<tr><td align="center" style="border-width: 0 0 1 0; border-style: solid"><input name="searchusers" class="frmLoginButton" type="submit" value="Искать пользователей"></td></tr> |
166 |
|
|
</form> |
167 |
|
|
<tr><td align="center"><b>Загрузка вопросов из текстового файла</b><br> </td></tr> |
168 |
|
|
<form name="loadquestfile" action="?cmd=load" enctype="multipart/form-data" method="POST"> |
169 |
|
|
<tr><td align="center"><input type="hidden" name="MAX_FILE_SIZE" value="5242880">Файл: <input class="frmLoginEdit" type="file" name="loadfilename"></td></tr> |
170 |
vitalif |
6 |
<tr><td align="center">Вариант этих вопросов: <input type="text" name="loadvariant" class="frmLoginEdit" size="3" maxlength="3" value="1"></td></tr> |
171 |
vitalif |
2 |
<tr><td align="center"><input type="checkbox" name="loadoverwrite"> Перезаписать БД вопросов</td></tr> |
172 |
vitalif |
6 |
<tr><td align="center" style="border-width: 0 0 1 0; border-style: solid"><input name="loadqas" class="frmLoginButton" type="button" value="Загрузить вопросы в БД" onClick="if(document.loadquestfile.loadfilename.value != '' && document.loadquestfile.loadvariant.value != '') document.loadquestfile.submit(); else alert ('Выберите файл и вариант');"></td></tr> |
173 |
vitalif |
2 |
</form> |
174 |
|
|
<tr><td align="center"><b>Инициализация / очистка базы данных</b><br> </td></tr> |
175 |
|
|
<tr><td align="center" style="border-width: 0 0 1 0; border-style: solid"><form><input class="frmLoginButton" type="button" value="Инициализировать БД" onClick="if(confirm('Действительно инициализировать БД заново и стереть все её текущее содержимое, ВКЛЮЧАЯ данные о пользователях и их результатах?')) { navigate('/admin/?cmd=init'); }"></form></td></tr> |
176 |
|
|
<tr><td align="center" bgcolor="#FFF0E0">Powered by VMX, 2006</td></tr> |
177 |
|
|
</table> |
178 |
|
|
</body> |
179 |
vitalif |
6 |
</html> |