<?php defined('SYSPATH') or die('No direct script access.'); class Controller_Teacher_Rating extends Controller_UserEnvi { // Получить из кука SGID выбранную ранее группу private function GetSGID($id) { # $id = disciplineID $SG_ar = json_decode(Cookie::get('SGID', null), true); if ($SG_ar !== null) { if (array_key_exists($id, $SG_ar)) return $SG_ar[$id]; } return 0; } public function action_edit() { $twig = Twig::factory('teacher/rating'); $twig->User = $this->UserInfo; $id = $this->request->param('id'); $db = new Model_Teacher_Rating; // Шапка таблицы: структура УКД (модули и мероприятия) $structure = $db->GetMapForDiscipline($this->UserInfo['TeacherID'], $id); if($structure->count() == 0) throw HTTP_Exception::factory (404, "Для дисциплины с ID $id не создана УКД или такой дисциплины не существует!"); $structureHandled = array(); $maxRate = 0; $i = 0; $module = 0; foreach($structure as $row) { if($row['ModuleID'] != $module) { $i++; $module = $row['ModuleID']; } if ($i == 1) $twig->SubjectName = $row['SubjectName']; if(!isset($structureHandled[$i]['SubmodulesCount'])) { $structureHandled[$i]['SubmodulesCount'] = 0; $structureHandled[$i]['MaxRate'] = 0; } $j = $structureHandled[$i]['SubmodulesCount'] += 1; $structureHandled[$i]['MaxRate'] += (int) $row['MaxRate']; $structureHandled[$i]['ModuleTitle'] = $row['ModuleName']; $structureHandled[$i]['ModuleType'] = $row['ModuleType']; if ($row['ModuleType'] == "exam") { $twig->examSubmoduleID = $row['SubmoduleID']; } $structureHandled[$i][$j]['SubmoduleID'] = $row['SubmoduleID']; $structureHandled[$i][$j]['Title'] = $row['SubModuleName']; //$structureHandled[$i][$j]['Description'] = $row['SubmoduleDescription']; // Описание $structureHandled[$i][$j]['MaxRate'] = (int) $row['MaxRate']; $maxRate += $row['MaxRate']; if ($row['ModuleType'] == "exam" || $row['ModuleType'] == "extra") { $structureHandled[$i][$j]['SubmoduleID'] = -1; } } $structureHandled['ModulesCount'] = $i; $structureHandled['MaxRate'] = (int) $maxRate; $twig->headerRate = $structureHandled; //echo debug::vars($structureHandled); // end Шапка таблицы // Студенты и их баллы $students = $db->GetStudentsForRating($this->UserInfo['TeacherID'], $id); $rateHandled = array(); $groupsHandled = array(); $i_g = 0; $i_s = 0; $curGroup = 0; foreach($students as $row) { // Группа if ($curGroup !== $row['GroupID']) { $curGroup = $row['GroupID']; $i_g++; $rateHandled[$i_g]['GroupID'] = $row['GroupID']; $rateHandled[$i_g]['GroupNum'] = $row['GroupNum']; // № группы $rateHandled[$i_g]['GradeNum'] = $row['GradeNum']; // № курса $rateHandled[$i_g]['isAttached'] = $row['isAttached']; // #1 if ($row['Degree'] == 'bachelor') $rateHandled[$i_g]['GradeTitle'] = $row['GradeNum'].' курс'; if ($row['Degree'] == 'specialist') $rateHandled[$i_g]['GradeTitle'] = $row['GradeNum'].' курс'; if ($row['Degree'] == 'master') $rateHandled[$i_g]['GradeTitle'] = 'Магистратура, '.$row['GradeNum'].' год'; $groupsHandled[$curGroup] = $rateHandled[$i_g]['GradeTitle']." ".$row['GroupNum']." группа"; } // Студенты $i_s++; $rateHandled[$i_g]['Students'][$i_s]['ID'] = $row['ID']; $rateHandled[$i_g]['Students'][$i_s]['Last'] = $row['Last']; $rateHandled[$i_g]['Students'][$i_s]['First'] = $row['First']; $rateHandled[$i_g]['Students'][$i_s]['Second'] = $row['Second']; $rateHandled[$i_g]['Students'][$i_s]['isAttached'] = $row['isAttached']; // #1 // Баллы студента $rate = $db->getMapForStudent($row['ID'], $id); $i_r = 0; $rateHandled[$i_g]['Students'][$i_s]['RateResult'] = 0; foreach($rate as $r) { $i_r++; $rateHandled[$i_g]['Students'][$i_s]['Rates'][$i_r]['Rate'] = $r['Rate']; $rateHandled[$i_g]['Students'][$i_s]['RateResult'] += $r['Rate']; if ($r['ModuleType'] == 'exam' || $r['ModuleType'] == 'extra') $rateHandled[$i_g]['Students'][$i_s]['Rates'][$i_r]['SubmoduleID'] = -1; else $rateHandled[$i_g]['Students'][$i_s]['Rates'][$i_r]['SubmoduleID'] = $r['SubmoduleID']; } } //echo Debug::vars($rateHandled); $twig->rateTable = $rateHandled; $twig->groups = $groupsHandled; $twig->studyGroupID = $this->GetSGID($id); $this->response->body($twig); } public function action_exam() { $twig = Twig::factory('teacher/exam'); $twig->User = $this->UserInfo; $id = $this->request->param('id'); $db = new Model_Teacher_Rating; // Шапка таблицы: структура УКД (модули и мероприятия) $structure = $db->GetMapForDisciplineExam($this->UserInfo['TeacherID'], $id); if($structure->count() == 0) throw HTTP_Exception::factory (404, "Страница не найдена"); $structureHandled = array(); $maxRate = 0; $i = 0; $module = 0; $try_1 = 0; // try = 1 - экзамен, = 2, 3 - пересдачи $examRate = 0; foreach($structure as $row) { if($row['ModuleID'] != $module) { ++$i; $module = $row['ModuleID']; } if ($i == 1) $twig->SubjectName = $row['SubjectName']; if(!isset($structureHandled[$i]['SubmodulesCount'])) { $structureHandled[$i]['SubmodulesCount'] = 0; $structureHandled[$i]['MaxRate'] = 0; } $j = $structureHandled[$i]['SubmodulesCount'] += 1; $structureHandled[$i]['MaxRate'] += (int) $row['MaxRate']; $structureHandled[$i]['ModuleTitle'] = $row['ModuleName']; $structureHandled[$i]['ModuleType'] = $row['ModuleType']; if ($row['ModuleType'] == "exam") $twig->examSubmoduleID = $row['SubmoduleID']; $structureHandled[$i][$j]['SubmoduleID'] = $row['SubmoduleID']; if ($row['ModuleType'] == 'extra') { $structureHandled[$i][$j]['Title'] = 'Добор баллов'; $maxRate += $row['MaxRate']; } else { $try++; $examRate = $row['MaxRate']; $structureHandled[$i][$j]['Title'] = 'Пересдача '.$try; } //$structureHandled[$i][$j]['Description'] = $row['SubmoduleDescription']; // Описание $structureHandled[$i][$j]['MaxRate'] = (int) $row['MaxRate']; } $structureHandled['ModulesCount'] = $i; $structureHandled['MaxRate'] = (int) $maxRate; $twig->headerRate = $structureHandled; // end Шапка таблицы // Студенты и их баллы по экзамену $students = $db->GetStudentsForRating($this->UserInfo['TeacherID'], $id); $rateHandled = array(); $groupsHandled = array(); $i_g = 0; $i_s = 0; $curGroup = 0; foreach($students as $row) { // Группа if ($curGroup !== $row['GroupID']) { $curGroup = $row['GroupID']; $i_g++; $rateHandled[$i_g]['GroupID'] = $row['GroupID']; $rateHandled[$i_g]['GroupNum'] = $row['GroupNum']; // № группы $rateHandled[$i_g]['GradeNum'] = $row['GradeNum']; // № курса $rateHandled[$i_g]['isAttached'] = $row['isAttached']; // #1 if ($row['Degree'] == 'bachelor') $rateHandled[$i_g]['GradeTitle'] = $row['GradeNum'].' курс'; if ($row['Degree'] == 'specialist') $rateHandled[$i_g]['GradeTitle'] = $row['GradeNum'].' курс'; if ($row['Degree'] == 'master') $rateHandled[$i_g]['GradeTitle'] = 'Магистратура, '.$row['GradeNum'].' год'; $groupsHandled[$curGroup] = $rateHandled[$i_g]['GradeTitle']." ".$row['GroupNum']." группа"; } // Студенты $i_s++; $rateHandled[$i_g]['Students'][$i_s]['ID'] = $row['ID']; $rateHandled[$i_g]['Students'][$i_s]['Last'] = $row['Last']; $rateHandled[$i_g]['Students'][$i_s]['First'] = $row['First']; $rateHandled[$i_g]['Students'][$i_s]['Second'] = $row['Second']; $rateHandled[$i_g]['Students'][$i_s]['isAttached'] = $row['isAttached']; // #1 // Баллы студента $rate = $db->getMapForStudentExam($row['ID'], $id); $i_r = 0; $rateHandled[$i_g]['Students'][$i_s]['RateResult'] = 0; $examRate = 0; foreach($rate as $r) { $i_r++; if ($r['ModuleType'] == 'exam') { if (!is_null($r['Rate'])) $examRate = $r['Rate']; } else { $rateHandled[$i_g]['Students'][$i_s]['RateResult'] += $r['Rate']; } $rateHandled[$i_g]['Students'][$i_s]['Rates'][$i_r]['SubmoduleID'] = $r['SubmoduleID']; $rateHandled[$i_g]['Students'][$i_s]['Rates'][$i_r]['Rate'] = $r['Rate']; } $rateHandled[$i_g]['Students'][$i_s]['RateResult'] += $examRate; } $twig->rateTable = $rateHandled; $twig->groups = $groupsHandled; $twig->studyGroupID = $this->GetSGID($id); $this->response->body($twig); } }