public function setPhysicalObjectByName($physicalObjectName, $options) { // see if physical object already exists, otherwise create a new physical object $criteria = new Criteria(); $criteria->addJoin(QubitPhysicalObject::ID, QubitPhysicalObjectI18n::ID); $criteria->add(QubitPhysicalObjectI18n::NAME, $physicalObjectName); if ($existingPhysicalObject = QubitPhysicalObject::getOne($criteria)) { $this->addPhysicalObject($existingPhysicalObject); } else { $newPhysicalObject = new QubitPhysicalObject(); $newPhysicalObject->setName($physicalObjectName); // see if physical object type already exists, otherwise create a new one if ($options['type']) { $criteria = new Criteria(); $criteria->addJoin(QubitTerm::ID, QubitTermI18n::ID); $criteria->add(QubitTerm::TAXONOMY_ID, QubitTaxonomy::PHYSICAL_OBJECT_TYPE_ID); $criteria->add(QubitTermI18n::NAME, $options['type']); if ($physicalObjectType = QubitTerm::getOne($criteria)) { $newPhysicalObject->setTypeId($physicalObjectType->id); } else { $newTerm = new QubitTerm(); $newTerm->setTaxonomyId(QubitTaxonomy::PHYSICAL_OBJECT_TYPE_ID); $newTerm->setName($options['type']); $newTerm->parentId = QubitTerm::CONTAINER_ID; $newTerm->save(); $newPhysicalObject->setTypeId($newTerm->id); } } if (isset($options['location'])) { $newPhysicalObject->setLocation($options['location']); } $newPhysicalObject->save(); $this->addPhysicalObject($newPhysicalObject); } }
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; }