コード例 #1
0
ファイル: groups.php プロジェクト: sleepy909/cpassman
function phorum_joinable_groups()
{
    $PHORUM = $GLOBALS["PHORUM"];
    $joinablegroups = array();
    $groups = phorum_db_get_groups();
    $memberof = phorum_api_user_check_group_access(PHORUM_USER_GROUP_SUSPENDED, PHORUM_ACCESS_LIST);
    foreach ($groups as $group) {
        if (!isset($memberof[$group["group_id"]])) {
            if ($group["open"] == PHORUM_GROUP_OPEN) {
                $joinablegroups[] = array("group_id" => $group["group_id"], "name" => $group["name"]);
            } elseif ($group["open"] == PHORUM_GROUP_REQUIRE_APPROVAL) {
                $joinablegroups[] = array("group_id" => $group["group_id"], "name" => $group["name"] . " (*)");
            }
        }
    }
    return $joinablegroups;
}
コード例 #2
0
ファイル: users.php プロジェクト: sleepy909/cpassman
        $groups = phorum_db_get_groups(0, TRUE);
        $usergroups = phorum_api_user_check_group_access(PHORUM_USER_GROUP_SUSPENDED, PHORUM_ACCESS_LIST, $_REQUEST["user_id"]);
        $arr = array("Add A Group...");
        foreach ($groups as $group_id => $group) {
            if (!isset($usergroups[$group_id])) {
                $arr[$group_id] = $group["name"];
            }
        }
        if (count($arr) > 1) {
            $frm->addrow("Add A Group", $frm->select_tag("new_group", $arr));
        }
        if (is_array($usergroups)) {
            $group_options = array("remove" => "< Remove User From Group >", PHORUM_USER_GROUP_SUSPENDED => "Suspended", PHORUM_USER_GROUP_UNAPPROVED => "Unapproved", PHORUM_USER_GROUP_APPROVED => "Approved", PHORUM_USER_GROUP_MODERATOR => "Group Moderator");
            foreach ($usergroups as $group_id => $group) {
                $group_perm = $group['user_status'];
                $group_info = phorum_db_get_groups($group_id);
                $frm->hidden("groups[{$group_id}]", "{$group_id}");
                $frm->addrow($group_info[$group_id]["name"], $frm->select_tag("group_perm[{$group_id}]", $group_options, $group_perm, $extra_opts));
            }
        }
        $frm->show();
    } else {
        echo "User Not Found.";
    }
    //display add user form
} elseif (isset($_REQUEST["add"]) || isset($addUser_error)) {
    $username = isset($user_data["username"]) ? $user_data["username"] : "";
    $real_name = isset($user_data["real_name"]) ? $user_data["real_name"] : "";
    $email = isset($user_data["email"]) ? $user_data["email"] : "";
    $admin = isset($user_data["admin"]) ? $user_data["admin"] : "";
    print "<a href=\"" . htmlspecialchars($referrer) . "\">Back to the user overview</a><br/>";
コード例 #3
0
ファイル: user.php プロジェクト: mgs2/kw-forum
/**
 * @param integer $permission
 *     The permission level to check for. The function will check if the
 *     user has equal or higher permissions for the group(s). The available
 *     permission levels in low-to-high level order are:
 *     - {@link PHORUM_USER_GROUP_SUSPENDED}
 *     - {@link PHORUM_USER_GROUP_UNAPPROVED}
 *     - {@link PHORUM_USER_GROUP_APPROVED}
 *     - {@link PHORUM_USER_GROUP_MODERATOR}
 *
 * @param mixed $group_id
 *     Specifies the group(s) to look at. Available options are:
 *     - The id of the group for which to check the access.
 *     - An array of group_ids to check.
 *     - {@link PHORUM_ACCESS_ANY} to check if the user has access rights
 *       for any of the available groups.
 *     - {@link PHORUM_ACCESS_LIST} to return a list of group_ids for which the
 *       user has access rights.
 *
 * @param mixed $user
 *     Specifies the user to look at. Available options are:
 *     - 0 (zero, the default) to look at the active Phorum user.
 *     - A full user data array.
 *     - A single user_id.
 *
 * @return mixed
 *     The return value depends on the $group_id argument that was used:
 *
 *     - Single group_id or {@link PHORUM_ACCESS_ANY}:
 *       return either TRUE (access granted) or FALSE (access denied).
 *
 *     - An array of group_ids or {@link PHORUM_ACCESS_LIST}:
 *       return an array, containing all groups for which permission was
 *       granted. The keys in this array are group_ids and the values are
 *       group info arrays. These arrays contain the fields "group_id",
 *       "name", "open", "permissions" (which contains an array of
 *       forum permissions, indexed by forum_id), "user_status" (which contains
 *       the group status for the user, i.e. one of the PHORUM_USER_GROUP_*
 *       constants).
 */
function phorum_api_user_check_group_access($permission, $group_id, $user = 0)
{
    $PHORUM = $GLOBALS['PHORUM'];
    // Prepare the user to check the access for.
    if (empty($user)) {
        $user = $PHORUM['user'];
    } elseif (!is_array($user)) {
        $user = phorum_api_user_get($user);
    }
    // Retrieve all the groups for the current user. Admins get all groups.
    if (!empty($user['user_id']) && !empty($user['admin'])) {
        $groups = phorum_db_get_groups(0, TRUE);
    } else {
        $usergroups = phorum_db_user_get_groups($user['user_id']);
        $groups = empty($usergroups) ? array() : phorum_db_get_groups(array_keys($usergroups), TRUE);
    }
    // Prepare the array of group_ids to check.
    $group_access = array();
    $single_group_id = NULL;
    // An array of group ids.
    if (is_array($group_id)) {
        foreach ($group_id as $id) {
            $group_access[$id] = FALSE;
        }
        // Retrieve a group access list or access-rights-in-any-group.
    } elseif ($group_id == PHORUM_ACCESS_LIST || $group_id == PHORUM_ACCESS_ANY) {
        foreach ($groups as $id => $data) {
            $group_access[$id] = FALSE;
        }
        // A single group id.
    } else {
        $single_group_id = $group_id;
        $group_access[$group_id] = FALSE;
    }
    // Inactive users have no group permissions at all.
    if (!empty($user['user_id']) && empty($user['active'])) {
        if ($group_id == PHORUM_ACCESS_ANY) {
            return FALSE;
        }
        // No further code required. We'll just keep all group
        // permissions set to FALSE here.
    } elseif (!empty($user['user_id']) && !empty($user['admin'])) {
        if ($group_id == PHORUM_ACCESS_ANY) {
            return TRUE;
        }
        foreach ($group_access as $id => $data) {
            $group_access[$id] = $groups[$id];
            $group_access[$id]['user_status'] = PHORUM_USER_GROUP_MODERATOR;
        }
    } else {
        foreach ($group_access as $id => $data) {
            if (!isset($groups[$id])) {
                continue;
            }
            if ($usergroups[$id] >= $permission) {
                if ($group_id == PHORUM_ACCESS_ANY) {
                    return TRUE;
                }
                $group_access[$id] = $groups[$id];
                $group_access[$id]['user_status'] = $usergroups[$id];
                continue;
            }
        }
    }
    // If we reach this code, then we did not find any group for the user.
    if ($group_id == PHORUM_ACCESS_ANY) {
        return FALSE;
    }
    // Return the results.
    if ($single_group_id !== NULL) {
        // Return either TRUE or FALSE.
        return empty($group_access[$single_group_id]) ? FALSE : TRUE;
    } else {
        // Return an array of groups for which permission is granted.
        // The keys are group_ids and the values the user's permissions
        // for the groups.
        $return = array();
        foreach ($group_access as $id => $group) {
            if ($group !== FALSE) {
                $return[$id] = $group;
            }
        }
        return $return;
    }
}
コード例 #4
0
ファイル: groupmod.php プロジェクト: nistormihai/Newscoop
        foreach ($_REQUEST["status"] as $userid => $status){
            // load the users groups, make the change, then save again
            $groups = phorum_user_get_groups($userid);
            // we can't set someone to be a moderator from here
            if ($status != PHORUM_USER_GROUP_MODERATOR){
                $groups[$PHORUM["args"]["group"]] = $status;
            }
            if ($status == PHORUM_USER_GROUP_REMOVE){
                unset($groups[$PHORUM["args"]["group"]]);
            }
            phorum_user_save_groups($userid, $groups);
        }
        $PHORUM["DATA"]["Message"] = $PHORUM["DATA"]["LANG"]["ChangesSaved"];
    }

    $group = phorum_db_get_groups($PHORUM["args"]["group"]);
    $PHORUM["DATA"]["GROUP"]["name"] = $group[$PHORUM["args"]["group"]]["name"];        
    $PHORUM["DATA"]["USERS"] = array();
    $PHORUM["DATA"]["GROUP"]["url"] = phorum_get_url(PHORUM_CONTROLCENTER_ACTION_URL, "panel=" . PHORUM_CC_GROUP_MODERATION,  "group=" . $PHORUM["args"]["group"]);
        
    $PHORUM["DATA"]["FILTER"] = array();
    $PHORUM["DATA"]["FILTER"][] = array("name" => $PHORUM["DATA"]["LANG"]["None"],
        "enable" => !(!isset($PHORUM["args"]["filter"])),
        "url" => phorum_get_url(PHORUM_CONTROLCENTER_ACTION_URL, "panel=" . PHORUM_CC_GROUP_MODERATION,  "group=" . $PHORUM["args"]["group"]));
    $PHORUM["DATA"]["FILTER"][] = array("name" => $PHORUM["DATA"]["LANG"]["Approved"],
        "enable" => !(isset($PHORUM["args"]["filter"]) && $PHORUM["args"]["filter"] == PHORUM_USER_GROUP_APPROVED),
        "url" => phorum_get_url(PHORUM_CONTROLCENTER_ACTION_URL, "panel=" . PHORUM_CC_GROUP_MODERATION,  "group=" . $PHORUM["args"]["group"], "filter=" . PHORUM_USER_GROUP_APPROVED));
    $PHORUM["DATA"]["FILTER"][] = array("name" => $PHORUM["DATA"]["LANG"]["PermGroupModerator"], 
        "enable" => !(isset($PHORUM["args"]["filter"]) && $PHORUM["args"]["filter"] == PHORUM_USER_GROUP_MODERATOR),
        "url" => phorum_get_url(PHORUM_CONTROLCENTER_ACTION_URL, "panel=" . PHORUM_CC_GROUP_MODERATION,  "group=" . $PHORUM["args"]["group"], "filter=" . PHORUM_USER_GROUP_MODERATOR));
    $PHORUM["DATA"]["FILTER"][] = array("name" => $PHORUM["DATA"]["LANG"]["Suspended"], 
コード例 #5
0
ファイル: users.php プロジェクト: nistormihai/Newscoop
/**
 * phorum_user_get_moderator_groups()
 *
 * This function will return a list of the groups the current user
 * is allowed to moderate. For admins, this will return all the groups.
 *
 * The array is of the form array[group_id] = groupname.
 * @return array
 */
function phorum_user_get_moderator_groups()
{
    $PHORUM=$GLOBALS["PHORUM"];
    $groups = array();
    $fullgrouplist = phorum_db_get_groups();

    // if its an admin, return all groups as a moderator
    if ($PHORUM["user"]["admin"]){
        // the permission here is for a forum, we don't care about that
        foreach ($fullgrouplist as $groupid => $groupperm){
            $groups[$groupid] = $fullgrouplist[$groupid]["name"];
        }
    }
    else {
        $grouplist = phorum_user_get_groups($PHORUM["user"]["user_id"]);
        foreach ($grouplist as $groupid => $perm){
            if ($perm == PHORUM_USER_GROUP_MODERATOR){
                $groups[$groupid] = $fullgrouplist[$groupid]["name"];
            }
        }
    }
    return $groups;
}
コード例 #6
0
ファイル: groups.php プロジェクト: sleepy909/cpassman
                            phorum_cache_remove('user', $user_id);
                        }
                    }
                }
                echo "Group Forum Permissions Saved";
            } else {
                echo "Error Saving Group Forum Permissions";
            }
            break;
    }
}
if ($error) {
    phorum_admin_error($error);
}
include_once "./include/admin/PhorumInputForm.php";
$groups = phorum_db_get_groups(0, TRUE);
$forums = phorum_db_get_forums();
if (isset($_REQUEST["edit"]) && !empty($_REQUEST['group_id'])) {
    $group_id_in = empty($_POST['group_id']) ? $_GET['group_id'] : $_POST['group_id'];
    $_GET['group_id'] = (int) $group_id_in;
    $group = $groups[$_GET["group_id"]];
    $frm = new PhorumInputForm("", "post");
    $frm->addbreak("Edit Group");
    $frm->hidden("module", "groups");
    $frm->hidden("section", "edit");
    // for getting back to the edit-page
    $frm->hidden('edit', '1');
    $frm->hidden("group_id", $_GET["group_id"]);
    $open_options = array(PHORUM_GROUP_CLOSED => "No", PHORUM_GROUP_OPEN => "Yes", PHORUM_GROUP_REQUIRE_APPROVAL => "Yes (require Group Moderator approval)");
    $frm->addrow("Name:", $frm->text_box("name", $group["name"], 50));
    $frm->addrow("Allow Membership Requests:", $frm->select_tag("open", $open_options, $group["open"], ""));
コード例 #7
0
ファイル: groups.php プロジェクト: nistormihai/Newscoop
                    echo "Error Saving Group Forum Permissions";
                }


                break;

        }
        
    }

    if($error){
        phorum_admin_error($error);
    }

    include_once "./include/admin/PhorumInputForm.php";
    $groups=phorum_db_get_groups();
   
    $forums=phorum_db_get_forums();

    if(isset($_GET["edit"])){

        $group=$groups[$_GET["group_id"]];

        $frm = new PhorumInputForm ("", "post");
    
        $frm->addbreak("Edit Group");
    
        $frm->hidden("module", "groups");
    
        $frm->hidden("section", "edit");
コード例 #8
0
ファイル: groups.php プロジェクト: nistormihai/Newscoop
function phorum_joinable_groups()
{
    $PHORUM = $GLOBALS["PHORUM"];
    $joinablegroups = array();
    $groups = phorum_db_get_groups();
    $memberof = phorum_user_get_groups($PHORUM["user"]["user_id"]);
    foreach ($groups as $group){
        if (!isset($memberof[$group["group_id"]])){
            if ($group["open"] == PHORUM_GROUP_OPEN){
                $joinablegroups[] = array("group_id" => $group["group_id"], "name" => $group["name"]);
            }
            elseif ($group["open"] == PHORUM_GROUP_REQUIRE_APPROVAL){
                $joinablegroups[] = array("group_id" => $group["group_id"], "name" => $group["name"] . " (*)");
            }
        }
    }
    return $joinablegroups;
}