phpBB
Statistics
| Revision:

root / branches / phpBB-3_0_0 / phpBB / includes / acp / acp_prune.php

History | View | Annotate | Download (13.1 kB)

1 5325 acydburn
<?php
2 8147 acydburn
/**
3 5325 acydburn
*
4 5325 acydburn
* @package acp
5 5325 acydburn
* @version $Id$
6 8147 acydburn
* @copyright (c) 2005 phpBB Group
7 8147 acydburn
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
8 5325 acydburn
*
9 5325 acydburn
*/
10 5325 acydburn
11 5325 acydburn
/**
12 8147 acydburn
* @ignore
13 8147 acydburn
*/
14 8147 acydburn
if (!defined('IN_PHPBB'))
15 8147 acydburn
{
16 8147 acydburn
        exit;
17 8147 acydburn
}
18 8147 acydburn
19 8147 acydburn
/**
20 5325 acydburn
* @package acp
21 5325 acydburn
*/
22 5325 acydburn
class acp_prune
23 5325 acydburn
{
24 5558 acydburn
        var $u_action;
25 5325 acydburn
26 5325 acydburn
        function main($id, $mode)
27 5325 acydburn
        {
28 6015 acydburn
                global $user, $phpEx, $phpbb_admin_path, $phpbb_root_path;
29 5325 acydburn
30 5325 acydburn
                $user->add_lang('acp/prune');
31 5696 acydburn
                include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
32 5325 acydburn
33 5325 acydburn
                switch ($mode)
34 5325 acydburn
                {
35 5325 acydburn
                        case 'forums':
36 5325 acydburn
                                $this->tpl_name = 'acp_prune_forums';
37 5957 acydburn
                                $this->page_title = 'ACP_PRUNE_FORUMS';
38 5325 acydburn
                                $this->prune_forums($id, $mode);
39 5325 acydburn
                        break;
40 5325 acydburn
41 5325 acydburn
                        case 'users':
42 5325 acydburn
                                $this->tpl_name = 'acp_prune_users';
43 5957 acydburn
                                $this->page_title = 'ACP_PRUNE_USERS';
44 5325 acydburn
                                $this->prune_users($id, $mode);
45 5325 acydburn
                        break;
46 5325 acydburn
                }
47 5325 acydburn
        }
48 5325 acydburn
49 5325 acydburn
        /**
50 5325 acydburn
        * Prune forums
51 5325 acydburn
        */
52 5325 acydburn
        function prune_forums($id, $mode)
53 5325 acydburn
        {
54 5325 acydburn
                global $db, $user, $auth, $template, $cache;
55 6015 acydburn
                global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
56 5325 acydburn
57 7059 davidmj
                $all_forums = request_var('all_forums', 0);
58 5325 acydburn
                $forum_id = request_var('f', array(0));
59 5325 acydburn
                $submit = (isset($_POST['submit'])) ? true : false;
60 5325 acydburn
61 7059 davidmj
                if ($all_forums)
62 7059 davidmj
                {
63 7059 davidmj
                        $sql = 'SELECT forum_id
64 7059 davidmj
                                FROM ' . FORUMS_TABLE . '
65 7059 davidmj
                                ORDER BY left_id';
66 7059 davidmj
                        $result = $db->sql_query($sql);
67 7059 davidmj
68 7059 davidmj
                        $forum_id = array();
69 7059 davidmj
                        while ($row = $db->sql_fetchrow($result))
70 7059 davidmj
                        {
71 7059 davidmj
                                $forum_id[] = $row['forum_id'];
72 7059 davidmj
                        }
73 7059 davidmj
                        $db->sql_freeresult($result);
74 7059 davidmj
                }
75 7059 davidmj
76 5325 acydburn
                if ($submit)
77 5325 acydburn
                {
78 7527 acydburn
                        if (confirm_box(true))
79 7527 acydburn
                        {
80 7527 acydburn
                                $prune_posted = request_var('prune_days', 0);
81 7527 acydburn
                                $prune_viewed = request_var('prune_vieweddays', 0);
82 7527 acydburn
                                $prune_all = (!$prune_posted && !$prune_viewed) ? true : false;
83 7527 acydburn
84 7527 acydburn
                                $prune_flags = 0;
85 7527 acydburn
                                $prune_flags += (request_var('prune_old_polls', 0)) ? 2 : 0;
86 7527 acydburn
                                $prune_flags += (request_var('prune_announce', 0)) ? 4 : 0;
87 7527 acydburn
                                $prune_flags += (request_var('prune_sticky', 0)) ? 8 : 0;
88 5325 acydburn
89 7527 acydburn
                                // Convert days to seconds for timestamp functions...
90 7527 acydburn
                                $prunedate_posted = time() - ($prune_posted * 86400);
91 7527 acydburn
                                $prunedate_viewed = time() - ($prune_viewed * 86400);
92 5325 acydburn
93 7527 acydburn
                                $template->assign_vars(array(
94 7527 acydburn
                                        'S_PRUNED'                => true)
95 7527 acydburn
                                );
96 5325 acydburn
97 7527 acydburn
                                $sql_forum = (sizeof($forum_id)) ? ' AND ' . $db->sql_in_set('forum_id', $forum_id) : '';
98 5325 acydburn
99 7527 acydburn
                                // Get a list of forum's or the data for the forum that we are pruning.
100 8147 acydburn
                                $sql = 'SELECT forum_id, forum_name
101 7527 acydburn
                                        FROM ' . FORUMS_TABLE . '
102 7527 acydburn
                                        WHERE forum_type = ' . FORUM_POST . "
103 8147 acydburn
                                                $sql_forum
104 7527 acydburn
                                        ORDER BY left_id ASC";
105 7527 acydburn
                                $result = $db->sql_query($sql);
106 5325 acydburn
107 7527 acydburn
                                if ($row = $db->sql_fetchrow($result))
108 5325 acydburn
                                {
109 7527 acydburn
                                        $prune_ids = array();
110 7527 acydburn
                                        $p_result['topics'] = 0;
111 7527 acydburn
                                        $p_result['posts'] = 0;
112 7527 acydburn
                                        $log_data = '';
113 7527 acydburn
114 7527 acydburn
                                        do
115 5325 acydburn
                                        {
116 7527 acydburn
                                                if (!$auth->acl_get('f_list', $row['forum_id']))
117 7527 acydburn
                                                {
118 7527 acydburn
                                                        continue;
119 7527 acydburn
                                                }
120 5325 acydburn
121 7527 acydburn
                                                if ($prune_all)
122 5325 acydburn
                                                {
123 7527 acydburn
                                                        $p_result = prune($row['forum_id'], 'posted', time(), $prune_flags, false);
124 5325 acydburn
                                                }
125 7527 acydburn
                                                else
126 5325 acydburn
                                                {
127 7527 acydburn
                                                        if ($prune_posted)
128 7527 acydburn
                                                        {
129 7527 acydburn
                                                                $return = prune($row['forum_id'], 'posted', $prunedate_posted, $prune_flags, false);
130 7527 acydburn
                                                                $p_result['topics'] += $return['topics'];
131 7527 acydburn
                                                                $p_result['posts'] += $return['posts'];
132 7527 acydburn
                                                        }
133 7527 acydburn
134 7527 acydburn
                                                        if ($prune_viewed)
135 7527 acydburn
                                                        {
136 7527 acydburn
                                                                $return = prune($row['forum_id'], 'viewed', $prunedate_viewed, $prune_flags, false);
137 7527 acydburn
                                                                $p_result['topics'] += $return['topics'];
138 7527 acydburn
                                                                $p_result['posts'] += $return['posts'];
139 7527 acydburn
                                                        }
140 5325 acydburn
                                                }
141 5325 acydburn
142 7527 acydburn
                                                $prune_ids[] = $row['forum_id'];
143 5325 acydburn
144 7527 acydburn
                                                $template->assign_block_vars('pruned', array(
145 7527 acydburn
                                                        'FORUM_NAME'        => $row['forum_name'],
146 7527 acydburn
                                                        'NUM_TOPICS'        => $p_result['topics'],
147 7527 acydburn
                                                        'NUM_POSTS'                => $p_result['posts'])
148 7527 acydburn
                                                );
149 7527 acydburn
150 7527 acydburn
                                                $log_data .= (($log_data != '') ? ', ' : '') . $row['forum_name'];
151 7527 acydburn
                                        }
152 7527 acydburn
                                        while ($row = $db->sql_fetchrow($result));
153 7527 acydburn
154 7527 acydburn
                                        // Sync all pruned forums at once
155 7527 acydburn
                                        sync('forum', 'forum_id', $prune_ids, true, true);
156 7527 acydburn
                                        add_log('admin', 'LOG_PRUNE', $log_data);
157 5325 acydburn
                                }
158 7527 acydburn
                                $db->sql_freeresult($result);
159 7527 acydburn
160 7527 acydburn
                                return;
161 5325 acydburn
                        }
162 7527 acydburn
                        else
163 7527 acydburn
                        {
164 7527 acydburn
                                confirm_box(false, $user->lang['PRUNE_FORUM_CONFIRM'], build_hidden_fields(array(
165 7527 acydburn
                                        'i'                                => $id,
166 7527 acydburn
                                        'mode'                        => $mode,
167 7527 acydburn
                                        'submit'                => 1,
168 7527 acydburn
                                        'all_forums'        => $all_forums,
169 7527 acydburn
                                        'f'                                => $forum_id,
170 5325 acydburn
171 7527 acydburn
                                        'prune_days'                => request_var('prune_days', 0),
172 7527 acydburn
                                        'prune_vieweddays'        => request_var('prune_vieweddays', 0),
173 7527 acydburn
                                        'prune_old_polls'        => request_var('prune_old_polls', 0),
174 7527 acydburn
                                        'prune_announce'        => request_var('prune_announce', 0),
175 7527 acydburn
                                        'prune_sticky'                => request_var('prune_sticky', 0),
176 7527 acydburn
                                )));
177 7527 acydburn
                        }
178 5325 acydburn
                }
179 5325 acydburn
180 5325 acydburn
                // If they haven't selected a forum for pruning yet then
181 5325 acydburn
                // display a select box to use for pruning.
182 5325 acydburn
                if (!sizeof($forum_id))
183 5325 acydburn
                {
184 5325 acydburn
                        $template->assign_vars(array(
185 5325 acydburn
                                'U_ACTION'                        => $this->u_action,
186 5325 acydburn
                                'S_SELECT_FORUM'        => true,
187 5325 acydburn
                                'S_FORUM_OPTIONS'        => make_forum_select(false, false, false))
188 6073 acydburn
                        );
189 5325 acydburn
                }
190 5325 acydburn
                else
191 5325 acydburn
                {
192 8147 acydburn
                        $sql = 'SELECT forum_id, forum_name
193 8147 acydburn
                                FROM ' . FORUMS_TABLE . '
194 6271 acydburn
                                WHERE ' . $db->sql_in_set('forum_id', $forum_id);
195 5325 acydburn
                        $result = $db->sql_query($sql);
196 6073 acydburn
                        $row = $db->sql_fetchrow($result);
197 5325 acydburn
198 6073 acydburn
                        if (!$row)
199 5325 acydburn
                        {
200 6073 acydburn
                                $db->sql_freeresult($result);
201 6320 acydburn
                                trigger_error($user->lang['NO_FORUM'] . adm_back_link($this->u_action), E_USER_WARNING);
202 5325 acydburn
                        }
203 5325 acydburn
204 5325 acydburn
                        $forum_list = $s_hidden_fields = '';
205 5325 acydburn
                        do
206 5325 acydburn
                        {
207 5325 acydburn
                                $forum_list .= (($forum_list != '') ? ', ' : '') . '<b>' . $row['forum_name'] . '</b>';
208 5325 acydburn
                                $s_hidden_fields .= '<input type="hidden" name="f[]" value="' . $row['forum_id'] . '" />';
209 5325 acydburn
                        }
210 5325 acydburn
                        while ($row = $db->sql_fetchrow($result));
211 5325 acydburn
212 5325 acydburn
                        $db->sql_freeresult($result);
213 5325 acydburn
214 5325 acydburn
                        $l_selected_forums = (sizeof($forum_id) == 1) ? 'SELECTED_FORUM' : 'SELECTED_FORUMS';
215 5325 acydburn
216 5325 acydburn
                        $template->assign_vars(array(
217 5325 acydburn
                                'L_SELECTED_FORUMS'                => $user->lang[$l_selected_forums],
218 5325 acydburn
                                'U_ACTION'                                => $this->u_action,
219 5325 acydburn
                                'U_BACK'                                => $this->u_action,
220 5325 acydburn
                                'FORUM_LIST'                        => $forum_list,
221 5325 acydburn
                                'S_HIDDEN_FIELDS'                => $s_hidden_fields)
222 5325 acydburn
                        );
223 5325 acydburn
                }
224 5325 acydburn
        }
225 5325 acydburn
226 5325 acydburn
        /**
227 5325 acydburn
        * Prune users
228 5325 acydburn
        */
229 5325 acydburn
        function prune_users($id, $mode)
230 5325 acydburn
        {
231 5325 acydburn
                global $db, $user, $auth, $template, $cache;
232 6015 acydburn
                global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
233 5325 acydburn
234 5325 acydburn
                $user->add_lang('memberlist');
235 5325 acydburn
236 5325 acydburn
                $prune = (isset($_POST['prune'])) ? true : false;
237 5325 acydburn
238 5325 acydburn
                if ($prune)
239 5325 acydburn
                {
240 7455 acydburn
                        $action = request_var('action', 'deactivate');
241 7749 acydburn
                        $deleteposts = request_var('deleteposts', 0);
242 7455 acydburn
243 5325 acydburn
                        if (confirm_box(true))
244 5325 acydburn
                        {
245 5325 acydburn
                                $user_ids = $usernames = array();
246 7455 acydburn
                                $this->get_prune_users($user_ids, $usernames);
247 5325 acydburn
248 5696 acydburn
                                if (sizeof($user_ids))
249 5325 acydburn
                                {
250 5696 acydburn
                                        if ($action == 'deactivate')
251 5696 acydburn
                                        {
252 6436 acydburn
                                                user_active_flip('deactivate', $user_ids);
253 5696 acydburn
                                                $l_log = 'LOG_PRUNE_USER_DEAC';
254 5696 acydburn
                                        }
255 5696 acydburn
                                        else if ($action == 'delete')
256 5325 acydburn
                                        {
257 5325 acydburn
                                                if ($deleteposts)
258 5325 acydburn
                                                {
259 5696 acydburn
                                                        foreach ($user_ids as $user_id)
260 5696 acydburn
                                                        {
261 5696 acydburn
                                                                user_delete('remove', $user_id);
262 5696 acydburn
                                                        }
263 5696 acydburn
264 5325 acydburn
                                                        $l_log = 'LOG_PRUNE_USER_DEL_DEL';
265 5325 acydburn
                                                }
266 5325 acydburn
                                                else
267 5325 acydburn
                                                {
268 5696 acydburn
                                                        foreach ($user_ids as $user_id)
269 5325 acydburn
                                                        {
270 5696 acydburn
                                                                user_delete('retain', $user_id, $usernames[$user_id]);
271 5325 acydburn
                                                        }
272 5325 acydburn
273 5325 acydburn
                                                        $l_log = 'LOG_PRUNE_USER_DEL_ANON';
274 5325 acydburn
                                                }
275 5325 acydburn
                                        }
276 5325 acydburn
277 5325 acydburn
                                        add_log('admin', $l_log, implode(', ', $usernames));
278 7043 davidmj
                                        $msg = $user->lang['USER_' . strtoupper($action) . '_SUCCESS'];
279 5325 acydburn
                                }
280 7043 davidmj
                                else
281 7043 davidmj
                                {
282 7043 davidmj
                                        $msg = $user->lang['USER_PRUNE_FAILURE'];
283 7043 davidmj
                                }
284 5325 acydburn
285 7043 davidmj
                                trigger_error($msg . adm_back_link($this->u_action));
286 5325 acydburn
                        }
287 5325 acydburn
                        else
288 5325 acydburn
                        {
289 7455 acydburn
                                // We list the users which will be pruned...
290 7455 acydburn
                                $user_ids = $usernames = array();
291 7455 acydburn
                                $this->get_prune_users($user_ids, $usernames);
292 7455 acydburn
293 7455 acydburn
                                if (!sizeof($user_ids))
294 7455 acydburn
                                {
295 7455 acydburn
                                        trigger_error($user->lang['USER_PRUNE_FAILURE'] . adm_back_link($this->u_action), E_USER_WARNING);
296 7455 acydburn
                                }
297 7455 acydburn
298 7455 acydburn
                                // Assign to template
299 7455 acydburn
                                foreach ($user_ids as $user_id)
300 7455 acydburn
                                {
301 7455 acydburn
                                        $template->assign_block_vars('users', array(
302 7455 acydburn
                                                'USERNAME'                        => $usernames[$user_id],
303 7455 acydburn
                                                'U_PROFILE'                        => append_sid($phpbb_root_path . 'memberlist.' . $phpEx, 'mode=viewprofile&amp;u=' . $user_id),
304 7455 acydburn
                                                'U_USER_ADMIN'                => ($auth->acl_get('a_user')) ? append_sid("{$phpbb_admin_path}index.$phpEx", 'i=users&amp;mode=overview&amp;u=' . $user_id, true, $user->session_id) : '',
305 7455 acydburn
                                        ));
306 7455 acydburn
                                }
307 7455 acydburn
308 7455 acydburn
                                $template->assign_vars(array(
309 7455 acydburn
                                        'S_DEACTIVATE'                => ($action == 'deactivate') ? true : false,
310 7455 acydburn
                                        'S_DELETE'                        => ($action == 'delete') ? true : false,
311 7455 acydburn
                                ));
312 7455 acydburn
313 5325 acydburn
                                confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
314 5325 acydburn
                                        'i'                                => $id,
315 5325 acydburn
                                        'mode'                        => $mode,
316 5325 acydburn
                                        'prune'                        => 1,
317 5325 acydburn
318 10671 git-gate
                                        'users'                        => utf8_normalize_nfc(request_var('users', '', true)),
319 10671 git-gate
                                        'username'                => utf8_normalize_nfc(request_var('username', '', true)),
320 5325 acydburn
                                        'email'                        => request_var('email', ''),
321 5325 acydburn
                                        'joined_select'        => request_var('joined_select', ''),
322 5325 acydburn
                                        'joined'                => request_var('joined', ''),
323 5325 acydburn
                                        'active_select'        => request_var('active_select', ''),
324 5325 acydburn
                                        'active'                => request_var('active', ''),
325 5325 acydburn
                                        'count_select'        => request_var('count_select', ''),
326 7455 acydburn
                                        'count'                        => request_var('count', ''),
327 5325 acydburn
                                        'deleteposts'        => request_var('deleteposts', 0),
328 5325 acydburn
329 5325 acydburn
                                        'action'                => request_var('action', ''),
330 7455 acydburn
                                )), 'confirm_body_prune.html');
331 5325 acydburn
                        }
