Aller au contenu

Phobos

Hubmaster
  • Compteur de contenus

    306
  • Inscrit(e) le

  • Dernière visite

Messages postés par Phobos

  1. De rien Xavfun ;)

    La réponse est quand même présente dans le forum spécialisé mais elle est bien cachée, dans un post datant d'avril je crois, (sans rapports avec la 2.0.15 :)).

    edit: Voici le code pour ceux qui n'arrive pas à acceder à la page donnée par Xavfun ;)

    <?php
    /***************************************************************************
    * admin_ug_auth.php
    * -------------------
    * begin : Saturday, Feb 13, 2001
    * copyright : © 2001 The phpBB Group
    * email : support_AT_phpbb.com
    *
    * $Id: admin_ug_auth.php,v 1.5 2005/02/21 02:50:25 jelly_doughnut Exp $
    *
    *
    ***************************************************************************/

    /***************************************************************************
    *
    * 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) = _AT_each($params) )
    {
    if ( !empty($_POST[$param]) || !empty($_GET[$param]) )
    {
    $$var = ( !empty($_POST[$param]) ) ? $_POST[$param] : $_GET[$param];
    }
    else
    {
    $$var = "";
    }
    }

    $user_id = intval($user_id);
    $group_id = intval($group_id);
    $adv = intval($adv);
    $mode = htmlspecialchars($mode);

    //
    // 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']);

    // ---------------
    // 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($_POST['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' && $_POST['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' && $_POST['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($_POST['moderator']) ) ? $_POST['moderator'] : false;
    $change_acl_list = array();

    if ( empty($adv) )
    {
    while( list($forum_id, $value) = _AT_each($_POST['private']) )
    {
    $change_acl_list[$forum_id] = $value;
    }
    }
    else
    {
    for($j = 0; $j < count($forum_auth_fields); $j++)
    {
    $auth_field = $forum_auth_fields[$j];

    while( list($forum_id, $value) = _AT_each($_POST['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_access[$forum_id]['auth_mod'] ) ||
    ( !isset($auth_access[$forum_id]['auth_mod']) && !empty($change_mod_list[$forum_id]) )
    )
    {
    $update_mod_status[$forum_id] = $change_mod_list[$forum_id];

    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]) )
    {
    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 ( empty($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) = _AT_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) = _AT_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) = _AT_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($_POST['username']) || $user_id ) ) || ( $mode == 'group' && $group_id ) )
    {
    if ( isset($_POST['username']) )
    {
    $this_userdata = get_userdata($_POST['username'], true);
    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];
    }
    }
    }
    }

    $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[$forum_id][$key];

    if ( isset($prev_acl_setting) )
    {
    if ( $prev_acl_setting != $auth_ug[$forum_id][$key] && empty($adv) )
    {
    $adv = 1;
    }
    }

    $prev_acl_setting = $auth_ug[$forum_id][$key];

    break;

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

    case AUTH_ADMIN:
    $auth_ug[$forum_id][$key] = $is_admin;
    break;

    default:
    $auth_ug[$forum_id][$key] = 0;
    break;
    }
    }

    //
    // Is user a moderator?
    //
    $auth_ug[$forum_id]['auth_mod'] = ( !empty($auth_access_count[$forum_id]) ) ? check_auth(AUTH_MOD, 'auth_mod', $auth_access[$forum_id], 0) : 0;
    }

    $i = 0;
    _AT_reset($auth_ug);
    while( list($forum_id, $user_ary) = _AT_each($auth_ug) )
    {
    if ( empty($adv) )
    {
    if ( $forum_auth_level[$forum_id] == AUTH_ACL )
    {
    $allowed = 1;

    for($j = 0; $j < count($forum_auth_level_fields[$forum_id]); $j++)
    {
    if ( !$auth_ug[$forum_id][$forum_auth_level_fields[$forum_id][$j]] )
    {
    $allowed = 0;
    }
    }

    $optionlist_acl = '<select name="private[' . $forum_id . ']">';

    if ( $is_admin || $user_ary['auth_mod'] )
    {
    $optionlist_acl .= '<option value="1">' . $lang['Allowed_Access'] . '</option>';
    }
    else if ( $allowed )
    {
    $optionlist_acl .= '<option value="1" selected="selected">' . $lang['Allowed_Access'] . '</option><option value="0">'. $lang['Disallowed_Access'] . '</option>';
    }
    else
    {
    $optionlist_acl .= '<option value="1">' . $lang['Allowed_Access'] . '</option><option value="0" selected="selected">' . $lang['Disallowed_Access'] . '</option>';
    }

    $optionlist_acl .= '</select>';
    }
    else
    {
    $optionlist_acl = ' ';
    }
    }
    else
    {
    for($j = 0; $j < count($forum_access); $j++)
    {
    if ( $forum_access[$j]['forum_id'] == $forum_id )
    {
    for($k = 0; $k < count($forum_auth_fields); $k++)
    {
    $field_name = $forum_auth_fields[$k];

    if( $forum_access[$j][$field_name] == AUTH_ACL )
    {
    $optionlist_acl_adv[$forum_id][$k] = '<select name="private_' . $field_name . '[' . $forum_id . ']">';

    if( isset($auth_field_acl[$forum_id][$field_name]) && !($is_admin || $user_ary['auth_mod']) )
    {
    if( !$auth_field_acl[$forum_id][$field_name] )
    {
    $optionlist_acl_adv[$forum_id][$k] .= '<option value="1">' . $lang['ON'] . '</option><option value="0" selected="selected">' . $lang['OFF'] . '</option>';
    }
    else
    {
    $optionlist_acl_adv[$forum_id][$k] .= '<option value="1" selected="selected">' . $lang['ON'] . '</option><option value="0">' . $lang['OFF'] . '</option>';
    }
    }
    else
    {
    if( $is_admin || $user_ary['auth_mod'] )
    {
    $optionlist_acl_adv[$forum_id][$k] .= '<option value="1">' . $lang['ON'] . '</option>';
    }
    else
    {
    $optionlist_acl_adv[$forum_id][$k] .= '<option value="1">' . $lang['ON'] . '</option><option value="0" selected="selected">' . $lang['OFF'] . '</option>';
    }
    }

    $optionlist_acl_adv[$forum_id][$k] .= '</select>';

    }
    }
    }
    }
    }

    $optionlist_mod = '<select name="moderator[' . $forum_id . ']">';
    $optionlist_mod .= ( $user_ary['auth_mod'] ) ? '<option value="1" selected="selected">' . $lang['Is_Moderator'] . '</option><option value="0">' . $lang['Not_Moderator'] . '</option>' : '<option value="1">' . $lang['Is_Moderator'] . '</option><option value="0" selected="selected">' . $lang['Not_Moderator'] . '</option>';
    $optionlist_mod .= '</select>';

    $row_class = ( !( $i % 2 ) ) ? 'row2' : 'row1';
    $row_color = ( !( $i % 2 ) ) ? $theme['td_color1'] : $theme['td_color2'];

    $template->assign_block_vars('forums', array(
    'ROW_COLOR' => '#' . $row_color,
    'ROW_CLASS' => $row_class,
    'FORUM_NAME' => $forum_access[$i]['forum_name'],

    'U_FORUM_AUTH' => append_sid("admin_forumauth.$phpEx?f=" . $forum_access[$i]['forum_id']),

    'S_MOD_SELECT' => $optionlist_mod)
    );

    if( !$adv )
    {
    $template->assign_block_vars('forums.aclvalues', array(
    'S_ACL_SELECT' => $optionlist_acl)
    );
    }
    else
    {
    for($j = 0; $j < count($forum_auth_fields); $j++)
    {
    $template->assign_block_vars('forums.aclvalues', array(
    'S_ACL_SELECT' => $optionlist_acl_adv[$forum_id][$j])
    );
    }
    }

    $i++;
    }
    //reset($auth_user);

    if ( $mode == 'user' )
    {
    $t_username = $ug_info[0]['username'];
    $s_user_type = ( $is_admin ) ? '<select name="userlevel"><option value="admin" selected="selected">' . $lang['Auth_Admin'] . '</option><option value="user">' . $lang['Auth_User'] . '</option></select>' : '<select name="userlevel"><option value="admin">' . $lang['Auth_Admin'] . '</option><option value="user" selected="selected">' . $lang['Auth_User'] . '</option></select>';
    }
    else
    {
    $t_groupname = $ug_info[0]['group_name'];
    }

    $name = array();
    $id = array();
    for($i = 0; $i < count($ug_info); $i++)
    {
    if( ( $mode == 'user' && !$ug_info[$i]['group_single_user'] ) || $mode == 'group' )
    {
    $name[] = ( $mode == 'user' ) ? $ug_info[$i]['group_name'] : $ug_info[$i]['username'];
    $id[] = ( $mode == 'user' ) ? intval($ug_info[$i]['group_id']) : intval($ug_info[$i]['user_id']);
    }
    }

    if( count($name) )
    {
    $t_usergroup_list = '';
    for($i = 0; $i < count($ug_info); $i++)
    {
    $ug = ( $mode == 'user' ) ? 'group&' . POST_GROUPS_URL : 'user&' . POST_USERS_URL;

    $t_usergroup_list .= ( ( $t_usergroup_list != '' ) ? ', ' : '' ) . '<a href="' . append_sid("admin_ug_auth.$phpEx?mode=$ug=" . $id[$i]) . '">' . $name[$i] . '</a>';
    }
    }
    else
    {
    $t_usergroup_list = $lang['None'];
    }

    $s_column_span = 2; // Two columns always present
    if( !$adv )
    {
    $template->assign_block_vars('acltype', array(
    'L_UG_ACL_TYPE' => $lang['Simple_Permission'])
    );
    $s_column_span++;
    }
    else
    {
    for($i = 0; $i < count($forum_auth_fields); $i++)
    {
    $cell_title = $field_names[$forum_auth_fields[$i]];

    $template->assign_block_vars('acltype', array(
    'L_UG_ACL_TYPE' => $cell_title)
    );
    $s_column_span++;
    }
    }

    //
    // Dump in the page header ...
    //
    include('./page_header_admin.'.$phpEx);

    $template->set_filenames(array(
    "body" => 'admin/auth_ug_body.tpl')
    );

    $adv_switch = ( empty($adv) ) ? 1 : 0;
    $u_ug_switch = ( $mode == 'user' ) ? POST_USERS_URL . "=" . $user_id : POST_GROUPS_URL . "=" . $group_id;
    $switch_mode = append_sid("admin_ug_auth.$phpEx?mode=$mode&" . $u_ug_switch . "&adv=$adv_switch");
    $switch_mode_text = ( empty($adv) ) ? $lang['Advanced_mode'] : $lang['Simple_mode'];
    $u_switch_mode = '<a href="' . $switch_mode . '">' . $switch_mode_text . '</a>';

    $s_hidden_fields = '<input type="hidden" name="mode" value="' . $mode . '" /><input type="hidden" name="adv" value="' . $adv . '" />';
    $s_hidden_fields .= ( $mode == 'user' ) ? '<input type="hidden" name="' . POST_USERS_URL . '" value="' . $user_id . '" />' : '<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" />';

    if ( $mode == 'user' )
    {
    $template->assign_block_vars('switch_user_auth', array());

    $template->assign_vars(array(
    'USERNAME' => $t_username,
    'USER_LEVEL' => $lang['User_Level'] . " : " . $s_user_type,
    'USER_GROUP_MEMBERSHIPS' => $lang['Group_memberships'] . ' : ' . $t_usergroup_list)
    );
    }
    else
    {
    $template->assign_block_vars("switch_group_auth", array());

    $template->assign_vars(array(
    'USERNAME' => $t_groupname,
    'GROUP_MEMBERSHIP' => $lang['Usergroup_members'] . ' : ' . $t_usergroup_list)
    );
    }

    $template->assign_vars(array(
    'L_USER_OR_GROUPNAME' => ( $mode == 'user' ) ? $lang['Username'] : $lang['Group_name'],

    'L_AUTH_TITLE' => ( $mode == 'user' ) ? $lang['Auth_Control_User'] : $lang['Auth_Control_Group'],
    'L_AUTH_EXPLAIN' => ( $mode == 'user' ) ? $lang['User_auth_explain'] : $lang['Group_auth_explain'],
    'L_MODERATOR_STATUS' => $lang['Moderator_status'],
    'L_PERMISSIONS' => $lang['Permissions'],
    'L_SUBMIT' => $lang['Submit'],
    'L_RESET' => $lang['Reset'],
    'L_FORUM' => $lang['Forum'],

    'U_USER_OR_GROUP' => append_sid("admin_ug_auth.$phpEx"),
    'U_SWITCH_MODE' => $u_switch_mode,

    'S_COLUMN_SPAN' => $s_column_span,
    'S_AUTH_ACTION' => append_sid("admin_ug_auth.$phpEx"),
    'S_HIDDEN_FIELDS' => $s_hidden_fields)
    );
    }
    else
    {
    //
    // Select a user/group
    //
    include('./page_header_admin.'.$phpEx);

    $template->set_filenames(array(
    'body' => ( $mode == 'user' ) ? 'admin/user_select_body.tpl' : 'admin/auth_select_body.tpl')
    );

    if ( $mode == 'user' )
    {
    $template->assign_vars(array(
    'L_FIND_USERNAME' => $lang['Find_username'],

    'U_SEARCH_USER' => append_sid("../search.$phpEx?mode=searchuser"))
    );
    }
    else
    {
    $sql = "SELECT group_id, group_name
    FROM " . GROUPS_TABLE . "
    WHERE group_single_user <> " . TRUE;
    if ( !($result = $db->sql_query($sql)) )
    {
    message_die(GENERAL_ERROR, "Couldn't get group list", "", __LINE__, __FILE__, $sql);
    }

    if ( $row = $db->sql_fetchrow($result) )
    {
    $select_list = '<select name="' . POST_GROUPS_URL . '">';
    do
    {
    $select_list .= '<option value="' . $row['group_id'] . '">' . $row['group_name'] . '</option>';
    }
    while ( $row = $db->sql_fetchrow($result) );
    $select_list .= '</select>';
    }

    $template->assign_vars(array(
    'S_AUTH_SELECT' => $select_list)
    );
    }

    $s_hidden_fields = '<input type="hidden" name="mode" value="' . $mode . '" />';

    $l_type = ( $mode == 'user' ) ? 'USER' : 'AUTH';

    $template->assign_vars(array(
    'L_' . $l_type . '_TITLE' => ( $mode == 'user' ) ? $lang['Auth_Control_User'] : $lang['Auth_Control_Group'],
    'L_' . $l_type . '_EXPLAIN' => ( $mode == 'user' ) ? $lang['User_auth_explain'] : $lang['Group_auth_explain'],
    'L_' . $l_type . '_SELECT' => ( $mode == 'user' ) ? $lang['Select_a_User'] : $lang['Select_a_Group'],
    'L_LOOK_UP' => ( $mode == 'user' ) ? $lang['Look_up_User'] : $lang['Look_up_Group'],

    'S_HIDDEN_FIELDS' => $s_hidden_fields,
    'S_' . $l_type . '_ACTION' => append_sid("admin_ug_auth.$phpEx"))
    );

    }

    $template->pparse('body');

    include('./page_footer_admin.'.$phpEx);

    ?>

  2. Salut,

    je viens de voir un peu https://www.google.com/webmasters/sitemaps/

    ce service permettrait de proposer un plan du site au format xml à googlebot :fete:

    Google code fournit un script en python pour générer automatiquement un plan du site mais ce n'est pas compatible avec toutes les organisations.

    Je viens de créer mes fichiers xml via php, (quelques milliers d'entrées sql à lister):

    http://www.forumfr.com/index-sitemap.xml j'ai proposé le fichier, pour l'instant il est en pending, on verra bien l'efficacité :)

  3. Salut,

    tes fichiers contiennent des caractères spécifiques windows, sans doute l'infâme apostrophe virgule de Word, la solution, soit utiliser le charset windows-1252, bof bof, soit mieux, copier le contenu de word vers le bloc note avant de copier le contenu du bloc note vers ta page ou encore, laisser tomber Word :)

×
×
  • Créer...