<?php defined('SYSPATH') or die('No direct script access.'); class Model_Map extends Model { public $discipline; private function __construct(Model_Discipline $discipline) { $this->discipline = $discipline; } public static function of(Model_Discipline $discipline) { return new self($discipline); } public function addModuleBonus($teacherID) { $sql = "SELECT `AddModuleBonus`(:teacher, :discipline) AS `Num`"; return DB::query(Database::SELECT, $sql) ->param(':teacher', $teacherID) ->param(':discipline', $this->discipline->ID) ->execute(); } public function deleteModuleBonus($teacherID) { $sql = "SELECT `DeleteModuleBonus`(:teacher, :discipline) AS `Num`"; return DB::query(Database::SELECT, $sql) ->param(':teacher', $teacherID) ->param(':discipline', $this->discipline->ID) ->execute(); } public function addModule($teacherID, $title = '') { $sql = "SELECT `AddModule`(:teacher, :discipline, :title) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':discipline' => $this->discipline->ID, ':title' => $title, ])->execute(); } public static function deleteModule($teacherID, $moduleID) { $sql = "SELECT `DeleteModule`(:teacher, :module) AS `Num`"; return DB::query(Database::SELECT, $sql) ->param(':teacher', $teacherID) ->param(':module', $moduleID) ->execute(); } public static function changeModuleName($teacherID, $moduleID, $name) { $sql = "SELECT `ChangeModuleName`(:teacher, :module, :name) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':module' => $moduleID, ':name' => $name, ])->execute(); } public static function addSubmodule($teacherID, $moduleID, $typeControl, $maxRate = 0, $title = '', $description = '') { $sql = "SELECT `AddSubmodule`(:teacher, :moduleID, :maxRate, :title, :desc, :control) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':moduleID' => $moduleID, ':maxRate' => $maxRate, ':title' => $title, ':desc' => $description, ':control' => $typeControl, ])->execute(); } public static function deleteSubmodule($teacherID, $submoduleID) { $sql = "SELECT `DeleteSubmodule`(:teacher, :submodule) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':submodule' => $submoduleID, ])->execute(); } public static function changeSubmoduleName($teacherID, $submoduleID, $name) { $sql = "SELECT `ChangeSubmoduleName`(:teacher, :submodule, :name) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':submodule' => $submoduleID, ':name' => $name, ])->execute(); } public static function swapModuleOrder($teacherID, $moduleID1, $moduleID2) { $sql = "SELECT `SwapModuleOrder`(:teacher, :moduleID1, :moduleID2) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':moduleID1' => $moduleID1, ':moduleID2' => $moduleID2, ])->execute(); } public static function swapSubmoduleOrder($teacherID, $submoduleID1, $submoduleID2) { $sql = "SELECT `SwapSubmoduleOrder`(:teacher, :submodule1, :submodule2) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':submodule1' => $submoduleID1, ':submodule2' => $submoduleID2, ])->execute(); } public static function changeSubmoduleMaxAndControl($teacherID, $submoduleID, $maxRate, $controlType) { $sql = "SELECT `ChangeSubmoduleMaxAndControl`(:teacher, :submodule, :maxRate, :control) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':submodule' => $submoduleID, ':maxRate' => $maxRate, ':control' => $controlType, ])->execute(); } public function changeDisciplineSubject($teacherID, $subjectID) { $sql = "SELECT `ChangeDisciplineSubject`(:teacher, :discipline, :subject) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':discipline' => $this->discipline->ID, ':subject' => $subjectID, ])->execute(); } public function changeDisciplineControl($teacherID, $control) { $sql = "SELECT `ChangeDisciplineControl`(:teacher, :discipline, :control) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':discipline' => $this->discipline->ID, ':control' => $control, ])->execute(); } public function changeDisciplineHours($teacherID, $hours, $type) { $sql = "SELECT `ChangeDisciplineHours`(:teacher, :discipline, :hours, :type) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':discipline' => $this->discipline->ID, ':hours' => $hours, ':type' => $type, ])->execute(); } public function bindGroup($teacherID, $groupID) { $sql = "SELECT `BindGroup`(:teacher, :discipline, :group) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':discipline' => $this->discipline->ID, ':group' => $groupID, ])->execute(); } /** * Get the disciplines's roadmap (учебная карта). * @param $discipline int discipline id * @return Database_Result select from <tt>view_roadmap</tt> table */ public static function getRoadmap($discipline, $type) { $sql = "CALL `GetRoadmap`(:discipline, :type)"; return DB::query(Database::SELECT, $sql) ->param(':discipline', $discipline) ->param(':type', $type) ->execute(); } public function getModules($type) { $sql = 'CALL `Discipline_GetModules`(:discipline, :type)'; return DB::query(Database::SELECT, $sql) ->param(':discipline', $this->discipline->ID) ->param(':type', $type)->execute() ->groupByUniqueKey('ID'); } public function getSubmodules($type) { $sql = "CALL `Discipline_GetSubmodules`(:discipline, :type)"; return DB::query(Database::SELECT, $sql) ->param(':discipline', $this->discipline->ID) ->param(':type', $type)->execute() ->groupByUniqueKey('ID'); } public function unbindGroup($teacherID, $groupID) { $sql = "SELECT `UnbindGroup`(:teacher, :discipline, :group) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':discipline' => $this->discipline->ID, ':group' => $groupID, ])->execute(); } public function bindStudent($teacherID, $studentID) { $sql = "SELECT `BindStudent`(:teacher, :discipline, :student) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':discipline' => $this->discipline->ID, ':student' => $studentID, ])->execute(); } public function unbindStudent($teacherID, $studentID) { $sql = "SELECT `UnbindStudent`(:teacher, :discipline, :student) AS `Num`"; return DB::query(Database::SELECT, $sql) ->parameters([ ':teacher' => $teacherID, ':discipline' => $this->discipline->ID, ':student' => $studentID, ])->execute(); } }