subversion://[vpntest]/release/2.0/WWW/admin/index.php Log in
ViewVC logotype

Annotate of /release/2.0/WWW/admin/index.php

Parent Directory Parent Directory | Revision Log Revision Log

Revision 2 - (hide annotations) (download) (as text)
Sun Feb 17 15:01:50 2008 MSK (12 years, 11 months ago) by vitalif
Original Path: head/WWW/admin/index.php
File MIME type: text/plain; charset=windows-1251
File size: 17036 byte(s)
Commit release 0.5

1 vitalif 2 <!-- Заголовок страницы -->
2     <html>
3     <head>
4     <title>Администрирование</title>
5     <meta name="GENERATOR" content="VMX">
6     <meta name="description" content="Главная страница системы администрирования тестов">
7     <meta http-equiv=Content-Type content="text/html; charset=windows-1251">
8     <link rel="stylesheet" href="../styles.css">
9     <!-- Скрипт -->
10    
11     <?php
12    
13     // Интерфейс администрирования
14     // Copyright (c) 2006, Виталий Филиппов [VMX]
15    
16     include_once '../lib/config.php';
17     include_once 'init.php';
18     include_once 'load.php';
19    
20     import_request_variables ("gp", "req_");
21     mysql_start ();
22     // Выполняем команду
23     if (isset ($req_cmd))
24     {
25     if ($req_cmd == 'init')
26     {
27     $initres = init_database();
28     mysql_finish ();
29     if ($initres)
30     echo '<meta http-equiv=\'refresh\' content=\'0; url="/admin/?cok=0"\'>';
31     else echo '<meta http-equiv=\'refresh\' content=\'0; url="/admin/?cfail=0"\'>';
32     }
33     else if ($req_cmd == 'load')
34     {
35     $ldres = false;
36     if (isset ($_FILES['loadfilename']['tmp_name']) && $_FILES['loadfilename']['size'])
37     {
38     $quest = load_questions ($_FILES['loadfilename']['tmp_name']);
39     if ($quest)
40     {
41     if (isset ($req_loadoverwrite) && $req_loadoverwrite == 'on')
42     amysql_query ("TRUNCATE TABLE `$QuestionsTable`");
43     if (load_into_database ($QuestionsTable, $quest))
44     $ldres = true;
45     }
46     if (is_uploaded_file ($_FILES['loadfilename']['tmp_name']))
47     unlink ($_FILES['loadfilename']['tmp_name']);
48     }
49     mysql_finish ();
50     if ($ldres)
51     echo '<meta http-equiv=\'refresh\' content=\'0; url="/admin/?cok=1"\'>';
52     else echo '<meta http-equiv=\'refresh\' content=\'0; url="/admin/?cfail=1"\'>';
53     }
54     else if ($cmd == 'plustest' || $cmd == 'minustest' || $cmd == 'cleartest')
55     {
56     if ($cmd == 'plustest')
57     {
58     if (isset ($req_searchdate) && strlen ($req_searchdate) > 0)
59     {
60     $req_searchdate = mysql_escape_string ($req_searchdate);
61     $result = amysql_query ("UPDATE `$UsersTable` SET `testlimit`=`testlimit`+1 WHERE `date` >= '$req_searchdate'");
62     }
63     else
64     {
65     $subl = mysql_escape_string($req_searchlogin);
66     $result = amysql_query ("UPDATE `$UsersTable` SET `testlimit`=`testlimit`+1 WHERE !(INSTR(`login`,'$subl')=0)");
67     }
68     }
69     else if ($cmd == 'minustest')
70     {
71     if (isset ($req_searchdate) && strlen ($req_searchdate) > 0)
72     {
73     $req_searchdate = mysql_escape_string ($req_searchdate);
74     $result = amysql_query ("UPDATE `$UsersTable` SET `testlimit`=`testlimit`-1 WHERE `date` >= '$req_searchdate' AND `testlimit`>0");
75     }
76     else
77     {
78     $subl = mysql_escape_string($req_searchlogin);
79     $result = amysql_query ("UPDATE `$UsersTable` SET `testlimit`=`testlimit`-1 WHERE !(INSTR(`login`,'$subl')=0) AND `testlimit`>0");
80     }
81     }
82     else
83     {
84     if (isset ($req_searchdate) && strlen ($req_searchdate) > 0)
85     {
86     $req_searchdate = mysql_escape_string ($req_searchdate);
87     $result = amysql_query ("UPDATE `$UsersTable` SET `testlimit`=0 WHERE `date` >= '$req_searchdate'");
88     }
89     else
90     {
91     $subl = mysql_escape_string($req_searchlogin);
92     $result = amysql_query ("UPDATE `$UsersTable` SET `testlimit`=0 WHERE !(INSTR(`login`,'$subl')=0)");
93     }
94     }
95     mysql_finish ();
96     if ($result)
97     echo '<meta http-equiv=\'refresh\' content=\'0; url="/admin/?cok=2"\'>';
98     else echo '<meta http-equiv=\'refresh\' content=\'0; url="/admin/?cfail=2"\'>';
99     }
100     }
101    
102     ?>
103    
104     <!-- Продолжение статического содержимого -->
105     </head>
106     <body link="#000000" vlink="#000000" alink="#000000" bgcolor="#FFFFFF" text="#000000">
107     <table class="frmLoginText" style="border-color: black; border-width: 1; border-style: solid" width="700" bgcolor="#E0E0FF" align="center" cellspacing="0">
108     <tr><td align="center" bgcolor="#FFF0E0"><b><a href="/admin/"><font size="+1" color="#000000">Система администрирования тестирования слушателей</font></a></b><br>&nbsp;</td></tr>
109     </table><br>
110     <!-- Продолжение скрипта -->
111    
112     <?php
113    
114     // Если надо, выводим информацию о пользователях
115     if (isset ($req_cmd))
116     {
117     if ($req_cmd == 'users' || $req_cmd == 'prnusers')
118     {
119     if (isset ($req_searchdate) && strlen ($req_searchdate) > 0)
120     {
121     $req_searchdate = mysql_escape_string ($req_searchdate);
122     $result = amysql_query ("SELECT * FROM `$UsersTable` WHERE `date` >= '$req_searchdate' ORDER BY `lastname`, `firstname`, `thirdname`");
123     }
124     else
125     {
126     $subl = mysql_escape_string($req_searchlogin);
127     $result = amysql_query ("SELECT * FROM `$UsersTable` WHERE !(INSTR(`login`,'$subl')=0) ORDER BY `lastname`, `firstname`, `thirdname`");
128     }
129     if ($result && ($row = mysql_fetch_assoc ($result)))
130     {
131     echo '<table style="border-color: black; border-width: 1 1 0 1; border-style: solid" width="100%" align="center" cellspacing="0" class="frmLoginText">
132     <tr bgcolor="#FFE0FF">
133     <td style="border-width: 0 0 1 0; border-style: solid" align="center">№</td>
134     <td style="border-width: 0 0 1 1; border-style: solid" align="center">Логин</td>
135     <td style="border-width: 0 0 1 1; border-style: solid" align="center">+Тестов</td>
136     <td style="border-width: 0 0 1 1; border-style: solid" align="center">ФИО</td>
137     <td style="border-width: 0 0 1 1; border-style: solid" align="center">Город</td>
138     <td style="border-width: 0 0 1 1; border-style: solid" align="center">Организация</td>
139     <td style="border-width: 0 0 1 1; border-style: solid" align="center">Должность</td>
140     <td style="border-width: 0 0 1 1; border-style: solid" align="center">E-mail</td>
141     <td style="border-width: 0 0 1 1; border-style: solid" align="center">Телефон</td>
142     <td style="border-width: 0 0 1 1; border-style: solid" align="center" width="10%">Опыт работы с ViPNet</td>
143     <td style="border-width: 0 0 1 1; border-style: solid" align="center">Зарегистрирован</td>
144     <td style="border-width: 0 0 1 1; border-style: solid" align="center">Результат</td>
145     </tr>';
146     $usi = 1;
147     do
148     {
149     $result2 = amysql_query ("SELECT `result`, CHAR_LENGTH(`answers`) FROM `$ResultsTable` WHERE `uid`=${row['id']} ORDER BY -`date`,-`time` LIMIT 1");
150     $row2 = false; if ($result2) $row2 = mysql_fetch_row ($result2);
151     echo "<tr>
152     <td style=\"border-width: 0 0 1 0; border-style: solid\" align=\"center\">$usi</td>
153     <td style=\"border-width: 0 0 1 1; border-style: solid\" align=\"center\">" . ($req_cmd != 'prnusers' ? "<a href=\"javascript:void escape(searchusers.searchlogin.value='${row['login']}');\">" : '') . "${row['login']}" . ($req_cmd != 'prnusers' ? "</a>" : '') . "</td>
154     <td style=\"border-width: 0 0 1 1; border-style: solid\" align=\"center\">${row['testlimit']}</td>
155     <td style=\"border-width: 0 0 1 1; border-style: solid\" align=\"center\">${row['lastname']} ${row['firstname']} ${row['thirdname']}</td>
156     <td style=\"border-width: 0 0 1 1; border-style: solid\" align=\"center\">${row['town']}</td>
157     <td style=\"border-width: 0 0 1 1; border-style: solid\" align=\"center\">${row['firm']}</td>
158     <td style=\"border-width: 0 0 1 1; border-style: solid\" align=\"center\">${row['position']}</td>
159     <td style=\"border-width: 0 0 1 1; border-style: solid\" align=\"center\">${row['email']}</td>
160     <td style=\"border-width: 0 0 1 1; border-style: solid\" align=\"center\">${row['phone']}</td>
161     <td style=\"border-width: 0 0 1 1; border-style: solid\" align=\"center\">${row['vipnet']}</td>
162     <td style=\"border-width: 0 0 1 1; border-style: solid\" align=\"center\">${row['date']}<br>${row['time']}</td>
163     <td style=\"border-width: 0 0 1 1; border-style: solid\" align=\"center\">" . ($row2 !== false ? floor(100*$row2[0]/$row2[1]) . '%<br>(' . $row2[0] . '/' . $row2[1] . ')' : '') . ($req_cmd != 'prnusers' ? " <a href=\"/admin/?cmd=results&uid=${row['id']}\">...</a>" : '') . "&nbsp;</td>
164     </tr>";
165     $usi++;
166     } while ($row = mysql_fetch_assoc ($result));
167     echo '</table>';
168     $cmdtail = (isset($req_searchdate) && strlen ($req_searchdate) > 0 ? 'searchdate=' . urlencode($req_searchdate) : 'searchlogin=' . urlencode($req_searchlogin));
169     if ($req_cmd != 'prnusers')
170     echo '<table class="frmLoginText" style="border-color: black; border-width: 0 1 1 1; border-style: solid" bgcolor="#E0E0FF" align="center" cellspacing="0">' .
171     '<tr><td><input type="button" class="frmLoginButton" value="Дать +1 тест" onClick="navigate(\'/admin/?cmd=plustest&' . $cmdtail . '\');"></td><td></td>' .
172     '<td><input type="button" class="frmLoginButton" value="Отнять 1 тест" onClick="navigate(\'/admin/?cmd=minustest&' . $cmdtail . '\');"></td><td></td>' .
173     '<td><input type="button" class="frmLoginButton" value="Убрать тесты" onClick="if (confirm(\'Действительно отнять у выбранных пользователей возможность проходить тесты (до разрешения)?\')) navigate(\'/admin/?cmd=cleartest&' . $cmdtail . '\');"></td><td></td>' .
174     '<td><input type="button" class="frmLoginButton" value="Версия для печати" onClick="navigate(\'/admin/?cmd=prnusers&' . $cmdtail . '\');"></td><td></td></tr>' .
175     '</table><br>';
176     else
177     {
178     echo '<p class="frmLoginText" align="center"><a href="/admin/?cmd=users&' . $cmdtail . '">Назад</a></p></body></html>';
179     exit;
180     }
181     }
182     else if (!$result)
183     $req_cfail = 10;
184     else $req_cfail = 11;
185     }
186     else if (($req_cmd == 'results' || $req_cmd == 'prnresults') && isset ($req_uid))
187     {
188     // Выдаём таблицу результатов ...
189     $result = amysql_query ("SELECT * FROM `$UsersTable` WHERE `id`=$req_uid LIMIT 1");
190     $row = mysql_fetch_assoc ($result);
191     echo "<table width=\"700\" bgcolor=\"#E0E0FF\" cellspacing=\"0\" style=\"border-color: black; border-width: 1 1 0 1; border-style: solid\" align=\"center\" class=\"frmLoginText\">"
192     . "<tr><td bgcolor=\"#F0F0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">ФИО</p></td><td bgcolor=\"#F0F0FF\"><p style=\"margin: 2 2 0 2\">${row['lastname']} ${row['firstname']} ${row['thirdname']}</p></td></tr>"
193     . "<tr><td bgcolor=\"#E0E0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">Город</p></td><td><p style=\"margin: 2 2 0 2\">${row['town']}</p></td></tr>"
194     . "<tr><td bgcolor=\"#F0F0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">Организация</p></td><td bgcolor=\"#F0F0FF\"><p style=\"margin: 2 2 0 2\">${row['firm']}</p></td></tr>"
195     . "<tr><td bgcolor=\"#E0E0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">Должность</p></td><td><p style=\"margin: 2 2 0 2\">${row['position']}</p></td></tr>"
196     . "<tr><td bgcolor=\"#F0F0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">E-mail</p></td><td bgcolor=\"#F0F0FF\"><p style=\"margin: 2 2 0 2\">${row['email']}</p></td></tr>"
197     . "<tr><td bgcolor=\"#E0E0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">Телефон</p></td><td><p style=\"margin: 2 2 0 2\">${row['phone']}</p></td></tr>"
198     . "<tr><td bgcolor=\"#F0F0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">Опыт работы с ViPNet</p></td><td bgcolor=\"#F0F0FF\"><p style=\"margin: 2 2 0 2\">${row['vipnet']}</p></td></tr>"
199     . "<tr><td bgcolor=\"#E0E0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">Зарегистрирован</p></td><td><p style=\"margin: 2 2 0 2\">${row['date']} ${row['time']}</p></td></tr>"
200     . "<tr><td bgcolor=\"#F0F0FF\" style=\"border-width: 0 0 0 0; border-style: solid\"><p style=\"margin: 2 2 0 2\">Логин</p></td><td bgcolor=\"#F0F0FF\"><p style=\"margin: 2 2 0 2\">${row['login']}</p></td></tr>";
201     $result = amysql_query ("SELECT CHAR_LENGTH(`answers`), `date`, `time`, `result`, `answers`, `varid` FROM `$ResultsTable` WHERE `uid`=$req_uid ORDER BY -`date`, -`time`");
202     $row2 = mysql_fetch_assoc ($result);
203     $lastrow_d = 0;
204     if ($result || !$row2)
205     $lastrow_d = 1;
206     echo "<tr><td bgcolor=\"#E0E0FF\" style=\"border-width: 0 0 $lastrow_d 0; border-style: solid\"><p style=\"margin: 2 2 2 2\">Осталось тестов</p></td><td style=\"border-width: 0 0 $lastrow_d 0; border-style: solid\"><p style=\"margin: 2 2 2 2\">${row['testlimit']}</p></td></tr></table><br>";
207     $row = $row2;
208     if ($result && $row)
209     {
210     $crcnt = 1 + $row['CHAR_LENGTH(`answers`)'] - 1;
211     echo '<table class="frmLoginText" cellspacing="0" style="border-color: black; border-width: 1; border-style: solid" align="center" width="700" bgcolor="#F0F0FF">';
212     echo '<tr><td bgcolor="#E0E0FF" width="25%" style="border-width: 0 1 1 0; border-style: solid" align="center">Вариант теста</td><td width="25%" bgcolor="#E0E0FF" style="border-width: 0 1 1 0; border-style: solid" align="center">Время</td><td width="25%" bgcolor="#E0E0FF" style="border-width: 0 1 1 0; border-style: solid" align="center">Дата</td><td width="25%" bgcolor="#E0E0FF" style="border-width: 0 0 1 0; border-style: solid" align="center">Результат</td></tr>';
213     do
214     {
215     $crres = 1 + $row['result'] - 1;
216     $crper = 100 * $crres / $crcnt;
217     echo "<tr><td align=\"center\">${row['varid']}</td><td align=\"center\">${row['time']}</td><td align=\"center\">${row['date']}</td><td align=\"center\">$crper% ($crres / $crcnt)</td></tr>";
218     } while ($row = mysql_fetch_assoc ($result));
219     echo '</table>';
220     }
221     if ($cmd != 'prnresults')
222     echo '<p class="frmLoginText" align="center"><a href="/admin/?cmd=prnresults&uid=' . $req_uid . '">Версия для печати</a>&nbsp; &nbsp; <a href="javascript:history.back();">Назад</a></p></body></html>';
223     else
224     {
225     echo '<p class="frmLoginText" align="center"><a href="javascript:history.back();">Назад</a></p></body></html>';
226     exit;
227     }
228     }
229     }
230    
231     mysql_finish ();
232    
233     ?>
234    
235     <?php
236     if (isset ($req_cok) || isset ($req_cfail))
237     {
238     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">Результат операции: ';
239     if (isset ($req_cok))
240     {
241     if ($req_cok == 0)
242     echo 'Инициализация БД прошла успешно.';
243     else if ($req_cok == 1)
244     echo 'Файл успешно загружен в БД.';
245     else if ($req_cok == 2)
246     echo 'Количество предписанных тестов успешно изменено.';
247     }
248     else
249     {
250     if ($req_cfail == 0)
251     echo 'При инициализации БД произошла ошибка.';
252     else if ($req_cfail == 1)
253     echo 'При загрузке файла в БД произошла ошибка.';
254     else if ($req_cfail == 2)
255     echo 'Ошибка изменения количества предписанных тестов.';
256     else if ($req_cfail == 10)
257     echo 'Ошибка запроса к БД при выводе списка пользователей.';
258     else if ($req_cfail == 11)
259     echo 'Таких пользователей нет.';
260     }
261     echo '</td></tr></table><br>';
262     }
263     ?>
264     <!-- Статика -->
265     <table class="frmLoginText" style="border-color: black; border-width: 1; border-style: solid" width="700" bgcolor="#E0E0FF" align="center" cellspacing="0">
266     <tr><td align="center" bgcolor="#FFF0E0" style="border-width: 0 0 1 0; border-style: solid"><b>Возможные операции</b><br>&nbsp;</td></tr>
267     <tr><td align="center"><b>Вывод информации о пользователях</b><br>&nbsp;</td></tr>
268     <form name="searchusers" action="?cmd=users" method="POST">
269     <tr><td align="center">Логин (пустой=все): <input class="frmLoginEdit" type="text" maxlength="256" name="searchlogin"></td></tr>
270     <tr><td align="center" colspan="2"><b>или зарегистрировавшиеся:</b></td></tr>
271     <tr><td align="center">После YYYY-MM-DD: <input class="frmLoginEdit" type="text" maxlength="256" name="searchdate"></td></tr>
272     <tr><td align="center" style="border-width: 0 0 1 0; border-style: solid"><input name="searchusers" class="frmLoginButton" type="submit" value="Искать пользователей"></td></tr>
273     </form>
274     <tr><td align="center"><b>Загрузка вопросов из текстового файла</b><br>&nbsp;</td></tr>
275     <form name="loadquestfile" action="?cmd=load" enctype="multipart/form-data" method="POST">
276     <tr><td align="center"><input type="hidden" name="MAX_FILE_SIZE" value="5242880">Файл: <input class="frmLoginEdit" type="file" name="loadfilename"></td></tr>
277     <tr><td align="center"><input type="checkbox" name="loadoverwrite"> Перезаписать БД вопросов</td></tr>
278     <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.submit(); else alert ('Выберите файл');"></td></tr>
279     </form>
280     <tr><td align="center"><b>Инициализация / очистка базы данных</b><br>&nbsp;</td></tr>
281     <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>
282     <tr><td align="center" bgcolor="#FFF0E0">Powered by VMX, 2006</td></tr>
283     </table>
284     </body>
285     </html>
286     <!-- А здесь совсем конец -->