acl_gets('a_user', 'a_useradd', 'a_userdel')) { return; } $module['USER']['MANAGE_USERS'] = basename(__FILE__) . $SID; return; } define('IN_PHPBB', 1); // Include files $phpbb_root_path = '../'; $phpEx = substr(strrchr(__FILE__, '.'), 1); require('pagestart.' . $phpEx); include($phpbb_root_path.'includes/functions_user.'.$phpEx); include($phpbb_root_path.'includes/functions_profile_fields.'.$phpEx); // // Get and set basic vars // $mode = request_var('mode', ''); $action = request_var('action', 'overview'); $username = request_var('username', ''); $user_id = request_var('u', 0); $ip = request_var('ip', ''); $start = request_var('start', 0); $delete = request_var('delete', ''); $deletetype = request_var('deletetype', ''); $quicktools = request_var('quicktools', ''); $submit = (isset($_POST['update'])) ? true : false; $confirm = (isset($_POST['confirm'])) ? true : false; $cancel = (isset($_POST['cancel'])) ? true : false; $error = array(); // // Whois output // if ($action == 'whois') { // Output relevant page adm_page_header($user->lang['WHOIS']); if ($ip && $domain = gethostbyaddr($ip)) { ?>
IP whois for
\2\3', $ipwhois); echo '
' . trim($ipwhois) . '
'; } ?>

sql_escape($username) . "'"; $sql = ($action == 'overview') ? 'SELECT u.*, s.session_time, s.session_page, s.session_ip FROM (' . USERS_TABLE . ' u LEFT JOIN ' . SESSIONS_TABLE . " s ON s.session_user_id = u.user_id) WHERE u.$sql_where ORDER BY s.session_time DESC LIMIT 1" : 'SELECT * FROM ' . USERS_TABLE . " WHERE $sql_where"; $result = $db->sql_query($sql); if (!extract($db->sql_fetchrow($result))) { trigger_error($user->lang['NO_USER']); } $db->sql_freeresult($result); if ($session_time > $user_lastvisit) { $user_lastvisit = $session_time; $user_lastpage = $session_page; } $user_password = ''; } // Output page adm_page_header($user->lang['MANAGE']); // // User has submitted a form, process it // if ($submit) { switch ($action) { case 'overview': if ($delete && $user_type != USER_FOUNDER) { if (!$auth->acl_get('a_userdel')) { trigger_error($user->lang['NO_ADMIN']); } if (!$cancel && !$confirm) { adm_page_confirm($user->lang['CONFIRM'], $user->lang['CONFIRM_OPERATION']); } else if (!$cancel) { user_delete($deletetype, $user_id); trigger_error($user->lang['USER_DELETED']); } } // Handle quicktool actions if ($quicktools && $user_type != USER_FOUNDER) { switch ($quicktools) { case 'banuser': case 'banemail': case 'banip': $ban = array(); switch ($quicktools) { case 'banuser': $ban[] = $username; $reason = 'USER_ADMIN_BAN_NAME_REASON'; break; case 'banemail': $ban[] = $user_email; $reason = 'USER_ADMIN_BAN_EMAIL_REASON'; break; case 'banip': $ban[] = $user_ip; $sql = 'SELECT DISTINCT poster_ip FROM ' . POSTS_TABLE . " WHERE poster_id = $user_id"; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { $ban[] = $row['poster_ip']; } $db->sql_freeresult($result); $reason = 'USER_ADMIN_BAN_IP_REASON'; break; } user_ban(substr($quicktools, 3), $ban, 0, 0, 0, $user->lang[$reason]); trigger_error($user->lang['BAN_UPDATE_SUCESSFUL']); break; case 'reactivate': if ($config['email_enable']) { include_once($phpbb_root_path . 'includes/functions_messenger.'.$phpEx); $user_actkey = gen_rand_string(10); $key_len = 54 - (strlen($server_url)); $key_len = ($key_len > 6) ? $key_len : 6; $user_actkey = substr($user_actkey, 0, $key_len); user_active_flip($user_id, $user_type, $user_actkey, $username); $messenger = new messenger(); $messenger->template('user_welcome_inactive', $user_lang); $messenger->subject(); $messenger->replyto($config['board_contact']); $messenger->to($user_email, $username); $messenger->headers('X-AntiAbuse: Board servername - ' . $config['server_name']); $messenger->headers('X-AntiAbuse: User_id - ' . $user->data['user_id']); $messenger->headers('X-AntiAbuse: Username - ' . $user->data['username']); $messenger->headers('X-AntiAbuse: User IP - ' . $user->ip); $messenger->assign_vars(array( 'SITENAME' => $config['sitename'], 'WELCOME_MSG' => sprintf($user->lang['WELCOME_SUBJECT'], $config['sitename']), 'USERNAME' => $username, 'PASSWORD' => $password_confirm, 'EMAIL_SIG' => str_replace('
', "\n", "-- \n" . $config['board_email_sig']), 'U_ACTIVATE' => generate_board_url() . "/ucp.$phpEx?mode=activate&u=$user_id&k=$user_actkey") ); $messenger->send(NOTIFY_EMAIL); $messenger->queue->save(); } break; case 'active': user_active_flip($user_id, $user_type, false, $username); $message = ($user_type == USER_NORMAL) ? 'USER_ADMIN_INACTIVE' : 'USER_ADMIN_ACTIVE'; trigger_error($user->lang[$message]); break; case 'moveposts': if (!($new_forum_id = request_var('new_f', 0))) { ?>

