diff options
Diffstat (limited to 'engine')
| -rw-r--r-- | engine/classes/ElggMetadata.php | 6 | ||||
| -rw-r--r-- | engine/classes/ElggSite.php | 7 | ||||
| -rw-r--r-- | engine/lib/access.php | 10 | ||||
| -rw-r--r-- | engine/lib/entities.php | 13 | ||||
| -rw-r--r-- | engine/lib/filestore.php | 6 | 
5 files changed, 26 insertions, 16 deletions
| diff --git a/engine/classes/ElggMetadata.php b/engine/classes/ElggMetadata.php index ed3f8614f..32e7b32f1 100644 --- a/engine/classes/ElggMetadata.php +++ b/engine/classes/ElggMetadata.php @@ -45,11 +45,13 @@ class ElggMetadata extends ElggExtender {  	/**  	 * Determines whether or not the user can edit this piece of metadata  	 * +	 * @param int $user_guid The GUID of the user (defaults to currently logged in user) +	 *  	 * @return true|false Depending on permissions  	 */ -	function canEdit() { +	function canEdit($user_guid = 0) {  		if ($entity = get_entity($this->get('entity_guid'))) { -			return $entity->canEditMetadata($this); +			return $entity->canEditMetadata($this, $user_guid);  		}  		return false;  	} diff --git a/engine/classes/ElggSite.php b/engine/classes/ElggSite.php index 8708800cf..16b80b9d3 100644 --- a/engine/classes/ElggSite.php +++ b/engine/classes/ElggSite.php @@ -190,18 +190,19 @@ class ElggSite extends ElggEntity {  	 * @note You cannot disable the current site.  	 *  	 * @param string $reason Optional reason for disabling +	 * @param bool   $recursive Recursively disable all contained entities?  	 *  	 * @return bool  	 * @throws SecurityException  	 */ -	public function disable($reason = "") { +	public function disable($reason = "", $recursive = true) {  		global $CONFIG;  		if ($CONFIG->site->getGUID() == $this->guid) {  			throw new SecurityException('SecurityException:deletedisablecurrentsite');  		} -		return parent::disable($reason); +		return parent::disable($reason, $recursive);  	}  	/** @@ -225,7 +226,7 @@ class ElggSite extends ElggEntity {  				'offset' => $offset,  			);  		} -		 +  		$defaults = array(  			'relationship' => 'member_of_site',  			'relationship_guid' => $this->getGUID(), diff --git a/engine/lib/access.php b/engine/lib/access.php index ae64f832a..002413baa 100644 --- a/engine/lib/access.php +++ b/engine/lib/access.php @@ -981,17 +981,17 @@ function access_init() {   */  function elgg_override_permissions($hook, $type, $value, $params) {  	$user = elgg_extract('user', $params); -	if (!$user) { -		$user = elgg_get_logged_in_user_entity(); +	if ($user) { +		$user_guid = $user->getGUID(); +	} else { +		$user_guid = elgg_get_logged_in_user_guid();  	} -	// don't do this so ignore access still works. +	// don't do this so ignore access still works with no one logged in  //	if (!$user instanceof ElggUser) {  //		return false;  //	} -	$user_guid = $user->guid; -  	// check for admin  	if ($user_guid && elgg_is_admin_user($user_guid)) {  		return true; diff --git a/engine/lib/entities.php b/engine/lib/entities.php index f1352ba8d..fcd4544bf 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -530,12 +530,12 @@ $container_guid = 0) {  		$container_guid = $owner_guid;  	} -	$user = elgg_get_logged_in_user_entity(); -	if (!can_write_to_container($user->guid, $owner_guid, $type, $subtype)) { +	$user_guid = elgg_get_logged_in_user_guid(); +	if (!can_write_to_container($user_guid, $owner_guid, $type, $subtype)) {  		return false;  	}  	if ($owner_guid != $container_guid) { -		if (!can_write_to_container($user->guid, $container_guid, $type, $subtype)) { +		if (!can_write_to_container($user_guid, $container_guid, $type, $subtype)) {  			return false;  		}  	} @@ -1837,7 +1837,12 @@ function can_edit_entity_metadata($entity_guid, $user_guid = 0, $metadata = null  			$return = can_edit_entity($entity_guid, $user_guid);  		} -		$user = get_entity($user_guid); +		if ($user_guid) { +			$user = get_entity($user_guid); +		} else { +			$user = elgg_get_logged_in_user_entity(); +		} +  		$params = array('entity' => $entity, 'user' => $user, 'metadata' => $metadata);  		$return = elgg_trigger_plugin_hook('permissions_check:metadata', $entity->type, $params, $return);  		return $return; diff --git a/engine/lib/filestore.php b/engine/lib/filestore.php index a7aa1ff8c..a13d8aa27 100644 --- a/engine/lib/filestore.php +++ b/engine/lib/filestore.php @@ -483,8 +483,10 @@ function filestore_init() {  	global $CONFIG;  	// Now register a default filestore -	set_default_filestore(new ElggDiskFilestore($CONFIG->dataroot)); - +	if (isset($CONFIG->dataroot)) { +		set_default_filestore(new ElggDiskFilestore($CONFIG->dataroot)); +	} +	  	// Now run this stuff, but only once  	run_function_once("filestore_run_once");  } | 
