From 8ad641bd179b1568393ed6dcb077ca4c7e5d2a66 Mon Sep 17 00:00:00 2001 From: "Paul S. Owen" Date: Wed, 5 Nov 2003 18:29:02 +0000 Subject: [PATCH] Very preliminary user admin update git-svn-id: file:///svn/phpbb/trunk@4642 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/adm/admin_users.php | 895 ++++++++++++++++++------- phpBB/install/schemas/mysql_schema.sql | 10 + 2 files changed, 666 insertions(+), 239 deletions(-) diff --git a/phpBB/adm/admin_users.php b/phpBB/adm/admin_users.php index 759f3efeeb..1237c262e3 100644 --- a/phpBB/adm/admin_users.php +++ b/phpBB/adm/admin_users.php @@ -1,23 +1,15 @@ lang['WHOIS']); + + if ($ip && $domain = gethostbyaddr($ip)) + { +?> + + + + + + + + +
IP whois for
\2\3', $ipwhois); + echo '
' . trim($ipwhois) . '
'; + } + +?>
+ +
+ +lang['NO_USER']); + if (!$auth->acl_get('a_userdel')) + { + trigger_error($user->lang['NO_ADMIN']); + } + + $db->sql_transaction(); + + if ($deletetype == 'retain') + { + $sql = 'UPDATE ' . POSTS_TABLE . ' + SET poster_id = ' . ANONYMOUS . " + WHERE poster_id = $user_id"; + // $db->sql_query($sql); + + $sql = 'UPDATE ' . TOPICS_TABLE . ' + SET topic_poster = ' . ANONYMOUS . " + WHERE topic_poster = $user_id"; + // $db->sql_query($sql); + } + else + { + } + + $table_ary = array(USERS_TABLE, USER_GROUP_TABLE, TOPICS_WATCH_TABLE, FORUMS_WATCH_TABLE, ACL_USERS_TABLE); + + foreach ($table_ary as $table) + { + $sql = "DELETE FROM $table + WHERE user_id = $user_id"; +// $db->sql_query($sql); + } + + $db->sql_transaction('commit'); + + trigger_error($user->lang['USER_DELETED']); } } else { - if(!$userdata = get_userdata($_POST['username'])) + $session_time = 0; + $sql_where = ($username) ? "username = '" . $db->sql_escape($username) . "'" : "user_id = $user_id"; + $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; + } } - // Update entry in DB - if ($_POST['deleteuser'] && !$userdata['user_founder']) + + // Generate overall "header" for user admin + $view_options = ''; + foreach (array('overview' => 'MAIN', 'feedback' => 'FEEDBACK', 'profile' => 'PROFILE', 'prefs' => 'PREFS', 'avatar' => 'AVATAR', 'sig' => 'SIG', 'groups' => 'GROUP', 'perm' => 'PERM') as $value => $lang) { - if (!$auth->acl_get('a_userdel')) - { - trigger_error($user->lang['NO_ADMIN']); - } - - $db->sql_transaction(); - - $sql = 'UPDATE ' . POSTS_TABLE . ' - SET poster_id = ' . ANONYMOUS . " - WHERE poster_id = $user_id"; - $db->sql_query($sql); - - $sql = 'UPDATE ' . TOPICS_TABLE . ' - SET topic_poster = ' . ANONYMOUS . " - WHERE topic_poster = $user_id"; - $db->sql_query($sql); - - $table_ary = array(USERS_TABLE, USER_GROUP_TABLE, TOPICS_WATCH_TABLE, FORUMS_WATCH_TABLE, ACL_USERS_TABLE); - - foreach ($table_ary as $table) - { - $sql = "DELETE FROM $table - WHERE user_id = $user_id"; - $db->sql_query($sql); - } - - $db->sql_transaction('commit'); - - trigger_error($user->lang['User_deleted']); + $selected = ($action == $value) ? ' selected="selected"' : ''; + $view_options .= ''; } + $pagination = ''; - // Output relevant page + + // Output page adm_page_header($user->lang['MANAGE']); ?> -
+

lang['USER_ADMIN']; ?>

+ +

lang['USER_ADMIN_EXPLAIN']; ?>

+ +">
- + + + + + + + + + +
Main | Profile | Preferences | Avatar | PermissionsSelect view:
+ + + ' . 'Select option' . ''; + foreach (array('banuser' => 'BAN_USER', 'banemail' => 'BAN_EMAIL', 'banip' => 'BAN_IP', 'force' => 'FORCE', 'active' => (($user_type == USER_INACTIVE) ? 'ACTIVATE' : 'DEACTIVATE'), 'moveposts' => 'MOVE_POSTS') 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"' : ''); ?> - - - - - - $auth_ary) - { - -?> - - - - + + + +
lang['USER_ADMIN_' . $action]; ?>
- - + + - - + + - - + + + + + + + + + + + + + + - + + - + + - - + - - + + + + + + +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); + +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +'; + } + else + { + $avatar_img = ''; + } + +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -
Username:
Click profile to edit
[ Ban ]Username:
Registered: format_date($userdata['user_regdate']); ?>Founder:
Founders can never be banned, deleted or altered by non-founder members
/>lang['YES']; ?>  />lang['NO']; ?>
Registered from IP: [ Lookup | Ban ] Email:
Confirm Email:
Only required if changing the email address
New password:
Confirm password:
Only required if changing the email address
IP whois for Quick tools:
' . trim($ipwhois) . '
'; - } -?>
Delete user:
Please note that deleting a user is final, it cannot be recovered
Total/Average posts by this user: Background
+ + + + + + + + + + + + + + + + + + + + +
Registered: format_date($user_regdate); ?>
Registration IP: $user_ip" : 'Unknown'; + +?>
Last active: format_date($user_lastvisit); ?>
Karma level: lang['KARMA_LEVEL'] . ': ' . $user->lang['KARMA'][$user_karma] . '" title="' . $user->lang['KARMA_LEVEL'] . ': ' . $user->lang['KARMA'][$user_karma] . '" /> [ ' . $user->lang['KARMA'][$user_karma] . ' ]' : ''; + +?>
Warnings:
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($userdata); + case 'groups': + break; - foreach ($acl_options['global'] as $option_name => $option_id) - { - $type = substr($option_name, 0, strpos('_', $option_name) +1); - $global[$type][$option_name] = $userauth->acl_get($option_name); - } - - $sql = "SELECT forum_id, forum_name - FROM " . FORUMS_TABLE . " - ORDER BY left_id"; - $result = $db->sql_query($sql); - - $permissions = array(); - while($row = $db->sql_fetchrow($result)) - { - $forum_data[$row['forum_id']] = $row['forum_name']; - - foreach ($acl_options['local'] as $option_name => $option_id) - { - $local[$row['forum_id']][$option_name] = $userauth->acl_get($option_name, $row['forum_id']); - } - } - -?> -
- - - - - - - - - $auth_ary) - { - foreach ($auth_ary as $option => $allow) - { - if ($option != $type .'_') - { - $row_class = ($row_class == 'row1') ? 'row2' : 'row1'; - - $l_can_cell = (!empty($user->lang['acl_' . $option])) ? $user->lang['acl_' . $option] : ucfirst(preg_replace('#.*?_#', '', $option)); - - $allow_type = ($allow == ACL_ALLOW) ? ' checked="checked"' : ''; - $deny_type = ($allow == ACL_DENY) ? ' checked="checked"' : ''; -?> - - - - - - -
Select permission set:  
 lang['Option']; ?>  lang['Allow']; ?>  lang['Deny']; ?> 
/> />
- $allow) - { - echo ''; - } - -?> -
' . $user->lang['acl_' . $option] . ' => ' . (($allow) ? 'Allowed' : 'Denied') . '
  
+ +acl_get('a_user')) trigger_error($user->lang['No_admin']); } -adm_page_header($user->lang['Manage']); +adm_page_header($user->lang['MANAGE']); ?> -

