<?php defined('SYSPATH') or die('No direct script access.'); class Controller_Student_Subject extends Controller_UserEnvi { public function action_show() { $id = $this->request->param('id'); $student = $this->UserInfo['StudentID']; $discipline = Model_Discipline::getMap($id, $student); $info = Model_Discipline::getInfo($id); // Информация о предмете $subject['Title'] = $info['SubjectName']; if($info['ExamType'] == 'exam') { $subject['Control'] = 'Экзамен'; } elseif($info['ExamType'] == 'credit') { $subject['Control'] = 'Зачет'; } $subject['ExamType'] = $info['ExamType']; $subject['LectureCount'] = $info['LectureCount']; $subject['PracticeCount'] = $info['PracticeCount']; $subject['LabCount'] = $info['LabCount']; $subject['DepName'] = $info['DepName']; $subject['Teachers'] = $this->getTeachersForDiscipline($id); $semester = Model_Semesters::getInfo($info['SemesterID']); $semester['Num'] = $semester['Num'] == 1 ? 'Осенний' : 'Весенний'; $subject['Num'] = $semester['Num']; $subject['Year'] = $semester['Year']; // Учебная карта дисциплины $disciplineHandled = array(); $sRate = 0; $sMaxRate = 0; $bonusMaxRate = 0; $examRate = 0; $examMaxRate = 0; $i = 0; $id = 0; $disciplineHandled['Extra']['Rate'] = 0; foreach($discipline as $row) { if($row['ModuleType'] == 'exam') { $disciplineHandled['Exam']['Rate'] = (int) $row['Rate']; $disciplineHandled['Exam']['MaxRate'] = (int) $row['MaxRate']; $disciplineHandled['Exam']['Date'] = $row['Date']; $examRate += $row['Rate']; $examMaxRate += (int) $row['MaxRate']; } else if($row['ModuleType'] == 'bonus') { $disciplineHandled['Bonus']['Description'] = $row['Description']; $disciplineHandled['Bonus']['Rate'] = (int) $row['Rate']; $disciplineHandled['Bonus']['MaxRate'] = (int) $row['MaxRate']; $disciplineHandled['Bonus']['Date'] = $row['Date']; $bonusRate += $row['Rate']; $bonusMaxRate += (int) $row['MaxRate']; } else if($row['ModuleType'] == 'extra') { $disciplineHandled['Extra']['Description'] = $row['Description']; $disciplineHandled['Extra']['Rate'] += (int) $row['Rate']; $extraRate += (int) $row['Rate']; } else { if($row['ModuleID'] != $id) { $i++; $id = $row['ModuleID']; } if(!isset($disciplineHandled['Modules'][$i]['SubmodulesCount'])) { $disciplineHandled['Modules'][$i]['SubmodulesCount'] = 0; $disciplineHandled['Modules'][$i]['Rate'] = 0; $disciplineHandled['Modules'][$i]['MaxRate'] = 0; } $j = $disciplineHandled['Modules'][$i]['SubmodulesCount'] += 1; $disciplineHandled['Modules'][$i]['Rate'] += (int) $row['Rate']; $disciplineHandled['Modules'][$i]['MaxRate'] += (int) $row['MaxRate']; $disciplineHandled['Modules'][$i]['Title'] = $row['ModuleName']; $disciplineHandled['Modules'][$i]['Submodules'][$j]['Title'] = $row['SubmoduleName']; $disciplineHandled['Modules'][$i]['Submodules'][$j]['Description'] = $row['SubmoduleDescription']; $disciplineHandled['Modules'][$i]['Submodules'][$j]['Rate'] = (int) $row['Rate']; $disciplineHandled['Modules'][$i]['Submodules'][$j]['Date'] = $row['Date']; $disciplineHandled['Modules'][$i]['Submodules'][$j]['MaxRate'] = (int) $row['MaxRate']; $sRate += (int) $row['Rate']; $sMaxRate += (int) $row['MaxRate']; } } $disciplineHandled['ModulesCount'] = $i; $disciplineHandled['SemesterRate'] = (int) $sRate; $disciplineHandled['SemesterMaxRate'] = (int) $sMaxRate; $disciplineHandled['ExamRate'] = (int) $examRate; $disciplineHandled['ExamMaxRate'] = (int) $examMaxRate; $disciplineHandled['BonusRate'] = (int) $bonusRate; $disciplineHandled['BonusMaxRate'] = (int) $bonusMaxRate; $disciplineHandled['ExtraRate'] = (int) $extraRate; // ПРЕДСТАВЛЕНИЕ $twig = Twig::factory('student/subject'); $twig->User = $this->UserInfo; $twig->Discipline = $subject; $twig->DisciplineMap = $disciplineHandled; $this->response->body($twig); } protected function getTeachersForDiscipline($id) { $teachers = Model_Teachers::ofDiscipline($id); $teachersHandled = array(); $i = 0; foreach ($teachers as $teacher) { $i++; $teachersHandled[$i] = $teacher['LastName'].' '.$teacher['FirstName'].' '; if(!empty($teacher['SecondName'])) { $teachersHandled[$i] .= $teacher['SecondName']; } } return $teachersHandled; } }