lang['USER_ADMIN']; ?>

lang['USER_ADMIN_EXPLAIN']; ?>

">
lang['USER_ADMIN_MOVE_POSTS']; ?>
lang['MOVE_POSTS_EXPLAIN']; ?>

 
$new_forum_id GROUP BY topic_id"; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { $topic_id_ary[$row['topic_id']] = $row['total_posts']; } $db->sql_freeresult($result); $sql = 'SELECT topic_id, forum_id, topic_title, topic_replies, topic_replies_real FROM ' . TOPICS_TABLE . ' WHERE topic_id IN (' . implode(', ', array_keys($topic_id_ary)) . ')'; $result = $db->sql_query($sql); $move_topic_ary = $move_post_ary = array(); while ($row = $db->sql_fetchrow($result)) { if (max($row['topic_replies'], $row['topic_replies_real']) + 1 == $topic_id_ary[$row['topic_id']]) { $move_topic_ary[] = $row['topic_id']; } else { $move_post_ary[$row['topic_id']]['title'] = $row['topic_title']; $move_post_ary[$row['topic_id']]['attach'] = ($row['attach']) ? 1 : 0; } $forum_id_ary[] = $row['forum_id']; } $db->sql_freeresult($result); // Entire topic comprises posts by this user, move these topics if (sizeof($move_topic_ary)) { move_topics($move_topic_ary, $new_forum_id, false); } if (sizeof($move_post_ary)) { // Create new topic // Update post_ids, report_ids, attachment_ids foreach ($move_post_ary as $topic_id => $post_ary) { // Create new topic $sql = 'INSERT INTO ' . TOPICS_TABLE . ' ' . $db->sql_build_array('INSERT', array( 'topic_poster' => $user_id, 'topic_time' => time(), 'forum_id' => $new_forum_id, 'icon_id' => 0, 'topic_approved' => 1, 'topic_title' => $post_ary['title'], 'topic_first_poster_name' => $username, 'topic_type' => POST_NORMAL, 'topic_time_limit' => 0, 'topic_attachment' => $post_ary['attach'],) ); $db->sql_query($sql); $new_topic_id = $db->sql_nextid(); // Move posts $sql = 'UPDATE ' . POSTS_TABLE . " SET forum_id = $new_forum_id, topic_id = $new_topic_id WHERE topic_id = $topic_id AND poster_id = $user_id"; $db->sql_query($sql); if ($post_ary['attach']) { $sql = 'UPDATE ' . ATTACHMENTS_TABLE . " SET topic_id = $new_topic_id WHERE topic_id = $topic_id AND poster_id = $user_id"; $db->sql_query($sql); } $new_topic_id_ary[] = $new_topic_id; } } $forum_id_ary = array_unique($forum_id_ary); $topic_id_ary = array_unique(array_merge($topic_id_ary, $new_topic_id_ary)); sync('reported', 'topic_id', $topic_id_ary); sync('topic', 'topic_id', $topic_id_ary); sync('forum', 'forum_id', $forum_id_ary); } break; } trigger_error($message); } // Handle registration info updates $var_ary = array( 'username' => (string) $username, 'user_founder' => (int) $user_founder, 'user_type' => (int) $user_type, 'user_email' => (string) $user_email, 'email_confirm' => (string) '', 'user_password' => (string) '', 'password_confirm' => (string) '', 'user_warnings' => (int) $user_warnings, ); foreach ($var_ary as $var => $default) { $data[$var] = request_var($var, $default); } $var_ary = array( 'password_confirm' => array('string', true, $config['min_pass_chars'], $config['max_pass_chars']), 'user_password' => array('string', true, $config['min_pass_chars'], $config['max_pass_chars']), 'user_email' => array( array('string', false, 6, 60), array('email', $email)), 'email_confirm' => array('string', true, 6, 60), 'user_warnings' => array('num', 0, $config['max_warnings']), ); // Check username if altered if ($username != $data['username']) { $var_ary += array( 'username' => array( array('string', false, $config['min_name_chars'], $config['max_name_chars']), array('username', $username)), ); } $error = validate_data($data, $var_ary); if ($data['user_password'] && $data['password_confirm'] != $data['user_password']) { $error[] = 'NEW_PASSWORD_ERROR'; } if ($user_email != $data['user_email'] && $data['email_confirm'] != $data['user_email']) { $error[] = 'NEW_EMAIL_ERROR'; } // Which updates do we need to do? $update_warning = ($user_warnings != $data['user_warnings']) ? true : false; $update_username = ($username != $data['username']) ? $username : false; $update_password = ($user_password != $data['user_password']) ? true : false; extract($data); unset($data); if (!sizeof($error)) { $sql_ary = array( 'username' => $username, 'user_founder' => $user_founder, 'user_email' => $user_email, 'user_email_hash' => crc32(strtolower($user_email)) . strlen($user_email), 'user_warnings' => $user_warnings, ); if ($update_password) { $sql_ary += array( 'user_password' => md5($user_password), 'user_passchg' => time(), ); } $sql = 'UPDATE ' . USERS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' WHERE user_id = ' . $user->data['user_id']; $db->sql_query($sql); // TODO if ($update_warning) { } if ($update_username) { user_update_name($update_username, $username); } trigger_error($user->lang['USER_OVERVIEW_UPDATED']); } // Replace "error" strings with their real, localised form $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error); break; } } // // Output forms // // Begin program if ($username || $user_id) { // Generate overall "header" for user admin $form_options = ''; $forms_ary = array('overview' => 'OVERVIEW', 'feedback' => 'FEEDBACK', 'profile' => 'PROFILE', 'prefs' => 'PREFS', 'avatar' => 'AVATAR', 'sig' => 'SIG', 'groups' => 'GROUP', 'perm' => 'PERM'); foreach ($forms_ary as $value => $lang) { $selected = ($action == $value) ? ' selected="selected"' : ''; $form_options .= ''; } $pagination = ''; ?>

