Пример #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
 private function synchronizeProperties($object, $properties)
 {
     $props = array();
     foreach ($properties as $property) {
         $props[$property->key_name] = $property;
     }
     // Removed all meta from database if this property not exists in new property list
     $keys = array_keys($props);
     foreach ($object->metas as $objectMetaData) {
         if (!isset($keys[$objectMetaData->meta->key_name])) {
             ObjectMetaData::model()->deleteByPk($objectMetaData->id);
         }
         unset($keys[$objectMetaData->meta->key_name]);
     }
     // Add or Update all properties
     foreach ($properties as $property) {
         $meta = MetaDataKey::model()->find('key_name = :name', array('name' => $property->key_name));
         if (is_null($meta) || !isset($meta)) {
             throw new Exception('Property not found');
         }
         $objectProperty = ObjectMetaData::model()->find('object_id = :objid and meta_key_id = :metaid', array('objid' => $object->id, 'metaid' => $meta->id));
         if (is_null($objectProperty) || !isset($objectProperty)) {
             $objectProperty = new ObjectMetaData();
             $objectProperty->object_id = $object->id;
             $objectProperty->meta_key_id = $meta->id;
         }
         $objectProperty->meta_value = $property->value;
         if (!$objectProperty->save()) {
             throw new Exception('Could not save ObjectProperty');
         }
     }
 }
Пример #3
0
 public function remove($object)
 {
     return MetaDataKey::model()->deleteByPk($object->id);
 }