Пример #1
0
 private function synchronizeProperties($resourceType, $properties)
 {
     $propNames = array();
     foreach ($properties as $prop) {
         $propNames[$prop->key_name] = $prop;
     }
     $keys = array_keys($propNames);
     foreach ($resourceType->metas as $resourceTypeMeta) {
         if (!isset($keys[$resourceTypeMeta->meta->key_name])) {
             ResourceTypeMetas::model()->deleteByPk($resourceTypeMeta->id);
         }
         unset($keys[$resourceTypeMeta->meta->key_name]);
     }
     foreach ($propNames as $propertyName => $property) {
         $meta = MetaDataKey::model()->find('key_name = :name', array('name' => $propertyName));
         if (is_null($meta)) {
             $meta = new MetaDataKey();
             $meta->key_name = $property->key_name;
             if (!$meta->save()) {
                 throw new Exception('Could not save PROPERTY');
             }
         }
         $relation = new ResourceTypeMetas();
         $relation->resource_type_id = $resourceType->id;
         $relation->meta_key_id = $meta->id;
         if (!$relation->save()) {
             throw new Exception('Could not save RELATION');
         }
     }
 }
Пример #2
0
 public function save($object)
 {
     $model = MetaDataKey::model();
     $transaction = $model->getDbConnection()->beginTransaction();
     try {
         if (isset($object->id)) {
             $property = MetaDataKey::model()->findByPk($object->id);
         }
         if (!isset($property) || is_null($property)) {
             $property = new MetaDataKey();
         }
         $property->key_name = $object->key_name;
         $property->descr = $object->descr;
         if (!$property->save()) {
             throw new Exception('Could not save PROPERTY');
         }
         $transaction->commit();
     } catch (Exception $e) {
         $transaction->rollback();
         throw $e;
     }
 }