Update code_sniffer build.xml file to be executable on our system
[phpbb.git] / phpBB / modules / acp / acp_inactive.php
blobd93b2146a6900646d2f858ffdf2d914e82effaa0
1 <?php
2 /**
4 * @package acp
5 * @version $Id$
6 * @copyright (c) 2006 phpBB Group
7 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
9 */
11 /**
12 * @ignore
14 if (!defined('IN_PHPBB'))
16 exit;
19 /**
20 * @package acp
22 class acp_inactive
24 var $u_action;
25 var $p_master;
27 function __construct(&$p_master)
29 $this->p_master = &$p_master;
32 function main($id, $mode)
34 include(PHPBB_ROOT_PATH . 'includes/functions_user.' . PHP_EXT);
36 phpbb::$user->add_lang('memberlist');
38 $action = request_var('action', '');
39 $mark = request_var('mark', array(0));
40 $start = request_var('start', 0);
41 $submit = phpbb_request::is_set_post('submit');
43 // Sort keys
44 $sort_days = request_var('st', 0);
45 $sort_key = request_var('sk', 'i');
46 $sort_dir = request_var('sd', 'd');
48 $form_key = 'acp_inactive';
49 add_form_key($form_key);
51 if ($submit && sizeof($mark))
53 if ($action !== 'delete' && !check_form_key($form_key))
55 trigger_error(phpbb::$user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
58 switch ($action)
60 case 'activate':
61 case 'delete':
63 $sql = 'SELECT user_id, username
64 FROM ' . USERS_TABLE . '
65 WHERE ' . phpbb::$db->sql_in_set('user_id', $mark);
66 $result = phpbb::$db->sql_query($sql);
68 $user_affected = array();
69 while ($row = phpbb::$db->sql_fetchrow($result))
71 $user_affected[$row['user_id']] = $row['username'];
73 phpbb::$db->sql_freeresult($result);
75 if ($action == 'activate')
77 if (phpbb::$config['require_activation'] == USER_ACTIVATION_ADMIN)
79 // Get those 'being activated'...
80 $sql = 'SELECT user_id, username, user_email, user_lang
81 FROM ' . USERS_TABLE . '
82 WHERE ' . phpbb::$db->sql_in_set('user_id', $mark) . '
83 AND user_type = ' . phpbb::USER_INACTIVE;
84 $result = phpbb::$db->sql_query($sql);
86 $inactive_users = array();
87 while ($row = phpbb::$db->sql_fetchrow($result))
89 $inactive_users[] = $row;
91 phpbb::$db->sql_freeresult($result);
94 user_active_flip('activate', $mark);
96 if (phpbb::$config['require_activation'] == USER_ACTIVATION_ADMIN && !empty($inactive_users))
98 include_once(PHPBB_ROOT_PATH . 'includes/functions_messenger.' . PHP_EXT);
100 $messenger = new messenger();
102 foreach ($inactive_users as $row)
104 $messenger->template('admin_welcome_activated', $row['user_lang']);
106 $messenger->to($row['user_email'], $row['username']);
108 $messenger->headers('X-AntiAbuse: Board servername - ' . phpbb::$config['server_name']);
109 $messenger->headers('X-AntiAbuse: User_id - ' . phpbb::$user->data['user_id']);
110 $messenger->headers('X-AntiAbuse: Username - ' . phpbb::$user->data['username']);
111 $messenger->headers('X-AntiAbuse: User IP - ' . phpbb::$user->ip);
113 $messenger->assign_vars(array(
114 'USERNAME' => htmlspecialchars_decode($row['username']))
117 $messenger->send(NOTIFY_EMAIL);
120 $messenger->save_queue();
123 else if ($action == 'delete')
125 if (confirm_box(true))
127 if (!phpbb::$acl->acl_get('a_userdel'))
129 trigger_error(phpbb::$user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
132 foreach ($mark as $user_id)
134 user_delete('retain', $user_id, $user_affected[$user_id]);
137 add_log('admin', 'LOG_INACTIVE_' . strtoupper($action), implode(', ', $user_affected));
139 else
141 $s_hidden_fields = array(
142 'mode' => $mode,
143 'action' => $action,
144 'mark' => $mark,
145 'submit' => 1,
146 'start' => $start,
148 confirm_box(false, phpbb::$user->lang['CONFIRM_OPERATION'], build_hidden_fields($s_hidden_fields));
152 break;
154 case 'remind':
155 if (empty(phpbb::$config['email_enable']))
157 trigger_error(phpbb::$user->lang['EMAIL_DISABLED'] . adm_back_link($this->u_action), E_USER_WARNING);
160 $sql = 'SELECT user_id, username, user_email, user_lang, user_jabber, user_notify_type, user_regdate, user_actkey
161 FROM ' . USERS_TABLE . '
162 WHERE ' . phpbb::$db->sql_in_set('user_id', $mark) . '
163 AND user_inactive_reason';
165 $sql .= (phpbb::$config['require_activation'] == USER_ACTIVATION_ADMIN) ? ' = ' . INACTIVE_REMIND : ' <> ' . INACTIVE_MANUAL;
167 $result = phpbb::$db->sql_query($sql);
169 if ($row = phpbb::$db->sql_fetchrow($result))
171 // Send the messages
172 include_once(PHPBB_ROOT_PATH . 'includes/functions_messenger.' . PHP_EXT);
174 $messenger = new messenger();
175 $usernames = array();
179 $messenger->template('user_remind_inactive', $row['user_lang']);
181 $messenger->to($row['user_email'], $row['username']);
182 $messenger->im($row['user_jabber'], $row['username']);
184 $messenger->headers('X-AntiAbuse: Board servername - ' . phpbb::$config['server_name']);
185 $messenger->headers('X-AntiAbuse: User_id - ' . phpbb::$user->data['user_id']);
186 $messenger->headers('X-AntiAbuse: Username - ' . phpbb::$user->data['username']);
187 $messenger->headers('X-AntiAbuse: User IP - ' . phpbb::$user->ip);
189 $messenger->assign_vars(array(
190 'USERNAME' => htmlspecialchars_decode($row['username']),
191 'REGISTER_DATE' => phpbb::$user->format_date($row['user_regdate'], false, true),
192 'U_ACTIVATE' => generate_board_url() . '/ucp.' . PHP_EXT . '?mode=activate&u=' . $row['user_id'] . '&k=' . $row['user_actkey'])
195 $messenger->send($row['user_notify_type']);
197 $usernames[] = $row['username'];
199 while ($row = phpbb::$db->sql_fetchrow($result));
201 $messenger->save_queue();
203 add_log('admin', 'LOG_INACTIVE_REMIND', implode(', ', $usernames));
204 unset($usernames);
206 phpbb::$db->sql_freeresult($result);
208 break;
212 // Sorting
213 $limit_days = array(0 => phpbb::$user->lang['ALL_ENTRIES'], 1 => phpbb::$user->lang['1_DAY'], 7 => phpbb::$user->lang['7_DAYS'], 14 => phpbb::$user->lang['2_WEEKS'], 30 => phpbb::$user->lang['1_MONTH'], 90 => phpbb::$user->lang['3_MONTHS'], 180 => phpbb::$user->lang['6_MONTHS'], 365 => phpbb::$user->lang['1_YEAR']);
214 $sort_by_text = array('i' => phpbb::$user->lang['SORT_INACTIVE'], 'j' => phpbb::$user->lang['SORT_REG_DATE'], 'l' => phpbb::$user->lang['SORT_LAST_VISIT'], 'r' => phpbb::$user->lang['SORT_REASON'], 'u' => phpbb::$user->lang['SORT_USERNAME']);
215 $sort_by_sql = array('i' => 'user_inactive_time', 'j' => 'user_regdate', 'l' => 'user_lastvisit', 'r' => 'user_inactive_reason', 'u' => 'username_clean');
217 $s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = '';
218 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);
220 // Define where and sort sql for use in displaying logs
221 $sql_where = ($sort_days) ? (time() - ($sort_days * 86400)) : 0;
222 $sql_sort = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC');
224 $inactive = array();
225 $inactive_count = 0;
227 $start = view_inactive_users($inactive, $inactive_count, phpbb::$config['topics_per_page'], $start, $sql_where, $sql_sort);
229 foreach ($inactive as $row)
231 phpbb::$template->assign_block_vars('inactive', array(
232 'INACTIVE_DATE' => phpbb::$user->format_date($row['user_inactive_time']),
233 'JOINED' => phpbb::$user->format_date($row['user_regdate']),
234 'LAST_VISIT' => (!$row['user_lastvisit']) ? ' - ' : phpbb::$user->format_date($row['user_lastvisit']),
235 'REASON' => $row['inactive_reason'],
236 'USER_ID' => $row['user_id'],
237 'USERNAME' => $row['username'],
238 'U_USER_ADMIN' => append_sid(PHPBB_ADMIN_PATH . 'index.' . PHP_EXT, "i=users&amp;mode=overview&amp;u={$row['user_id']}"),
242 $option_ary = array('activate' => 'ACTIVATE', 'delete' => 'DELETE');
243 if (phpbb::$config['email_enable'])
245 $option_ary += array('remind' => 'REMIND');
248 phpbb::$template->assign_vars(array(
249 'S_INACTIVE_USERS' => true,
250 'S_INACTIVE_OPTIONS' => build_select($option_ary),
252 'S_LIMIT_DAYS' => $s_limit_days,
253 'S_SORT_KEY' => $s_sort_key,
254 'S_SORT_DIR' => $s_sort_dir,
255 'S_ON_PAGE' => on_page($inactive_count, phpbb::$config['topics_per_page'], $start),
256 'PAGINATION' => generate_pagination($this->u_action . "&amp;$u_sort_param", $inactive_count, phpbb::$config['topics_per_page'], $start, true),
258 'U_ACTION' => $this->u_action . '&amp;start=' . $start,
261 $this->tpl_name = 'acp_inactive';
262 $this->page_title = 'ACP_INACTIVE_USERS';