lang['USER_ADMIN']; ?>

lang['USER_ADMIN_EXPLAIN']; ?>

">
lang['SELECT_FORM']; ?>:
'USERNAME_CHARS_ANY', '[\w]+' => 'USERNAME_ALPHA_ONLY', '[\w_\+\. \-\[\]]+' => 'USERNAME_ALPHA_SPACERS'); $quick_tool_ary = array('banuser' => 'BAN_USER', 'banemail' => 'BAN_EMAIL', 'banip' => 'BAN_IP', 'active' => (($user_type == USER_INACTIVE) ? 'ACTIVATE' : 'DEACTIVATE'), 'moveposts' => 'MOVE_POSTS'); if ($config['email_enable']) { $quick_tool_ary['reactivate'] = 'FORCE'; } asort($quick_tool_ary); $options = ''; foreach ($quick_tool_ary as $value => $lang) { $options .= ''; } $user_founder_yes = ($user_type == USER_FOUNDER) ? ' checked="checked"' : ''; $user_founder_no = ($user_type != USER_FOUNDER) ? ' checked="checked"' : (($user->data['user_type'] != USER_FOUNDER) ? ' disabled="disabled"' : ''); ?> sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); $total_reports = $row['total_reports']; if ($total_reports) { $pagination = generate_pagination("admin_users.$phpEx$SID&action=$action&u=$user_id&st=$sort_days&sk=$sort_key&sd=$sort_dir", $total_reports, $config['posts_per_page'], $start); $sql = 'SELECT u.username, n.* FROM ' . USERS_NOTES_TABLE . ' n, ' . USERS_TABLE . " u WHERE n.user_id = $user_id AND u.user_id = n.reporter_id ORDER BY n.report_log DESC, n.report_date DESC"; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { $row_class = ($row_class == 'row1') ? 'row2' : 'row1'; ?> sql_freeresult($result); } else { ?> --'; for ($i = 1; $i < 32; $i++) { $selected = ($i == $bday_day) ? ' selected="selected"' : ''; $s_birthday_day_options .= ""; } $s_birthday_month_options = ''; for ($i = 1; $i < 13; $i++) { $selected = ($i == $bday_month) ? ' selected="selected"' : ''; $s_birthday_month_options .= ""; } $s_birthday_year_options = ''; $now = getdate(); $s_birthday_year_options = ''; for ($i = $now['year'] - 100; $i < $now['year']; $i++) { $selected = ($i == $bday_year) ? ' selected="selected"' : ''; $s_birthday_year_options .= ""; } unset($now); // Get additional profile fields and assign them to the template block var 'profile_fields' // $user->get_profile_fields($user->data['user_id']); // $cp->generate_profile_fields('profile', $user->get_iso_lang_id(), $cp_error); ?> '; } else { $avatar_img = ''; } ?>
lang['USER_ADMIN_' . strtoupper($action)]; ?>
', $error); ?>
lang['USERNAME']; ?>:
lang[$user_char_ary[str_replace('\\\\', '\\', $config['allow_name_chars'])] . '_EXPLAIN'], $config['min_name_chars'], $config['max_name_chars']); ?>
lang['REGISTERED']; ?>: format_date($user_regdate); ?>
lang['REGISTERED_IP']; ?>: ' . (($ip == 'hostname') ? gethostbyaddr($user_ip) : $user_ip) . " [ " . $user->lang['WHOIS'] . ' ]'; ?>
lang['LAST_ACTIVE']; ?>: format_date($user_lastvisit); ?>
lang['FOUNDER']; ?>:
lang['FOUNDER_EXPLAIN']; ?>
/>lang['YES']; ?>  />lang['NO']; ?>
lang['EMAIL']; ?>:
lang['CONFIRM_EMAIL']; ?>:
lang['CONFIRM_EMAIL_EXPLAIN']; ?>
lang['NEW_PASSWORD']; ?>:
lang['CHANGE_PASSWORD_EXPLAIN'], $config['min_pass_chars'], $config['max_pass_chars']) ?>
lang['CONFIRM_PASSWORD']; ?>:
lang['CONFIRM_PASSWORD_EXPLAIN']; ?>
lang['USER_TOOLS']; ?>
lang['WARNINGS']; ?>:
lang['WARNINGS_EXPLAIN']; ?>
lang['QUICK_TOOLS']; ?>:
lang['DELETE_USER']; ?>:
lang['DELETE_USER_EXPLAIN']; ?>
Report by: on format_date($row['report_date']); ?>
No reports exist for this user
lang['UCP_ICQ']; ?>:
lang['UCP_AIM']; ?>:
lang['UCP_MSNM']; ?>:
lang['UCP_YIM']; ?>:
lang['UCP_JABBER']; ?>:
lang['WEBSITE']; ?>:
lang['LOCATION']; ?>:
lang['OCCUPATION']; ?>:
lang['INTERESTS']; ?>:
lang['BIRTHDAY']; ?>:
lang['BIRTHDAY_EXPLAIN']; ?>
lang['DAY']; ?>: lang['MONTH']; ?>: lang['YEAR']; ?>:
lang['VIEW_IMAGES']; ?>: lang['YES']; ?>   lang['NO']; ?>
lang['VIEW_FLASH']; ?>: lang['YES']; ?>   lang['NO']; ?>
lang['VIEW_SMILIES']; ?>: lang['YES']; ?>   lang['NO']; ?>
lang['VIEW_SIGS']; ?>: lang['YES']; ?>   lang['NO']; ?>
lang['VIEW_AVATARS']; ?>: lang['YES']; ?>   lang['NO']; ?>
lang['DISABLE_CENSORS']; ?>: lang['YES']; ?>   lang['NO']; ?>
lang['MINIMUM_KARMA']; ?>:
lang['MINIMUM_KARMA_EXPLAIN']; ?>
lang['VIEW_TOPICS_DAYS']; ?>: {S_SELECT_SORT_DAYS}
lang['VIEW_TOPICS_KEY']; ?>: {S_SELECT_SORT_KEY}
lang['VIEW_TOPICS_DIR']; ?>: {S_SELECT_SORT_DIR}
Posting preferences
lang['DEFAULT_BBCODE']; ?>: lang['YES']; ?>   lang['NO']; ?>
lang['DEFAULT_HTML']; ?>: lang['YES']; ?>   lang['NO']; ?>
lang['DEFAULT_SMILE']; ?>: lang['YES']; ?>   lang['NO']; ?>
lang['DEFAULT_ADD_SIG']; ?>: lang['YES']; ?>   lang['NO']; ?>
lang['DEFAULT_NOTIFY']; ?>: lang['YES']; ?>   lang['NO']; ?>
lang['SHOW_EMAIL']; ?>: lang['YES']; ?>  lang['NO']; ?>
lang['ADMIN_EMAIL']; ?>: lang['YES']; ?>  lang['NO']; ?>
lang['ALLOW_PM']; ?>:
lang['ALLOW_PM_EXPLAIN']; ?>
lang['YES']; ?>  lang['NO']; ?>
lang['HIDE_ONLINE']; ?>: lang['YES']; ?>  lang['NO']; ?>
lang['NOTIFY_METHOD']; ?>:
lang['NOTIFY_METHOD_EXPLAIN']; ?>
lang['NOTIFY_METHOD_EMAIL']; ?>  lang['NOTIFY_METHOD_IM']; ?>  lang['NOTIFY_METHOD_BOTH']; ?>
lang['NOTIFY_ON_PM']; ?>: lang['YES']; ?>  lang['NO']; ?>
lang['POPUP_ON_PM']; ?>: lang['YES']; ?>  lang['NO']; ?>
lang['BOARD_LANGUAGE']; ?>:
lang['BOARD_STYLE']; ?>:
lang['BOARD_TIMEZONE']; ?>:
lang['BOARD_DST']; ?>: lang['YES']; ?>   lang['NO']; ?>
lang['BOARD_DATE_FORMAT']; ?>:
lang['BOARD_DATE_FORMAT_EXPLAIN']; ?>
lang['CURRENT_IMAGE']; ?>:
lang['AVATAR_EXPLAIN'], $config['avatar_max_width'], $config['avatar_max_height'], round($config['avatar_filesize'] / 1024)); ?>



 lang['DELETE_AVATAR']; ?>
lang['UPLOAD_AVATAR_FILE']; ?>:
lang['UPLOAD_AVATAR_URL']; ?>:
lang['UPLOAD_AVATAR_URL_EXPLAIN']; ?>
lang['LINK_REMOTE_AVATAR']; ?>:
lang['LINK_REMOTE_AVATAR_EXPLAIN']; ?>
lang['LINK_REMOTE_SIZE']; ?>:
lang['LINK_REMOTE_SIZE_EXPLAIN']; ?>
px X px
lang['AVATAR_GALLERY']; ?>:
lang['AVATAR_GALLERY']; ?>
lang['AVATAR_CATEGORY']; ?>:   lang['AVATAR_PAGE']; ?>:  
{avatar_row.avatar_column.AVATAR_NAME}
 {L_FONT_SIZE}: {L_CLOSE_TAGS}
  
acl_get('a_user')) { trigger_error($user->lang['No_admin']); } ?>

lang['USER_ADMIN']; ?>

lang['USER_ADMIN_EXPLAIN']; ?>

">
lang['SELECT_USER']; ?>
Lookup existing user:
[ " onclick="window.open('', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740');return false;">lang['FIND_USERNAME']; ?> ]