Newer
Older
<?php defined('SYSPATH') or die('No direct script access.');
/**
* Class Model_Student
*/
class Model_Student extends Model_Container
$sql = 'CALL `Student_GetInfo`(:id)';
$info = DB::query(Database::SELECT, $sql)
->param(':id', $id)->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!');
public function getDisciplines($semesterID = null) {
$semesterID = $semesterID ? $semesterID : User::instance()->SemesterID;
$sql = 'CALL `GetDisciplinesForStudent`(:id, :semesterID)';
->param(':semesterID', $semesterID)
$list = [];
foreach ($query as $data)
$list[] = new Model_Discipline($data, true);
return $list;
public function getTeachers($loadAll = false, $semesterID = null) {
// todo: don't load the full data at the Controller_Student_Index
$semesterID = $semesterID ? $semesterID : User::instance()->SemesterID;
$sql = 'CALL `GetTeachersListForStudent`(:id, :semester)';
$result = DB::query(Database::SELECT, $sql)
->param(':id', $this->ID)
->param(':semester', $semesterID)
->execute();
$list = [];
foreach ($result as $row) {
$names =& $list[$row['DisciplineID']];
$names = explode(';', $row['FullNameList']); // todo: remove aggregation
}
return $list;
}
// todo implementation
public function update() {
throw new BadMethodCallException('Method is not implemented yet!');
}
* @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.
public function toAcademicLeave($semesterID = null) {
$semesterID = $semesterID ? $semesterID : User::instance()->SemesterID;
$sql = 'CALL `ControlStudentGroup`(:id, -1, true, :semesterID)';
DB::query(Database::SELECT, $sql)
->param(':semesterID', $semesterID)
}
/**
* Cancel the student's leave.
* @param $group int group id
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(':group', (int) $group)
->param(':semesterID', $semesterID)