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");
 }