332 5325 acydburn
                }
333 5325 acydburn
334 5325 acydburn
                $find_count = array('lt' => $user->lang['LESS_THAN'], 'eq' => $user->lang['EQUAL_TO'], 'gt' => $user->lang['MORE_THAN']);
335 5325 acydburn
                $s_find_count = '';
336 5325 acydburn
337 5325 acydburn
                foreach ($find_count as $key => $value)
338 5325 acydburn
                {
339 5325 acydburn
                        $selected = ($key == 'eq') ? ' selected="selected"' : '';
340 5325 acydburn
                        $s_find_count .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>';
341 5325 acydburn
                }
342 5325 acydburn
343 5325 acydburn
                $find_time = array('lt' => $user->lang['BEFORE'], 'gt' => $user->lang['AFTER']);
344 5325 acydburn
                $s_find_join_time = '';
345 5325 acydburn
                foreach ($find_time as $key => $value)
346 5325 acydburn
                {
347 5325 acydburn
                        $s_find_join_time .= '<option value="' . $key . '">' . $value . '</option>';
348 5325 acydburn
                }
349 5325 acydburn
350 5325 acydburn
                $s_find_active_time = '';
351 5325 acydburn
                foreach ($find_time as $key => $value)
352 5325 acydburn
                {
353 5325 acydburn
                        $s_find_active_time .= '<option value="' . $key . '">' . $value . '</option>';
354 5325 acydburn
                }
