public function execute($contextObject) { $result = ""; if (!is_null(CCorriculumsManager::getDiscipline($contextObject->corriculum_discipline_id)->cycle->corriculum->nisChairman)) { $result = CCorriculumsManager::getDiscipline($contextObject->corriculum_discipline_id)->cycle->corriculum->nisChairman->getNameShort(); } return $result; }
public function actionGetItem($id) { $result = array(); $discipline = CCorriculumsManager::getDiscipline($id); if (!is_null($discipline)) { $result[$discipline->getId()] = $discipline->discipline->getValue(); } return $result; }
public function actionGetViewData() { $result = array(); $plan = CWorkPlanManager::getWorkplan(CRequest::getInt("plan_id")); $discipline = CCorriculumsManager::getDiscipline($plan->corriculum_discipline_id); $query = new CQuery(); $query->select("term.id as id, term.title as name")->from(TABLE_CORRICULUM_DISCIPLINE_SECTIONS . " as term")->condition("discipline_id=" . $discipline->getId()); foreach ($query->execute()->getItems() as $item) { $result[$item["id"]] = $item["name"]; } return $result; }
public function actionGetViewData() { $result = array(); $plan = CWorkPlanManager::getWorkplan(CRequest::getInt("plan_id")); $discipline = CCorriculumsManager::getDiscipline($plan->corriculum_discipline_id); $corriculum = $discipline->cycle->corriculum; $query = new CQuery(); $query->select("discipline.id as id, subject.name as name")->from(TABLE_CORRICULUM_DISCIPLINES . " as discipline")->innerJoin(TABLE_CORRICULUM_CYCLES . " as cycle", "discipline.cycle_id = cycle.id")->innerJoin(TABLE_DISCIPLINES . " as subject", "discipline.discipline_id = subject.id")->condition("cycle.corriculum_id=" . $corriculum->getId()); foreach ($query->execute()->getItems() as $item) { $result[$item["id"]] = $item["name"]; } return $result; }
public function execute($contextObject) { $corriculumDiscipline = $contextObject->corriculumDiscipline; $corriculum = CCorriculumsManager::getCorriculum($corriculumDiscipline->cycle->corriculum->getId()); //массив последующих дисциплин из текущей рабочей программы $disciplinesAfter = array(); if (!is_null($contextObject->disciplinesAfter)) { foreach ($contextObject->disciplinesAfter->getItems() as $disciplineAfter) { $disciplinesAfter[$disciplineAfter->getId()] = $disciplineAfter->discipline->getValue(); } } //массив с ключами дисциплин, у которых название семестра больше либо равно названию семестра текущей дисциплины $disciplines = array(); //получаем все дисциплины учебного плана foreach ($corriculum->getDisciplines() as $disc) { //получаем семестры дисциплин foreach ($disc->sections as $section) { //получаем семестры текущей дисциплины учебного плана foreach ($corriculumDiscipline->sections->getItems() as $currentSection) { //проверяем, что название текущего семестра меньше либо равно названию семестров всех дисциплин учебного плана if ($currentSection->title <= $section->title) { $disciplines[$section->discipline_id] = $section->title; } } } } //массив с ключами дисциплин с нужными компетенциями $competentions = array(); foreach ($corriculum->getDisciplines() as $disc) { //получаем компетенции всех дисциплин учебного плана foreach ($disc->competentions as $competention) { //получаем компетенции текущей дисциплины учебного плана //foreach ($corriculumDiscipline->competentions->getItems() as $currentCompetention) { //проверяем, что компетенции текущей дисциплины совпадают с компетенциями других дисциплин учебного плана //if ($currentCompetention->competention_id == $competention->competention_id) { $competentions[$competention->discipline_id] = $competention->competention_id; //} //} } } //получаем нужные дисциплины учебного плана $disciplinesCorriculum = array(); foreach ($disciplines as $section_id => $section) { foreach ($competentions as $comp_id => $competention) { //сравниваем массив $disciplines с нужными семестрами с массивом $competentions с нужными компетенциями по совпадающим ключам дисциплин if ($section_id == $comp_id) { //массив дисциплин, отобранных по семестру и компетенциям, ключ - id дисциплины, значение - id компетенции $disciplinesCorriculum[$comp_id] = $competention; } } } //массив, по которому будем выводить компетенции в шаблон $items = array(); //сравниваем по совпадающим ключам массив последующих дисциплин с массивом дисциплин, отобранных по семестру и компетенциям foreach (array_intersect_key($disciplinesAfter, $disciplinesCorriculum) as $key => $value) { //записываем в массив $items id отобранных дисциплин $items[] = $key; } $result = array(); foreach ($items as $value) { $discipl = CCorriculumsManager::getDiscipline($value); foreach ($discipl->competentions->getItems() as $comp) { $dataRow = array(); $dataRow[0] = count($result) + 1; if (!is_null($comp->competention)) { $str = $comp->competention->getValue(); //удаляем текст в скобках - код компетенции $text = preg_replace("|\\(.*?\\)|is", "", $str); //удаляем последний символ пробела из строки $rest = substr($text, 0, -1); $dataRow[1] = $rest; //берем код компетенции - текст из скобок preg_match('/\\((.+)\\)/', $str, $m); $dataRow[2] = $m[1]; } if (!is_null($comp->level)) { $dataRow[3] = $comp->level->getValue(); } if (!is_null($comp->discipline)) { $dataRow[4] = $comp->discipline->discipline->getValue(); } $result[] = $dataRow; } } return $result; }
public function actionDown() { $discipline = CCorriculumsManager::getDiscipline(CRequest::getInt("id")); /** * Проверим, вдруг это первый запуск и ничего не отсортировано еще */ if (is_null($discipline->ordering)) { $cycle = $discipline->cycle; if (!is_null($cycle)) { $i = 1; foreach ($cycle->disciplines->getItems() as $d) { $d->ordering = $i; $d->save(); $i++; } } } /** * Двигаем только если текущая не последняя */ $cycle = $discipline->cycle; if (!is_null($cycle)) { if ($discipline->ordering < $cycle->disciplines->getCount()) { $curr = $discipline->ordering; $d = $cycle->getNthDiscipline($curr + 1); if (!is_null($d)) { $d->ordering = $curr; $discipline->ordering = $curr + 1; $discipline->save(); $d->save(); } } } /** * Возвращаем обратно */ $this->redirect("cycles.php?action=edit&id=" . $discipline->cycle_id); }
public function actionAdd() { /** * получим дисциплину, по которой делаем рабочую программу * @var CCorriculumDiscipline $discipline * @var CCorriculum $corriculum */ $discipline = CCorriculumsManager::getDiscipline(CRequest::getInt("id")); $corriculum = $discipline->cycle->corriculum; // $plan = new CWorkPlan(); $plan->title = "Наименование не указано"; $plan->title_display = $plan->title; // дисциплина из учебного плана $plan->corriculum_discipline_id = $discipline->getId(); // дисциплина из справочника if (!is_null($discipline->discipline)) { $plan->discipline_id = $discipline->discipline->getId(); } // копируем информацию из учебного плана if (!is_null($corriculum)) { $plan->direction_id = $corriculum->speciality_direction_id; $plan->qualification_id = $corriculum->qualification_id; $plan->education_form_id = $corriculum->form_id; } $plan->year = date("Y"); $plan->authors = new CArrayList(); $plan->authors->add(CSession::getCurrentPerson()->getId(), CSession::getCurrentPerson()->getId()); // место дисциплины в структуре плана if (!is_null($discipline->cycle)) { $plan->position = "Дисциплина относится к базовой части учебного цикла " . $discipline->cycle->title; } $plan->save(); /** * Скопируем компетенции из плана * @var CCorriculumDisciplineCompetention $competention */ foreach ($discipline->competentions->getItems() as $competention) { $planCompetention = new CWorkPlanCompetention(); $planCompetention->plan_id = $plan->getId(); $planCompetention->allow_delete = 0; $planCompetention->competention_id = $competention->competention_id; if ($competention->knowledge_id != 0) { $planCompetention->knowledges->add($competention->knowledge_id, $competention->knowledge_id); } if ($competention->skill_id != 0) { $planCompetention->skills->add($competention->skill_id, $competention->skill_id); } if ($competention->experience_id != 0) { $planCompetention->experiences->add($competention->experience_id, $competention->experience_id); } $planCompetention->save(); } $this->redirect("?action=edit&id=" . $plan->getId()); }
/** * Копирование одной выбранной рабочей программы */ public function actionCopy() { $pl = new CWorkPlan(); $pl->setAttributes(CRequest::getArray($pl->getClassName())); $plan = CWorkPlanManager::getWorkplan($pl->getId()); $newPlan = $plan->copy(); $newPlan->corriculum_discipline_id = $pl->corriculum_discipline_id; $discipline = CCorriculumsManager::getDiscipline($pl->corriculum_discipline_id); if (!is_null($discipline->discipline)) { $newPlan->discipline_id = $discipline->discipline->getId(); } $newPlan->save(); /** * Редирект на страницу со списком */ $this->redirect("workplans.php?action=index"); }