Xavfun Posté 21 Juin 2005 Partager Posté 21 Juin 2005 Hello, Depuis la version 2.0.15 de PHPBB j'ai constaté un bug, la fonction permettant de mettre de nouveaux modérateurs... Comme cette fonction ne sert pas tout les jours, je suis certainement pas le seul à avoir le problème : dans Administration des Utilisateurs Permissions => indiquez le pseudo de quelqu'un et dites moi si ça marche (merci d'avance) moi j'ai un message du type : Fatal error: Cannot redeclare class template in /home/xavfun/sd/nomdemonforum/includes/template.php on line 0 => quand c'est pas en sous-domaine j'ai la même erreur. Le fichier "template.php" est bien dans ce dossier et j'ai un CHMO 644 dessus (j'ai essayé avec 666 et c'est pareil :-( voici les premières lignes de ce fichier : <?php/*************************************************************************** * template.php * ------------------- * begin : Saturday, Feb 13, 2001 * copyright : © 2001 The phpBB Group * email : support_AT_phpbb.com * * $Id: template.php,v 1.10.2.5 2005/05/06 20:50:11 acydburn Exp $ * * ***************************************************************************/ /*************************************************************************** * J'ai la même erreur sur un forum qui viens d'être installé tout neuf (sans URL Rewriting et avec le Thème d'origine) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 21 Juin 2005 Partager Posté 21 Juin 2005 Salut Xavfun, Une erreur telle que Fatal error: Cannot redeclare class template in /home/xavfun/sd/nomdemonforum/includes/template.phpn'est pas un défaut de permissions. Elle vient du fait que tu fais un include d'un fichier qui redéclare la classe "template". Dan Lien vers le commentaire Partager sur d’autres sites More sharing options...
Xavfun Posté 21 Juin 2005 Auteur Partager Posté 21 Juin 2005 le problème c'est que je fais rien de spécial, j'ai installé un PHPBB tout neuf et ça fait pareil que sur mes autres forums phpbb (et le pire c'est que j'ai contacté d'autres personnes qui ont un phpbb et du coup ils se sont apperçus qu'ils ont le même soucis) j'espère que "mon agent double" sur le Hub trouvera la sollution avec ton indice, car là je ne me sens pas capable de toucher à des sources du phpbb (alors que c'est celles d'origines) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lurch Posté 21 Juin 2005 Partager Posté 21 Juin 2005 Me demande si c'est pô un bug du script. J'irai voir sur les forums dédiés au phpbb cette nuit si j'ai le temps. j'espère que "mon agent double" sur le Hub trouvera la sollution avec ton indice, car là je ne me sens pas capable de toucher à des sources du phpbb Ben c'est comme ça aussi que l'on apprend... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Xavfun Posté 21 Juin 2005 Auteur Partager Posté 21 Juin 2005 Et hop j'ai la sollution (et pas grâce à mon agent double) Bravo Phobos (un glouton qui fait du rewrite) quand je lui ais parlé de ça, il m'a donné le lien vers le topic du forum PHPBB qui posait la même question sans donner la réponse... Et moins de 5 mn après il avait la sollution Dans admin/admin_ug_auth.php il y a un Bug Le correctif se trouve ici Bravo Phobos et bravo le Hub (le forum spécialisé PHPBB n'a pas la réponse et ici la réponse arrive vite) ps : en plus Phobos m'a trouvé la modif du Rewrite à faire car il y a un problème avec les "SID" depuis la version 2.0.15 de PHPBB (va vraiment falloir que je mette IPB ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nullette Posté 21 Juin 2005 Partager Posté 21 Juin 2005 Le correctif se trouve ici Le lien n'est pas bon :-( Lien vers le commentaire Partager sur d’autres sites More sharing options...
Phobos Posté 21 Juin 2005 Partager Posté 21 Juin 2005 (modifié) 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);?> Modifié 21 Juin 2005 par Phobos Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nullette Posté 22 Juin 2005 Partager Posté 22 Juin 2005 Apparemment, je n'ai pas besoin de modifier le fichier, car je n'ai pas eu l'erreur mentionnée par Xavfun. J'ai la version 2.0.15. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Xavfun Posté 22 Juin 2005 Auteur Partager Posté 22 Juin 2005 c'est plutôt étrange que ça ne le fasse pas chez toi, mois sur 4 forum phpbb, ça faisait le même problème, et tout ceux que je connais avaient ce bug. Mais l'essentiel est que ça marche Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant