diff options
Diffstat (limited to 'engine/classes/ElggEntity.php')
| -rw-r--r-- | engine/classes/ElggEntity.php | 46 | 
1 files changed, 27 insertions, 19 deletions
| diff --git a/engine/classes/ElggEntity.php b/engine/classes/ElggEntity.php index 929abceb2..a563f6fad 100644 --- a/engine/classes/ElggEntity.php +++ b/engine/classes/ElggEntity.php @@ -24,7 +24,7 @@   *   * @package    Elgg.Core   * @subpackage DataModel.Entities - *  + *   * @property string $type           object, user, group, or site (read-only after save)   * @property string $subtype        Further clarifies the nature of the entity (read-only after save)   * @property int    $guid           The unique identifier for this entity (read only) @@ -34,6 +34,7 @@   * @property int    $access_id      Specifies the visibility level of this entity   * @property int    $time_created   A UNIX timestamp of when the entity was created (read-only, set on first save)   * @property int    $time_updated   A UNIX timestamp of when the entity was last updated (automatically updated on save) + * @property-read string $enabled   */  abstract class ElggEntity extends ElggData implements  	Notable,    // Calendar interface @@ -351,8 +352,8 @@ abstract class ElggEntity extends ElggData implements  					'limit' => 0  				);  				// @todo in 1.9 make this return false if can't add metadata -				// http://trac.elgg.org/ticket/4520 -				//  +				// https://github.com/elgg/elgg/issues/4520 +				//  				// need to remove access restrictions right now to delete  				// because this is the expected behavior  				$ia = elgg_set_ignore_access(true); @@ -374,12 +375,11 @@ abstract class ElggEntity extends ElggData implements  			}  			return $result; -		} - -		// unsaved entity. store in temp array -		// returning single entries instead of an array of 1 element is decided in -		// getMetaData(), just like pulling from the db. -		else { +		} else { +			// unsaved entity. store in temp array +			// returning single entries instead of an array of 1 element is decided in +			// getMetaData(), just like pulling from the db. +			//  			// if overwrite, delete first  			if (!$multiple || !isset($this->temp_metadata[$name])) {  				$this->temp_metadata[$name] = array(); @@ -940,7 +940,7 @@ abstract class ElggEntity extends ElggData implements  	 * @param ElggMetadata $metadata  The piece of metadata to specifically check  	 * @param int          $user_guid The user GUID, optionally (default: logged in user)  	 * -	 * @return true|false +	 * @return bool  	 */  	function canEditMetadata($metadata = null, $user_guid = 0) {  		return can_edit_entity_metadata($this->getGUID(), $user_guid, $metadata); @@ -964,7 +964,7 @@ abstract class ElggEntity extends ElggData implements  	 *  	 * @tip Can be overridden by registering for the permissions_check:comment,  	 * <entity type> plugin hook. -	 *  +	 *  	 * @param int $user_guid User guid (default is logged in user)  	 *  	 * @return bool @@ -1270,15 +1270,23 @@ abstract class ElggEntity extends ElggData implements  	public function save() {  		$guid = $this->getGUID();  		if ($guid > 0) { -			cache_entity($this); -			return update_entity( +			// See #5600. This ensures the lower level can_edit_entity() check will use a +			// fresh entity from the DB so it sees the persisted owner_guid +			_elgg_disable_caching_for_entity($guid); + +			$ret = update_entity(  				$guid,  				$this->get('owner_guid'),  				$this->get('access_id'),  				$this->get('container_guid'),  				$this->get('time_created')  			); + +			_elgg_enable_caching_for_entity($guid); +			_elgg_cache_entity($this); + +			return $ret;  		} else {  			// Create a new entity (nb: using attribute array directly  			// 'cos set function does something special!) @@ -1320,7 +1328,7 @@ abstract class ElggEntity extends ElggData implements  			$this->attributes['subtype'] = get_subtype_id($this->attributes['type'],  				$this->attributes['subtype']); -			cache_entity($this); +			_elgg_cache_entity($this);  			return $this->attributes['guid'];  		} @@ -1357,12 +1365,12 @@ abstract class ElggEntity extends ElggData implements  				$this->attributes['tables_loaded']++;  			} -			// guid needs to be an int  http://trac.elgg.org/ticket/4111 +			// guid needs to be an int  https://github.com/elgg/elgg/issues/4111  			$this->attributes['guid'] = (int)$this->attributes['guid'];  			// Cache object handle  			if ($this->attributes['guid']) { -				cache_entity($this); +				_elgg_cache_entity($this);  			}  			return true; @@ -1668,9 +1676,11 @@ abstract class ElggEntity extends ElggData implements  	/**  	 * Import data from an parsed ODD xml data array.  	 * -	 * @param array $data XML data +	 * @param ODD $data XML data  	 *  	 * @return true +	 * +	 * @throws InvalidParameterException  	 */  	public function import(ODD $data) {  		if (!($data instanceof ODDEntity)) { @@ -1732,8 +1742,6 @@ abstract class ElggEntity extends ElggData implements  	 * @return array  	 */  	public function getTags($tag_names = NULL) { -		global $CONFIG; -  		if ($tag_names && !is_array($tag_names)) {  			$tag_names = array($tag_names);  		} | 
