|
From: Jon O. <jon...@us...> - 2006-09-09 21:21:25
|
Update of /cvsroot/mxbb/mx_phpbb2admin/admin In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv25579/admin Added Files: admin_prune_user_posts.php admin_prune_users.php admin_userlist.php index.htm Log Message: Introducing this module. A couple of phpBB admin Tools - pruning users/posts etc --- NEW FILE: admin_prune_users.php --- <?php /** * * @package mxBB Portal Module - mx_phpbb2admin * @version $Id: admin_prune_users.php,v 1.1 2006/09/09 21:21:20 jonohlsson Exp $ * @copyright (c) 2002-2006 [Omar Ramadan, Jon Ohlsson] mxBB Project Team * @license http://opensource.org/licenses/gpl-license.php GNU General Public License v2 * */ define( 'IN_PORTAL', true ); if ( !empty( $setmodules ) ) { $filename = basename( __FILE__ ); $module['phpbb2admin']['Prune_Inactive_Users'] = 'modules/mx_phpbb2admin/admin/' . $filename; return; } $mx_root_path = './../../../'; $module_root_path = "./../"; $phpEx = substr(strrchr(__FILE__, '.'), 1); require( $mx_root_path . '/admin/pagestart.' . $phpEx ); include_once( $mx_root_path . 'admin/page_header_admin.' . $phpEx ); // ********************************************************************** // Read language definition // ********************************************************************** if ( !file_exists( $module_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx ) ) { include( $module_root_path . 'language/lang_english/lang_admin.' . $phpEx ); } else { include( $module_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx ); } if ( $_POST['submit'] ) { foreach ( $_POST['inactive_users'] as $user_id ) { $user_id = str_replace("\'", "''", $user_id ); $sql = "SELECT g.group_id FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g WHERE ug.user_id = $user_id AND g.group_id = ug.group_id AND g.group_single_user = 1"; if( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not obtain group information for this user', '', __LINE__, __FILE__, $sql); } $row = $db->sql_fetchrow($result); $sql = "UPDATE " . POSTS_TABLE . " SET poster_id = " . DELETED . ", post_username = '" . str_replace("\\'", "''", str_replace("\'", "''", $this_userdata['username'])) . "' WHERE poster_id = $user_id"; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not update posts for this user', '', __LINE__, __FILE__, $sql); } $sql = "UPDATE " . TOPICS_TABLE . " SET topic_poster = " . DELETED . " WHERE topic_poster = $user_id"; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not update topics for this user', '', __LINE__, __FILE__, $sql); } $sql = "UPDATE " . VOTE_USERS_TABLE . " SET vote_user_id = " . DELETED . " WHERE vote_user_id = $user_id"; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not update votes for this user', '', __LINE__, __FILE__, $sql); } $sql = "SELECT group_id FROM " . GROUPS_TABLE . " WHERE group_moderator = $user_id"; if( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not select groups where user was moderator', '', __LINE__, __FILE__, $sql); } while ( $row_group = $db->sql_fetchrow($result) ) { $group_moderator[] = $row_group['group_id']; } if ( count($group_moderator) ) { $update_moderator_id = implode(', ', $group_moderator); $sql = "UPDATE " . GROUPS_TABLE . " SET group_moderator = " . $userdata['user_id'] . " WHERE group_moderator IN ($update_moderator_id)"; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not update group moderators', '', __LINE__, __FILE__, $sql); } } $sql = "DELETE FROM " . USERS_TABLE . " WHERE user_id = $user_id"; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not delete user', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . USER_GROUP_TABLE . " WHERE user_id = $user_id"; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not delete user from user_group table', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . GROUPS_TABLE . " WHERE group_id = " . $row['group_id']; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not delete group for this user', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . AUTH_ACCESS_TABLE . " WHERE group_id = " . $row['group_id']; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not delete group for this user', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . " WHERE user_id = $user_id"; if ( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not delete user from topic watch table', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . BANLIST_TABLE . " WHERE ban_userid = $user_id"; if ( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not delete user from banlist table', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . SESSIONS_TABLE . " WHERE session_user_id = $user_id"; if ( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not delete sessions for this user', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . SESSIONS_KEYS_TABLE . " WHERE user_id = $user_id"; if ( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not delete auto-login keys for this user', '', __LINE__, __FILE__, $sql); } $sql = "SELECT privmsgs_id FROM " . PRIVMSGS_TABLE . " WHERE privmsgs_from_userid = $user_id OR privmsgs_to_userid = $user_id"; if ( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not select all users private messages', '', __LINE__, __FILE__, $sql); } // This little bit of code directly from the private messaging section. while ( $row_privmsgs = $db->sql_fetchrow($result) ) { $mark_list[] = $row_privmsgs['privmsgs_id']; } if ( count($mark_list) ) { $delete_sql_id = implode(', ', $mark_list); $delete_text_sql = "DELETE FROM " . PRIVMSGS_TEXT_TABLE . " WHERE privmsgs_text_id IN ($delete_sql_id)"; $delete_sql = "DELETE FROM " . PRIVMSGS_TABLE . " WHERE privmsgs_id IN ($delete_sql_id)"; if ( !$db->sql_query($delete_sql) ) { message_die(GENERAL_ERROR, 'Could not delete private message info', '', __LINE__, __FILE__, $delete_sql); } if ( !$db->sql_query($delete_text_sql) ) { message_die(GENERAL_ERROR, 'Could not delete private message text', '', __LINE__, __FILE__, $delete_text_sql); } } } $message = $lang['User_deleted'] . '<br /><br />' . sprintf($lang['Click_return_userprune'], '<a href="' . append_sid("admin_prune_users.$phpEx") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>'); message_die(GENERAL_MESSAGE, $message); } elseif ( isset ( $_POST['fetch'] ) ) { // fetch inactive users list $inactive_users = mx_users_inactive(); // set up template $template->set_filenames(array( 'body' => 'admin/prune_users.tpl') ); for($i = 0; $i < count ( $inactive_users ); $i++) { $user_id = $inactive_users[$i]['user_id']; $username = $inactive_users[$i]['username']; $user_lastvisit = ( !$inactive_users[$i]['user_lastvisit'] ) ? $lang['Never'] : create_date($board_config['default_dateformat'], $inactive_users[$i]['user_lastvisit'], $board_config['board_timezone']); $user_regdate = ( !$inactive_users[$i]['user_regdate'] ) ? $lang['Never'] : create_date($board_config['default_dateformat'], $inactive_users[$i]['user_regdate'], $board_config['board_timezone']); $user_active = ( !$inactive_users[$i]['user_active'] ) ? $lang['No'] : $lang['Yes']; $user_posts = $inactive_users[$i]['user_posts']; $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; $template->assign_block_vars("inactive_users", array( "ROW_COLOR" => "#" . $row_color, "ROW_CLASS" => $row_class, "USER_ID" => $user_id, "USERNAME" => $username, "USER_LAST_VISIT" => $user_lastvisit, "USER_REGDATE" => $user_regdate, "USER_ACTIVE" => $user_active, "USER_POSTS" => $user_posts, "U_USER_PROFILE" => append_sid($phpbb_root_path . "profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id"), "U_NOTIFY_USER" => append_sid("admin_prune_users.$phpEx?mode=notify&" . POST_USERS_URL . "=$user_id") ) ); // build template switches if ( isset( $_POST['login_check'] ) ) { $template->assign_block_vars("inactive_users.user_lastvisit", array() ); } if ( isset( $_POST['registered_check'] ) ) { $template->assign_block_vars("inactive_users.user_regdate", array() ); } if ( isset( $_POST['active_check'] ) ) { $template->assign_block_vars("inactive_users.user_active", array() ); } if ( isset( $_POST['posts_check'] ) ) { $template->assign_block_vars("inactive_users.user_posts", array() ); } } $number_of_columns = 3; // build template switches if ( isset( $_POST['login_check'] ) ) { $template->assign_block_vars("user_lastvisit", array() ); $number_of_columns++; } if ( isset( $_POST['registered_check'] ) ) { $template->assign_block_vars("user_regdate", array() ); $number_of_columns++; } if ( isset( $_POST['active_check'] ) ) { $template->assign_block_vars("user_active", array() ); $number_of_columns++; } if ( isset( $_POST['posts_check'] ) ) { $template->assign_block_vars("user_posts", array() ); $number_of_columns++; } if ( ! count ( $inactive_users ) ) { $template->assign_block_vars("no_inactive_users", array("L_NONE" => $lang['Acc_None'] ) ); } $template->assign_vars(array( 'L_PAGE_TITLE' => $lang['Prune_users_page_title'], 'L_PAGE_EXPLAIN' => $lang['Prune_users_page_explain'], 'L_CONFIRM_MESSAGE' => $lang['Prune_users_Confirm_message'], 'L_USERNAME' => $lang['Username'], 'L_SELECT_ALL_NONE' => $lang['Prune_users_Confirm_select_all_none'], 'L_SELECTED' => $lang['Prune_users_selected'], 'L_SUBMIT' => $lang['Submit'], 'L_EMAIL' => $lang['Email'], 'L_NOTIFY_USER' => $lang['Notify_user'], 'L_USER_LAST_VISIT' => $lang['Prune_users_Confirm_last_visit'], 'L_USER_REGDATE' => $lang['user_regdate'], 'L_USER_ACTIVE' => $lang['user_active'], 'L_USER_POSTS' => $lang['user_posts'], 'NUMBER_OF_COLUMNS' => $number_of_columns, 'S_FORM_ACTION' => append_sid("admin_prune_users.$phpEx")) ); include_once( $mx_root_path . 'admin/page_header_admin.' . $phpEx ); $template->pparse('body'); include_once( $mx_root_path . 'admin/page_footer_admin.' . $phpEx ); } elseif ( $_GET['mode'] == 'notify' && !empty($_GET[POST_USERS_URL] ) ) { $sql = "SELECT user_id, username, user_email, user_active, user_lang FROM " . USERS_TABLE . " WHERE user_id = '" . str_replace("\'", "''", $_GET[POST_USERS_URL] ) . "'"; if ( $result = $db->sql_query($sql) ) { if ( $row = $db->sql_fetchrow($result) ) { include($phpbb_root_path . 'includes/emailer.'.$phpEx); $emailer = new emailer($board_config['smtp_delivery']); $emailer->from($board_config['board_email']); $emailer->replyto($board_config['board_email']); $emailer->use_template('user_inactive_notify', $row['user_lang']); $emailer->email_address($row['user_email']); $emailer->set_subject($lang['Your_account_is_inactive']); $emailer->assign_vars(array( 'SITENAME' => $board_config['sitename'], 'USERNAME' => $username, 'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '' )); if ( $emailer->send() ) { message_die(GENERAL_MESSAGE, 'Notification email sent <br> <a href="javascript:history.back();">Back</a>'); } else { message_die(GENERAL_MESSAGE, 'Notification email failed to send'); } $emailer->reset(); } else { message_die(GENERAL_MESSAGE, 'This user does not exist'); } } else { message_die(GENERAL_ERROR, 'Could not obtain user information to notify the user', '', __LINE__, __FILE__, $sql); } } else { // set up template $template->set_filenames(array( 'body' => 'admin/prune_users_sql.tpl') ); $template->assign_vars(array( 'L_PAGE_TITLE' => $lang['Prune_users_page_title'], 'L_PAGE_EXPLAIN' => $lang['Prune_users_sql_explain'], 'L_BUILD_QUERY' => $lang['Build_Query'], 'L_BUILD_YOUR_QUERY' => $lang['Build_Your_Query'], 'L_USER_LAST_VISIT' => $lang['Prune_users_Confirm_last_visit'], 'L_USER_REGDATE' => $lang['user_regdate'], 'L_USER_ACTIVE' => $lang['user_active'], 'L_USER_POSTS' => $lang['user_posts'], 'L_YES' => $lang['Yes'], 'L_NO' => $lang['No'], 'L_USER_LAST_VISIT_EXPLAIN' => $lang['last_visit_explain'], 'L_USER_REGDATE_EXPLAIN' => $lang['user_regdate_explain'], 'L_USER_ACTIVE_EXPLAIN' => $lang['user_active_explain'], 'L_USER_POSTS_EXPLAIN' => $lang['user_posts_explain'], 'SEVEN_DAYS' => time() - ( 60 * 60 * 24 * 7 ), 'TEN_DAYS' => time() - ( 60 * 60 * 24 * 10 ), 'TWO_WEEKS' => time() - ( 60 * 60 * 24 * 14 ), 'ONE_MONTH' => time() - ( 60 * 60 * 24 * 30 ), 'TWO_MONTHS' => time() - ( 60 * 60 * 24 * 60 ), 'THREE_MONTHS' => time() - ( 60 * 60 * 24 * 90 ), 'L_NEVER' => $lang['Never'], 'L_ALL_TIME' => $lang['All_Time'], 'L_SEVEN_DAYS' => $lang['Seven_days'], 'L_TEN_DAYS' => $lang['Ten_days'], 'L_TWO_WEEKS' => $lang['Two_weeks'], 'L_ONE_MONTH' => $lang['One_month'], 'L_TWO_MONTHS' => $lang['Two_months'], 'L_THREE_MONTHS' => $lang['Three_months'], 'S_FORM_ACTION' => append_sid("admin_prune_users.$phpEx")) ); include_once( $mx_root_path . 'admin/page_header_admin.' . $phpEx ); $template->pparse('body'); include_once( $mx_root_path . 'admin/page_footer_admin.' . $phpEx ); } // // Function // // Fetch data for inactive users function mx_users_inactive() { global $db, $lang, $board_config, $_POST; $inactive_users = array(); if ( $_POST['registered_check'] ) { $sql_registered = " " . str_replace("\'", "''", $_POST['user_registered_condition']) . " `user_regdate` >= '" . ( int ) str_replace("\'", "''", $_POST['user_registered']) . "'"; } if ( $_POST['login_check'] ) { $sql_login = " " . str_replace("\'", "''", $_POST['user_lastvisit_condition']) . " `user_lastvisit` <= '" . ( int ) str_replace("\'", "''", $_POST['user_lastvisit']) . "'"; } if ( $_POST['active_check'] ) { $sql_active = " " . str_replace("\'", "''", $_POST['user_active_condition']) . " `user_active` = '" . ( int ) str_replace("\'", "''", $_POST['user_active']) . "'"; } if ( $_POST['posts_check'] ) { $sql_posts = " " . str_replace("\'", "''", $_POST['user_posts_condition']) . " `user_posts` " . str_replace("\'", "''", $_POST['user_posts_sign']) . " '" . ( int ) str_replace("\'", "''", $_POST['user_posts']) . "'"; } // User is not Guest $sql_non_anonymous = " AND user_id <> " . ANONYMOUS; // Build conditions array $conditions = array( 'user_regdate' => array( 'check' => 'registered_check', 'variable' => 'sql_registered', 'condition' => str_replace("\'", "''", $_POST['user_registered_condition'] ) ), 'user_lastvisit' => array( 'check' => 'login_check', 'variable' => 'sql_login', 'condition' => str_replace("\'", "''", $_POST['user_lastvisit_condition']) ), 'user_active' => array( 'check' => 'active_check', 'variable' => 'sql_active', 'condition' => str_replace("\'", "''", $_POST['user_active_condition']) ), 'user_posts' => array( 'check' => 'posts_check', 'variable' => 'sql_posts', 'condition' => str_replace("\'", "''", $_POST['user_posts_condition']) ), 'non_anonymous' => array( 'variable' => 'sql_non_anonymous', 'condition' => 'AND' ) ); $sql_or = ''; $sql_and = ''; $sql_selects = 'user_id, username,'; // Sort query while ( list ( $key, $array ) = @each ( $conditions ) ) { if ( !empty($array['condition']) && $array['condition'] == 'OR' ) { $sql_or .= $$array['variable']; } elseif ( !empty($array['condition']) && $array['condition'] == 'AND' ) { $sql_and .= $$array['variable'] ; } // Build sql selects if ( $key !== 'non_anonymous' && !empty($array['check']) ) { $sql_selects .= " " . $key . ","; } } // touch up query parts if ( !empty( $sql_or ) ) { $sql_or = '(' . $sql_or; $sql_or .= ' )'; } else { $sql_and = substr( $sql_and, 4, strlen($sql_and) ); } $sql_or = str_replace( '( OR', '( ', $sql_or ); $sql_selects = substr( $sql_selects, 0, ( strlen($sql_selects) - 1 ) ); // put query together $sql = "SELECT " . $sql_selects . " \n FROM " . USERS_TABLE . " \n WHERE " . $sql_or . " \n " . $sql_and . " \n ORDER BY user_id;"; if (! $result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, $lang['sql_error'], "", __LINE__, __FILE__, $sql); } while ( $row = $db->sql_fetchrow($result) ) { $inactive_users[] = $row; } $db->sql_freeresult($result); return $inactive_users; } ?> --- NEW FILE: admin_userlist.php --- <?php /** * * @package mxBB Portal Module - mx_phpbb2admin * @version $Id: admin_userlist.php,v 1.1 2006/09/09 21:21:20 jonohlsson Exp $ * @copyright (c) 2002-2006 [wGEric, Jon Ohlsson] mxBB Project Team * @license http://opensource.org/licenses/gpl-license.php GNU General Public License v2 * */ define( 'IN_PORTAL', true ); if ( !empty( $setmodules ) ) { $filename = basename( __FILE__ ); $module['phpbb2admin']['Userlist'] = 'modules/mx_phpbb2admin/admin/' . $filename; return; } $mx_root_path = './../../../'; $module_root_path = "./../"; $phpEx = substr(strrchr(__FILE__, '.'), 1); require( $mx_root_path . '/admin/pagestart.' . $phpEx ); include_once( $mx_root_path . 'admin/page_header_admin.' . $phpEx ); // ********************************************************************** // Read language definition // ********************************************************************** if ( !file_exists( $module_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx ) ) { include( $module_root_path . 'language/lang_english/lang_admin.' . $phpEx ); } else { include( $module_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx ); } // // Set mode // if( isset( $HTTP_POST_VARS['mode'] ) || isset( $HTTP_GET_VARS['mode'] ) ) { $mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode']; } else { $mode = ''; } // // confirm // if( isset( $HTTP_POST_VARS['confirm'] ) || isset( $HTTP_GET_VARS['confirm'] ) ) { $confirm = true; } else { $confirm = false; } // // cancel // if( isset( $HTTP_POST_VARS['cancel'] ) || isset( $HTTP_GET_VARS['cancel'] ) ) { $cancel = true; $mode = ''; } else { $cancel = false; } // // get starting position // $start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0; // // get show amount // if ( isset($HTTP_GET_VARS['show']) || isset($HTTP_POST_VARS['show']) ) { $show = ( isset($HTTP_POST_VARS['show']) ) ? intval($HTTP_POST_VARS['show']) : intval($HTTP_GET_VARS['show']); } else { $show = $board_config['posts_per_page']; } // // sort method // if ( isset($HTTP_GET_VARS['sort']) || isset($HTTP_POST_VARS['sort']) ) { $sort = ( isset($HTTP_POST_VARS['sort']) ) ? htmlspecialchars($HTTP_POST_VARS['sort']) : htmlspecialchars($HTTP_GET_VARS['sort']); $sort = str_replace("\'", "''", $sort); } else { $sort = 'user_regdate'; } // // sort order // if( isset($HTTP_POST_VARS['order']) ) { $sort_order = ( $HTTP_POST_VARS['order'] == 'ASC' ) ? 'ASC' : 'DESC'; } else if( isset($HTTP_GET_VARS['order']) ) { $sort_order = ( $HTTP_GET_VARS['order'] == 'ASC' ) ? 'ASC' : 'DESC'; } else { $sort_order = 'ASC'; } // // alphanumeric stuff // if ( isset($HTTP_GET_VARS['alphanum']) || isset($HTTP_POST_VARS['alphanum']) ) { $alphanum = ( isset($HTTP_POST_VARS['alphanum']) ) ? htmlspecialchars($HTTP_POST_VARS['alphanum']) : htmlspecialchars($HTTP_GET_VARS['alphanum']); $alphanum = str_replace("\'", "''", $alphanum); switch( $dbms ) { case 'postgres': $alpha_where = ( $alphanum == 'num' ) ? "AND username !~ '^[A-Z]+'" : "AND username ILIKE '$alphanum%'"; break; default: $alpha_where = ( $alphanum == 'num' ) ? "AND username NOT RLIKE '^[A-Z]'" : "AND username LIKE '$alphanum%'"; break; } } else { $alpahnum = ''; $alpha_where = ''; } $user_ids = array(); // // users id // because it is an array we will intval() it when we use it // if ( isset($HTTP_POST_VARS[POST_USERS_URL]) || isset($HTTP_GET_VARS[POST_USERS_URL]) ) { $user_ids = ( isset($HTTP_POST_VARS[POST_USERS_URL]) ) ? $HTTP_POST_VARS[POST_USERS_URL] : $HTTP_GET_VARS[POST_USERS_URL]; } else { unset($user_ids); } switch( $mode ) { case 'delete': // // see if cancel has been hit and redirect if it has // shouldn't get to this point if it has been hit but // do this just in case // if ( $cancel ) { redirect($module_root_path . 'admin/admin_userlist.'.$phpEx); } // // check confirm and either delete or show confirm message // if ( !$confirm ) { // show message $i = 0; $hidden_fields = ''; while( $i < count($user_ids) ) { $user_id = intval($user_ids[$i]); $hidden_fields .= '<input type="hidden" name="' . POST_USERS_URL . '[]" value="' . $user_id . '">'; unset($user_id); $i++; } $template->set_filenames(array( 'body' => 'confirm_body.tpl') ); $template->assign_vars(array( 'MESSAGE_TITLE' => $lang['Delete'], 'MESSAGE_TEXT' => $lang['Confirm_user_deleted'], 'U_INDEX' => '', 'L_INDEX' => '', 'L_YES' => $lang['Yes'], 'L_NO' => $lang['No'], 'S_CONFIRM_ACTION' => append_sid('admin_userlist.'.$phpEx.'?mode=delete'), 'S_HIDDEN_FIELDS' => $hidden_fields) ); } else { // delete users $i = 0; while( $i < count($user_ids) ) { $user_id = intval($user_ids[$i]); $sql = "SELECT u.username, g.group_id FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g WHERE ug.user_id = $user_id AND g.group_id = ug.group_id AND g.group_single_user = 1"; if( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not obtain group information for this user', '', __LINE__, __FILE__, $sql); } $row = $db->sql_fetchrow($result); $sql = "UPDATE " . POSTS_TABLE . " SET poster_id = " . DELETED . ", post_username = '" . $row['username'] . "' WHERE poster_id = $user_id"; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not update posts for this user', '', __LINE__, __FILE__, $sql); } $sql = "UPDATE " . TOPICS_TABLE . " SET topic_poster = " . DELETED . " WHERE topic_poster = $user_id"; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not update topics for this user', '', __LINE__, __FILE__, $sql); } $sql = "UPDATE " . VOTE_USERS_TABLE . " SET vote_user_id = " . DELETED . " WHERE vote_user_id = $user_id"; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not update votes for this user', '', __LINE__, __FILE__, $sql); } $sql = "SELECT group_id FROM " . GROUPS_TABLE . " WHERE group_moderator = $user_id"; if( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not select groups where user was moderator', '', __LINE__, __FILE__, $sql); } while ( $row_group = $db->sql_fetchrow($result) ) { $group_moderator[] = $row_group['group_id']; } if ( count($group_moderator) ) { $update_moderator_id = implode(', ', $group_moderator); $sql = "UPDATE " . GROUPS_TABLE . " SET group_moderator = " . $userdata['user_id'] . " WHERE group_moderator IN ($update_moderator_id)"; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not update group moderators', '', __LINE__, __FILE__, $sql); } } $sql = "DELETE FROM " . USERS_TABLE . " WHERE user_id = $user_id"; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not delete user', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . USER_GROUP_TABLE . " WHERE user_id = $user_id"; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not delete user from user_group table', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . GROUPS_TABLE . " WHERE group_id = " . $row['group_id']; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not delete group for this user', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . AUTH_ACCESS_TABLE . " WHERE group_id = " . $row['group_id']; if( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not delete group for this user', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . " WHERE user_id = $user_id"; if ( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not delete user from topic watch table', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . BANLIST_TABLE . " WHERE ban_userid = $user_id"; if ( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not delete user from banlist table', '', __LINE__, __FILE__, $sql); } $sql = "SELECT privmsgs_id FROM " . PRIVMSGS_TABLE . " WHERE privmsgs_from_userid = $user_id OR privmsgs_to_userid = $user_id"; if ( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not select all users private messages', '', __LINE__, __FILE__, $sql); } // This little bit of code directly from the private messaging section. while ( $row_privmsgs = $db->sql_fetchrow($result) ) { $mark_list[] = $row_privmsgs['privmsgs_id']; } if ( count($mark_list) ) { $delete_sql_id = implode(', ', $mark_list); $delete_text_sql = "DELETE FROM " . PRIVMSGS_TEXT_TABLE . " WHERE privmsgs_text_id IN ($delete_sql_id)"; $delete_sql = "DELETE FROM " . PRIVMSGS_TABLE . " WHERE privmsgs_id IN ($delete_sql_id)"; if ( !$db->sql_query($delete_sql) ) { message_die(GENERAL_ERROR, 'Could not delete private message info', '', __LINE__, __FILE__, $delete_sql); } if ( !$db->sql_query($delete_text_sql) ) { message_die(GENERAL_ERROR, 'Could not delete private message text', '', __LINE__, __FILE__, $delete_text_sql); } } unset($user_id); $i++; } $message = $lang['User_deleted_successfully'] . "<br /><br />" . sprintf($lang['Click_return_userlist'], "<a href=\"" . append_sid("admin_userlist.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>"); message_die(GENERAL_MESSAGE, $message); } break; case 'ban': // // see if cancel has been hit and redirect if it has // shouldn't get to this point if it has been hit but // do this just in case // if ( $cancel ) { redirect($module_root_path . 'admin/admin_userlist.'.$phpEx); } // // check confirm and either ban or show confirm message // if ( !$confirm ) { $i = 0; $hidden_fields = ''; while( $i < count($user_ids) ) { $user_id = intval($user_ids[$i]); $hidden_fields .= '<input type="hidden" name="' . POST_USERS_URL . '[]" value="' . $user_id . '">'; unset($user_id); $i++; } $template->set_filenames(array( 'body' => 'confirm_body.tpl') ); $template->assign_vars(array( 'MESSAGE_TITLE' => $lang['Ban'], 'MESSAGE_TEXT' => $lang['Confirm_user_ban'], 'U_INDEX' => '', 'L_INDEX' => '', 'L_YES' => $lang['Yes'], 'L_NO' => $lang['No'], 'S_CONFIRM_ACTION' => append_sid('admin_userlist.'.$phpEx.'?mode=ban'), 'S_HIDDEN_FIELDS' => $hidden_fields) ); } else { // ban users $i = 0; while( $i < count($user_ids) ) { $user_id = intval($user_ids[$i]); $sql = "INSERT INTO " . BANLIST_TABLE . " ( ban_userid ) VALUES ( '$user_id' )"; if( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not obtain ban user', '', __LINE__, __FILE__, $sql); } unset($user_id); $i++; } $message = $lang['User_banned_successfully'] . "<br /><br />" . sprintf($lang['Click_return_userlist'], "<a href=\"" . append_sid("admin_userlist.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>"); message_die(GENERAL_MESSAGE, $message); } break; case 'activate': // // activate or deactive the seleted users // $i = 0; while( $i < count($user_ids) ) { $user_id = intval($user_ids[$i]); $sql = "SELECT user_active FROM " . USERS_TABLE . " WHERE user_id = $user_id"; if( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not obtain user information', '', __LINE__, __FILE__, $sql); } $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); $new_status = ( $row['user_active'] ) ? 0 : 1; $sql = "UPDATE " . USERS_TABLE . " SET user_active = '$new_status' WHERE user_id = $user_id"; if( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not update user status', '', __LINE__, __FILE__, $sql); } unset($user_id); $i++; } $message = $lang['User_status_updated'] . "<br /><br />" . sprintf($lang['Click_return_userlist'], "<a href=\"" . append_sid("admin_userlist.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>"); message_die(GENERAL_MESSAGE, $message); break; case 'group': // // add users to a group // if ( !$confirm ) { // show form to select which group to add users to $i = 0; $hidden_fields = ''; while( $i < count($user_ids) ) { $user_id = intval($user_ids[$i]); $hidden_fields .= '<input type="hidden" name="' . POST_USERS_URL . '[]" value="' . $user_id . '">'; unset($user_id); $i++; } $template->set_filenames(array( 'body' => 'admin/userlist_group.tpl') ); $template->assign_vars(array( 'MESSAGE_TITLE' => $lang['Add_group'], 'MESSAGE_TEXT' => $lang['Add_group_explain'], 'L_GROUP' => $lang['Group'], 'S_GROUP_VARIABLE' => POST_GROUPS_URL, 'S_ACTION' => append_sid($module_root_path . 'admin/admin_userlist.'.$phpEx.'?mode=group'), 'L_GO' => $lang['Go'], 'L_CANCEL' => $lang['Cancel'], 'L_SELECT' => $lang['Select_one'], 'S_HIDDEN_FIELDS' => $hidden_fields) ); $sql = "SELECT group_id, group_name FROM " . GROUPS_TABLE . " WHERE group_single_user <> " . TRUE . " ORDER BY group_name"; if( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not query groups', '', __LINE__, __FILE__, $sql); } // loop through groups while ( $row = $db->sql_fetchrow($result) ) { $template->assign_block_vars('grouprow',array( 'GROUP_NAME' => $row['group_name'], 'GROUP_ID' => $row['group_id']) ); } } else { // add the users to the selected group $group_id = intval($HTTP_POST_VARS[POST_GROUPS_URL]); include($phpbb_root_path . 'includes/emailer.'.$phpEx); $emailer = new emailer($board_config['smtp_delivery']); $i = 0; while( $i < count($user_ids) ) { $user_id = intval($user_ids[$i]); // // For security, get the ID of the group moderator. // switch(SQL_LAYER) { /*case 'postgresql': $sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod FROM " . GROUPS_TABLE . " g, " . AUTH_ACCESS_TABLE . " aa WHERE g.group_id = $group_id AND aa.group_id = g.group_id UNION ( SELECT g.group_moderator, g.group_type, NULL FROM " . GROUPS_TABLE . " g WHERE g.group_id = $group_id AND NOT EXISTS ( SELECT aa.group_id FROM " . AUTH_ACCESS_TABLE . " aa WHERE aa.group_id = g.group_id ) )"; break;*/ case 'oracle': $sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod FROM " . GROUPS_TABLE . " g, " . AUTH_ACCESS_TABLE . " aa WHERE g.group_id = $group_id AND aa.group_id = g.group_id(+)"; break; default: $sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod FROM ( " . GROUPS_TABLE . " g LEFT JOIN " . AUTH_ACCESS_TABLE . " aa ON aa.group_id = g.group_id ) WHERE g.group_id = $group_id"; break; } if ( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not get moderator information', '', __LINE__, __FILE__, $sql); } $group_info = $db->sql_fetchrow($result); $sql = "SELECT user_id, user_email, user_lang, user_level FROM " . USERS_TABLE . " WHERE user_id = $user_id"; if ( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, "Could not get user information", $lang['Error'], __LINE__, __FILE__, $sql); } $row = $db->sql_fetchrow($result); $sql = "SELECT ug.user_id, u.user_level FROM " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u WHERE u.user_id = " . $row['user_id'] . " AND ug.user_id = u.user_id AND ug.group_id = $group_id"; if ( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not get user information', '', __LINE__, __FILE__, $sql); } if ( !($db->sql_fetchrow($result)) ) { $sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending) VALUES (" . $row['user_id'] . ", $group_id, 0)"; if ( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not add user to group', '', __LINE__, __FILE__, $sql); } if ( $row['user_level'] != ADMIN && $row['user_level'] != MOD && $group_info['auth_mod'] ) { $sql = "UPDATE " . USERS_TABLE . " SET user_level = " . MOD . " WHERE user_id = " . $row['user_id']; if ( !$db->sql_query($sql) ) { message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql); } } // // Get the group name // Email the user and tell them they're in the group // $group_sql = "SELECT group_name FROM " . GROUPS_TABLE . " WHERE group_id = $group_id"; if ( !($result = $db->sql_query($group_sql)) ) { message_die(GENERAL_ERROR, 'Could not get group information', '', __LINE__, __FILE__, $group_sql); } $group_name_row = $db->sql_fetchrow($result); $group_name = $group_name_row['group_name']; $script_name = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($board_config['script_path'])); $script_name = ( $script_name != '' ) ? $script_name . '/groupcp.'.$phpEx : 'groupcp.'.$phpEx; $server_name = trim($board_config['server_name']); $server_protocol = ( $board_config['cookie_secure'] ) ? 'https://' : 'http://'; $server_port = ( $board_config['server_port'] <> 80 ) ? ':' . trim($board_config['server_port']) . '/' : '/'; $server_url = $server_protocol . $server_name . $server_port . $script_name; $emailer->from($board_config['board_email']); $emailer->replyto($board_config['board_email']); $emailer->use_template('group_added', $row['user_lang']); $emailer->email_address($row['user_email']); $emailer->set_subject($lang['Group_added']); $emailer->assign_vars(array( 'SITENAME' => $board_config['sitename'], 'GROUP_NAME' => $group_name, 'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '', 'U_GROUPCP' => $server_url . '?' . POST_GROUPS_URL . "=$group_id") ); $emailer->send(); $emailer->reset(); } unset($user_id); $i++; } $message = $lang['User_add_group_successfully'] . "<br /><br />" . sprintf($lang['Click_return_userlist'], "<a href=\"" . append_sid("admin_userlist.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>"); message_die(GENERAL_MESSAGE, $message); } break; default: // // get and display all of the users // $template->set_filenames(array( 'body' => 'admin/userlist_body.tpl') ); // // gets for alphanum // $alpha_range = array(); $alpha_letters = array(); $alpha_letters = range('A','Z'); $alpha_start = array($lang['All'], '#'); $alpha_range = array_merge($alpha_start, $alpha_letters); $i = 0; while( $i < count($alpha_range) ) { if ( $alpha_range[$i] != $lang['All'] ) { if ( $alpha_range[$i] != '#' ) { $temp = strtolower($alpha_range[$i]); } else { $temp = 'num'; } $alphanum_search_url = append_sid($module_root_path . "admin/admin_userlist.$phpEx?sort=$sort&order=$sort_order&show=$show&alphanum=$temp"); } else { $alphanum_search_url = append_sid($module_root_path . "admin/admin_userlist.$phpEx?sort=$sort&order=$sort_order&show=$show"); } if ( ( $alphanum == $temp ) || ( $alpha_range[$i] == $lang['All'] && empty($alphanum) ) ) { $alpha_range[$i] = '<b>' . $alpha_range[$i] . '</b>'; } $template->assign_block_vars('alphanumsearch', array( 'SEARCH_SIZE' => floor(100/count($alpha_range)) . '%', 'SEARCH_TERM' => $alpha_range[$i], 'SEARCH_LINK' => $alphanum_search_url) ); $i++; } $hidden_fields = '<input type="hidden" name="start" value="' . $start . '">'; $hidden_fields .= '<input type="hidden" name="alphanum" value="' . $alphanum . '">'; // // set up template varibles // $template->assign_vars(array( 'L_TITLE' => $lang['Userlist'], 'L_DESCRIPTION' => $lang['Userlist_description'], 'L_OPEN_CLOSE' => $lang['Open_close'], 'L_ACTIVE' => $lang['Active'], 'L_USERNAME' => $lang['Username'], 'L_GROUP' => $lang['Group'], 'L_RANK' => $lang['Rank'], 'L_POSTS' => $lang['Posts'], 'L_FIND_ALL_POSTS' => $lang['Find_all_posts'], 'L_JOINED' => $lang['Joined'], 'L_ACTIVTY' => $lang['Last_activity'], 'L_MANAGE' => $lang['User_manage'], 'L_PERMISSIONS' => $lang['Permissions'], 'L_EMAIL' => $lang['Email'], 'L_PM' => $lang['Private_Message'], 'L_WEBSITE' => $lang['Website'], 'S_USER_VARIABLE' => POST_USERS_URL, 'S_ACTION' => append_sid($module_root_path . 'admin/admin_userlist.'.$phpEx), 'L_GO' => $lang['Go'], 'L_SELECT' => $lang['Select_one'], 'L_DELETE' => $lang['Delete'], 'L_BAN' => $lang['Ban'], 'L_ACTIVATE_DEACTIVATE' => $lang['Activate_deactivate'], 'L_ADD_GROUP' => $lang['Add_group'], 'S_SHOW' => $show, 'L_SORT_BY' => $lang['Sort_by'], 'L_USER_ID' => $lang['User_id'], 'L_USER_LEVEL' => $lang['User_level'], 'L_ASCENDING' => $lang['Ascending'], 'L_DESCENDING' => $lang['Descending'], 'L_SHOW' => $lang['Show'], 'S_SORT' => $lang['Sort'], 'S_HIDDEN_FIELDS' => $hidden_fields, 'SORT_USER_ID' => ( $sort == 'user_id' ) ? 'selected="selected"' : '', 'SORT_ACTIVE' => ( $sort == 'user_active' ) ? 'selected="selected"' : '', 'SORT_USERNAME' => ( $sort == 'username' ) ? 'selected="selected"' : '', 'SORT_JOINED' => ( $sort == 'user_regdate' ) ? 'selected="selected"' : '', 'SORT_ACTIVTY' => ( $sort == 'user_session_time' ) ? 'selected="selected"' : '', 'SORT_USER_LEVEL' => ( $sort == 'user_level' ) ? 'selected="selected"' : '', 'SORT_POSTS' => ( $sort == 'user_posts' ) ? 'selected="selected"' : '', 'SORT_RANK' => ( $sort == 'user_rank' ) ? 'selected="selected"' : '', 'SORT_EMAIL' => ( $sort == 'user_email' ) ? 'selected="selected"' : '', 'ORDER_ASC' => ( $sort_order == 'ASC' ) ? 'selected="selected"' : '', 'ORDER_DESC' => ( $sort_order == 'DESC' ) ? 'selected="selected"' : '', )); $order_by = "ORDER BY $sort $sort_order "; $sql = "SELECT * FROM " . USERS_TABLE . " WHERE user_id <> " . ANONYMOUS . " $alpha_where $order_by LIMIT $start, $show"; if( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql); } // loop through users $i = 1; while ( $row = $db->sql_fetchrow($result) ) { // // users avatar // $avatar_img = ''; if ( $row['user_avatar_type'] && $row['user_allowavatar'] ) { switch( $row['user_avatar_type'] ) { case USER_AVATAR_UPLOAD: $avatar_img = ( $board_config['allow_avatar_upload'] ) ? '<img src="' . $phpbb_root_path . $board_config['avatar_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : ''; break; case USER_AVATAR_REMOTE: $avatar_img = ( $board_config['allow_avatar_remote'] ) ? '<img src="' . $row['user_avatar'] . '" alt="" border="0" />' : ''; break; case USER_AVATAR_GALLERY: $avatar_img = ( $board_config['allow_avatar_local'] ) ? '<img src="' . $phpbb_root_path . $board_config['avatar_gallery_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : ''; break; } } // // users rank // $rank_sql = "SELECT * FROM " . RANKS_TABLE . " ORDER BY rank_special, rank_min"; if ( !($rank_result = $db->sql_query($rank_sql)) ) { message_die(GENERAL_ERROR, 'Could not obtain ranks information', '', __LINE__, __FILE__, $sql); } while ( $rank_row = $db->sql_fetchrow($rank_result) ) { $ranksrow[] = $rank_row; } $db->sql_freeresult($rank_result); $poster_rank = ''; $rank_image = ''; if ( $row['user_rank'] ) { for($ji = 0; $ji < count($ranksrow); $ji++) { if ( $row['user_rank'] == $ranksrow[$ji]['rank_id'] && $ranksrow[$ji]['rank_special'] ) { $poster_rank = $ranksrow[$ji]['rank_title']; $rank_image = ( $ranksrow[$ji]['rank_image'] ) ? '<img src="' . $phpbb_root_path . $ranksrow[$ji]['rank_image'] . '" alt="' . $poster_rank . '" title="' . $poster_rank . '" border="0" /><br />' : ''; } } } else { for($ji = 0; $ji < count($ranksrow); $ji++) { if ( $row['user_posts'] >= $ranksrow[$ji]['rank_min'] && !$ranksrow[$ji]['rank_special'] ) { $poster_rank = $ranksrow[$ji]['rank_title']; $rank_image = ( $ranksrow[$ji]['rank_image'] ) ? '<img src="' . $phpbb_root_path . $ranksrow[$ji]['rank_image'] . '" alt="' . $poster_rank . '" title="' . $poster_rank . '" border="0" /><br />' : ''; } } } // // user's color depending on their level // $style_color = ''; if ( $row['user_level'] == ADMIN ) { $row['username'] = '<b>' . $row['username'] . '</b>'; $style_color = 'style="color:#' . $theme['fontcolor3'] . '"'; } else if ( $row['user_level'] == MOD ) { $row['username'] = '<b>' . $row['username'] . '</b>'; $style_color = 'style="color:#' . $theme['fontcolor2'] . '"'; } // // setup user row template varibles // $template->assign_block_vars('user_row', array( 'ROW_NUMBER' => $i + ( $HTTP_GET_VARS['start'] + 1 ), 'ROW_CLASS' => ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'], 'USER_ID' => $row['user_id'], 'ACTIVE' => ( $row['user_active'] == TRUE ) ? $lang['Yes'] : $lang['No'], 'STYLE_COLOR' => $style_color, 'USERNAME' => $row['username'], 'U_PROFILE' => append_sid($phpbb_root_path . 'profile.'.$phpEx.'?mode=viewprofile&' . POST_USERS_URL . '=' . $row['user_id']), 'RANK' => $poster_rank, 'I_RANK' => $rank_image, 'I_AVATAR' => $avatar_img, 'JOINED' => create_date('d M Y', $row['user_regdate'], $board_config['board_timezone']), 'LAST_ACTIVITY' => ( !empty($row['user_session_time']) ) ? create_date('d M Y', $row['user_session_time'], $board_config['board_timezone']) : $lang['Never'], 'POSTS' => ( $row['user_posts'] ) ? $row['user_posts'] : 0, 'U_SEARCH' => append_sid($phpbb_root_path . 'search.'.$phpEx.'?search_author=' . urlencode(strip_tags($row['username'])) . '&showresults=posts'), 'U_WEBSITE' => ( $row['user_website'] ) ? $row['user_website'] : '', 'EMAIL' => $row['user_email'], 'U_PM' => append_sid($phpbb_root_path . 'privmsg.' . $phpEx . '?mode=post&' . POST_USERS_URL . '='. $row['user_id']), 'U_MANAGE' => append_sid($phpbb_root_path . 'admin/admin_users.'.$phpEx.'?mode=edit&' . POST_USERS_URL . '=' . $row['user_id']), 'U_PERMISSIONS' => append_sid($phpbb_root_path . 'admin/admin_ug_auth.'.$phpEx.'?mode=user&' . POST_USERS_URL . '=' . $row['user_id'])) ); // // get the users group information // $group_sql = "SELECT * FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g WHERE ug.user_id = " . $row['user_id'] . " AND g.group_single_user <> 1 AND g.group_id = ug.group_id"; if( !($group_result = $db->sql_query($group_sql)) ) { message_die(GENERAL_ERROR, 'Could not query groups', '', __LINE__, __FILE__, $group_sql); } $g = 0; while ( $group_row = $db->sql_fetchrow($group_result) ) { // // assign the group varibles // if ( $group_row['group_moderator'] == $row['user_id'] ) { $group_status = $lang['Moderator']; } else if ( $group_row['user_pending'] == true ) { $group_status = $lang['Pending']; } else { $group_status = $lang['Member']; } $template->assign_block_vars('user_row.group_row', array( 'GROUP_NAME' => $group_row['group_name'], 'GROUP_STATUS' => $group_status, 'U_GROUP' => $phpbb_root_path . 'groupcp.'.$phpEx.'?'.POST_GROUPS_URL.'='.$group_row['group_id']) ); $g++; } if ( $g == 0 ) { $template->assign_block_vars('user_row.no_group_row', array( 'L_NONE' => $lang['None']) ); } $i++; } $db->sql_freeresult($result); $count_sql = "SELECT count(user_id) AS total FROM " . USERS_TABLE . " WHERE user_id <> " . ANONYMOUS . " $alpha_where"; if ( !($count_result = $db->sql_query($count_sql)) ) { message_die(GENERAL_ERROR, 'Error getting total users', '', __LINE__, __FILE__, $sql); } if ( $total = $db->sql_fetchrow($count_result) ) { $total_members = $total['total']; $pagination = generate_pagination($module_root_path . "admin/admin_userlist.$phpEx?sort=$sort&order=$sort_order&show=$show" . ( ( isset($alphanum) ) ? "&alphanum=$alphanum" : '' ), $total_members, $show, $start); } $template->assign_vars(array( 'PAGINATION' => $pagination, 'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $show ) + 1 ), ceil( $total_members / $show ))) ); break; } // switch() $template->pparse('body'); include_once( $mx_root_path . 'admin/page_footer_admin.' . $phpEx ); ?> --- NEW FILE: index.htm --- <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body bgcolor="#FFFFFF" text="#000000"> </body> </html> --- NEW FILE: admin_prune_user_posts.php --- <?php /** * * @package mxBB Portal Module - mx_phpbb2admin * @version $Id: admin_prune_user_posts.php,v 1.1 2006/09/09 21:21:20 jonohlsson Exp $ * @copyright (c) 2002-2006 [Adam Alkins (http://www.rasadam.com), Jon Ohlsson] mxBB Project Team * @license http://opensource.org/licenses/gpl-license.php GNU General Public License v2 * */ define( 'IN_PORTAL', true ); if ( !empty( $setmodules ) ) { $filename = basename( __FILE__ ); $module['phpbb2admin']['Prune_user_posts'] = 'modules/mx_phpbb2admin/admin/' . $filename; return; } [...1194 lines suppressed...] if ( !$db->sql_query($sql) ) { message_die(CRITICAL_ERROR, 'Could not update user post count', '', __LINE__, __FILE__, $sql); } } } $bye_message = sprintf($lang['Prune_finished'],append_sid("admin_prune_user_posts.".$phpEx), append_sid("index.".$phpEx."?pane=right")); // Say bye bye message_die(GENERAL_MESSAGE, $bye_message); } // Spit out the page. $template->pparse("body"); include_once( $mx_root_path . 'admin/page_footer_admin.' . $phpEx ); ?> |