diff options
| author | icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2008-04-01 13:55:34 +0000 | 
|---|---|---|
| committer | icewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2008-04-01 13:55:34 +0000 | 
| commit | a08509ec171b12f609a8941c86541f3a413ea913 (patch) | |
| tree | dc9c011f941d63109890c70e9b3209e85300d3bf /engine | |
| parent | c6c78290c26a2784c641571d20cdba58a6863d9b (diff) | |
| download | elgg-a08509ec171b12f609a8941c86541f3a413ea913.tar.gz elgg-a08509ec171b12f609a8941c86541f3a413ea913.tar.bz2  | |
Marcus Povey <marcus@dushka.co.uk>
* Moved import to ElggEntity
git-svn-id: https://code.elgg.org/elgg/trunk@302 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'engine')
| -rw-r--r-- | engine/lib/entities.php | 51 | 
1 files changed, 50 insertions, 1 deletions
diff --git a/engine/lib/entities.php b/engine/lib/entities.php index e96a781f9..8784e9af4 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -16,7 +16,7 @@  	 * This class holds methods for accessing the main entities table.  	 * @author Marcus Povey <marcus@dushka.co.uk>  	 */ -	abstract class ElggEntity implements Exportable +	abstract class ElggEntity implements Exportable, Importable  	{  		/**   		 * The main attributes of an entity. @@ -310,6 +310,55 @@  			$tmp->attributes['owner_uuid'] = guid_to_uuid($this->owner_guid);  			return $tmp;   		} +		 +		/** +		 * Import data from an parsed xml data array. +		 *  +		 * @param array $data +		 * @param int $version  +		 */ +		public function import(array $data, $version = 1) +		{ +			if ($version == 1) +			{ +				$uuid = ""; +				 +				// Get attributes +				foreach ($data['elements'][0]['elements'] as $attr) +				{ +					$name = strtolower($attr['name']); +					$text = $attr['text']; +					 +					switch ($name) +					{ +						case 'uuid' : $uuid = $text; break; +						default : $this->attributes[$name] = $text; +					} +				} + +				// Check uuid as local domain +				if (is_uuid_this_domain($uuid)) +					throw new ImportException("$uuid belongs to this domain!"); + +				// See if this entity has already been imported, if so we don't need to create a new element +				$entity = get_entity_from_uuid($uuid); +				if ($entity) +					$this->attributes['guid'] = $entity->guid; +			 +				// save +				if (!$this->save()); +					throw new ImportException("There was a problem saving $uuid"); +						 +				// Tag this GUID with the UUID if this is a new entity +				if (!$entity) +					add_uuid_to_guid($this->attributes['guid'], $uuid); + +				// return result +				return $this; +			} +			else +				throw new ImportException("Unsupported version ($version) passed to ElggEntity::import()"); +		}  	}  	/**  | 
