protected function getCacheTerms()
 {
     if (is_null($this->_cacheTerms)) {
         $this->_cacheTerms = new CArrayList();
         foreach (CActiveRecordProvider::getAllFromTable($this->getTableName())->getItems() as $ar) {
             $term = new CTerm($ar);
             $term->taxonomy_id = $this->getId();
             $term->setTable($this->getTableName());
             $this->_cacheTerms->add($term->getId(), $term);
         }
     }
     return $this->_cacheTerms;
 }
 /**
  * Ищет термин в указанной таксономии. Если не находит - создает
  *
  * @param $taxonomy
  * @param $key
  * @return CTerm
  */
 private function getTerm($taxonomyName, $key)
 {
     if ($taxonomyName == "education_form") {
         $forms = new CArrayList();
         /**
          * Пересортируем формы обучения в другом порядке, чтобы ключом
          * было название
          */
         foreach (CTaxonomyManager::getCacheEducationForms()->getItems() as $form) {
             $forms->add(mb_strtolower($form->getValue()), $form);
         }
         if ($forms->hasElement(mb_strtolower($key))) {
             $term = $forms->getItem(mb_strtolower($key));
         } else {
             $term = new CTerm();
             $term->setTable(TABLE_EDUCATION_FORMS);
             $term->setValue($key);
             $term->save();
             CTaxonomyManager::getCacheEducationForms()->add($term->getId(), $term);
         }
     } elseif ($taxonomyName == "gender") {
         $genders = new CArrayList();
         foreach (CTaxonomyManager::getCacheGenders()->getItems() as $gender) {
             $genders->add(mb_strtoupper($gender->getValue()), $gender);
         }
         if ($genders->hasElement(mb_strtoupper($key))) {
             $term = $genders->getItem(mb_strtoupper($key));
         }
     } else {
         $taxonomy = CTaxonomyManager::getTaxonomy($taxonomyName);
         $term = $taxonomy->getTerm($key);
         if (is_null($term)) {
             $term = new CTerm();
             $term->taxonomy_id = $taxonomy->getId();
             $term->setValue($key);
             $term->save();
             $taxonomy->addTerm($term);
         }
     }
     return $term;
 }
 public function actionSaveLegacyTerm()
 {
     $term = new CTerm();
     //
     $postData = CRequest::getArray($term::getClassName());
     $taxonomy = CTaxonomyManager::getLegacyTaxonomy($postData['taxonomy_id']);
     // $taxonomy = CTaxonomyManager::getLegacyTaxonomy($term->taxonomy_id);
     $term->setTable($taxonomy->getTableName());
     $term->setAttributes(CRequest::getArray($term::getClassName()));
     /**
      * А теперь перекомпановываем запись для работы с унаследованными
      * таксономиями
      */
     $term->getRecord()->unsetItem("taxonomy_id");
     if ($term->validate()) {
         $term->save();
         $this->redirect("?action=legacy&id=" . $taxonomy->getId());
         return true;
     }
     $this->setData("term", $term);
     $this->renderView("_taxonomy/legacyEdit.tpl");
 }