DB = $DB; $this->name = $name; } public function currentUserInfo(){ $currentUserInfo = array(); if(isset($_SESSION['user']['teacher'])) { $currentUserInfo['role'] = 'teacher'; $currentUserInfo['user_id'] = $_SESSION['user']['id']; $currentUserInfo['teacher_id'] = $_SESSION['user']['teacher']['id']; if(isset($_SESSION['user']['teacher']['fakultet'])){ $sql_search = 'SELECT id FROM acs_faculties WHERE name="'. $_SESSION['user']['teacher']['fakultet'] .'"'; $tmp = $this->DB->QUR_SEL($sql_search); unset($tmp[0]); $currentUserInfo['facult']['facult_name'] = $_SESSION['user']['teacher']['fakultet']; $currentUserInfo['facult']['facult_id'] = $tmp[1]['id']; $sql_search = 'SELECT id, sokr, fo FROM acs_grupp WHERE id_facult="'.$tmp[1]['id'] .'" AND sokr NOT LIKE "Выпуск%"'; $tmp = $this->DB->QUR_SEL($sql_search); unset($tmp[0]); foreach($tmp as $grupp){ $currentUserInfo['related_grupps'][$grupp['sokr']] = $grupp ; } } return $currentUserInfo; }else if(isset($_SESSION['user']['student'])) { $currentUserInfo['role'] = 'student'; $currentUserInfo['user_id'] = $_SESSION['user']['id']; $sql_search = 'SELECT * FROM acs_attendancelog_headmen WHERE user_id='. $currentUserInfo['user_id'] .' '; $rez = $this->DB->QUR_SEL($sql_search); if(!isset($rez[1])){ return 0; } $currentUserInfo['student_id'] = $_SESSION['user']['student']['id']; $currentUserInfo['grupp_id'] = $_SESSION['user']['student']['grupp']['id']; if(isset($_SESSION['user']['student']['grupp'])){ $currentUserInfo['facult']['facult_id'] = $_SESSION['user']['student']['grupp']['id_facult']; $sql_search = 'SELECT name FROM acs_faculties WHERE id='. $currentUserInfo['facult']['facult_id'] .' '; $tmp = $this->DB->QUR_SEL($sql_search); unset($tmp[0]); } return $currentUserInfo; } // else if(isset($_SESSION['user']['statuses']['25'])) // { // // }else{ // // } } function getAllGrupps($facult = '') { if($facult != ''){ $sql_search = 'SELECT id, sokr, fo, kurs FROM acs_grupp WHERE fo="ОФО" AND id_facult="'. $facult .'" AND sokr NOT LIKE "Выпуск%" ORDER BY `sokr` DESC'; }else{ $sql_search = 'SELECT id, sokr, fo, kurs FROM acs_grupp WHERE fo="ОФО" AND sokr NOT LIKE "Выпуск%" ORDER BY `sokr` DESC'; } $tmp = $this->DB->QUR_SEL($sql_search); unset($tmp[0]); return $tmp; } function getStudentsByGroup($groupName,$educationForm) { $educationForm = urlencode($educationForm); $groupName = urlencode($groupName); $url = 'https://eios.mkgtu.ru/api.php?des=studentsByGrupp¶m1=' . $groupName . '¶m2=' . $educationForm.'¶m3=1'; return json_decode(file_get_contents($url),1); } function getClassesByGroup($groupName,$educationForm) { $tmp = explode('-', $groupName); $groupName = trim($tmp[0]); $groupNumber = substr($tmp[1],0,2); $educationForm = urlencode($educationForm); $groupName = urlencode($groupName); $groupNumber = urlencode($groupNumber); $url = 'https://local.mkgtu.ru/raspisnew/api.php?des=raspis_grupp&name='. $groupName .'&number='. $groupNumber .'&fo=' . $educationForm; return json_decode(file_get_contents($url),1); //return $url; } function currentTime() { //возвращает информацию о текущем моменте для пользователя $rez = array(); $moment = getdate(); $curr_minutes = $moment['hours'] * 60 + $moment['seconds']; $minutes = 480; for($i = 1; $i < 8; $i++) { //возвращает текущую пару в университете if ($curr_minutes >= $minutes-10 AND $curr_minutes <= $minutes + 90){ $rez['time1'] = $i; } if ($i == 4){ $minutes = $minutes + 110; }else{ $minutes = $minutes + 100; } } $week = json_decode(file_get_contents('https://local.mkgtu.ru/raspisnew/api.php?des=raspis_week_cur'),1); $rez['day1'] = $moment['wday']; $rez['mday'] = $moment['mday']; $rez['mon'] = $moment['mon']; $rez['0'] = $moment['0']; $rez['year'] = $moment['year']; $rez['date'] = date("Y-m-d"); $rez['week1'] = $week['week_cur']; return $rez; } function getGroupNameByID($id) { $sql_search = 'SELECT sokr, fo FROM acs_grupp WHERE id='. $id .' '; $tmp = $this->DB->QUR_SEL($sql_search); return $tmp[1]; } public function getWeekByDate($ts=0) { $url = 'https://local.mkgtu.ru/raspisnew/api.php?des=raspis_week_cur&ts=' . $ts; $awn = json_decode(file_get_contents($url),1); return $awn['week_cur']; } public function predmetsAddEdit($predmet_name){ //принимает имя предмета. Делает запись в таблицу предметов, если такой нет. В любом случае возвращает айди предмета $sql_search = 'SELECT id, name FROM acs_attendancelog_predmets WHERE name="'. $predmet_name .'"'; $search = $this->DB->QUR_SEL($sql_search); if(isset($search[1])){ $search = $search[1]; } if(count($search) == 0){ $sql_insert = 'INSERT INTO acs_attendancelog_predmets (id, name) VALUES (0,"'. $predmet_name .'")'; $rez = $this->DB->QUR($sql_insert); $sql_search = 'SELECT id, name FROM acs_attendancelog_predmets WHERE name="'. $predmet_name .'"'; $search = $this->DB->QUR_SEL($sql_search); if(isset($search[1])){ $search = $search[1]; } } return $search['id']; } public function AttendanceAddEdit() { if(isset($_POST['attendance_add_edit'])){ foreach ($_POST['attendance_add_edit']['attendance'] as $user_id => $student_att){ $sql_search = 'SELECT id FROM acs_attendancelog_students_attendance WHERE user_id="'. $user_id .'" AND gruppa="'. $this->DB->rescape($_POST['attendance_add_edit']['info']['gruppa']) .'" AND date1="'. $this->DB->rescape($_POST['attendance_add_edit']['info']['date']) .'" AND time1='. $this->DB->rescape($_POST['attendance_add_edit']['info']['time1']) .' AND predmet_id="'. $this->DB->rescape($_POST['attendance_add_edit']['info']['predmet_id']) .'" '; $search = $this->DB->QUR_SEL($sql_search); if (isset($search[1])){ $sql_update = 'UPDATE acs_attendancelog_students_attendance SET att=' . $student_att . ' WHERE id='. $search[1]['id'] .' '; $rez = $this->DB->QUR($sql_update); }else { $sql_insert = 'INSERT INTO acs_attendancelog_students_attendance (id, user_id, gruppa, date1, att, time1, predmet_id) VALUES (0,"'.$user_id.'", "'. $this->DB->rescape($_POST['attendance_add_edit']['info']['gruppa']) .'", "'. $this->DB->rescape($_POST['attendance_add_edit']['info']['date']) .'", '. $student_att .', '. $this->DB->rescape($_POST['attendance_add_edit']['info']['time1']) .',"'. $this->DB->rescape($_POST['attendance_add_edit']['info']['predmet_id']) . '")'; $rez = $this->DB->QUR($sql_insert); } } $rez['date_cur'] = $_POST['attendance_add_edit']['info']['date']; return $rez; } } public function headmanAddDelete(){ if(isset($_POST['headman_request'])){ $currentUserInfo = $this->currentUserInfo(); $current_time = $this->currentTime(); $current_group = $this->getGroupNamebyID((int)$_GET['id']); $students = $this->getStudentsByGroup($current_group['sokr'], $current_group['fo']); $sql_search = 'SELECT * FROM acs_attendancelog_headmen WHERE gruppa="'. $current_group['sokr'] .'" '; $rez = $this->DB->QUR_SEL($sql_search); if(isset($rez[1])){ $rez = $rez[1]; $sql_delete = 'DELETE FROM acs_attendancelog_headmen WHERE gruppa="'. $current_group['sokr'] .'" '; $rez = $this->DB->QUR($sql_delete); } $sql_insert = 'INSERT INTO acs_attendancelog_headmen (id, user_id, gruppa, date_add, added_by) VALUES (0, '. $this->DB->rescape($_POST['headman_request']) .', "'. $current_group['sokr'] .'", "'. $current_time['date'] .'", '. $currentUserInfo['user_id'] .' )'; $rez = $this->DB->QUR($sql_insert); return $rez; } } function mainPageAction() { $currentUserInfo = $this->currentUserInfo(); $des = ''; if(isset($_GET['des'])) $des = $_GET['des']; if ($des == 'show'){ $current_group = $this->getGroupNamebyID((int)$_GET['id']); $current_group_classes = $this->getClassesByGroup($current_group['sokr'], $current_group['fo']); $currentTime = $this->currentTime(); $out = array(); $tmp = $this->getStudentsByGroup($current_group['sokr'], $current_group['fo']); $out['students_all'] = $tmp['students']; if(isset($_POST['date_request'])) { $week_compare = $this->getWeekByDate(strtotime($_POST['date_request'])); $day_compare = date('w', strtotime($_POST['date_request'])); $db_date = $this->DB->rescape($_POST['date_request']); }else { $week_compare = $currentTime['week1']; $day_compare = $currentTime['day1']; $db_date = $currentTime['date']; } foreach ($current_group_classes['raspis'] as $class) { if ($class['week1'] == $week_compare) { if($class['day1'] == $day_compare){ $out['day_name'] = $class['day_name']; $out['day_info'][$class['time1']] = $class; $out['day_info'][$class['time1']]['predmet_id'] = $this->predmetsAddEdit($class['predmet']); foreach ($out['students_all'] as $student_id => $student_name){ $out['day_info'][$class['time1']]['students'][$student_id] = '0'; $sql_search = 'SELECT user_id, att FROM acs_attendancelog_students_attendance WHERE user_id="'. $student_id .'" AND gruppa="'. $current_group[1]['sokr'] .'" AND date1="'. $db_date .'" AND time1='. $class['time1'] .' AND predmet_id='. $out['day_info'][$class['time1']]['predmet_id']; //$out['day_info'][$class['time1']]['search'] = $sql_search; $search = $this->DB->QUR_SEL($sql_search); if(isset($search[1])){ $out['day_info'][$class['time1']]['students'][$student_id] = $search[1]['att']; } } } } } return $out; } } function headmanPageAction(){ $des = ''; if(isset($_GET['des'])) $des = $_GET['des']; if($des == 'add_edit'){ $out = array(); $current_group = $this->getGroupNamebyID((int)$_GET['id']); $students = $this->getStudentsByGroup($current_group['sokr'], $current_group['fo']); $out['current_group'] = $current_group; $sql_search = 'SELECT * FROM acs_attendancelog_headmen WHERE gruppa="'. $current_group['sokr'] .'" '; $rez = $this->DB->QUR_SEL($sql_search); if (isset($rez[1])){ $rez = $rez[1]; } foreach ($students['students'] as $user_id => $student_name){ $out['students'][$user_id]['student_name'] = $student_name; if($rez['user_id'] == $user_id){ $out['students'][$user_id]['headman'] = 1; $out['headman'] = $student_name; }else{ $out['students'][$user_id]['headman'] = 0; } } return $out; } } function HTML() { GLOBAL $smarty; $html = ''; $currentUserInfo = $this->currentUserInfo(); $currentTime = $this->currentTime(); $AttendanceAddEdit = $this->AttendanceAddEdit();// должен вызываться перед mainPageAction $headmanAddDelete = $this->headmanAddDelete(); $mainPageActionResult = $this->mainPageAction(); $headmanPageActionResult = $this->headmanPageAction(); $predmetsAddEdit = $this->predmetsAddEdit('Исследование операций и методы оптимизации'); //$html .= '
'. print_r($groups,1) . '
'; //$html .= '
'. print_r($currentUserInfo,1) . '
'; //$html .= '
'. print_r($mainPageActionResult,1) . '
'; //$html .= '
'. print_r($headmanPageActionResult,1) . '
'; //$html .= '
'. print_r($predmetsAddEdit,1) . '
'; //$html .= '
'. print_r($headmanAddDelete,1) . '
'; //$html .= '
'. print_r($currentTime,1) . '
'; //$html .= '
'. print_r($_SESSION,1) . '
'; //$html .= '
'. print_r($AttendanceAddEdit,1) . '
'; //$html .= '
'. print_r($_GET,1) . '
'; //$html .= '
'. print_r($_POST,1) . '
'; //$html .= '
'. print_r($_SESSION,1) . '
'; $page = ''; if(isset($_GET['page'])) $page = $_GET['page']; $des = ''; if(isset($_GET['des'])) $des = $_GET['des']; $smarty->assign('des', $des); $smarty->assign('name', $this->name); $smarty->assign('currentTime', $currentTime); $smarty->assign('currentUserInfo', $currentUserInfo); if($page == 'headman') { $facult_groups = $this->getAllGrupps($currentUserInfo['facult']['facult_id']); $smarty->assign('facult_groups',$facult_groups); $smarty->assign('headmanPageActionResult', $headmanPageActionResult); $smarty->clearCache('moduls/attendancelog/tpl/headman.html'); $html .= $smarty->fetch('moduls/attendancelog/tpl/headman.html'); } if ($page == ''){ if($currentUserInfo['role'] == 'student'){ $header = "Location: https://eios.mkgtu.ru/modul/attendancelog/main/show/" . $currentUserInfo['grupp_id'] . '/'; header($header); } $groups = $this->getAllGrupps(); $facult_groups = $this->getAllGrupps($currentUserInfo['facult']['facult_id']); $smarty->assign('groups',$groups); $smarty->assign('facult_groups',$facult_groups); $smarty->clearCache('moduls/attendancelog/tpl/main_page.html'); $html .= $smarty->fetch('moduls/attendancelog/tpl/main_page.html'); } if ($page == 'main'){ if ($des == 'show'){ $smarty->assign('AttendanceAddEdit', $AttendanceAddEdit); $smarty->assign('mainPageActionResult', $mainPageActionResult); $groupName = $this->getGroupNameByID((int)$_GET['id']); $groupName = $groupName[1]['sokr']; $smarty->assign('groupName', $groupName); } //$smarty->assign('groups',$groups); $smarty->clearCache('moduls/attendancelog/tpl/main_page.html'); $html .= $smarty->fetch('moduls/attendancelog/tpl/main_page.html'); } return $html; } }