diff options
Diffstat (limited to 'engine/classes/ElggObject.php')
| -rw-r--r-- | engine/classes/ElggObject.php | 35 | 
1 files changed, 35 insertions, 0 deletions
diff --git a/engine/classes/ElggObject.php b/engine/classes/ElggObject.php index c47cd217f..f71801144 100644 --- a/engine/classes/ElggObject.php +++ b/engine/classes/ElggObject.php @@ -184,4 +184,39 @@ class ElggObject extends ElggEntity {  			'description',  		));  	} + +	/** +	 * Can a user comment on this object? +	 * +	 * @see ElggEntity::canComment() +	 * +	 * @param int $user_guid User guid (default is logged in user) +	 * @return bool +	 * @since 1.8.0 +	 */ +	public function canComment($user_guid = 0) { +		$result = parent::canComment($user_guid); +		if ($result !== null) { +			return $result; +		} + +		if ($user_guid == 0) { +			$user_guid = elgg_get_logged_in_user_guid(); +		} + +		// must be logged in to comment +		if (!$user_guid) { +			return false; +		} + +		// must be member of group +		if (elgg_instanceof($this->getContainerEntity(), 'group')) { +			if (!$this->getContainerEntity()->isMember(get_user($user_guid))) { +				return false; +			} +		} + +		// no checks on read access since a user cannot see entities outside his access +		return true; +	}  }  | 
