public function setTermRelationByName($name, $options)
 {
     // see if subject term already exists
     $criteria = new Criteria();
     $criteria->addJoin(QubitTerm::ID, QubitTermI18n::ID);
     $criteria->add(QubitTerm::TAXONOMY_ID, $options['taxonomyId']);
     $criteria->add(QubitTermI18n::NAME, $name);
     if (null === ($term = QubitTerm::getOne($criteria))) {
         $term = new QubitTerm();
         $term->setTaxonomyId($options['taxonomyId']);
         $term->setName($name);
         $term->setRoot();
         $term->save();
         if (isset($options['source'])) {
             $note = new QubitNote();
             $note->content = $options['source'];
             $note->typeId = QubitTerm::SOURCE_NOTE_ID;
             $note->userId = sfContext::getInstance()->user->getAttribute('user_id');
             $term->notes[] = $note;
         }
     }
     $this->addTermRelation($term->id);
 }
 public function setTypeByName($name)
 {
     // See if type term already exists
     $criteria = new Criteria();
     $criteria->addJoin(QubitTerm::ID, QubitTermI18n::ID);
     $criteria->add(QubitTerm::TAXONOMY_ID, QubitTaxonomy::REPOSITORY_TYPE_ID);
     $criteria->add(QubitTermI18n::NAME, $name);
     if (null === ($term = QubitTerm::getOne($criteria))) {
         $term = new QubitTerm();
         $term->setTaxonomyId(QubitTaxonomy::REPOSITORY_TYPE_ID);
         $term->setName($name);
         $term->setRoot();
         $term->save();
     }
     foreach (self::getTermRelations(QubitTaxonomy::REPOSITORY_TYPE_ID) as $item) {
         // Faster than $item->term == $term
         if ($item->termId == $term->id) {
             return;
         }
     }
     $relation = new QubitObjectTermRelation();
     $relation->term = $term;
     $this->objectTermRelationsRelatedByobjectId[] = $relation;
 }