return false;
}
/**
 * Is called when authorizing a user for an item with the special access level $group. 
 * this method should return all the levels above $group (especially any admin levels)
 * @param  string $group always 'site-planning'
 * @return array<string> list of super groups that can see/execute on things marked with $group level
 */
function groupMembersOf($group)
{
    /**
     * 
     */
    if ($group == 'fb-member') {
        return array("special", "fb-admin");
    }
    return array("special");
    /**
     * 
     */
}
/**
 * Test
 */
include_once __DIR__ . '/core.php';
if (isMemberOf('fb-admin')) {
    echo 'user is fb-admin';
}
if (isMemberOf('fb-member')) {
    echo 'user is fb-member';
}
Beispiel #2
0
/**
 * @param $guid
 * @return mixed
 * @throws InvalidParameterException
 */
function group_join_group($guid)
{
    global $CONFIG;
    $user = elgg_get_logged_in_user_entity();
    if (!$user) {
        throw new InvalidParameterException('registration:usernamenotvalid');
    }
    /* @var ElggGroup $group */
    $group = get_entity($guid);
    if (!$group instanceof ElggGroup) {
        $return['joined'] = false;
        $return['message'] = 'Group Not Found';
        exit;
    }
    // access bypass for getting invisible group
    $ia = elgg_set_ignore_access(true);
    elgg_set_ignore_access($ia);
    if ($user && $group instanceof ElggGroup) {
        // join or request
        $join = false;
        if ($group->isPublicMembership() || $group->canEdit($user->guid)) {
            // anyone can join public groups and admins can join any group
            $join = true;
        } else {
            if (check_entity_relationship($group->guid, 'invited', $user->guid)) {
                // user has invite to closed group
                $join = true;
            }
        }
        if ($join) {
            if (groups_join_group($group, $user)) {
                $return['member'] = 'joined';
                $return['message'] = 'joined';
            } else {
                $isMember = isMemberOf($group, $user);
                if ($isMember) {
                    $return['member'] = 'joined';
                    $return['message'] = 'isMemberOf';
                } else {
                    $return['member'] = 'cantjoin';
                    $return['message'] = 'cantjoin';
                }
            }
        } else {
            add_entity_relationship($user->guid, 'membership_request', $group->guid);
            $owner = $group->getOwnerEntity();
            $url = "{$CONFIG->url}groups/requests/{$group->guid}";
            $subject = elgg_echo('groups:request:subject', array($user->name, $group->name), $owner->language);
            $body = elgg_echo('groups:request:body', array($group->getOwnerEntity()->name, $user->name, $group->name, $user->getURL(), $url), $owner->language);
            // Notify group owner
            if (notify_user($owner->guid, $user->getGUID(), $subject, $body)) {
                $return['member'] = 'cantjoin';
                $return['message'] = 'joinrequestmade';
            } else {
                $return['member'] = 'cantjoin';
                $return['message'] = 'joinrequestnotmade';
            }
        }
    } else {
        $isMember = isMemberOf($group, $user);
        if ($isMember) {
            $return['member'] = 'joined';
            $return['message'] = 'isMemberOf';
        } else {
            $return['member'] = 'cantjoin';
            $return['message'] = 'cantjoin';
        }
    }
    return $return;
}