Пример #1
0
                if (perm_remove_group($gid)) {
                    admin_add_log_entry(DELETE_USER_GROUP, array($group_name));
                } else {
                    $error_msg_array[] = sprintf(gettext("Failed to delete group %s"), $group_name);
                    $valid = false;
                }
            }
        }
        if ($valid) {
            header_redirect("admin_user_groups.php?webtag={$webtag}&deleted=true");
            exit;
        }
    }
}
html_draw_top(sprintf('title=%s', gettext("Admin - User Groups")), 'class=window_title');
$user_groups_array = perm_get_user_groups($page, $sort_by, $sort_dir);
echo "<h1>", gettext("Admin"), "<img src=\"", html_style_image('separator.png'), "\" alt=\"\" border=\"0\" />", gettext("User Groups"), "</h1>\n";
if (isset($_GET['added'])) {
    html_display_success_msg(gettext("Successfully added group"), '86%', 'center');
} else {
    if (isset($_GET['edited'])) {
        html_display_success_msg(gettext("Successfully edited group"), '86%', 'center');
    } else {
        if (isset($_GET['deleted'])) {
            html_display_success_msg(gettext("Successfully deleted selected groups"), '86%', 'center');
        } else {
            if (sizeof($user_groups_array['user_groups_array']) < 1) {
                html_display_warning_msg(gettext("No User Groups have been set up. To add a group click the 'Add New' button below."), '86%', 'center');
            }
        }
    }
Пример #2
0
function perm_get_user_groups($page = 1, $sort_by = 'GROUP_NAME', $sort_dir = 'ASC')
{
    if (!($db = db::get())) {
        return false;
    }
    $sort_by_array = array('GROUP_NAME', 'GROUP_DESC', 'PERMS', 'USER_COUNT', 'DEFAULT_GROUP');
    $sort_dir_array = array('ASC', 'DESC');
    if (!is_numeric($page) || $page < 1) {
        $page = 1;
    }
    $offset = calculate_page_offset($page, 10);
    if (!in_array($sort_by, $sort_by_array)) {
        $sort_by = 'GROUP_NAME';
    }
    if (!in_array($sort_dir, $sort_dir_array)) {
        $sort_dir = 'ASC';
    }
    if (!($table_prefix = get_table_prefix())) {
        return false;
    }
    if (!($forum_fid = get_forum_fid())) {
        return false;
    }
    $user_groups_array = array();
    $sql = "SELECT SQL_CALC_FOUND_ROWS GROUPS.GID, GROUPS.GROUP_NAME, GROUPS.GROUP_DESC, ";
    $sql .= "COUNT(DISTINCT GROUP_USERS.UID) AS USER_COUNT, BIT_OR(GROUP_PERMS.PERM) AS PERMS, ";
    $sql .= "IF(FORUM_SETTINGS.SVALUE = GROUPS.GID, 1, 0) AS DEFAULT_GROUP FROM GROUPS ";
    $sql .= "INNER JOIN GROUP_PERMS USING (GID) LEFT JOIN GROUP_USERS USING (GID) ";
    $sql .= "LEFT JOIN FORUM_SETTINGS ON (FORUM_SETTINGS.FID = '{$forum_fid}' ";
    $sql .= "AND FORUM_SETTINGS.SNAME = 'default_user_group') WHERE GROUPS.FORUM = '{$forum_fid}' ";
    $sql .= "AND GROUP_PERMS.FID = 0 GROUP BY GROUP_PERMS.GID ";
    $sql .= "ORDER BY {$sort_by} {$sort_dir} LIMIT {$offset}, 10";
    if (!($result = $db->query($sql))) {
        return false;
    }
    $sql = "SELECT FOUND_ROWS() AS ROW_COUNT";
    if (!($result_count = $db->query($sql))) {
        return false;
    }
    list($user_groups_count) = $result_count->fetch_row();
    if ($result->num_rows == 0 && $user_groups_count > 0 && $page > 1) {
        return perm_get_user_groups($page - 1, $sort_by, $sort_dir);
    }
    while (($permissions_data = $result->fetch_assoc()) !== null) {
        $user_groups_array[$permissions_data['GID']] = array('GID' => $permissions_data['GID'], 'GROUP_NAME' => $permissions_data['GROUP_NAME'], 'GROUP_DESC' => $permissions_data['GROUP_DESC'], 'USER_COUNT' => $permissions_data['USER_COUNT'], 'PERMS' => (double) $permissions_data['PERMS']);
    }
    return array('user_groups_array' => $user_groups_array, 'user_groups_count' => $user_groups_count);
}
Пример #3
0
function perm_get_user_groups($page = 1, $sort_by = 'GROUP_NAME', $sort_dir = 'ASC')
{
    if (!($db = db::get())) {
        return false;
    }
    $sort_by_array = array('GROUPS.GROUP_NAME', 'GROUPS.GROUP_DESC', 'GROUP_PERMS', 'USER_COUNT');
    $sort_dir_array = array('ASC', 'DESC');
    if (!is_numeric($page) || $page < 1) {
        $page = 1;
    }
    $offset = calculate_page_offset($page, 10);
    if (!in_array($sort_by, $sort_by_array)) {
        $sort_by = 'GROUPS.GROUP_NAME';
    }
    if (!in_array($sort_dir, $sort_dir_array)) {
        $sort_dir = 'ASC';
    }
    if (!($table_prefix = get_table_prefix())) {
        return false;
    }
    if (!($forum_fid = get_forum_fid())) {
        return false;
    }
    $user_groups_array = array();
    $sql = "SELECT SQL_CALC_FOUND_ROWS GROUPS.GID, GROUPS.GROUP_NAME, GROUPS.GROUP_DESC, ";
    $sql .= "COUNT(DISTINCT GROUP_USERS.UID) AS USER_COUNT, BIT_OR(GROUP_PERMS.PERM) AS GROUP_PERMS ";
    $sql .= "FROM GROUPS INNER JOIN GROUP_PERMS USING (GID) LEFT JOIN GROUP_USERS USING (GID) ";
    $sql .= "WHERE GROUP_PERMS.FORUM = '{$forum_fid}' AND GROUP_PERMS.FID = 0 ";
    $sql .= "GROUP BY GROUP_PERMS.GID LIMIT {$offset}, 10";
    if (!($result = $db->query($sql))) {
        return false;
    }
    $sql = "SELECT FOUND_ROWS() AS ROW_COUNT";
    if (!($result_count = $db->query($sql))) {
        return false;
    }
    list($user_groups_count) = $result_count->fetch_row();
    if ($result->num_rows == 0 && $user_groups_count > 0 && $page > 1) {
        return perm_get_user_groups($page - 1, $sort_by, $sort_dir);
    }
    while ($permissions_data = $result->fetch_assoc()) {
        $user_groups_array[] = $permissions_data;
    }
    return array('user_groups_array' => $user_groups_array, 'user_groups_count' => $user_groups_count);
}