NukeXchange Network

          

NukeZone Hosting - Fast, Affordable and Dependable
Nuke Fixes · NukeForums · NukeZone Hosting · NukeUnited · Nuke Sites · Nuke Skins · NukeLance
Nuke Resources
 :: Home  :: Downloads  :: Your Account  :: Forums  :: Advertise :: 
Login or Register
Main Menu
General
 Main
 AvantGo
 Banner_Clients
 cfaq
 Donations
 Downloads
 Forums
 Members_List
 Private_Messages
 Search
 Stories_Archive
 Submit_News
 Surveys
 Topics
 Web_Links
 Your_Account

Your Account
 Login
 Register
 Lost Pass

Modules
Quick Links
· CMS Focus
· Domain Names
. Game Quest
· Learning Linux
. MateMaker
· NukeFixes
· NukeForums
· NukeLance
· Nuke Sites
· Nuke Skins
· NukeZone Hosting
. SearchDevil
Other Options

Download Resources
· Nuke Downloads
· Add a Link
· New Files
· Top Rated
· Most Popular

Web Site Resources
· Nuke Sites
· Add A Site
· New Sites
· Top Rated
· Most Popular

Support
· NukeZone Hosting
· NukeSkins.com
· NukeForums.com
· phpnuke.org
· NukeFixes.com
Information
NukeForums
·decompressing EN-Book-Nuke.tar.tar
·How to allow spaces/gaps/"-" in allowed usernames
·How to Setup PHPNUKE on win2k
·cannot save changes
·voting?
·Nuke forum picture problem
·How to change smtp port on wampserver and windows
·yet another 301 redirect problem
·Image display? - newbie
·php nuke help

read more...
Top10 Links
· 1: Nuke Forums
· 2: PHPNukeFiles
· 3: NukeSkins
· 4: Nuke Templates
· 5: EcomJunk
· 6: MDesign
· 7: Windows Installation: PHP
· 8: FLASH-FOR-NUKE
· 9: Dezina
· 10: Global Dream News Sharing Portal!
Site Visitors
User Login:

Nickname:
Password:
Security Code: Security Code
Type Security Code Here:

Members List Membership:
Latest: Vanquistador
Today: 1
Yesterday: 1
Overall: 15103

Visitation:
Guests: 533
Members: 0
Total: 533


You are Anonymous user. You can register for free by clicking here
Sponsor Links
Nuke Sites Link Directory
Nuke Sites Link Directory

NukeResources :: View topic - Update forum permissions: fixed. Attachment hack: broken
NukeResources Forum Index

NukeResources Forum Index -> Bug Reports -> Update forum permissions: fixed. Attachment hack: broken
Post new topic  Reply to topic    View previous topic :: View next topic 
Update forum permissions: fixed. Attachment hack: broken
PostPosted: Thu Mar 03, 2005 4:22 am Reply with quote
cakepro1
Resource Seeker
Resource Seeker
 
Joined: Apr 29, 2003
Posts: 9




Hello ~

In my nuke 6.5/phpbb 2.0.6 site, I was unable to add any moderators to individual forums. I was able to remedy the situation by running the FixIt.php file found at http://nukecops.com/postx1703-0-0.html, which inserts and corrects the $group_id and group table. This fix worked perfectly.

Now my problem is that the attachment hack is broken. Only the admin and mods can see, upload, and download attachments, but no users can. They can't even see any uploaded files in the forums! Do any of you NukePros have the fix for this problem? I would sincerely appreciate your help.

Many thanks,
Sherri

ps...If this helps, this is the admin_ug_auth.php file with the attachment hack modifications made.
Code:
<?php
/***************************************************************************
 *                            admin_ug_auth.php
 *                            -------------------
 *   begin                : Saturday, Feb 13, 2001
 *   copyright            : (C) 2001 The phpBB Group
 *   email                : support@phpbb.com
 *
 *   $Id: admin_ug_auth.php,v 1.13.2.4 2003/05/17 17:32:19 acydburn Exp $
 *
 *3/2/2005
 ***************************************************************************/
