EIOS/inc/polls.php

790 lines
32 KiB
PHP
Raw Permalink Normal View History

2023-12-28 15:39:22 +03:00
<?
$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');
}
?>