From cbece78f7b180253af95071ab859c468ed061ff5 Mon Sep 17 00:00:00 2001 From: Graham Eames Date: Sat, 23 Sep 2006 12:27:51 +0000 Subject: [PATCH] A reworking of how we handle inactive users git-svn-id: file:///svn/phpbb/trunk@6394 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/adm/style/acp_inactive.html | 75 +++++++++ phpBB/adm/style/acp_main.html | 25 +-- phpBB/includes/acp/acp_inactive.php | 195 +++++++++++++++++++++++ phpBB/includes/acp/acp_main.php | 133 ++-------------- phpBB/includes/acp/acp_prune.php | 2 +- phpBB/includes/acp/acp_users.php | 4 +- phpBB/includes/acp/info/acp_inactive.php | 37 +++++ phpBB/includes/constants.php | 4 + phpBB/includes/functions_admin.php | 46 ++++++ phpBB/includes/functions_user.php | 8 +- phpBB/includes/ucp/ucp_activate.php | 2 +- phpBB/includes/ucp/ucp_profile.php | 6 +- phpBB/includes/ucp/ucp_register.php | 26 +-- phpBB/install/install_install.php | 6 +- phpBB/language/en/acp/common.php | 35 ++-- 15 files changed, 433 insertions(+), 171 deletions(-) create mode 100755 phpBB/adm/style/acp_inactive.html create mode 100755 phpBB/includes/acp/acp_inactive.php create mode 100755 phpBB/includes/acp/info/acp_inactive.php diff --git a/phpBB/adm/style/acp_inactive.html b/phpBB/adm/style/acp_inactive.html new file mode 100755 index 0000000000..b4e617b864 --- /dev/null +++ b/phpBB/adm/style/acp_inactive.html @@ -0,0 +1,75 @@ + + + + +

{L_INACTIVE_USERS}

+ +

{L_INACTIVE_USERS_EXPLAIN}

+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{L_USERNAME}{L_JOINED}{L_INACTIVE_DATE}{L_INACTIVE_REASON}{L_LAST_VISIT}{L_MARK}
{inactive.USERNAME}{inactive.JOINED}{inactive.INACTIVE_DATE}{inactive.REASON}{inactive.LAST_VISIT}  
{L_NO_INACTIVE_USERS}
+ + +
+ {L_DISPLAY_LOG}:  {S_LIMIT_DAYS} {L_SORT_BY}: {S_SORT_KEY} {S_SORT_DIR} + +
+ +
+

{L_MARK_ALL}{L_UNMARK_ALL}

+ + + +
+ + + + +
+ + \ No newline at end of file diff --git a/phpBB/adm/style/acp_main.html b/phpBB/adm/style/acp_main.html index af1623146e..ce4dde47b0 100644 --- a/phpBB/adm/style/acp_main.html +++ b/phpBB/adm/style/acp_main.html @@ -133,17 +133,18 @@

{L_INACTIVE_USERS}

-

{L_INACTIVE_USERS_EXPLAIN}

+

{L_INACTIVE_USERS_EXPLAIN_INDEX}

-
+
» {L_VIEW_INACTIVE_USERS}
+ + - @@ -151,29 +152,19 @@ - + + + - - +
{L_USERNAME} {L_JOINED}{L_INACTIVE_DATE}{L_INACTIVE_REASON} {L_LAST_VISIT}{L_MARK}
{inactive.USERNAME}{inactive.DATE}{inactive.JOINED}{inactive.INACTIVE_DATE}{inactive.REASON} {inactive.LAST_VISIT}  
{L_NO_INACTIVE_USERS}{L_NO_INACTIVE_USERS}
- -
-

{L_MARK_ALL}{L_UNMARK_ALL}