/***************************************************************************
* phpbb2 forums port version 2.0.5 (c) 2003 - Nuke Cops (http://nukecops.com)
*
* Ported by Nuke Cops to phpbb2 standalone 2.0.5 Test
* and debugging completed by the Elite Nukers and site members.
*
* You run this package at your sole risk. Nuke Cops and affiliates cannot
* be held liable if anything goes wrong. You are advised to test this
* package on a development system. Backup everything before implementing
* in a production environment. If something goes wrong, you can always
* backout and restore your backups.
*
* Installing and running this also means you agree to the terms of the AUP
* found at Nuke Cops.
*
* This is version 2.0.5 of the phpbb2 forum port for PHP-Nuke. Work is based
* on Tom Nitzschner's forum port version 2.0.6. Tom's 2.0.6 port was based
* on the phpbb2 standalone version 2.0.3. Our version 2.0.5 from Nuke Cops is
* now reflecting phpbb2 standalone 2.0.5 that fixes some bugs and the
* invalid_session error message.
***************************************************************************/
/***************************************************************************
 *   This file is part of the phpBB2 port to Nuke 6.0 (c) copyright 2002
 *   by Tom Nitzschner (tom@toms-home.com)
 *   http://bbtonuke.sourceforge.net (or http://www.toms-home.com)
 *
 *   As always, make a backup before messing with anything. All code
 *   release by me is considered sample code only. It may be fully
 *   functual, but you use it at your own risk, if you break it,
 *   you get to fix it too. No waranty is given or implied.
 *
 *   Please post all questions/request about this port on http://bbtonuke.sourceforge.net first,
 *   then on my site. All original header code and copyright messages will be maintained
 *   to give credit where credit is due. If you modify this, the only requirement is
 *   that you also maintain all original copyright messages. All my work is released
 *   under the GNU GENERAL PUBLIC LICENSE. Please see the README for more information.
 *
 ***************************************************************************/
/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

define('IN_PHPBB', 1);

if( !empty($setmodules) )
{
        $filename = basename(__FILE__);
        $module['Users']['Permissions'] = $filename . "?mode=user";
        $module['Groups']['Permissions'] = $filename . "?mode=group";

        return;
}

//
// Load default header
//
$no_page_header = TRUE;

$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
require('./pagestart.' . $phpEx);

$params = array('mode' => 'mode', 'user_id' => POST_USERS_URL, 'group_id' => POST_GROUPS_URL, 'adv' => 'adv');

while( list($var, $param) = @each($params) )
{
        if ( !empty($HTTP_POST_VARS[$param]) || !empty($HTTP_GET_VARS[$param]) )
        {
                $$var = ( !empty($HTTP_POST_VARS[$param]) ) ? $HTTP_POST_VARS[$param] : $HTTP_GET_VARS[$param];
        }
        else
        {
                $$var = "";
        }
}

$user_id = intval($user_id);
$group_id = intval($group_id);

//
// Start program - define vars
//
$forum_auth_fields = array('auth_view', 'auth_read', 'auth_post', 'auth_reply', 'auth_edit', 'auth_delete', 'auth_sticky', 'auth_announce', 'auth_vote', 'auth_pollcreate');

$auth_field_match = array(
        'auth_view' => AUTH_VIEW,
        'auth_read' => AUTH_READ,
        'auth_post' => AUTH_POST,
        'auth_reply' => AUTH_REPLY,
        'auth_edit' => AUTH_EDIT,
        'auth_delete' => AUTH_DELETE,
        'auth_sticky' => AUTH_STICKY,
        'auth_announce' => AUTH_ANNOUNCE,
        'auth_vote' => AUTH_VOTE,
        'auth_pollcreate' => AUTH_POLLCREATE);

