/** * Determines if $viewer has access to $user's friends list * * @param ElggUser $user User whose friends are to be displayed * @param ElggUser $viewer Viewer * @return bool */ function user_friends_can_view_friends(ElggUser $user, ElggUser $viewer = null) { if (!isset($viewer)) { $viewer = elgg_get_logged_in_user_entity(); } $permission = false; if ($viewer && elgg_check_access_overrides($viewer->guid)) { $permission = true; } $setting = elgg_get_plugin_user_setting('friend_list_visibility', $user->guid, 'user_friends'); if (!isset($setting)) { $setting = elgg_get_plugin_setting('friend_list_visibility', 'user_friends', ACCESS_PUBLIC); } switch ((int) $setting) { case ACCESS_PRIVATE: $permission = $viewer && $user->canEdit($viewer->guid); break; case ACCESS_FRIENDS: $permission = $viewer && $user->isFriendsWith($viewer->guid); break; case ACCESS_LOGGED_IN: $permission = $viewer; break; case ACCESS_PUBLIC: $permission = true; break; } $params = array('viewer' => $viewer, 'user' => $user); return elgg_trigger_plugin_hook('permissions_check:view_friends_list', 'user', $params, $permission); }