public function actionSave()
 {
     $object = new CWorkPlanCompetention();
     $object->setAttributes(CRequest::getArray($object::getClassName()));
     if ($object->validate()) {
         $object->save();
         if ($this->continueEdit()) {
             $this->redirect("workplancompetentions.php?action=edit&id=" . $object->getId());
         } else {
             $this->redirect("workplancompetentions.php?action=index&plan_id=" . $object->plan_id);
         }
         return true;
     }
     $this->setData("object", $object);
     $this->renderView("_corriculum/_workplan/competentions/edit.tpl");
 }
 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 actionUpdate()
 {
     $plan = CWorkPlanManager::getWorkplan(CRequest::getInt("id"));
     $type = CRequest::getInt("type");
     if ($type == 0) {
         if (!is_null($plan->corriculumDiscipline)) {
             foreach (CActiveRecordProvider::getWithCondition(TABLE_CORRICULUM_DISCIPLINE_COMPETENTIONS, "discipline_id=" . $plan->corriculumDiscipline->getId())->getItems() as $ar) {
                 $newCompetention = new CActiveModel($ar);
                 $object = new CWorkPlanCompetention();
                 $object->plan_id = $plan->getId();
                 $object->type = $type;
                 $object->competention_id = $newCompetention->competention_id;
                 $object->level_id = $newCompetention->level_id;
                 foreach ($plan->corriculumDiscipline->competentions->getItems() as $competention) {
                     foreach ($competention->knowledges->getItems() as $knowledge) {
                         $object->knowledges->add($knowledge->getId(), $knowledge->getId());
                     }
                     foreach ($competention->skills->getItems() as $skill) {
                         $object->skills->add($skill->getId(), $skill->getId());
                     }
                     foreach ($competention->experiences->getItems() as $experience) {
                         $object->experiences->add($experience->getId(), $experience->getId());
                     }
                 }
                 $object->save();
             }
         }
     }
     if ($type == 1) {
         if (!is_null($plan->disciplinesBefore)) {
             foreach ($plan->disciplinesBefore->getItems() as $item) {
                 foreach (CActiveRecordProvider::getWithCondition(TABLE_CORRICULUM_DISCIPLINE_COMPETENTIONS, "discipline_id=" . $item->getId())->getItems() as $ar) {
                     $competention = new CActiveModel($ar);
                     $object = new CWorkPlanCompetention();
                     $object->plan_id = $plan->getId();
                     $object->type = $type;
                     $object->competention_id = $competention->competention_id;
                     $object->level_id = $competention->level_id;
                     $object->discipline_id = $competention->discipline_id;
                     $object->save();
                 }
             }
         }
     }
     if ($type == 2) {
         if (!is_null($plan->disciplinesAfter)) {
             foreach ($plan->disciplinesAfter->getItems() as $item) {
                 foreach (CActiveRecordProvider::getWithCondition(TABLE_CORRICULUM_DISCIPLINE_COMPETENTIONS, "discipline_id=" . $item->getId())->getItems() as $ar) {
                     $competention = new CActiveModel($ar);
                     $object = new CWorkPlanCompetention();
                     $object->plan_id = $plan->getId();
                     $object->type = $type;
                     $object->competention_id = $competention->competention_id;
                     $object->level_id = $competention->level_id;
                     $object->discipline_id = $competention->discipline_id;
                     $object->save();
                 }
             }
         }
     }
     $this->redirect("workplancompetentions.php?action=index&plan_id=" . $plan->getId() . "&type=" . $type);
 }