Newer
Older
<?php defined('SYSPATH') || die('No direct script access.');
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)
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)
/** @return int ID of created module, -2 if map is locked or teacher is not author */
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,
/** @return int ID of created submodule, -2 if map is locked */
public static function addSubmodule($teacherID, $moduleID, $controlType = 'current', $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' => ($controlType === 'current') || ($controlType === 'CurrentControl') ? 'CurrentControl'
: 'LandmarkControl',
/** @return bool true, if err occurred */
public static function deleteModule($teacherID, $moduleID) {
$sql = 'SELECT `DeleteModule`(:teacher, :module) AS `Num`';
return (bool) DB::query(Database::SELECT, $sql)
->param(':teacher', $teacherID)
->param(':module', $moduleID)
->execute()->get('Num');
}
/** @return bool true, if err occurred */
public static function deleteSubmodule($teacherID, $submoduleID) {
$sql = 'SELECT `DeleteSubmodule`(:teacher, :submodule) AS `Num`';
return (bool) DB::query(Database::SELECT, $sql)
->parameters([
':teacher' => $teacherID,
':submodule' => $submoduleID,
/** @return bool true, if err occurred */
public static function setModuleName($teacherID, $moduleID, $name) {
$sql = 'SELECT `ChangeModuleName`(:teacher, :module, :name) AS `Num`';
$result = DB::query(Database::SELECT, $sql)
->parameters([
':teacher' => $teacherID,
':module' => $moduleID,
':name' => $name,
])->execute();
return $result->get('Num') < 0;
}
/** @return bool true, if err occurred */
public static function setSubmoduleName($teacherID, $submoduleID, $name) {
$sql = 'SELECT `ChangeSubmoduleName`(:teacher, :submodule, :name) AS `Num`';
return DB::query(Database::SELECT, $sql)
->parameters([
':teacher' => $teacherID,
':submodule' => $submoduleID,
':name' => $name,
/** return @bool true, if err occurred */
public static function swapModules($teacherID, $moduleID1, $moduleID2) {
$sql = 'SELECT `SwapModuleOrder`(:teacher, :moduleID1, :moduleID2) AS `Num`';
return (bool) DB::query(Database::SELECT, $sql)
->parameters([
':teacher' => $teacherID,
':moduleID1' => $moduleID1,
':moduleID2' => $moduleID2,
/** return @bool true, if err occurred */
public static function swapSubmodules($teacherID, $submoduleID1, $submoduleID2) {
$sql = 'SELECT `SwapSubmoduleOrder`(:teacher, :submodule1, :submodule2) AS `Num`';
return (bool) DB::query(Database::SELECT, $sql)
->parameters([
':teacher' => $teacherID,
':submodule1' => $submoduleID1,
':submodule2' => $submoduleID2,
public static function setSubmoduleMaxAndControl($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 === 'current' ? 'CurrentControl' : 'LandmarkControl',
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,
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,
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,
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,
/**
* 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();
}
$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,
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,
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,