EIOS/inc/polls.php

790 lines
32 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?
$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');
}
?>