diff options
Diffstat (limited to 'engine')
| -rw-r--r-- | engine/lib/entities.php | 19 | ||||
| -rw-r--r-- | engine/lib/sites.php | 12 | 
2 files changed, 24 insertions, 7 deletions
| diff --git a/engine/lib/entities.php b/engine/lib/entities.php index e7f84b15b..a50567d9f 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -702,7 +702,7 @@ function get_entity($guid) {  	// but that evaluates to a false positive for $guid = TRUE.  	// This is a bit slower, but more thorough.  	if (!is_numeric($guid) || $guid === 0 || $guid === '0') { -		return FALSE; +		return false;  	}  	// Check local cache first @@ -719,14 +719,23 @@ function get_entity($guid) {  			$shared_cache = false;  		}  	} + +	// until ACLs in memcache, DB query is required to determine access +	$entity_row = get_entity_as_row($guid); +	if (!$entity_row) { +		return false; +	} +  	if ($shared_cache) { -		$new_entity = $shared_cache->load($guid); -		if ($new_entity) { -			return $new_entity; +		$cached_entity = $shared_cache->load($guid); +		// @todo store ACLs in memcache http://trac.elgg.org/ticket/3018#comment:3 +		if ($cached_entity) { +			// @todo use ACL and cached entity access_id to determine if user can see it +			return $cached_entity;  		}  	} -	$new_entity = entity_row_to_elggstar(get_entity_as_row($guid)); +	$new_entity = entity_row_to_elggstar($entity_row);  	if ($new_entity) {  		cache_entity($new_entity);  	} diff --git a/engine/lib/sites.php b/engine/lib/sites.php index 850092cad..8b772668d 100644 --- a/engine/lib/sites.php +++ b/engine/lib/sites.php @@ -18,11 +18,19 @@  function elgg_get_site_entity($site_guid = 0) {  	global $CONFIG; +	$result = false; +	  	if ($site_guid == 0) { -		return $CONFIG->site; +		$site = $CONFIG->site; +	} else { +		$site = get_entity($site_guid); +	} +	 +	if($site instanceof ElggSite){ +		$result = $site;  	} -	return get_entity($site_guid); +	return $result;  }  /** | 