355 5325 acydburn
356 5325 acydburn
                $template->assign_vars(array(
357 5325 acydburn
                        'U_ACTION'                        => $this->u_action,
358 5325 acydburn
                        'S_JOINED_OPTIONS'        => $s_find_join_time,
359 5325 acydburn
                        'S_ACTIVE_OPTIONS'        => $s_find_active_time,
360 5325 acydburn
                        'S_COUNT_OPTIONS'        => $s_find_count,
361 8099 acydburn
                        'U_FIND_USERNAME'        => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&amp;form=acp_prune&amp;field=users'),
362 8099 acydburn
                ));
363 5325 acydburn
        }
364 7455 acydburn
365 7455 acydburn
        /**
366 7455 acydburn
        * Get user_ids/usernames from those being pruned
367 7455 acydburn
        */
368 7455 acydburn
        function get_prune_users(&$user_ids, &$usernames)
369 7455 acydburn
        {
370 7455 acydburn
                global $user, $db;
371 7455 acydburn
372 10671 git-gate
                $users = utf8_normalize_nfc(request_var('users', '', true));
373 7455 acydburn
374 7455 acydburn
                if ($users)
375 7455 acydburn
                {
376 7455 acydburn
                        $users = explode("\n", $users);
377 7455 acydburn
                        $where_sql = ' AND ' . $db->sql_in_set('username_clean', array_map('utf8_clean_string', $users));
378 7455 acydburn
                }
379 7455 acydburn
                else
380 7455 acydburn
                {
381 10671 git-gate
                        $username = utf8_normalize_nfc(request_var('username', '', true));
382 7455 acydburn
                        $email = request_var('email', '');
383 7455 acydburn
384 7455 acydburn
                        $joined_select = request_var('joined_select', 'lt');
385 7455 acydburn
                        $active_select = request_var('active_select', 'lt');
386 7455 acydburn
                        $count_select = request_var('count_select', 'eq');
387 7455 acydburn
                        $joined = request_var('joined', '');
388 7455 acydburn
                        $active = request_var('active', '');
389 7455 acydburn
390 7455 acydburn
                        $active = ($active) ? explode('-', $active) : array();
391 7455 acydburn
                        $joined = ($joined) ? explode('-', $joined) : array();
392 7455 acydburn
393 7455 acydburn
                        if ((sizeof($active) && sizeof($active) != 3) || (sizeof($joined) && sizeof($joined) != 3))
394 7455 acydburn
                        {
395 7455 acydburn
                                trigger_error($user->lang['WRONG_ACTIVE_JOINED_DATE'] . adm_back_link($this->u_action), E_USER_WARNING);
396 7455 acydburn
                        }
397 7455 acydburn
398 7455 acydburn
                        $count = request_var('count', '');
399 7455 acydburn
400 7455 acydburn
                        $key_match = array('lt' => '<', 'gt' => '>', 'eq' => '=');
401 7455 acydburn
                        $sort_by_types = array('username', 'user_email', 'user_posts', 'user_regdate', 'user_lastvisit');
402 7455 acydburn
403 7455 acydburn
                        $where_sql = '';
404 7789 acydburn
                        $where_sql .= ($username) ? ' AND username_clean ' . $db->sql_like_expression(str_replace('*', $db->any_char, utf8_clean_string($username))) : '';
405 7789 acydburn
                        $where_sql .= ($email) ? ' AND user_email ' . $db->sql_like_expression(str_replace('*', $db->any_char, $email)) . ' ' : '';
406 7455 acydburn
                        $where_sql .= (sizeof($joined)) ? " AND user_regdate " . $key_match[$joined_select] . ' ' . gmmktime(0, 0, 0, (int) $joined[1], (int) $joined[2], (int) $joined[0]) : '';
407 7455 acydburn
                        $where_sql .= ($count !== '') ? " AND user_posts " . $key_match[$count_select] . ' ' . (int) $count . ' ' : '';
408 8453 acydburn
409 9754 rxu
                        // First handle pruning of users who never logged in, last active date is 0000-00-00
410 9754 rxu
                        if (sizeof($active) && (int) $active[0] == 0 && (int) $active[1] == 0 && (int) $active[2] == 0)
411 8453 acydburn
                        {
412 9754 rxu
                                $where_sql .= ' AND user_lastvisit = 0';
413 9754 rxu
                        }
414 9754 rxu
                        else if (sizeof($active) && $active_select != 'lt')
415 9754 rxu
                        {
416 8453 acydburn
                                $where_sql .= ' AND user_lastvisit ' . $key_match[$active_select] . ' ' . gmmktime(0, 0, 0, (int) $active[1], (int) $active[2], (int) $active[0]);
417 8453 acydburn
                        }
418 8453 acydburn
                        else if (sizeof($active))
419 8453 acydburn
                        {
420 8453 acydburn
                                $where_sql .= ' AND (user_lastvisit > 0 AND user_lastvisit < ' . gmmktime(0, 0, 0, (int) $active[1], (int) $active[2], (int) $active[0]) . ')';
421 8453 acydburn
                        }
422 7455 acydburn
                }
423 7455 acydburn
424 7455 acydburn
                // Protect the admin, do not prune if no options are given...
425 7455 acydburn
                if (!$where_sql)
426 7455 acydburn
                {
427 7455 acydburn
                        return;
428 7455 acydburn
                }
429 7455 acydburn
430 7455 acydburn
                // Get bot ids
431 8147 acydburn
                $sql = 'SELECT user_id
432 7455 acydburn
                        FROM ' . BOTS_TABLE;
433 7455 acydburn
                $result = $db->sql_query($sql);
434 7455 acydburn
435 7455 acydburn
                $bot_ids = array();
436 7455 acydburn
                while ($row = $db->sql_fetchrow($result))
437 7455 acydburn
                {
438 7455 acydburn
                        $bot_ids[] = $row['user_id'];
439 7455 acydburn
                }
440 7455 acydburn
                $db->sql_freeresult($result);
441 7455 acydburn
442 7455 acydburn
                // Do not prune founder members
443 7455 acydburn
                $sql = 'SELECT user_id, username
444 7455 acydburn
                        FROM ' . USERS_TABLE . '
445 7455 acydburn
                        WHERE user_id <> ' . ANONYMOUS . '
446 7455 acydburn
                                AND user_type <> ' . USER_FOUNDER . "
447 7455 acydburn
                        $where_sql";
448 7455 acydburn
                $result = $db->sql_query($sql);
449 7455 acydburn
450 7455 acydburn
                $where_sql = '';
451 7455 acydburn
                $user_ids = $usernames = array();
452 7455 acydburn
453 7455 acydburn
                while ($row = $db->sql_fetchrow($result))
454 7455 acydburn
                {
455 7455 acydburn
                        // Do not prune bots and the user currently pruning.
456 7455 acydburn
                        if ($row['user_id'] != $user->data['user_id'] && !in_array($row['user_id'], $bot_ids))
457 7455 acydburn
                        {
458 7455 acydburn
                                $user_ids[] = $row['user_id'];
459 7455 acydburn
                                $usernames[$row['user_id']] = $row['username'];
460 7455 acydburn
                        }
461 7455 acydburn
                }
462 7455 acydburn
                $db->sql_freeresult($result);
463 7455 acydburn
        }
464 5325 acydburn
}
465 5325 acydburn
466 5325 acydburn
?>