$field_names = array(
        'auth_view' => $lang['View'],
        'auth_read' => $lang['Read'],
        'auth_post' => $lang['Post'],
        'auth_reply' => $lang['Reply'],
        'auth_edit' => $lang['Edit'],
        'auth_delete' => $lang['Delete'],
        'auth_sticky' => $lang['Sticky'],
        'auth_announce' => $lang['Announce'],
        'auth_vote' => $lang['Vote'],
        'auth_pollcreate' => $lang['Pollcreate']);
attach_setup_usergroup_auth($forum_auth_fields, $auth_field_match, $field_names);
// ---------------
// Start Functions
//
function check_auth($type, $key, $u_access, $is_admin)
{
        $auth_user = 0;

        if( count($u_access) )
        {
                for($j = 0; $j < count($u_access); $j++)
                {
                        $result = 0;
                        switch($type)
                        {
                                case AUTH_ACL:
                                        $result = $u_access[$j][$key];

                                case AUTH_MOD:
                                        $result = $result || $u_access[$j]['auth_mod'];

                                case AUTH_ADMIN:
                                        $result = $result || $is_admin;
                                        break;
                        }

                        $auth_user = $auth_user || $result;
                }
        }
        else
        {
                $auth_user = $is_admin;
        }

        return $auth_user;
}
//
// End Functions
// -------------

