Skip to content
Snippets Groups Projects
Student.php 3.31 KiB
Newer Older
<?php defined('SYSPATH') or die('No direct script access.');

/**
 * Class Model_Student
 */
class Model_Student extends Model_Container
    protected function getRawData($id) {
        $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!');
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;
    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!');
    }
xamgore's avatar
xamgore committed

xamgore's avatar
xamgore committed
    /**
     * @see        students_groups.IsStudyLeave
xamgore's avatar
xamgore committed
     * @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!');
xamgore's avatar
xamgore committed
    }

    /**
     * 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;
    }