/** * Ищет термин в указанной таксономии. Если не находит - создает * * @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; }