if ( isset($HTTP_POST_VARS['submit']) && ( ( $mode == 'user' && $user_id ) || ( $mode == 'group' && $group_id ) ) )
{
        $user_level = '';
        if ( $mode == 'user' )
        {
                //
                // Get group_id for this user_id
                //
                $sql = "SELECT g.group_id, u.user_level
                        FROM " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u, " . GROUPS_TABLE . " g
                        WHERE u.user_id = $user_id
                                AND ug.user_id = u.user_id
                                AND g.group_id = ug.group_id
                                AND g.group_single_user = " . TRUE;
                if ( !($result = $db->sql_query($sql)) )
                {
                        message_die(GENERAL_ERROR, 'Could not select info from user/user_group table', '', __LINE__, __FILE__, $sql);
                }

                $row = $db->sql_fetchrow($result);

                $group_id = $row['group_id'];
                $user_level = $row['user_level'];

                $db->sql_freeresult($result);
        }

        //
        // Carry out requests
        //
        if ( $mode == 'user' && $HTTP_POST_VARS['userlevel'] == 'admin' && $user_level != ADMIN )
        {
                //
                // Make user an admin (if already user)
                //
                if ( $userdata['user_id'] != $user_id )
                {
                        $sql = "UPDATE " . USERS_TABLE . "
                                SET user_level = " . ADMIN . "
                                WHERE user_id = $user_id";
                        if ( !($result = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql);
                        }

                        $sql = "DELETE FROM " . AUTH_ACCESS_TABLE . "
                                WHERE group_id = '$group_id'
                                        AND auth_mod = 0";
                        if ( !($result = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, "Couldn't delete auth access info", "", __LINE__, __FILE__, $sql);
                        }

                        //
                        // Delete any entries in auth_access, they are not required if user is becoming an
                        // admin
                        //
                        $sql = "UPDATE " . AUTH_ACCESS_TABLE . "
                                SET auth_view = 0, auth_read = 0, auth_post = 0, auth_reply = 0, auth_edit = 0, auth_delete = 0, auth_sticky = 0, auth_announce = 0
                                WHERE group_id = '$group_id'";
                        if ( !($result = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, "Couldn't update auth access", "", __LINE__, __FILE__, $sql);
                        }
                }

                $message = $lang['Auth_updated'] . '<br /><br />' . sprintf($lang['Click_return_userauth'], '<a href="' . append_sid("admin_ug_auth.$phpEx?mode=$mode") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>');
                message_die(GENERAL_MESSAGE, $message);
        }
        else
        {
                if ( $mode == 'user' && $HTTP_POST_VARS['userlevel'] == 'user' && $user_level == ADMIN )
                {
                        //
                        // Make admin a user (if already admin) ... ignore if you're trying
                        // to change yourself from an admin to user!
                        //
                        if ( $userdata['user_id'] != $user_id )
                        {
                                $sql = "UPDATE " . AUTH_ACCESS_TABLE . "
                                        SET auth_view = 0, auth_read = 0, auth_post = 0, auth_reply = 0, auth_edit = 0, auth_delete = 0, auth_sticky = 0, auth_announce = 0
                                        WHERE group_id = '$group_id'";
                                if ( !($result = $db->sql_query($sql)) )
                                {
                                        message_die(GENERAL_ERROR, 'Could not update auth access', '', __LINE__, __FILE__, $sql);
                                }

                                //
                                // Update users level, reset to USER
                                //
                                $sql = "UPDATE " . USERS_TABLE . "
                                        SET user_level = " . USER . "
                                        WHERE user_id = $user_id";
                                if ( !($result = $db->sql_query($sql)) )
                                {
                                        message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql);
                                }
                        }

                        $message = $lang['Auth_updated'] . '<br /><br />' . sprintf($lang['Click_return_userauth'], '<a href="' . append_sid("admin_ug_auth.$phpEx?mode=$mode") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>');
                }
                else
                {

                        $change_mod_list = ( isset($HTTP_POST_VARS['moderator']) ) ? $HTTP_POST_VARS['moderator'] : false;

                        if ( empty($adv) )
                        {
                                $change_acl_list = ( isset($HTTP_POST_VARS['private']) ) ? $HTTP_POST_VARS['private'] : false;
                        }
                        else
                        {
                                $change_acl_list = array();
                                for($j = 0; $j < count($forum_auth_fields); $j++)
                                {
                                        $auth_field = $forum_auth_fields[$j];

                                        while( list($forum_id, $value) = @each($HTTP_POST_VARS['private_' . $auth_field]) )
                                        {
                                                $change_acl_list[$forum_id][$auth_field] = $value;
                                        }
                                }
                        }

                        $sql = "SELECT *
                                FROM " . FORUMS_TABLE . " f
                                ORDER BY forum_order";
                        if ( !($result = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, "Couldn't obtain forum information", "", __LINE__, __FILE__, $sql);
                        }

                        $forum_access = array();
                        while( $row = $db->sql_fetchrow($result) )
                        {
                                $forum_access[] = $row;
                        }
                        $db->sql_freeresult($result);

                        $sql = ( $mode == 'user' ) ? "SELECT aa.* FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE. " g WHERE ug.user_id = $user_id AND g.group_id = ug.group_id AND aa.group_id = ug.group_id AND g.group_single_user = " . TRUE : "SELECT * FROM " . AUTH_ACCESS_TABLE . " WHERE group_id = '$group_id'";
                        if ( !($result = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, "Couldn't obtain user/group permissions", "", __LINE__, __FILE__, $sql);
                        }

                        $auth_access = array();
                        while( $row = $db->sql_fetchrow($result) )
                        {
                                $auth_access[$row['forum_id']] = $row;
                        }
                        $db->sql_freeresult($result);

                        $forum_auth_action = array();
                        $update_acl_status = array();
                        $update_mod_status = array();

                        for($i = 0; $i < count($forum_access); $i++)
                        {
                                $forum_id = $forum_access[$i]['forum_id'];

                                if (
                                        ( isset($auth_access[$forum_id]['auth_mod']) && $change_mod_list[$forum_id]['auth_mod'] != $auth_access[$forum_id]['auth_mod'] ) ||
                                        ( !isset($auth_access[$forum_id]['auth_mod']) && !empty($change_mod_list[$forum_id]['auth_mod']) )
                                )
                                {
                                        $update_mod_status[$forum_id] = $change_mod_list[$forum_id]['auth_mod'];

                                        if ( !$update_mod_status[$forum_id] )
                                        {
                                                $forum_auth_action[$forum_id] = 'delete';
                                        }
                                        else if ( !isset($auth_access[$forum_id]['auth_mod']) )
                                        {
                                                $forum_auth_action[$forum_id] = 'insert';
                                        }
                                        else
                                        {
                                                $forum_auth_action[$forum_id] = 'update';
                                        }
                                }

                                for($j = 0; $j < count($forum_auth_fields); $j++)
                                {
                                        $auth_field = $forum_auth_fields[$j];

                                        if( $forum_access[$i][$auth_field] == AUTH_ACL && isset($change_acl_list[$forum_id][$auth_field]) )
                                        {
                                                if ( ( empty($auth_access[$forum_id]['auth_mod']) &&
                                                        ( isset($auth_access[$forum_id][$auth_field]) && $change_acl_list[$forum_id][$auth_field] != $auth_access[$forum_id][$auth_field] ) ||
                                                        ( !isset($auth_access[$forum_id][$auth_field]) && !empty($change_acl_list[$forum_id][$auth_field]) ) ) ||
                                                        !empty($update_mod_status[$forum_id])
                                                )
                                                {
                                                        $update_acl_status[$forum_id][$auth_field] = ( !empty($update_mod_status[$forum_id]) ) ? 0 :  $change_acl_list[$forum_id][$auth_field];

                                                        if ( isset($auth_access[$forum_id][$auth_field]) && empty($update_acl_status[$forum_id][$auth_field]) && $forum_auth_action[$forum_id] != 'insert' && $forum_auth_action[$forum_id] != 'update' )
                                                        {
                                                                $forum_auth_action[$forum_id] = 'delete';
                                                        }
                                                        else if ( !isset($auth_access[$forum_id][$auth_field]) && !( $forum_auth_action[$forum_id] == 'delete' && empty($update_acl_status[$forum_id][$auth_field]) ) )
                                                        {
                                                                $forum_auth_action[$forum_id] = 'insert';
                                                        }
                                                        else if ( isset($auth_access[$forum_id][$auth_field]) && !empty($update_acl_status[$forum_id][$auth_field]) )
                                                        {
                                                                $forum_auth_action[$forum_id] = 'update';
                                                        }
                                                }
                                                else if ( ( empty($auth_access[$forum_id]['auth_mod']) &&
                                                        ( isset($auth_access[$forum_id][$auth_field]) && $change_acl_list[$forum_id][$auth_field] == $auth_access[$forum_id][$auth_field] ) ) && $forum_auth_action[$forum_id] == 'delete' )
                                                {
                                                        $forum_auth_action[$forum_id] = 'update';
                                                }
                                        }
                                }
                        }

                        //
                        // Checks complete, make updates to DB
                        //
                        $delete_sql = '';
                        while( list($forum_id, $action) = @each($forum_auth_action) )
                        {
                                if ( $action == 'delete' )
                                {
                                        $delete_sql .= ( ( $delete_sql != '' ) ? ', ' : '' ) . $forum_id;
                                }
                                else
                                {
                                        if ( $action == 'insert' )
                                        {
                                                $sql_field = '';
                                                $sql_value = '';
                                                while ( list($auth_type, $value) = @each($update_acl_status[$forum_id]) )
                                                {
                                                        $sql_field .= ( ( $sql_field != '' ) ? ', ' : '' ) . $auth_type;
                                                        $sql_value .= ( ( $sql_value != '' ) ? ', ' : '' ) . $value;
                                                }
                                                $sql_field .= ( ( $sql_field != '' ) ? ', ' : '' ) . 'auth_mod';
                                                $sql_value .= ( ( $sql_value != '' ) ? ', ' : '' ) . ( ( !isset($update_mod_status[$forum_id]) ) ? 0 : $update_mod_status[$forum_id]);

                                                $sql = "INSERT INTO " . AUTH_ACCESS_TABLE . " (forum_id, group_id, $sql_field)
                                                        VALUES ($forum_id, $group_id, $sql_value)";
                                        }
                                        else
                                        {
                                                $sql_values = '';
                                                while ( list($auth_type, $value) = @each($update_acl_status[$forum_id]) )
                                                {
                                                        $sql_values .= ( ( $sql_values != '' ) ? ', ' : '' ) . $auth_type . ' = ' . $value;
                                                }
                                                $sql_values .= ( ( $sql_values != '' ) ? ', ' : '' ) . 'auth_mod = ' . ( ( !isset($update_mod_status[$forum_id]) ) ? 0 : $update_mod_status[$forum_id]);

                                                $sql = "UPDATE " . AUTH_ACCESS_TABLE . "
                                                        SET $sql_values
                                                        WHERE group_id = '$group_id'
                                                                AND forum_id = $forum_id";
                                        }
                                        if( !($result = $db->sql_query($sql)) )
                                        {
                                                message_die(GENERAL_ERROR, "Couldn't update private forum permissions", "", __LINE__, __FILE__, $sql);
                                        }
                                }
                        }

                        if ( $delete_sql != '' )
                        {
                                $sql = "DELETE FROM " . AUTH_ACCESS_TABLE . "
                                        WHERE group_id = '$group_id'
                                                AND forum_id IN ($delete_sql)";
                                if( !($result = $db->sql_query($sql)) )
                                {
                                        message_die(GENERAL_ERROR, "Couldn't delete permission entries", "", __LINE__, __FILE__, $sql);
                                }
                        }

                        $l_auth_return = ( $mode == 'user' ) ? $lang['Click_return_userauth'] : $lang['Click_return_groupauth'];
                        $message = $lang['Auth_updated'] . '<br /><br />' . sprintf($l_auth_return, '<a href="' . append_sid("admin_ug_auth.$phpEx?mode=$mode") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>');
                }

                //
                // Update user level to mod for appropriate users
                //
                $sql = "SELECT u.user_id
                        FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u
                        WHERE ug.group_id = aa.group_id
                                AND u.user_id = ug.user_id
                                AND u.user_level NOT IN (" . MOD . ", " . ADMIN . ")
                        GROUP BY u.user_id
                        HAVING SUM(aa.auth_mod) > 0";
                if ( !($result = $db->sql_query($sql)) )
                {
                        message_die(GENERAL_ERROR, "Couldn't obtain user/group permissions", "", __LINE__, __FILE__, $sql);
                }

                $set_mod = '';
                while( $row = $db->sql_fetchrow($result) )
                {
                        $set_mod .= ( ( $set_mod != '' ) ? ', ' : '' ) . $row['user_id'];
                }
                $db->sql_freeresult($result);

                //
                // Update user level to user for appropriate users
                //
                switch ( SQL_LAYER )
                {
                        case 'postgresql':
                                $sql = "SELECT u.user_id
                                        FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug, " . AUTH_ACCESS_TABLE . " aa
                                        WHERE ug.user_id = u.user_id
                                                AND aa.group_id = ug.group_id
                                                AND u.user_level NOT IN (" . USER . ", " . ADMIN . ")
                                        GROUP BY u.user_id
                                        HAVING SUM(aa.auth_mod) = 0
                                        UNION (
                                                SELECT u.user_id
                                                FROM " . USERS_TABLE . " u
                                                WHERE NOT EXISTS (
                                                        SELECT aa.auth_mod
                                                        FROM " . USER_GROUP_TABLE . " ug, " . AUTH_ACCESS_TABLE . " aa
                                                        WHERE ug.user_id = u.user_id
                                                                AND aa.group_id = ug.group_id
                                                )
                                                AND u.user_level NOT IN (" . USER . ", " . ADMIN . ")
                                                GROUP BY u.user_id
                                        )";
                                break;
                        case 'oracle':
                                $sql = "SELECT u.user_id
                                        FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug, " . AUTH_ACCESS_TABLE . " aa
                                        WHERE ug.user_id = u.user_id(+)
                                                AND aa.group_id = ug.group_id(+)
                                                AND u.user_level NOT IN (" . USER . ", " . ADMIN . ")
                                        GROUP BY u.user_id
                                        HAVING SUM(aa.auth_mod) = 0";
                                break;
                        default:
                                $sql = "SELECT u.user_id
                                        FROM ( ( " . USERS_TABLE . " u
                                        LEFT JOIN " . USER_GROUP_TABLE . " ug ON ug.user_id = u.user_id )
                                        LEFT JOIN " . AUTH_ACCESS_TABLE . " aa ON aa.group_id = ug.group_id )
                                        WHERE u.user_level NOT IN (" . USER . ", " . ADMIN . ")
                                        GROUP BY u.user_id
                                        HAVING SUM(aa.auth_mod) = 0";
                                break;
                }
                if ( !($result = $db->sql_query($sql)) )
                {
                        message_die(GENERAL_ERROR, "Couldn't obtain user/group permissions", "", __LINE__, __FILE__, $sql);
                }

                $unset_mod = "";
                while( $row = $db->sql_fetchrow($result) )
                {
                        $unset_mod .= ( ( $unset_mod != '' ) ? ', ' : '' ) . $row['user_id'];
                }
                $db->sql_freeresult($result);

                if ( $set_mod != '' )
                {
                        $sql = "UPDATE " . USERS_TABLE . "
                                SET user_level = " . MOD . "
                                WHERE user_id IN ($set_mod)";
                        if( !($result = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, "Couldn't update user level", "", __LINE__, __FILE__, $sql);
                        }
                }

                if ( $unset_mod != '' )
                {
                        $sql = "UPDATE " . USERS_TABLE . "
                                SET user_level = " . USER . "
                                WHERE user_id IN ($unset_mod)";
                        if( !($result = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, "Couldn't update user level", "", __LINE__, __FILE__, $sql);
                        }
                }

                message_die(GENERAL_MESSAGE, $message);
        }
}
else if ( ( $mode == 'user' && ( isset($HTTP_POST_VARS['username']) || $user_id ) ) || ( $mode == 'group' && $group_id ) )
{
        if ( isset($HTTP_POST_VARS['username']) )
        {
                $this_userdata = get_userdata($HTTP_POST_VARS['username']);
                if ( !is_array($this_userdata) )
                {
                        message_die(GENERAL_MESSAGE, $lang['No_such_user']);
                }
                $user_id = $this_userdata['user_id'];
        }

        //
        // Front end
        //
        $sql = "SELECT *
                FROM " . FORUMS_TABLE . " f
                ORDER BY forum_order";
        if ( !($result = $db->sql_query($sql)) )
        {
                message_die(GENERAL_ERROR, "Couldn't obtain forum information", "", __LINE__, __FILE__, $sql);
        }

        $forum_access = array();
        while( $row = $db->sql_fetchrow($result) )
        {
                $forum_access[] = $row;
        }
        $db->sql_freeresult($result);

        if( empty($adv) )
        {
                for($i = 0; $i < count($forum_access); $i++)
                {
                        $forum_id = $forum_access[$i]['forum_id'];

                        $forum_auth_level[$forum_id] = AUTH_ALL;

                        for($j = 0; $j < count($forum_auth_fields); $j++)
                        {
                                $forum_access[$i][$forum_auth_fields[$j]] . ' :: ';
                                if ( $forum_access[$i][$forum_auth_fields[$j]] == AUTH_ACL )
                                {
                                        $forum_auth_level[$forum_id] = AUTH_ACL;
                                        $forum_auth_level_fields[$forum_id][] = $forum_auth_fields[$j];
                                }
                        }
                }
        }

//
// Check if a private user group existis for this user and if not, create one.
//
        $sql = "SELECT user_id FROM " . USER_GROUP_TABLE . " WHERE user_id = $user_id";
        $result = $db->sql_query($sql);
        $row = $db->sql_fetchrow($result);
        $user_check = $row['user_id'];
        if ( $user_check != $user_id )
        {
            $sql = "SELECT MAX(group_id) AS total
                    FROM " . GROUPS_TABLE;
            if ( !($result = $db->sql_query($sql)) )
            {
                message_die(GENERAL_ERROR, 'Could not select last group_id information', '', __LINE__, __FILE__, $sql);
            }
            if ( !($row = $db->sql_fetchrow($result)) )
            {
                message_die(GENERAL_ERROR, 'Could not obtain next group_id information', '', __LINE__, __FILE__, $sql);
            }
            $group_id = $row['total'] + 1;
            $sql = "INSERT INTO " . GROUPS_TABLE . " (group_id, group_name, group_description, group_single_user, group_moderator)
                    VALUES ($group_id, '', 'Personal User', 1, 0)";
            if ( !($result = $db->sql_query($sql)) )
            {
                message_die(GENERAL_ERROR, 'Could not create private group', '', __LINE__, __FILE__, $sql);
            }
            $sql = "INSERT INTO " . USER_GROUP_TABLE . " (group_id, user_id, user_pending)
                    VALUES ($group_id, $user_id, 0)";
            if ( !($result = $db->sql_query($sql)) )
            {
                message_die(GENERAL_ERROR, 'Could not create private group', '', __LINE__, __FILE__, $sql);
            }
        }
//
//  End Private group check.
//
        $sql = "SELECT u.user_id, u.username, u.user_level, g.group_id, g.group_name, g.group_single_user FROM " . USERS_TABLE . " u, " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug WHERE ";
        $sql .= ( $mode == 'user' ) ? "u.user_id = $user_id AND ug.user_id = u.user_id AND g.group_id = ug.group_id" : "g.group_id = $group_id AND ug.group_id = g.group_id AND u.user_id = ug.user_id";
        if ( !($result = $db->sql_query($sql)) )
        {
                message_die(GENERAL_ERROR, "Couldn't obtain user/group information", "", __LINE__, __FILE__, $sql);
        }
        $ug_info = array();
        while( $row = $db->sql_fetchrow($result) )
        {
                $ug_info[] = $row;
        }
        $db->sql_freeresult($result);

        $sql = ( $mode == 'user' ) ? "SELECT aa.*, g.group_single_user FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE. " g WHERE ug.user_id = $user_id AND g.group_id = ug.group_id AND aa.group_id = ug.group_id AND g.group_single_user = 1" : "SELECT * FROM " . AUTH_ACCESS_TABLE . " WHERE group_id = '$group_id'";
        if ( !($result = $db->sql_query($sql)) )
        {
                message_die(GENERAL_ERROR, "Couldn't obtain user/group permissions", "", __LINE__, __FILE__, $sql);
        }

        $auth_access = array();
        $auth_access_count = array();
        while( $row = $db->sql_fetchrow($result) )
        {
                $auth_access[$row['forum_id']][] = $row;
                $auth_access_count[$row['forum_id']]++;
        }
        $db->sql_freeresult($result);

        $is_admin = ( $mode == 'user' ) ? ( ( $ug_info[0]['user_level'] == ADMIN && $ug_info[0]['user_id'] != ANONYMOUS ) ? 1 : 0 ) : 0;

        for($i = 0; $i < count($forum_access); $i++)
        {
                $forum_id = $forum_access[$i]['forum_id'];

                unset($prev_acl_setting);
                for($j = 0; $j < count($forum_auth_fields); $j++)
                {
                        $key = $forum_auth_fields[$j];
                        $value = $forum_access[$i][$key];

                        switch( $value )
                        {
                                case AUTH_ALL:
                                case AUTH_REG:
                                        $auth_ug[$forum_id][$key] = 1;
                                        break;

                                case AUTH_ACL:
                                        $auth_ug[$forum_id][$key] = ( !empty($auth_access_count[$forum_id]) ) ? check_auth(AUTH_ACL, $key, $auth_access[$forum_id], $is_admin) : 0;
                                        $auth_field_acl[$forum_id][$key] = $auth_ug[$foru