<?php defined('SYSPATH') or die('No direct script access.'); /** * Class Model_Student */ class Model_Student extends Model_Container { protected function getInfo($id) { $sql = "CALL `Student_GetInfo`('$id');"; $info = DB::query(Database::SELECT, $sql)->execute(); if ($info->count() == 0) throw new InvalidArgumentException('Student not found'); return $info[0]; } /** * Create new student in db, based on $data. */ protected function create() { // todo: implement later throw new BadMethodCallException('Method is not implemented yet!'); } /** @return Model_Discipline[] */ public function getDisciplines($semesterID = null) { $semesterID = $semesterID ? $semesterID : User::instance()->SemesterID; $sql = "CALL `GetDisciplinesForStudent`(:id, :semesterID);"; $query = DB::query(Database::SELECT, $sql) ->param(':id', $this->ID) ->param(':semesterID', $semesterID) ->execute(); $list = []; foreach ($query as $data) $list[] = new Model_Discipline($data, true); return $list; } // todo implementation public function update() { throw new BadMethodCallException('Method is not implemented yet!'); } /** * @see students_groups.IsStudyLeave * @deprecated cause it's not implemented yet * @return boolean true, if the student is on leave */ public function inAcademicLeave() { throw new BadMethodCallException("Method is not implemented yet!"); } /** * Send the student to an academic leave. * @return $this; */ public function toAcademicLeave($semesterID = null) { $semesterID = $semesterID ? $semesterID : User::instance()->SemesterID; $sql = "CALL `ControlStudentGroup`(:id, -1, true, :semesterID);"; DB::query(Database::SELECT, $sql) ->param(':id', $this->ID) ->param(':semesterID', $semesterID) ->execute(); return $this; } /** * Cancel the student's leave. * @param $group int group id * @return $this; */ public function returnFromAcademicLeave($group, $semesterID = null) { $semesterID = $semesterID ? $semesterID : User::instance()->SemesterID;; $sql = "CALL `ControlStudentGroup`(:id, :group, false, :semesterID);"; DB::query(Database::SELECT, $sql) ->param(':id', $this->ID) ->param(':group', (int) $group) ->param(':semesterID', $semesterID) ->execute(); return $this; } }