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; + } } |