Пример #1
0
function wikiplugin_memberlist_get_group_details($groups)
{
    global $user, $prefs;
    $validGroups = array();
    foreach ($groups as $groupName) {
        $perms = Perms::get(array('type' => 'group', 'object' => $groupName));
        if ($perms->group_view) {
            $isMember = in_array($groupName, $perms->getGroups());
            $validGroups[$groupName] = array('can_join' => $perms->group_join && !$isMember && $user, 'can_leave' => $perms->group_join && $isMember && $user, 'can_add' => $perms->group_add_member, 'can_remove' => $perms->group_remove_member, 'is_member' => $isMember);
            if ($perms->group_view_members) {
                $validGroups[$groupName]['members'] = wikiplugin_memberlist_get_members($groupName);
                if ($prefs['feature_group_transition']) {
                    require_once 'lib/transitionlib.php';
                    $transitionlib = new TransitionLib('group');
                    $validGroups[$groupName]['transitions'] = array();
                    foreach ($validGroups[$groupName]['members'] as $username) {
                        $validGroups[$groupName]['transitions'][$username] = $transitionlib->getAvailableTransitionsFromState($groupName, $username);
                    }
                }
            }
        }
    }
    return $validGroups;
}
Пример #2
0
function wikiplugin_memberlist_get_group_details($groups, $maxRecords = -1, $sort_mode = 'login_asc', $readOnly = false)
{
    global $user, $prefs, $userlib;
    $validGroups = array();
    foreach ($groups as $groupName) {
        if (!$userlib->group_exists($groupName)) {
            continue;
        }
        $perms = Perms::get(array('type' => 'group', 'object' => $groupName));
        if ($perms->group_view) {
            $isMember = in_array($groupName, $perms->getGroups());
            $validGroups[$groupName] = array('can_join' => $perms->group_join && !$isMember && $user && !$readOnly, 'can_leave' => $perms->group_join && $isMember && $user && !$readOnly, 'can_add' => $perms->group_add_member && !$readOnly, 'can_remove' => $perms->group_remove_member && !$readOnly, 'is_member' => $isMember);
            if ($perms->group_view_members) {
                $validGroups[$groupName]['members'] = wikiplugin_memberlist_get_members($groupName, $maxRecords, $sort_mode);
                if ($prefs['feature_group_transition'] == 'y') {
                    require_once 'lib/transitionlib.php';
                    $transitionlib = new TransitionLib('group');
                    $validGroups[$groupName]['transitions'] = array();
                    foreach ($validGroups[$groupName]['members'] as $username) {
                        $validGroups[$groupName]['transitions'][$username] = $transitionlib->getAvailableTransitionsFromState($groupName, $username);
                    }
                }
                if (!empty($user)) {
                    $validGroups[$groupName]['isWatching'] = TikiLib::lib('tiki')->user_watches($user, 'user_joins_group', $groupName, 'group') > 0;
                } else {
                    $validGroups[$groupName]['isWatching'] = false;
                }
            }
        }
    }
    return $validGroups;
}