public function execute($contextObject) { $result = ""; $corriculum = CCorriculumsManager::getCorriculum($contextObject->cycle->corriculum->getId()); if (!is_null($corriculum->speciality_direction)) { $result = $corriculum->speciality_direction->getValue(); } return $result; }
/** * Добавление плана из представления * Выбор дисциплины в указанном учебном плане */ public function actionAddFromView_SelectDiscipline() { $selected = CRequest::getArray("selected"); $items = new CArrayList(); $corriculum = CCorriculumsManager::getCorriculum($selected[0]); /** * @var $cycle CCorriculumCycle */ foreach ($corriculum->getDisciplines() as $discipline) { $items->add($discipline->getId(), $discipline->discipline->getValue()); } $this->setData("items", $items); $this->renderView("_flow/pickList.tpl", get_class($this), "AddFromView_CreateWorkPlan"); }
public function actionEdit() { $discipline = CCorriculumsManager::getDiscipline(CRequest::getInt("id")); $corriculum = CCorriculumsManager::getCorriculum($discipline->cycle->corriculum->getId()); $this->addActionsMenuItem(array("title" => "Удалить выделенные компетенции", "icon" => "actions/edit-delete.png", "form" => "#MainView", "link" => "competentions.php", "action" => "delete")); $this->addActionsMenuItem(array("title" => "Печать по шаблону", "link" => "#", "icon" => "devices/printer.png", "template" => "formset_corriculum_disciplines")); /** * Подключаем скрипты для няшности */ $this->addJSInclude(JQUERY_UI_JS_PATH); $this->addCSSInclude(JQUERY_UI_CSS_PATH); $this->setData("cycle", $discipline->cycle); $this->setData("discipline", $discipline); $this->renderView("_corriculum/_disciplines/edit.tpl"); }
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 actionDelete() { $corriculum = CCorriculumsManager::getCorriculum(CRequest::getInt("id")); /** * Удаляем практики из плана */ foreach ($corriculum->practices->getItems() as $practice) { $practice->remove(); } /** * Удаляем циклы */ foreach ($corriculum->cycles->getItems() as $cycle) { /** * Удаляем дисциплины из циклов */ foreach ($cycle->disciplines->getItems() as $discipline) { /** * Удаляем нагрузку из дисциплин */ foreach ($discipline->labors->getItems() as $labor) { $labor->remove(); } $discipline->remove(); } $cycle->remove(); } /** * Удаляем сам учебный план */ $corriculum->remove(); /** * Все, редирект на страницу со списком */ $this->redirect("index.php?action=index"); }
/** * Копирование списка рабочих программ в другой учебный план */ public function actionCopyInCorriculum() { $bean = self::getStatefullBean(); $corriculum = CRequest::getArray("selected"); $plans = explode(":", $bean->getItem("selected")); $corriculum = CCorriculumsManager::getCorriculum($corriculum[0]); foreach ($plans as $id) { $plan = CWorkPlanManager::getWorkplan($id); foreach ($corriculum->getDisciplines() as $discipline) { if ($plan->corriculumDiscipline->discipline->getValue() == $discipline->discipline->getValue()) { $newPlan = $plan->copy(); $newPlan->corriculum_discipline_id = $discipline->getId(); $newPlan->save(); } } } $this->redirect("workplans.php"); }