- - - -
- - -
- diff --git a/phpBB/includes/acp/acp_inactive.php b/phpBB/includes/acp/acp_inactive.php new file mode 100755 index 0000000000..ebadb8446d --- /dev/null +++ b/phpBB/includes/acp/acp_inactive.php @@ -0,0 +1,195 @@ +p_master = &$p_master; + } + + function main($id, $mode) + { + global $config, $db, $user, $auth, $template; + global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix; + + $action = request_var('action', ''); + $mark = (isset($_REQUEST['mark'])) ? request_var('mark', array(0)) : array(); + $start = request_var('start', 0); + + // Sort keys + $sort_days = request_var('st', 0); + $sort_key = request_var('sk', 'i'); + $sort_dir = request_var('sd', 'd'); + + if (sizeof($mark)) + { + switch ($action) + { + case 'activate': + case 'delete': + $sql = 'SELECT username + FROM ' . USERS_TABLE . ' + WHERE ' . $db->sql_in_set('user_id', $mark); + $result = $db->sql_query($sql); + + $user_affected = array(); + while ($row = $db->sql_fetchrow($result)) + { + $user_affected[] = $row['username']; + } + $db->sql_freeresult($result); + + if ($action == 'activate') + { + include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx); + + foreach ($mark as $user_id) + { + user_active_flip($user_id, USER_INACTIVE); + } + + set_config('num_users', $config['num_users'] + sizeof($mark), true); + + // Update latest username + update_last_username(); + } + else if ($action == 'delete') + { + if (!$auth->acl_get('a_userdel')) + { + trigger_error($user->lang['NO_ADMIN'], E_USER_WARNING); + } + + $sql = 'DELETE FROM ' . USER_GROUP_TABLE . ' WHERE ' . $db->sql_in_set('user_id', $mark); + $db->sql_query($sql); + $sql = 'DELETE FROM ' . USERS_TABLE . ' WHERE ' . $db->sql_in_set('user_id', $mark); + $db->sql_query($sql); + + add_log('admin', 'LOG_INACTIVE_' . strtoupper($action), implode(', ', $user_affected)); + } + + break; + + case 'remind': + if (empty($config['email_enable'])) + { + trigger_error($user->lang['EMAIL_DISABLED'], E_USER_WARNING); + } + + $sql = 'SELECT user_id, username, user_email, user_lang, user_jabber, user_notify_type, user_regdate, user_actkey + FROM ' . USERS_TABLE . ' + WHERE ' . $db->sql_in_set('user_id', $mark); + $result = $db->sql_query($sql); + + if ($row = $db->sql_fetchrow($result)) + { + // Send the messages + include_once($phpbb_root_path . 'includes/functions_messenger.'.$phpEx); + + $messenger = new messenger(); + + $board_url = generate_board_url() . "/ucp.$phpEx?mode=activate"; + $sig = str_replace('
', "\n", "-- \n" . $config['board_email_sig']); + + $usernames = array(); + do + { + $messenger->template('user_remind_inactive', $row['user_lang']); + + $messenger->replyto($config['board_email']); + $messenger->to($row['user_email'], $row['username']); + $messenger->im($row['user_jabber'], $row['username']); + + $messenger->assign_vars(array( + 'EMAIL_SIG' => $sig, + 'USERNAME' => html_entity_decode($row['username']), + 'SITENAME' => $config['sitename'], + 'REGISTER_DATE' => $user->format_date($row['user_regdate']), + + 'U_ACTIVATE' => "$board_url&mode=activate&u=" . $row['user_id'] . '&k=' . $row['user_actkey']) + ); + + $messenger->send($row['user_notify_type']); + + $usernames[] = $row['username']; + } + while ($row = $db->sql_fetchrow($result)); + + $messenger->save_queue(); + + add_log('admin', 'LOG_INACTIVE_REMIND', implode(', ', $usernames)); + unset($usernames); + } + $db->sql_freeresult($result); + + break; + } + } + + // Sorting + $limit_days = array(0 => $user->lang['ALL_ENTRIES'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']); + $sort_by_text = array('i' => $user->lang['SORT_INACTIVE'], 'j' => $user->lang['SORT_REG_DATE'], 'l' => $user->lang['SORT_LAST_VISIT'], 'r' => $user->lang['SORT_REASON'], 'u' => $user->lang['SORT_USERNAME']); + $sort_by_sql = array('i' => 'user_inactive_time', 'j' => 'user_regdate', 'l' => 'user_lastvisit', 'r' => 'user_inactive_reason', 'u' => 'username'); + + $s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = ''; + gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param); + + // Define where and sort sql for use in displaying logs + $sql_where = ($sort_days) ? (time() - ($sort_days * 86400)) : 0; + $sql_sort = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC'); + + $inactive = array(); + $inactive_count = 0; + + view_inactive_users($inactive, $inactive_count, $config['topics_per_page'], $start, $sql_where, $sql_sort); + + foreach ($inactive as $row) + { + $template->assign_block_vars('inactive', array( + 'INACTIVE_DATE' => $user->format_date($row['user_inactive_time']), + 'JOINED' => $user->format_date($row['user_regdate']), + 'LAST_VISIT' => (!$row['user_lastvisit']) ? ' - ' : $user->format_date($row['user_lastvisit']), + 'REASON' => $row['inactive_reason'], + 'USER_ID' => $row['user_id'], + 'USERNAME' => $row['username'], + 'U_USER_ADMIN' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=users&mode=overview&u={$row['user_id']}")) + ); + } + + $option_ary = array('activate' => 'ACTIVATE', 'delete' => 'DELETE'); + if ($config['email_enable']) + { + $option_ary += array('remind' => 'REMIND'); + } + + $template->assign_vars(array( + 'S_INACTIVE_USERS' => true, + 'S_INACTIVE_OPTIONS' => build_select($option_ary), + + 'S_LIMIT_DAYS' => $s_limit_days, + 'S_SORT_KEY' => $s_sort_key, + 'S_SORT_DIR' => $s_sort_dir, + 'S_ON_PAGE' => on_page($inactive_count, $config['topics_per_page'], $start), + 'PAGINATION' => generate_pagination($this->u_action . "&$u_sort_param", $inactive_count, $config['topics_per_page'], $start, true), + )); + + $this->tpl_name = 'acp_inactive'; + $this->page_title = 'ACP_INACTIVE_USERS'; + } +} + +?> \ No newline at end of file diff --git a/phpBB/includes/acp/acp_main.php b/phpBB/includes/acp/acp_main.php index b0c12c7928..cefb80badc 100644 --- a/phpBB/includes/acp/acp_main.php +++ b/phpBB/includes/acp/acp_main.php @@ -50,123 +50,6 @@ class acp_main } $action = request_var('action', ''); - $mark = (isset($_REQUEST['mark'])) ? request_var('mark', array(0)) : array(); - - if (sizeof($mark)) - { - switch ($action) - { - case 'activate': - case 'delete': - - if (!$auth->acl_get('a_user')) - { - trigger_error($user->lang['NO_ADMIN'], E_USER_WARNING); - } - - $sql = 'SELECT username - FROM ' . USERS_TABLE . ' - WHERE ' . $db->sql_in_set('user_id', $mark); - $result = $db->sql_query($sql); - - $user_affected = array(); - while ($row = $db->sql_fetchrow($result)) - { - $user_affected[] = $row['username']; - } - $db->sql_freeresult($result); - - if ($action == 'activate') - { - include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx); - - foreach ($mark as $user_id) - { - user_active_flip($user_id, USER_INACTIVE); - } - - set_config('num_users', $config['num_users'] + sizeof($mark), true); - - // Update latest username - update_last_username(); - } - else if ($action == 'delete') - { - if (!$auth->acl_get('a_userdel')) - { - trigger_error($user->lang['NO_ADMIN'], E_USER_WARNING); - } - - $sql = 'DELETE FROM ' . USER_GROUP_TABLE . ' WHERE ' . $db->sql_in_set('user_id', $mark); - $db->sql_query($sql); - $sql = 'DELETE FROM ' . USERS_TABLE . ' WHERE ' . $db->sql_in_set('user_id', $mark); - $db->sql_query($sql); - - add_log('admin', 'LOG_INDEX_' . strtoupper($action), implode(', ', $user_affected)); - } - - break; - - case 'remind': - if (!$auth->acl_get('a_user')) - { - trigger_error($user->lang['NO_ADMIN'], E_USER_WARNING); - } - - if (empty($config['email_enable'])) - { - trigger_error($user->lang['EMAIL_DISABLED'], E_USER_WARNING); - } - - $sql = 'SELECT user_id, username, user_email, user_lang, user_jabber, user_notify_type, user_regdate, user_actkey - FROM ' . USERS_TABLE . ' - WHERE ' . $db->sql_in_set('user_id', $mark); - $result = $db->sql_query($sql); - - if ($row = $db->sql_fetchrow($result)) - { - // Send the messages - include_once($phpbb_root_path . 'includes/functions_messenger.'.$phpEx); - - $messenger = new messenger(); - - $board_url = generate_board_url() . "/ucp.$phpEx?mode=activate"; - $sig = str_replace('
', "\n", "-- \n" . $config['board_email_sig']); - - $usernames = array(); - do - { - $messenger->template('user_remind_inactive', $row['user_lang']); - - $messenger->replyto($config['board_email']); - $messenger->to($row['user_email'], $row['username']); - $messenger->im($row['user_jabber'], $row['username']); - - $messenger->assign_vars(array( - 'EMAIL_SIG' => $sig, - 'USERNAME' => html_entity_decode($row['username']), - 'SITENAME' => $config['sitename'], - 'REGISTER_DATE' => $user->format_date($row['user_regdate']), - - 'U_ACTIVATE' => "$board_url&mode=activate&u=" . $row['user_id'] . '&k=' . $row['user_actkey']) - ); - - $messenger->send($row['user_notify_type']); - - $usernames[] = $row['username']; - } - while ($row = $db->sql_fetchrow($result)); - - $messenger->save_queue(); - - add_log('admin', 'LOG_INDEX_REMIND', implode(', ', $usernames)); - unset($usernames); - } - $db->sql_freeresult($result); - - break; - } - } switch ($action) { @@ -443,6 +326,7 @@ class acp_main 'U_ACTION' => append_sid("{$phpbb_admin_path}index.$phpEx"), 'U_ADMIN_LOG' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=logs&mode=admin'), + 'U_INACTIVE_USERS' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=inactive&mode=list'), 'S_ACTION_OPTIONS' => ($auth->acl_get('a_board')) ? $s_action_options : '', ) @@ -468,17 +352,18 @@ class acp_main if ($auth->acl_get('a_user')) { - $sql = 'SELECT user_id, username, user_regdate, user_lastvisit - FROM ' . USERS_TABLE . ' - WHERE user_type = ' . USER_INACTIVE . ' - ORDER BY user_regdate ASC'; - $result = $db->sql_query($sql); + $inactive = array(); + $inactive_count = 0; - while ($row = $db->sql_fetchrow($result)) + view_inactive_users($inactive, $inactive_count, 10); + + foreach ($inactive as $row) { $template->assign_block_vars('inactive', array( - 'DATE' => $user->format_date($row['user_regdate']), + 'INACTIVE_DATE' => $user->format_date($row['user_inactive_time']), + 'JOINED' => $user->format_date($row['user_regdate']), 'LAST_VISIT' => (!$row['user_lastvisit']) ? ' - ' : $user->format_date($row['user_lastvisit']), + 'REASON' => $row['inactive_reason'], 'USER_ID' => $row['user_id'], 'USERNAME' => $row['username'], 'U_USER_ADMIN' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=users&mode=overview&u={$row['user_id']}")) diff --git a/phpBB/includes/acp/acp_prune.php b/phpBB/includes/acp/acp_prune.php index 0214a252d0..7c789e4773 100644 --- a/phpBB/includes/acp/acp_prune.php +++ b/phpBB/includes/acp/acp_prune.php @@ -269,7 +269,7 @@ class acp_prune { foreach ($user_ids as $user_id) { - user_active_flip($user_id, USER_NORMAL, false, false, true); + user_active_flip($user_id, USER_NORMAL, false, false, INACTIVE_MANUAL, true); } $l_log = 'LOG_PRUNE_USER_DEAC'; diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index cc5c1ffa78..87c9fc4edc 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -269,7 +269,7 @@ class acp_users if ($user_row['user_type'] != USER_INACTIVE) { - user_active_flip($user_id, $user_row['user_type'], $user_actkey, $user_row['username']); + user_active_flip($user_id, $user_row['user_type'], $user_actkey, $user_row['username'], INACTIVE_MANUAL); } $messenger = new messenger(false); @@ -311,7 +311,7 @@ class acp_users trigger_error($user->lang['CANNOT_DEACTIVATE_YOURSELF'] . adm_back_link($this->u_action . '&u=' . $user_id), E_USER_WARNING); } - user_active_flip($user_id, $user_row['user_type'], false, $user_row['username']); + user_active_flip($user_id, $user_row['user_type'], false, $user_row['username'], INACTIVE_MANUAL); $message = ($user_row['user_type'] == USER_INACTIVE) ? 'USER_ADMIN_ACTIVATED' : 'USER_ADMIN_DEACTIVED'; $log = ($user_row['user_type'] == USER_INACTIVE) ? 'LOG_USER_ACTIVE' : 'LOG_USER_INACTIVE'; diff --git a/phpBB/includes/acp/info/acp_inactive.php b/phpBB/includes/acp/info/acp_inactive.php new file mode 100755 index 0000000000..bee9d977d4 --- /dev/null +++ b/phpBB/includes/acp/info/acp_inactive.php @@ -0,0 +1,37 @@ + 'acp_inactive', + 'title' => 'ACP_INACTIVE_USERS', + 'version' => '1.0.0', + 'modes' => array( + 'list' => array('title' => 'ACP_INACTIVE_USERS', 'auth' => 'acl_a_user', 'cat' => array('ACP_CAT_USERS')), + ), + ); + } + + function install() + { + } + + function uninstall() + { + } +} + +?> \ No newline at end of file diff --git a/phpBB/includes/constants.php b/phpBB/includes/constants.php index f20729e6c6..42d3c41463 100644 --- a/phpBB/includes/constants.php +++ b/phpBB/includes/constants.php @@ -30,6 +30,10 @@ define('USER_FOUNDER', 3); //define('USER_BOT', 2); //define('USER_GUEST', 4); +define('INACTIVE_REGISTER', 1); +define('INACTIVE_PROFILE', 2); +define('INACTIVE_MANUAL', 3); + // ACL define('ACL_NEVER', 0); define('ACL_YES', 1); diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index 2f2e333c78..1d5ec9ee68 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -2330,6 +2330,52 @@ function update_foes() unset($perms); } +/** +* Lists inactive users +*/ +function view_inactive_users(&$users, &$user_count, $limit = 0, $offset = 0, $limit_days = 0, $sort_by = 'user_inactive_time DESC') +{ + global $db, $user; + + $sql = 'SELECT user_id, username, user_regdate, user_lastvisit, user_inactive_time, user_inactive_reason + FROM ' . USERS_TABLE . ' + WHERE user_type = ' . USER_INACTIVE . + (($limit_days) ? "AND user_inactive_time >= $limit_days" : '') . " + ORDER BY $sort_by"; + $result = $db->sql_query_limit($sql, $limit, $offset); + + while ($row = $db->sql_fetchrow($result)) + { + $row['inactive_reason'] = $user->lang['INACTIVE_REASON_UNKNOWN']; + switch ($row['user_inactive_reason']) + { + case INACTIVE_REGISTER: + $row['inactive_reason'] = $user->lang['INACTIVE_REASON_REGISTER']; + break; + + case INACTIVE_PROFILE: + $row['inactive_reason'] = $user->lang['INACTIVE_REASON_PROFILE']; + break; + + case INACTIVE_MANUAL: + $row['inactive_reason'] = $user->lang['INACTIVE_REASON_MANUAL']; + break; + } + + $users[] = $row; + } + + $sql = 'SELECT count(user_id) AS user_count + FROM ' . USERS_TABLE . ' + WHERE user_type = ' . USER_INACTIVE . + (($limit_days) ? "AND user_inactive_time >= $limit_days" : ''); + $result = $db->sql_query($sql); + $user_count = (int) $db->sql_fetchfield('user_count'); + $db->sql_freeresult($result); + + return; +} + /** * Lists warned users */ diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 07701f27ac..6b53736e88 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -158,6 +158,8 @@ function user_add($user_row, $cp_data = false) 'user_regdate' => time(), 'user_passchg' => time(), + 'user_inactive_reason' => 0, + 'user_inactive_time' => 0, 'user_lastmark' => time(), 'user_lastvisit' => 0, 'user_lastpost_time' => 0, @@ -423,7 +425,7 @@ function user_delete($mode, $user_id, $post_username = false) * Flips user_type from active to inactive and vice versa, handles * group membership updates */ -function user_active_flip($user_id, $user_type, $user_actkey = false, $username = false, $no_log = false) +function user_active_flip($user_id, $user_type, $user_actkey = false, $username = false, $reason = 0, $no_log = false) { global $db, $user, $auth; @@ -467,7 +469,9 @@ function user_active_flip($user_id, $user_type, $user_actkey = false, $username $db->sql_query($sql); $sql_ary = array( - 'user_type' => ($user_type == USER_NORMAL) ? USER_INACTIVE : USER_NORMAL + 'user_type' => ($user_type == USER_NORMAL) ? USER_INACTIVE : USER_NORMAL, + 'user_inactive_time' => ($user_type == USER_NORMAL) ? time() : 0, + 'user_inactive_reason' => ($user_type == USER_NORMAL) ? $reason : 0, ); if ($user_actkey !== false) diff --git a/phpBB/includes/ucp/ucp_activate.php b/phpBB/includes/ucp/ucp_activate.php index 5f7ba150f4..b3c857b5d8 100644 --- a/phpBB/includes/ucp/ucp_activate.php +++ b/phpBB/includes/ucp/ucp_activate.php @@ -70,7 +70,7 @@ class ucp_activate include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx); // Now we need to demote the user from the inactive group and add him to the registered group - user_active_flip($user_row['user_id'], $user_row['user_type'], '', $user_row['username'], true); + user_active_flip($user_row['user_id'], $user_row['user_type'], '', $user_row['username'], 0, true); // Update last username update_last_username(); diff --git a/phpBB/includes/ucp/ucp_profile.php b/phpBB/includes/ucp/ucp_profile.php index e070ba8453..e9ef944986 100644 --- a/phpBB/includes/ucp/ucp_profile.php +++ b/phpBB/includes/ucp/ucp_profile.php @@ -180,8 +180,10 @@ class ucp_profile $messenger->save_queue(); $sql_ary += array( - 'user_type' => USER_INACTIVE, - 'user_actkey' => $user_actkey + 'user_type' => USER_INACTIVE, + 'user_actkey' => $user_actkey, + 'user_inactive_reason' => INACTIVE_PROFILE, + 'user_inactive_time' => time(), ); } diff --git a/phpBB/includes/ucp/ucp_register.php b/phpBB/includes/ucp/ucp_register.php index 2638ea2ffe..0e0849982e 100644 --- a/phpBB/includes/ucp/ucp_register.php +++ b/phpBB/includes/ucp/ucp_register.php @@ -239,24 +239,30 @@ class ucp_register $key_len = ($key_len < 6) ? 6 : $key_len; $user_actkey = substr($user_actkey, 0, $key_len); $user_type = USER_INACTIVE; + $user_inactive_reason = INACTIVE_REGISTER; + $user_inactive_time = time(); } else { $user_type = USER_NORMAL; $user_actkey = ''; + $user_inactive_reason = 0; + $user_inactive_time = 0; } $user_row = array( - 'username' => $username, - 'user_password' => md5($new_password), - 'user_email' => $email, - 'group_id' => (int) $group_id, - 'user_timezone' => (float) $tz, - 'user_lang' => $lang, - 'user_type' => $user_type, - 'user_actkey' => $user_actkey, - 'user_ip' => $user->ip, - 'user_regdate' => time(), + 'username' => $username, + 'user_password' => md5($new_password), + 'user_email' => $email, + 'group_id' => (int) $group_id, + 'user_timezone' => (float) $tz, + 'user_lang' => $lang, + 'user_type' => $user_type, + 'user_actkey' => $user_actkey, + 'user_ip' => $user->ip, + 'user_regdate' => time(), + 'user_inactive_reason' => $user_inactive_reason, + 'user_inactive_time' => $user_inactive_time, ); // Register user... diff --git a/phpBB/install/install_install.php b/phpBB/install/install_install.php index aec12abb5a..74b8b52fc6 100755 --- a/phpBB/install/install_install.php +++ b/phpBB/install/install_install.php @@ -1357,7 +1357,7 @@ class install_install extends module $_module->move_module_by($row, 'move_up', 4); - // Move manage users screen module 4 up... + // Move manage users screen module 5 up... $sql = 'SELECT * FROM ' . MODULES_TABLE . " WHERE module_basename = 'users' @@ -1367,7 +1367,7 @@ class install_install extends module $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); - $_module->move_module_by($row, 'move_up', 4); + $_module->move_module_by($row, 'move_up', 5); } // And now for the special ones @@ -1667,13 +1667,13 @@ class install_install extends module break; - case 'oracle': case 'sqlite': $prefix_length = 200; break; case 'firebird': + case 'oracle': $prefix_length = 6; break; diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 269cea8254..979deb5171 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -98,6 +98,7 @@ $lang = array_merge($lang, array( 'ACP_ICONS' => 'Topic Icons', 'ACP_ICONS_SMILIES' => 'Topic Icons/Smilies', 'ACP_IMAGESETS' => 'Imagesets', + 'ACP_INACTIVE_USERS' => 'Inactive users', 'ACP_INDEX' => 'Admin index', 'ACP_JABBER_SETTINGS' => 'Jabber Settings', @@ -303,10 +304,6 @@ $lang = array_merge($lang, array( 'GZIP_COMPRESSION' => 'Gzip compression', - 'INACTIVE_USERS' => 'Inactive Users', - 'INACTIVE_USERS_EXPLAIN' => 'This is a list of users who have registered but whos accounts are inactive. You can activate, delete or remind (by sending an email) these users if you wish.', - - 'NO_INACTIVE_USERS' => 'No inactive users', 'NOT_AVAILABLE' => 'Not available', 'NUMBER_FILES' => 'Number of attachments', 'NUMBER_POSTS' => 'Number of posts', @@ -329,12 +326,32 @@ $lang = array_merge($lang, array( 'UPLOAD_DIR_SIZE' => 'Size of posted attachments', 'USERS_PER_DAY' => 'Users per day', - 'VALUE' => 'Value', - 'VIEW_ADMIN_LOG' => 'View administrator log', + 'VALUE' => 'Value', + 'VIEW_ADMIN_LOG' => 'View administrator log', + 'VIEW_INACTIVE_USERS' => 'View inactive users', 'WELCOME_PHPBB' => 'Welcome to phpBB', )); +// Inactive Users +$lang = array_merge($lang, array( + 'INACTIVE_DATE' => 'Inactive date', + 'INACTIVE_REASON' => 'Reason', + 'INACTIVE_REASON_MANUAL' => 'Account deactivated by administrator', + 'INACTIVE_REASON_PROFILE' => 'Profile details changed', + 'INACTIVE_REASON_REGISTER' => 'Newly registered account', + 'INACTIVE_REASON_UNKNOWN' => 'Unknown', + 'INACTIVE_USERS' => 'Inactive Users', + 'INACTIVE_USERS_EXPLAIN' => 'This is a list of users who have registered but whos accounts are inactive. You can activate, delete or remind (by sending an email) these users if you wish.', + 'INACTIVE_USERS_EXPLAIN_INDEX' => 'This is a list of the last 10 registered users who have inactive accounts. A full list is available from the appropriate menu item or by following the link below from where you can activate, delete or remind (by sending an email) these users if you wish.', + + 'NO_INACTIVE_USERS' => 'No inactive users', + + 'SORT_INACTIVE' => 'Inactive date', + 'SORT_LAST_VISIT' => 'Last visit', + 'SORT_REASON' => 'Reason', + 'SORT_REG_DATE' => 'Registration date', +)); // Log Entries $lang = array_merge($lang, array( 'LOG_ACL_ADD_USER_GLOBAL_U_' => 'Added or edited users user permissions
» %s', @@ -478,9 +495,9 @@ $lang = array_merge($lang, array( 'LOG_IMAGESET_EXPORT' => 'Exported imageset
» %s', 'LOG_IMAGESET_REFRESHED' => 'Refreshed imageset
» %s', - 'LOG_INDEX_ACTIVATE' => 'Activated inactive users
» %s', - 'LOG_INDEX_DELETE' => 'Deleted inactive users
» %s', - 'LOG_INDEX_REMIND' => 'Sent reminder emails to inactive users
» %s', + 'LOG_INACTIVE_ACTIVATE' => 'Activated inactive users
» %s', + 'LOG_INACTIVE_DELETE' => 'Deleted inactive users
» %s', + 'LOG_INACTIVE_REMIND' => 'Sent reminder emails to inactive users
» %s', 'LOG_INSTALL_CONVERTED' => 'Converted from %1$s to phpBB %2$s', 'LOG_INSTALL_INSTALLED' => 'Installed phpBB %s',