790 lines
32 KiB
PHP
790 lines
32 KiB
PHP
|
<?
|
|||
|
$id_user = $_SESSION['user']['id'];
|
|||
|
|
|||
|
$student_info = get_student($id_user); //берем информацию о студенте
|
|||
|
|
|||
|
$message = ''; //контейнер для сообщений
|
|||
|
|
|||
|
if ($_GET['page'] == 'edit'){
|
|||
|
$id = $_GET['des'];
|
|||
|
if(isset($_POST['edit_polls'])){
|
|||
|
//echo '<pre>'.print_r($_POST,1).'</pre>';exit();
|
|||
|
$name = addslashes($_POST['name']);
|
|||
|
$status = $_POST['status'];
|
|||
|
$access_fo = $_POST['access_fo']; //ограничение по форме обучения (если 0, то нет ограничений)
|
|||
|
|
|||
|
$sql = 'UPDATE '.$ST['dbpf'].'_anketa SET name="'.$name.'", status="'.$status.'", access_fo="'.$access_fo.'" WHERE id='.$id;
|
|||
|
$rez = $DB->QUR($sql);
|
|||
|
$message = 'Опрос успешно отредактирован';
|
|||
|
save_logs('Редактирование опроса №'.$id);
|
|||
|
$_GET['page'] = 'view';
|
|||
|
}
|
|||
|
|
|||
|
//берем информацию о самом опросе
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_anketa WHERE id = "'.$id.'" ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
$anketa = $rez[1];
|
|||
|
}
|
|||
|
//echo '<pre>'.print_r($anketa,1).'</pre>';exit();
|
|||
|
//Array(
|
|||
|
// [id] => 6
|
|||
|
// [id_user] => 1
|
|||
|
// [name] => ОЦЕНКА ВУЗА И ОБРАЗОВАТЕЛЬНОГО ПРОЦЕССА В ЦЕЛОМ (30.10.23-30.11.23)
|
|||
|
// [status] => 1
|
|||
|
// [date_create] => 1698664532
|
|||
|
// [access_fo] => ОФО
|
|||
|
//)
|
|||
|
$smarty->assign('anketa', $anketa);
|
|||
|
$smarty->assign('des', 'edit');
|
|||
|
$maincontent = $smarty->fetch('tpl_polls.html');
|
|||
|
}
|
|||
|
//ПРОСМОТР ДОСТУПНЫХ ДЛЯ РЕДАКТИРОВАНИЯ АНКЕТ
|
|||
|
if ($_GET['page'] == 'view'){
|
|||
|
|
|||
|
//создание опроса
|
|||
|
if (isset($_POST['add_polls'])){
|
|||
|
$name = addslashes($_POST['name']);
|
|||
|
$status = $_POST['status'];
|
|||
|
$access_fo = $_POST['access_fo']; //ограничение по форме обучения (если 0, то нет ограничений)
|
|||
|
|
|||
|
$sql = 'INSERT INTO '.$ST['dbpf'].'_anketa (id_user, name, status, date_create, access_fo) VALUES ("'.$id_user.'", "'.$name.'", "'.$status.'", "'.date("U").'", "'.$access_fo.'") ';
|
|||
|
//echo $sql;
|
|||
|
$rez = $DB->QUR($sql);
|
|||
|
$id = mysql_insert_id();
|
|||
|
|
|||
|
$message = 'Опрос успешно создан';
|
|||
|
save_logs('Создан новый опрос №'.$id);
|
|||
|
}
|
|||
|
|
|||
|
//выводим опросы
|
|||
|
$polls = array();
|
|||
|
//$sql = 'SELECT * FROM '.$ST['dbpf'].'_anketa WHERE id_user = "'.$id_user.'" ';
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_anketa ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
|
|||
|
/*$val['date_born'] = date('d.m.Y', $val['date_born']);
|
|||
|
$val['date_doc'] = date('d.m.Y', $val['date_doc']);
|
|||
|
$val['date_edu'] = date('d.m.Y', $val['date_edu']);*/
|
|||
|
$val['date_create'] = date('d.m.Y', $val['date_create']);
|
|||
|
$polls[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
$smarty->assign('polls', $polls);
|
|||
|
$smarty->assign('message', $message);
|
|||
|
$smarty->assign('des', 'view');
|
|||
|
$maincontent = $smarty->fetch('tpl_polls.html');
|
|||
|
}
|
|||
|
|
|||
|
//ПРОСМОТР РЕЗУЛЬТАТОВ ОПРОСА ПО ФАКУЛЬТЕТАМ
|
|||
|
if ($_GET['page'] == 'resultFakultet'){
|
|||
|
$id = $_GET['des'];
|
|||
|
|
|||
|
//список факультетов
|
|||
|
$faculties = array();
|
|||
|
//$sql = 'SELECT * FROM '.$ST['dbpf'].'_faculties WHERE id_school = 1 OR id_school = 2 '; //1 - МГТУ, основной вуз, 2 - филиал
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_faculties WHERE NOT (id_school = 0) '; //1 - МГТУ, основной вуз, 2 - филиал
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
|
|||
|
|
|||
|
$val['count'] = 0; //количество проголосовавших
|
|||
|
$faculties[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//сами вопросы теста
|
|||
|
$questions = array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_anketa_questions WHERE id_anketa = "'.$id.'" AND NOT (type = "title") ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
|
|||
|
|
|||
|
//смотрим варианты ответов
|
|||
|
$val['answers'] = array();
|
|||
|
$sql_ans = 'SELECT * FROM '.$ST['dbpf'].'_anketa_answers WHERE id_question = "'.$val['id'].'" GROUP BY value';
|
|||
|
$rez_ans = $DB->QUR_SEL($sql_ans);
|
|||
|
if ($rez_ans){
|
|||
|
foreach ($rez_ans as $key_ans => $val_ans) if ($key_ans){
|
|||
|
|
|||
|
//смотрим, кто сколько ответил
|
|||
|
$val_ans['count'] = array();
|
|||
|
foreach ($faculties as $kf => $val_fak) {
|
|||
|
|
|||
|
$val_ans['count'][$val_fak['id']] = 0; //в начале ставим всем по нулям, это значит, что по умолчанию никто не принял участие в опросе
|
|||
|
}
|
|||
|
|
|||
|
//теперь перебираем все варианты ответа и распределяем голоса
|
|||
|
$sql_voice = 'SELECT * FROM '.$ST['dbpf'].'_anketa_answers WHERE id_question = "'.$val['id'].'" AND value = "'.$val_ans['value'].'" ';
|
|||
|
$rez_voice = $DB->QUR_SEL($sql_voice);
|
|||
|
if ($rez_voice){
|
|||
|
foreach ($rez_voice as $key_voice => $val_voice) if ($key_voice){
|
|||
|
//смотрим какой студент проголосовал - нужно определить факультет
|
|||
|
$student = get_student($val_voice['id_user']);
|
|||
|
|
|||
|
//смотрим какой факультет
|
|||
|
$gruppa = get_grupp($student['id_grupp']);
|
|||
|
|
|||
|
//начисляем голос в пользу того или иного факультета
|
|||
|
if ($gruppa['id_facult'] > 0) {
|
|||
|
$val_ans['count'][$gruppa['id_facult']]++; //считаем только если указан факультет!
|
|||
|
|
|||
|
//ДОБАВЛЯЕМ ГОЛОСА К ФАКУЛЬТЕТУ
|
|||
|
foreach ($faculties as $kf => $val_fak){
|
|||
|
if ($val_fak['id'] == $gruppa['id_facult']) $faculties[$kf]['count']++; //добавляем к faculties, чтобы глобально изменить переменную с количеством голосов
|
|||
|
|
|||
|
//echo $val_fak['id'].' = '.$gruppa['id_facult'].' => '.$val_fak['count'].'<br />';
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/***/
|
|||
|
$val['answers'][] = $val_ans;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
$questions[] = $val;
|
|||
|
}
|
|||
|
|
|||
|
//количество вопросов
|
|||
|
$count_question = $rez[0];
|
|||
|
}
|
|||
|
|
|||
|
$all_voice = 0; //всего принявших участие в опросе
|
|||
|
//теперь делим голоса на количество вопросов и находим реально число проголосовавших на факультете
|
|||
|
foreach ($faculties as $kf => $val_fak){
|
|||
|
$faculties[$kf]['count'] = $faculties[$kf]['count']/$count_question;
|
|||
|
$all_voice += $faculties[$kf]['count'];
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//для отладки
|
|||
|
/*echo '<pre>';
|
|||
|
print_r($faculties);
|
|||
|
echo '</pre>';*/
|
|||
|
|
|||
|
//exit;
|
|||
|
//echo $faculties[2]['id'];
|
|||
|
|
|||
|
/***/
|
|||
|
|
|||
|
$smarty->assign('all_voice', $all_voice); //количество принявших участие в опросе
|
|||
|
$smarty->assign('faculties', $faculties);
|
|||
|
$smarty->assign('questions', $questions);
|
|||
|
$maincontent = $smarty->fetch('tpl_polls_result_fakultet.html');
|
|||
|
}
|
|||
|
|
|||
|
//ПРОСМОТР РЕЗУЛЬТАТОВ ВСЕГО ВУЗА
|
|||
|
if ($_GET['page'] == 'result'){
|
|||
|
$id = $_GET['des'];
|
|||
|
|
|||
|
//список факультетов
|
|||
|
$faculties = array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_faculties WHERE NOT (id_school = 0) '; //1 - МГТУ, основной вуз, 2 - филиал
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
|
|||
|
$faculties[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//смотрим результаты (кто проходил)
|
|||
|
$result = array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_anketa_answers WHERE id_anketa = "'.$id.'" GROUP BY id_user ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
$count = 0; //всего студентов, принявших участие в опросе
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
|
|||
|
$val['date_create'] = date('d.m.Y', $val['date_create']);
|
|||
|
$val['user'] = get_user($val['id_user']);
|
|||
|
$val['student'] = get_student($val['id_user']);
|
|||
|
|
|||
|
$count++;
|
|||
|
|
|||
|
$result[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//СТАТИСТИКА
|
|||
|
//список вопросов
|
|||
|
$questions = array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_anketa_questions WHERE id_anketa = "'.$id.'" AND NOT (type = "title") GROUP BY name ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
|
|||
|
//варианты ответов в системе
|
|||
|
$val['answers'] = array();
|
|||
|
$sql_ans = 'SELECT * FROM '.$ST['dbpf'].'_anketa_answers WHERE id_question = "'.$val['id'].'" GROUP BY value ';
|
|||
|
$rez_ans = $DB->QUR_SEL($sql_ans);
|
|||
|
if ($rez_ans){
|
|||
|
foreach ($rez_ans as $key2 => $val2) if ($key2){
|
|||
|
|
|||
|
//смотрим сколько выбравших этот вариант ответа
|
|||
|
$sql_count = 'SELECT id FROM '.$ST['dbpf'].'_anketa_answers WHERE id_question = "'.$val['id'].'" AND value = "'.$val2['value'].'" GROUP BY id_user';
|
|||
|
$rez_count = $DB->QUR_SEL($sql_count);
|
|||
|
if ($rez_count){
|
|||
|
$val2['count'] = $rez_count[0];
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
$val['answers'][] = $val2;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
$questions[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/*********/
|
|||
|
$smarty->assign('id', $id); //сам тест - айдишник
|
|||
|
$smarty->assign('count', $count); //количество прошедших опрос
|
|||
|
$smarty->assign('result', $result); //кто прошел опрос
|
|||
|
$smarty->assign('questions', $questions); //статистика - сами вопросы анкеты
|
|||
|
$smarty->assign('faculties', $faculties); //список факультетов
|
|||
|
$maincontent = $smarty->fetch('tpl_polls_result.html');
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//ПРОСМОТР КОНКРЕТНОГО РЕЗУЛЬТАТА ЧЕЛОВЕКА
|
|||
|
if ($_GET['page'] == 'result_acc'){
|
|||
|
$id = $_GET['des'];
|
|||
|
|
|||
|
//определяем какая анкета/опрос и какой пользователь проходил опрос
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_anketa_answers WHERE id = "'.$id.'" ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
$student = $rez[1]['id_user'];
|
|||
|
$anketa = $rez[1]['id_anketa'];
|
|||
|
|
|||
|
//теперь смотрим результаты определенного студента по определенному опросу
|
|||
|
$answers = array();
|
|||
|
$sql2 = 'SELECT ans.*, quest.* FROM '.$ST['dbpf'].'_anketa_answers as ans, '.$ST['dbpf'].'_anketa_questions as quest WHERE ans.id_user = "'.$student.'" AND ans.id_anketa = "'.$anketa.'" AND quest.id = ans.id_question ';
|
|||
|
$rez2 = $DB->QUR_SEL($sql2);
|
|||
|
if ($rez2){
|
|||
|
foreach ($rez2 as $key2 => $val2) if ($key2){
|
|||
|
$answers[] = $val2;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
$smarty->assign('answers', $answers);
|
|||
|
$maincontent = $smarty->fetch('tpl_polls_result_acc.html');
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//удаление конкретного результата
|
|||
|
if ($_GET['page'] == 'delete_acc'){
|
|||
|
|
|||
|
$id = $_GET['des'];
|
|||
|
|
|||
|
//определяем какой опрос и какой человек
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_anketa_answers WHERE id = "'.$id.'" ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
$id_us = $rez[1]['id_user'];
|
|||
|
$id_anketa = $rez[1]['id_anketa'];
|
|||
|
|
|||
|
//удаляем результаты
|
|||
|
$sql_del = 'DELETE FROM '.$ST['dbpf'].'_anketa_answers WHERE id_anketa = "'.$id_anketa.'" AND id_user = "'.$id_us.'" ';
|
|||
|
$rez_del = $DB->QUR_SEL($sql_del);
|
|||
|
save_logs("Удаление результатов опроса ".$id_us." по анкете ".$id_anketa);
|
|||
|
}
|
|||
|
|
|||
|
$message = 'Результаты пользователя успешно удалены';
|
|||
|
$link = '/polls/result/'.$id_anketa.'/';
|
|||
|
|
|||
|
$smarty->assign('message', $message);
|
|||
|
$smarty->assign('link', $link);
|
|||
|
$maincontent = $smarty->fetch('tpl_refresh.html');
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//ВОПРОСЫ АНКЕТЫ-ОПРОСА
|
|||
|
if ($_GET['page'] == 'questions'){
|
|||
|
$id = $_GET['des'];
|
|||
|
|
|||
|
//добавляем вопрос в анкету
|
|||
|
if (isset($_POST['add_question'])){
|
|||
|
$id_anketa = $_POST['id_anketa'];
|
|||
|
$name = addslashes($_POST['name']);
|
|||
|
$type = $_POST['type'];
|
|||
|
$options = addslashes($_POST['options']);
|
|||
|
$status = $_POST['status'];
|
|||
|
|
|||
|
$sql = 'INSERT INTO '.$ST['dbpf'].'_anketa_questions (id_anketa, name, type, options, status) VALUES ("'.$id_anketa.'", "'.$name.'", "'.$type.'", "'.$options.'", "'.$status.'")';
|
|||
|
$rez = $DB->QUR($sql);
|
|||
|
$id_last = mysql_insert_id();
|
|||
|
|
|||
|
$message = 'Вопрос успешно добавлен';
|
|||
|
save_logs('Для опроса добавлен новый вопрос №'.$id_last);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//берем информацию о самом опросе
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_anketa WHERE id = "'.$id.'" ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
$anketa = $rez[1];
|
|||
|
}
|
|||
|
|
|||
|
//берем сами вопросы в данном опросе
|
|||
|
$questions = array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_anketa_questions WHERE id_anketa = "'.$id.'" ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach($rez as $key => $val) if ($key){
|
|||
|
$val['options'] = nl2br($val['options']);
|
|||
|
$questions[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/****/
|
|||
|
$smarty->assign('message', $message);
|
|||
|
$smarty->assign('anketa', $anketa);
|
|||
|
$smarty->assign('questions', $questions);
|
|||
|
$maincontent = $smarty->fetch('tpl_polls_questions.html');
|
|||
|
}
|
|||
|
|
|||
|
//ПРОХОЖДЕНИЕ ОПРОСА
|
|||
|
if ($_GET['page'] == 'taking'){
|
|||
|
|
|||
|
//человек отправил результаты опроса
|
|||
|
if (isset($_POST['taking_poll'])){
|
|||
|
$id_anketa = $_POST["anketa"];
|
|||
|
$date_create = date("U");
|
|||
|
$quest = $_POST['quest'];
|
|||
|
|
|||
|
foreach ($quest as $key => $val){
|
|||
|
|
|||
|
$sql = 'INSERT INTO '.$ST['dbpf'].'_anketa_answers (id_user, id_question, date_create, value, id_anketa) VALUES ("'.$id_user.'", "'.$key.'", "'.$date_create.'", "'.$val.'", "'.$id_anketa.'")';
|
|||
|
$rez = $DB->QUR($sql);
|
|||
|
|
|||
|
$message = 'Опрос успешно пройден';
|
|||
|
save_logs('Пользователь прошел анкету-опрос №'.$id_anketa);
|
|||
|
}
|
|||
|
|
|||
|
//print_r($_POST['quest']);
|
|||
|
}
|
|||
|
|
|||
|
//если не выбран конкретный опрос, то отображаем все
|
|||
|
if (!isset($_GET['des'])){
|
|||
|
//когда не выбран конкретный опрос, то отображать в списке все опросы. Каждый опрос доступен для прохождения только один раз!
|
|||
|
$polls = array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_anketa WHERE status = 1 ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
|
|||
|
$val['date_create'] = date('d.m.Y', $val['date_create']);
|
|||
|
|
|||
|
$polls[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//также отображаем информацию о группе
|
|||
|
$gruppa = get_grupp($student_info['id_grupp']);
|
|||
|
|
|||
|
//теперь определяем какой семестр выводить
|
|||
|
//для этого первым делом узнаем курс
|
|||
|
$kurs = courseOfGruppa($student_info['id_grupp']);
|
|||
|
//теперь смотрим какой месяц
|
|||
|
//если март-апрель, то смотрим нечетный семестр текущего курса. Если октябрь-ноябрь - то смотрим четный семестр прошлого курса
|
|||
|
if (date('m') == 3) $sem = $kurs * 2 - 1;
|
|||
|
elseif (date('m') == 4) $sem = $kurs * 2 - 1;
|
|||
|
elseif (date('m') == 5) $sem = $kurs * 2 - 1;
|
|||
|
elseif (date('m') == 6) $sem = $kurs * 2 - 1;
|
|||
|
elseif (date('m') == 10) $sem = ($kurs-1) * 2;
|
|||
|
elseif (date('m') == 11) $sem = ($kurs-1) * 2;
|
|||
|
elseif (date('m') == 12) $sem = ($kurs-1) * 2;
|
|||
|
else $sem = 0;
|
|||
|
|
|||
|
//если человек уже проходил опрос, то также выводим ошибку
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_teacher_evalution_polls WHERE id_grupp = "'.$student_info['id_grupp'].'" AND id_user = "'.$student_info['id_user'].'" AND semestr = "'.$sem.'" GROUP BY id_user ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
//echo $sql.'<pre>'.print_r($rez,1).'</pre>';exit();
|
|||
|
//SELECT * FROM acs_teacher_evalution_polls WHERE id_grupp = "286" AND id_user = "20661" AND semestr = "6" GROUP BY id_user
|
|||
|
//Array(
|
|||
|
// [0] => 1
|
|||
|
// [1] => Array(
|
|||
|
// [id] => 254889
|
|||
|
// [id_grupp] => 286
|
|||
|
// [id_user] => 20661
|
|||
|
// [predmet] => Безопасность жизнедеятельности
|
|||
|
// [teacher] => Цикуниб Саньят Моссовна
|
|||
|
// [critery_num] => Преподаватель доступно и ясно объясняет материал
|
|||
|
// [mark] => 10
|
|||
|
// [date_create] => 1699588406
|
|||
|
// [semestr] => 6
|
|||
|
// )
|
|||
|
//)
|
|||
|
if ($rez) {//количество прохождений
|
|||
|
$count_poll_teach = $rez[0];
|
|||
|
$data_poll_teach = $rez[1];
|
|||
|
}
|
|||
|
else {
|
|||
|
$count_poll_teach = 0;
|
|||
|
$data_poll_teach = array();
|
|||
|
}
|
|||
|
|
|||
|
//*****
|
|||
|
$smarty->assign('count_poll_teach', $count_poll_teach);
|
|||
|
$smarty->assign('data_poll_teach', $data_poll_teach);
|
|||
|
$smarty->assign('kurs', $kurs);
|
|||
|
$smarty->assign('sem', $sem);
|
|||
|
$smarty->assign('gruppa', $gruppa);
|
|||
|
$smarty->assign('polls', $polls);
|
|||
|
|
|||
|
} else{ //если выбран конкретный
|
|||
|
$id = $_GET['des'];
|
|||
|
|
|||
|
//смотрим какая форма обучения
|
|||
|
$fo = $student_info['fo'];
|
|||
|
|
|||
|
//смотрим какие есть ограничения по форме обучения
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_anketa WHERE id = "'.$id.'" ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
$access_fo = $rez[1]['access_fo'];
|
|||
|
|
|||
|
$access = 0; //переменная доступа - изначально доступ есть
|
|||
|
if ($access_fo == "0"){
|
|||
|
|
|||
|
} else{
|
|||
|
if ($access_fo != $fo) $access = 1;
|
|||
|
}
|
|||
|
|
|||
|
//$access = $fo.';'.$access_fo;
|
|||
|
|
|||
|
|
|||
|
//определяем, проходил ли опрос пользователь уже
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_anketa_answers WHERE id_anketa = "'.$id.'" AND id_user = "'.$id_user.'" ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
//echo $sql.'<pre>'.print_r($rez,1).'</pre>';exit();
|
|||
|
//SELECT * FROM acs_anketa_answers WHERE id_anketa = "6" AND id_user = "20786"
|
|||
|
//Array(
|
|||
|
// [0] => 64
|
|||
|
// [1] => Array( [id] => 127922 [id_user] => 20786 [id_question] => 82
|
|||
|
// [date_create] => 1699600414 [value] => да [id_anketa] => 6 )
|
|||
|
// [2] => Array ( [id] => 127923 [id_user] => 20786 [id_question] => 83
|
|||
|
// [date_create] => 1699600414 [value] => да [id_anketa] => 6 )
|
|||
|
if ($rez){
|
|||
|
$count = $rez[0];
|
|||
|
$answers = $rez;
|
|||
|
}else{
|
|||
|
$answers = array();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
$questions = array(); //список вопросов
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_anketa_questions WHERE id_anketa = "'.$id.'" ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
|
|||
|
$val['option'] = explode("\n", $val['options']);
|
|||
|
|
|||
|
|
|||
|
$questions[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/***/
|
|||
|
$smarty->assign('id', $id);
|
|||
|
$smarty->assign('access', $access); //переменная доступа
|
|||
|
$smarty->assign('count', $count);
|
|||
|
$smarty->assign('answers', $answers);
|
|||
|
$smarty->assign('questions', $questions);
|
|||
|
}
|
|||
|
|
|||
|
/*общие поля*/
|
|||
|
$smarty->assign('message', $message);
|
|||
|
$maincontent = $smarty->fetch('tpl_polls_taking.html');
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//ОЦЕНКА ДИСЦИПЛИНЫ И ПРЕПОДАВАТЕЛЯ
|
|||
|
//ДЕКАНАТ - список групп факультета
|
|||
|
if ($_GET['page'] == 'teachers'){
|
|||
|
|
|||
|
//добавление преподавателя-дисциплины в список для группы
|
|||
|
if (isset($_POST['add_teacher_ev'])){
|
|||
|
$grupp = (int) $_POST['grupp'];
|
|||
|
$sem = (int) $_POST['sem'];
|
|||
|
|
|||
|
$predmet = $_POST['predmet'];
|
|||
|
$teacher = $_POST['teacher'];
|
|||
|
|
|||
|
$sql = 'INSERT INTO '.$ST['dbpf'].'_teacher_evalution (id_grupp, semestr, predmet, teacher) VALUES ("'.$grupp.'", "'.$sem.'", "'.$predmet.'", "'.$teacher.'") ';
|
|||
|
$rez = $DB->QUR($sql);
|
|||
|
|
|||
|
save_logs('Оценка дисциплины и преподавателя - добавление нового пункта для опроса');
|
|||
|
|
|||
|
header('Location: /polls/teachers/'.$grupp.'/'.$sem.'/');
|
|||
|
exit;
|
|||
|
}
|
|||
|
|
|||
|
if (!isset($_GET['des'])){ //не выбрана конкретная группа, с которой работаем
|
|||
|
$fakultet = $_SESSION['user']['teacher']['fakultet'];
|
|||
|
|
|||
|
$str_grupps = '';
|
|||
|
//формируем список групп факультета
|
|||
|
$grupps = array();
|
|||
|
//$sql = 'SELECT gr.* FROM '.$ST['dbpf'].'_grupp as gr WHERE gr.kurs < 7 AND NOT (gr.name LIKE "%выпуск%") ORDER BY gr.sokr, gr.kurs ';
|
|||
|
$sql = 'SELECT gr.*, gr.id as id_grupp, fac.* FROM '.$ST['dbpf'].'_grupp as gr, '.$ST['dbpf'].'_faculties as fac WHERE fac.name="'.$fakultet.'" AND gr.id_facult=fac.id AND gr.kurs < 7 AND NOT (gr.sokr LIKE "%выпуск%") ORDER BY gr.sokr, gr.kurs ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
$str_grupps .= $val['id_grupp'].',';
|
|||
|
$grupps[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//ТАКЖЕ СМОТРИМ ОБЩЕЕ КОЛИЧЕСТВО ПРОШЕДШИХ ДАННЫЙ ОПРОС ПО ФАКУЛЬТЕТУ ПО СЕМЕСТРАМ (ЧЕТНЫЙ-НЕЧЕТНЫЙ)
|
|||
|
$str_grupps .= '0';
|
|||
|
$sql_count = 'SELECT * FROM '.$ST['dbpf'].'_teacher_evalution_polls WHERE id_grupp IN ('.$str_grupps.') GROUP BY id_user';
|
|||
|
$rez_count = $DB->QUR_SEL($sql_count);
|
|||
|
|
|||
|
|
|||
|
/***/
|
|||
|
$smarty->assign('grupps', $grupps);
|
|||
|
//$smarty->assign('count_fakultet', $rez_count[0]);
|
|||
|
$smarty->assign('count_fakultet', $rez_count[0]);
|
|||
|
} else{ //выбрана группа и по логике - семестр
|
|||
|
$id = $_GET['des'];
|
|||
|
$sem = $_GET['sem'];
|
|||
|
$gruppa = get_grupp($id);
|
|||
|
//достаем список дисциплин данной группы за выбраный семестр из ведомостей
|
|||
|
//надо ограничить список годом обучения!
|
|||
|
$sql_year = '';
|
|||
|
if(date('m')>=9)
|
|||
|
$data_c1 = mktime(0,0,0,8,1,date('Y'));
|
|||
|
else
|
|||
|
$data_c1 = mktime(0,0,0,8,1,date('Y')-1);
|
|||
|
$sql_year = ' AND st.date_create>='.$data_c1.' ';
|
|||
|
$disc = array();
|
|||
|
$sql = 'SELECT st.*, liq.* FROM '.$ST['dbpf'].'_statement as st, '.$ST['dbpf'].'_liquidation as liq WHERE st.id_grupp = "'.$id.'" AND liq.id_stat = st.id AND liq.semestr = "'.$sem.'"'.$sql_year.' GROUP BY liq.name';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
//echo $sql.'<pre>'.print_r($rez,1).'</pre>'; exit();
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
$val['teacher'] = get_user($val['id_teacher']);
|
|||
|
$disc[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
//а теперь список дисциплин, которые деканат вбил вручную
|
|||
|
$disc2 = array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_teacher_evalution WHERE id_grupp = "'.$id.'" AND semestr = "'.$sem.'" ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
$disc2[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
//список преподавателей актуальный
|
|||
|
$teachers = all_teachers();
|
|||
|
/****/
|
|||
|
$smarty->assign('teachers', $teachers);
|
|||
|
$smarty->assign('disc', $disc);
|
|||
|
$smarty->assign('disc2', $disc2);
|
|||
|
$smarty->assign('sem', $sem);
|
|||
|
$smarty->assign('gruppa', $gruppa);
|
|||
|
$smarty->assign('id', $id);
|
|||
|
}
|
|||
|
$maincontent = $smarty->fetch('tpl_polls_teachers.html');
|
|||
|
}
|
|||
|
|
|||
|
//критерии
|
|||
|
$critery = array();
|
|||
|
$critery[] = 'Преподаватель доступно и ясно объясняет материал';
|
|||
|
$critery[] = 'Преподаватель заранее объяснил критерии, используемые при оценке экзамена/зачета';
|
|||
|
$critery[] = 'Доброжелательность, тактичность преподавателя со студентами';
|
|||
|
$critery[] = 'Преподаватель объясняет значение данной дисциплины для будущей профессии';
|
|||
|
$critery[] = 'Преподаватель умеет организовать интересную дискуссию по теме занятия';
|
|||
|
$critery[] = 'Возможность внеаудиторного общения по учебным и научным вопросам';
|
|||
|
$critery[] = 'Полезность курса (дисциплины) для расширения кругозора и разностороннего развития';
|
|||
|
$critery[] = 'Сложность курса (дисциплины) для успешного прохождения (1 - очень легкий, 10 - курс очень сложный)';
|
|||
|
|
|||
|
//СТУДЕНТУ - прохождение опроса по оценке преподавателя
|
|||
|
if ($_GET['page'] == 'teachersPoll'){
|
|||
|
|
|||
|
//СТУДЕНТ ПРОШЕЛ ОПРОС ПО ПРЕПОДАМ
|
|||
|
if (isset($_POST['polls_teachers'])){
|
|||
|
//echo '<pre>'; print_r($_POST); echo '</pre>';
|
|||
|
|
|||
|
$id_user = $_SESSION['user']['id']; //кто проходил
|
|||
|
$id_grupp = (int) $_POST['gruppa'];
|
|||
|
$sem = (int) $_POST['sem'];
|
|||
|
|
|||
|
foreach ($_POST['mark_teacher'] as $key => $val){
|
|||
|
//echo $key; //дисциплина
|
|||
|
foreach ($val as $key2 => $val2){
|
|||
|
//echo $key2; //преподаватель
|
|||
|
foreach ($val2 as $key3 => $val3){
|
|||
|
//echo $key3; //критерий
|
|||
|
//echo $val3; //оценка
|
|||
|
|
|||
|
//добавляем в БД запись с оценкой по определенному предмету и преподавателю за семестр, а также дату прохождения опроса
|
|||
|
$sql = 'INSERT INTO '.$ST['dbpf'].'_teacher_evalution_polls (`id_grupp`, `id_user`, `predmet`, `teacher`, `critery_num`, `mark`, `date_create`, `semestr`) VALUES ("'.$id_grupp.'", "'.$id_user.'", "'.$key.'", "'.$key2.'", "'.$key3.'", "'.$val3.'", "'.date("U").'", "'.$sem.'") ';
|
|||
|
$rez = $DB->QUR($sql);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
save_logs('Прохождение студентом опроса Оценка дисциплины и преподавателя');
|
|||
|
header('Location: /polls/taking/');
|
|||
|
exit;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/*****/
|
|||
|
$id = $_GET['des']; //группа
|
|||
|
$sem = $_GET['sem']; //семестр
|
|||
|
|
|||
|
//достаем список дисциплин данной группы за выбраный семестр из ведомостей
|
|||
|
$disc = array();
|
|||
|
$sql = 'SELECT st.*, liq.* FROM '.$ST['dbpf'].'_statement as st, '.$ST['dbpf'].'_liquidation as liq WHERE st.id_grupp = "'.$id.'" AND liq.id_stat = st.id AND liq.semestr = "'.$sem.'" GROUP BY liq.name';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
$val['teacher'] = get_user($val['id_teacher']);
|
|||
|
$disc[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//а теперь список дисциплин, которые деканат вбил вручную
|
|||
|
$disc2 = array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_teacher_evalution WHERE id_grupp = "'.$id.'" AND semestr = "'.$sem.'" ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
$disc2[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/*****/
|
|||
|
|
|||
|
$smarty->assign('disc', $disc);
|
|||
|
$smarty->assign('disc2', $disc2);
|
|||
|
$smarty->assign('sem', $sem);
|
|||
|
$smarty->assign('critery', $critery);
|
|||
|
$smarty->assign('id', $id);
|
|||
|
$maincontent = $smarty->fetch('tpl_polls_taking_teach.html');
|
|||
|
}
|
|||
|
|
|||
|
//ДЕКАНАТУ - просмотр результатов опроса Оценка преподавателя и дисциплины
|
|||
|
if ($_GET['page'] == 'teachersResult'){
|
|||
|
$id = $_GET['des']; //группа
|
|||
|
$sem = $_GET['sem']; //семестр
|
|||
|
|
|||
|
$gruppa = get_grupp($id);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//достаем список дисциплин данной группы за выбраный семестр из ведомостей
|
|||
|
$disc = array();
|
|||
|
$sql = 'SELECT st.*, liq.* FROM '.$ST['dbpf'].'_statement as st, '.$ST['dbpf'].'_liquidation as liq WHERE st.id_grupp = "'.$id.'" AND liq.id_stat = st.id AND liq.semestr = "'.$sem.'" GROUP BY liq.name';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
$val['teacher'] = get_user($val['id_teacher']);
|
|||
|
$disc[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//а теперь список дисциплин, которые деканат вбил вручную
|
|||
|
$disc2 = array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_teacher_evalution WHERE id_grupp = "'.$id.'" AND semestr = "'.$sem.'" ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
$disc2[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
$resultats = array(); //массив результатов - собираем преподов и все критерии оценки
|
|||
|
//в начале перебираем дисциплины из ведомостей
|
|||
|
foreach ($disc as $key => $val) {
|
|||
|
$val['fio'] = $val['teacher']['fio'];
|
|||
|
$val['predmet'] = $val['name'];
|
|||
|
|
|||
|
$val['sum_mark'] = 0; //сумма баллов
|
|||
|
|
|||
|
//проходимся по критериям и записываем оценки
|
|||
|
foreach ($critery as $key_cr => $crit){
|
|||
|
$val[$key_cr+1] = 0;
|
|||
|
|
|||
|
//находим средний балл
|
|||
|
$sql_sb = 'SELECT AVG(mark) as avg_mark FROM '.$ST['dbpf'].'_teacher_evalution_polls WHERE id_grupp = "'.$id.'" AND predmet = "'.$val['predmet'].'" AND teacher = "'.$val['fio'].'" AND critery_num = "'.$crit.'" AND semestr = "'.$sem.'" ';
|
|||
|
$rez_sb = $DB->QUR_SEL($sql_sb);
|
|||
|
|
|||
|
$val[$key_cr+1] = $rez_sb[1]['avg_mark']; //записываем в критерий
|
|||
|
$val['sum_mark'] += $val[$key_cr+1];
|
|||
|
//echo '<pre>'; print_r($rez_sb[1]); echo '</pre>';
|
|||
|
}
|
|||
|
|
|||
|
$resultats[] = $val;
|
|||
|
}
|
|||
|
//теперь вручную вбитое
|
|||
|
foreach ($disc2 as $key => $val) {
|
|||
|
$val['fio'] = $val['teacher'];
|
|||
|
//$val['predmet'] = $val['name'];
|
|||
|
|
|||
|
$val['sum_mark'] = 0; //сумма баллов
|
|||
|
|
|||
|
//проходимся по критериям и записываем оценки
|
|||
|
foreach ($critery as $key_cr => $crit){
|
|||
|
$val[$key_cr+1] = 0;
|
|||
|
|
|||
|
//находим средний балл
|
|||
|
$sql_sb = 'SELECT AVG(mark) as avg_mark FROM '.$ST['dbpf'].'_teacher_evalution_polls WHERE id_grupp = "'.$id.'" AND predmet = "'.$val['predmet'].'" AND teacher = "'.$val['fio'].'" AND critery_num = "'.$crit.'" AND semestr = "'.$sem.'" ';
|
|||
|
$rez_sb = $DB->QUR_SEL($sql_sb);
|
|||
|
|
|||
|
$val[$key_cr+1] = $rez_sb[1]['avg_mark']; //записываем в критерий
|
|||
|
$val['sum_mark'] += $val[$key_cr+1];
|
|||
|
//echo '<pre>'; print_r($rez_sb[1]); echo '</pre>';
|
|||
|
}
|
|||
|
|
|||
|
$resultats[] = $val;
|
|||
|
}
|
|||
|
|
|||
|
//также считаем, сколько студентов приняло участие в данном опросе
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_teacher_evalution_polls WHERE id_grupp = "'.$id.'" AND semestr = "'.$sem.'" GROUP BY id_user ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
$count = $rez[0];
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/*******/
|
|||
|
$smarty->assign('count', $count);
|
|||
|
$smarty->assign('gruppa', $gruppa);
|
|||
|
$smarty->assign('resultats', $resultats);
|
|||
|
|
|||
|
$smarty->assign('sem', $sem);
|
|||
|
$smarty->assign('critery', $critery);
|
|||
|
$smarty->assign('id', $id);
|
|||
|
$maincontent = $smarty->fetch('tpl_polls_teachers_result.html');
|
|||
|
}
|
|||
|
?>
|