lang['User_admin']; ?>

+

lang['USER_ADMIN']; ?>

-

lang['User_admin_explain']; ?>

+

lang['USER_ADMIN_EXPLAIN']; ?>

-
+">
- + + + + + + - +
lang['Select_a_User']; ?>lang['SELECT_USER']; ?>
Lookup existing user:
[ " onclick="window.open('', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740');return false;">lang['FIND_USERNAME']; ?> ]
', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740');return false;" />
'whois.ripe.net', - '#whois\.apnic\.net#is' => 'whois.apnic.net', - '#nic\.ad\.jp#is' => 'whois.nic.ad.jp', - '#whois\.registro\.br#is' => 'whois.registro.br' - ); - - if (($fsk = fsockopen('whois.arin.net', 43))) - { - @fputs($fsk, "$ip\n"); - while (!feof($fsk)) - { - $ipwhois .= fgets($fsk, 1024); - } - fclose($fsk); - } - - foreach (array_keys($match) as $server) - { - if (preg_match($server, $ipwhois)) - { - $ipwhois = ''; - if (($fsk = fsockopen($match[$server], 43))) - { - @fputs($fsk, "$ip\n"); - while (!feof($fsk)) - { - $ipwhois .= fgets($fsk, 1024); - } - fclose($fsk); - } - break; - } - } - - return $ipwhois; -} -// FUNCTIONS -// --------- - ?> \ No newline at end of file diff --git a/phpBB/install/schemas/mysql_schema.sql b/phpBB/install/schemas/mysql_schema.sql index 77b50d3b75..288e2ab5ab 100644 --- a/phpBB/install/schemas/mysql_schema.sql +++ b/phpBB/install/schemas/mysql_schema.sql @@ -757,6 +757,16 @@ CREATE TABLE phpbb_users ( KEY user_birthday (user_birthday(6)) ); +# Table: 'phpbb_users_notes' +CREATE TABLE phpbb_users_notes ( + user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, + reporter_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, + report_date int(11) DEFAULT '0' NOT NULL, + report_log varchar(255) DEFAULT '' NOT NULL, + report_text text DEFAULT '' NOT NULL, + KEY user_id (user_id,reporter_id) +); + # Table: 'phpbb_words' CREATE TABLE phpbb_words ( word_id mediumint(8) UNSIGNED NOT NULL auto_increment,