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