Skip to content
Snippets Groups Projects
Student.php 2.6 KiB
Newer Older
<?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!');
xamgore's avatar
xamgore committed
    /** @return Model_Discipline[] */
    public function getDisciplines($semesterID = null) {
        $semesterID = $semesterID ? $semesterID : User::instance()->SemesterID;
        $sql = "CALL `GetDisciplinesForStudent`(:id, :semesterID);";
xamgore's avatar
xamgore committed
        $query = DB::query(Database::SELECT, $sql)
            ->param(':id', $this->ID)
            ->param(':semesterID', $semesterID)
            ->execute();
xamgore's avatar
xamgore committed

        $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!');
    }
xamgore's avatar
xamgore committed

xamgore's avatar
xamgore committed
    /**
     * @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.
xamgore's avatar
xamgore committed
     * @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)
xamgore's avatar
xamgore committed
        return $this;
    }

    /**
     * Cancel the student's leave.
     * @param $group int  group id
xamgore's avatar
xamgore committed
     * @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)
xamgore's avatar
xamgore committed
        return $this;
    }