phpBB
Statistics
| Revision:

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

History | View | Annotate | Download (18.8 kB)

1 5303 acydburn
<?php
2 8147 acydburn
/**
3 5303 acydburn
*
4 5303 acydburn
* @package acp
5 5303 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 5303 acydburn
*
9 5303 acydburn
*/
10 5303 acydburn
11 5303 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 5303 acydburn
* @package acp
21 5303 acydburn
*/
22 5303 acydburn
class acp_main
23 5303 acydburn
{
24 5558 acydburn
        var $u_action;
25 5558 acydburn
26 5303 acydburn
        function main($id, $mode)
27 5303 acydburn
        {
28 5303 acydburn
                global $config, $db, $user, $auth, $template;
29 7922 davidmj
                global $phpbb_root_path, $phpbb_admin_path, $phpEx;
30 5303 acydburn
31 6342 acydburn
                // Show restore permissions notice
32 6342 acydburn
                if ($user->data['user_perm_from'] && $auth->acl_get('a_switchperm'))
33 6342 acydburn
                {
34 6342 acydburn
                        $this->tpl_name = 'acp_main';
35 6342 acydburn
                        $this->page_title = 'ACP_MAIN';
36 6342 acydburn
37 6342 acydburn
                        $sql = 'SELECT user_id, username, user_colour
38 6342 acydburn
                                FROM ' . USERS_TABLE . '
39 6342 acydburn
                                WHERE user_id = ' . $user->data['user_perm_from'];
40 6342 acydburn
                        $result = $db->sql_query($sql);
41 6342 acydburn
                        $user_row = $db->sql_fetchrow($result);
42 6342 acydburn
                        $db->sql_freeresult($result);
43 6342 acydburn
44 6342 acydburn
                        $perm_from = '<strong' . (($user_row['user_colour']) ? ' style="color: #' . $user_row['user_colour'] . '">' : '>');
45 6342 acydburn
                        $perm_from .= ($user_row['user_id'] != ANONYMOUS) ? '<a href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;u=' . $user_row['user_id']) . '">' : '';
46 6342 acydburn
                        $perm_from .= $user_row['username'];
47 6342 acydburn
                        $perm_from .= ($user_row['user_id'] != ANONYMOUS) ? '</a>' : '';
48 6342 acydburn
                        $perm_from .= '</strong>';
49 6342 acydburn
50 6342 acydburn
                        $template->assign_vars(array(
51 6342 acydburn
                                'S_RESTORE_PERMISSIONS'                => true,
52 6342 acydburn
                                'U_RESTORE_PERMISSIONS'                => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=restore_perm'),
53 6342 acydburn
                                'PERM_FROM'                                        => $perm_from,
54 6915 acydburn
                                'L_PERMISSIONS_TRANSFERRED_EXPLAIN'        => sprintf($user->lang['PERMISSIONS_TRANSFERRED_EXPLAIN'], $perm_from, append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=restore_perm')),
55 6342 acydburn
                        ));
56 6342 acydburn
57 6342 acydburn
                        return;
58 6342 acydburn
                }
59 6342 acydburn
60 5303 acydburn
                $action = request_var('action', '');
61 5303 acydburn
62 7093 davidmj
                if ($action)
63 6974 naderman
                {
64 8580 Kellanved
                        if ($action === 'admlogout')
65 8580 Kellanved
                        {
66 8580 Kellanved
                                $user->unset_admin();
67 8580 Kellanved
                                $redirect_url = append_sid("{$phpbb_root_path}index.$phpEx");
68 8580 Kellanved
                                meta_refresh(3, $redirect_url);
69 8580 Kellanved
                                trigger_error($user->lang['ADM_LOGGED_OUT'] . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . $redirect_url . '">', '</a>'));
70 8580 Kellanved
                        }
71 8580 Kellanved
72 7093 davidmj
                        if (!confirm_box(true))
73 6974 naderman
                        {
74 7093 davidmj
                                switch ($action)
75 7093 davidmj
                                {
76 7093 davidmj
                                        case 'online':
77 7093 davidmj
                                                $confirm = true;
78 7093 davidmj
                                                $confirm_lang = 'RESET_ONLINE_CONFIRM';
79 7093 davidmj
                                        break;
80 7093 davidmj
                                        case 'stats':
81 7093 davidmj
                                                $confirm = true;
82 7093 davidmj
                                                $confirm_lang = 'RESYNC_STATS_CONFIRM';
83 7093 davidmj
                                        break;
84 7093 davidmj
                                        case 'user':
85 7093 davidmj
                                                $confirm = true;
86 7093 davidmj
                                                $confirm_lang = 'RESYNC_POSTCOUNTS_CONFIRM';
87 7093 davidmj
                                        break;
88 7093 davidmj
                                        case 'date':
89 7093 davidmj
                                                $confirm = true;
90 7093 davidmj
                                                $confirm_lang = 'RESET_DATE_CONFIRM';
91 7093 davidmj
                                        break;
92 7093 davidmj
                                        case 'db_track':
93 7093 davidmj
                                                $confirm = true;
94 7093 davidmj
                                                $confirm_lang = 'RESYNC_POST_MARKING_CONFIRM';
95 7093 davidmj
                                        break;
96 7612 davidmj
                                        case 'purge_cache':
97 7612 davidmj
                                                $confirm = true;
98 7612 davidmj
                                                $confirm_lang = 'PURGE_CACHE_CONFIRM';
99 7612 davidmj
                                        break;
100 9714 Kellanved
                                        case 'purge_sessions':
101 9714 Kellanved
                                                $confirm = true;
102 9714 Kellanved
                                                $confirm_lang = 'PURGE_SESSIONS_CONFIRM';
103 9714 Kellanved
                                        break;
104 6974 naderman
105 7093 davidmj
                                        default:
106 7093 davidmj
                                                $confirm = true;
107 7093 davidmj
                                                $confirm_lang = 'CONFIRM_OPERATION';
108 7093 davidmj
                                }
109 7093 davidmj
110 7093 davidmj
                                if ($confirm)
111 7093 davidmj
                                {
112 7093 davidmj
                                        confirm_box(false, $user->lang[$confirm_lang], build_hidden_fields(array(
113 7093 davidmj
                                                'i'                        => $id,
114 7093 davidmj
                                                'mode'                => $mode,
115 7093 davidmj
                                                'action'        => $action,
116 7093 davidmj
                                        )));
117 7093 davidmj
                                }
118 6974 naderman
                        }
119 7093 davidmj
                        else
120 6974 naderman
                        {
121 7093 davidmj
                                switch ($action)
122 5303 acydburn
                                {
123 8580 Kellanved
124 7093 davidmj
                                        case 'online':
125 7093 davidmj
                                                if (!$auth->acl_get('a_board'))
126 7093 davidmj
                                                {
127 7093 davidmj
                                                        trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
128 7093 davidmj
                                                }
129 5303 acydburn
130 7093 davidmj
                                                set_config('record_online_users', 1, true);
131 7093 davidmj
                                                set_config('record_online_date', time(), true);
132 7093 davidmj
                                                add_log('admin', 'LOG_RESET_ONLINE');
133 7093 davidmj
                                        break;
134 5303 acydburn
135 7093 davidmj
                                        case 'stats':
136 7093 davidmj
                                                if (!$auth->acl_get('a_board'))
137 7093 davidmj
                                                {
138 7093 davidmj
                                                        trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
139 7093 davidmj
                                                }
140 5303 acydburn
141 8147 acydburn
                                                $sql = 'SELECT COUNT(post_id) AS stat
142 7093 davidmj
                                                        FROM ' . POSTS_TABLE . '
143 7093 davidmj
                                                        WHERE post_approved = 1';
144 7093 davidmj
                                                $result = $db->sql_query($sql);
145 7093 davidmj
                                                set_config('num_posts', (int) $db->sql_fetchfield('stat'), true);
146 7093 davidmj
                                                $db->sql_freeresult($result);
147 6565 acydburn
148 7093 davidmj
                                                $sql = 'SELECT COUNT(topic_id) AS stat
149 7093 davidmj
                                                        FROM ' . TOPICS_TABLE . '
150 7093 davidmj
                                                        WHERE topic_approved = 1';
151 7093 davidmj
                                                $result = $db->sql_query($sql);
152 7093 davidmj
                                                set_config('num_topics', (int) $db->sql_fetchfield('stat'), true);
153 7093 davidmj
                                                $db->sql_freeresult($result);
154 6565 acydburn
155 7093 davidmj
                                                $sql = 'SELECT COUNT(user_id) AS stat
156 7093 davidmj
                                                        FROM ' . USERS_TABLE . '
157 7093 davidmj
                                                        WHERE user_type IN (' . USER_NORMAL . ',' . USER_FOUNDER . ')';
158 7093 davidmj
                                                $result = $db->sql_query($sql);
159 7093 davidmj
                                                set_config('num_users', (int) $db->sql_fetchfield('stat'), true);
160 7093 davidmj
                                                $db->sql_freeresult($result);
161 6565 acydburn
162 7093 davidmj
                                                $sql = 'SELECT COUNT(attach_id) as stat
163 7093 davidmj
                                                        FROM ' . ATTACHMENTS_TABLE . '
164 7093 davidmj
                                                        WHERE is_orphan = 0';
165 7093 davidmj
                                                $result = $db->sql_query($sql);
166 7093 davidmj
                                                set_config('num_files', (int) $db->sql_fetchfield('stat'), true);
167 7093 davidmj
                                                $db->sql_freeresult($result);
168 5303 acydburn
169 7093 davidmj
                                                $sql = 'SELECT SUM(filesize) as stat
170 7093 davidmj
                                                        FROM ' . ATTACHMENTS_TABLE . '
171 7093 davidmj
                                                        WHERE is_orphan = 0';
172 7093 davidmj
                                                $result = $db->sql_query($sql);
173 8876 acydburn
                                                set_config('upload_dir_size', (float) $db->sql_fetchfield('stat'), true);
174 7093 davidmj
                                                $db->sql_freeresult($result);
175 8688 acydburn
176 7955 kellanved
                                                if (!function_exists('update_last_username'))
177 7955 kellanved
                                                {
178 7955 kellanved
                                                        include($phpbb_root_path . "includes/functions_user.$phpEx");
179 7955 kellanved
                                                }
180 7955 kellanved
                                                update_last_username();
181 5303 acydburn
182 7093 davidmj
                                                add_log('admin', 'LOG_RESYNC_STATS');
183 7093 davidmj
                                        break;
184 5303 acydburn
185 7093 davidmj
                                        case 'user':
186 7093 davidmj
                                                if (!$auth->acl_get('a_board'))
187 7093 davidmj
                                                {
188 7093 davidmj
                                                        trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
189 7093 davidmj
                                                }
190 5303 acydburn
191 8912 acydburn
                                                // Resync post counts
192 9171 acydburn
                                                $start = $max_post_id = 0;
193 9171 acydburn
194 9171 acydburn
                                                // Find the maximum post ID, we can only stop the cycle when we've reached it
195 9171 acydburn
                                                $sql = 'SELECT MAX(forum_last_post_id) as max_post_id
196 9171 acydburn
                                                        FROM ' . FORUMS_TABLE;
197 9171 acydburn
                                                $result = $db->sql_query($sql);
198 9171 acydburn
                                                $max_post_id = (int) $db->sql_fetchfield('max_post_id');
199 9171 acydburn
                                                $db->sql_freeresult($result);
200 9171 acydburn
201 9171 acydburn
                                                // No maximum post id? :o
202 9171 acydburn
                                                if (!$max_post_id)
203 9171 acydburn
                                                {
204 9171 acydburn
                                                        $sql = 'SELECT MAX(post_id)
205 9171 acydburn
                                                                FROM ' . POSTS_TABLE;
206 9171 acydburn
                                                        $result = $db->sql_query($sql);
207 9171 acydburn
                                                        $max_post_id = (int) $db->sql_fetchfield('max_post_id');
208 9171 acydburn
                                                        $db->sql_freeresult($result);
209 9171 acydburn
                                                }
210 9171 acydburn
211 9171 acydburn
                                                // Still no maximum post id? Then we are finished
212 9171 acydburn
                                                if (!$max_post_id)
213 9171 acydburn
                                                {
214 9171 acydburn
                                                        add_log('admin', 'LOG_RESYNC_POSTCOUNTS');
215 9171 acydburn
                                                        break;
216 9171 acydburn
                                                }
217 9171 acydburn
218 8932 acydburn
                                                $step = ($config['num_posts']) ? (max((int) ($config['num_posts'] / 5), 20000)) : 20000;
219 8932 acydburn
                                                $db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_posts = 0');
220 8932 acydburn
221 9171 acydburn
                                                while ($start < $max_post_id)
222 7093 davidmj
                                                {
223 8932 acydburn
                                                        $sql = 'SELECT COUNT(post_id) AS num_posts, poster_id
224 8932 acydburn
                                                                FROM ' . POSTS_TABLE . '
225 8932 acydburn
                                                                WHERE post_id BETWEEN ' . ($start + 1) . ' AND ' . ($start + $step) . '
226 8932 acydburn
                                                                        AND post_postcount = 1 AND post_approved = 1
227 8932 acydburn
                                                                GROUP BY poster_id';
228 8932 acydburn
                                                        $result = $db->sql_query($sql);
229 8912 acydburn
230 8912 acydburn
                                                        if ($row = $db->sql_fetchrow($result))
231 8912 acydburn
                                                        {
232 8912 acydburn
                                                                do
233 8912 acydburn
                                                                {
234 8932 acydburn
                                                                        $sql = 'UPDATE ' . USERS_TABLE . " SET user_posts = user_posts + {$row['num_posts']} WHERE user_id = {$row['poster_id']}";
235 8920 acydburn
                                                                        $db->sql_query($sql);
236 8912 acydburn
                                                                }
237 8912 acydburn
                                                                while ($row = $db->sql_fetchrow($result));
238 8912 acydburn
                                                        }
239 8912 acydburn
                                                        $db->sql_freeresult($result);
240 9171 acydburn
241 9171 acydburn
                                                        $start += $step;
242 7093 davidmj
                                                }
243 5303 acydburn
244 7093 davidmj
                                                add_log('admin', 'LOG_RESYNC_POSTCOUNTS');
245 6198 acydburn
246 6954 davidmj
                                        break;
247 8688 acydburn
248 7093 davidmj
                                        case 'date':
249 7093 davidmj
                                                if (!$auth->acl_get('a_board'))
250 7093 davidmj
                                                {
251 7093 davidmj
                                                        trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
252 7093 davidmj
                                                }
253 5973 acydburn
254 7093 davidmj
                                                set_config('board_startdate', time() - 1);
255 7093 davidmj
                                                add_log('admin', 'LOG_RESET_DATE');
256 6954 davidmj
                                        break;
257 8688 acydburn
258 7093 davidmj
                                        case 'db_track':
259 7093 davidmj
                                                switch ($db->sql_layer)
260 7093 davidmj
                                                {
261 7093 davidmj
                                                        case 'sqlite':
262 7093 davidmj
                                                        case 'firebird':
263 7093 davidmj
                                                                $db->sql_query('DELETE FROM ' . TOPICS_POSTED_TABLE);
264 7093 davidmj
                                                        break;
265 6954 davidmj
266 7093 davidmj
                                                        default:
267 7093 davidmj
                                                                $db->sql_query('TRUNCATE TABLE ' . TOPICS_POSTED_TABLE);
268 7093 davidmj
                                                        break;
269 7093 davidmj
                                                }
270 5973 acydburn
271 7093 davidmj
                                                // This can get really nasty... therefore we only do the last six months
272 7093 davidmj
                                                $get_from_time = time() - (6 * 4 * 7 * 24 * 60 * 60);
273 5973 acydburn
274 7093 davidmj
                                                // Select forum ids, do not include categories
275 7093 davidmj
                                                $sql = 'SELECT forum_id
276 7093 davidmj
                                                        FROM ' . FORUMS_TABLE . '
277 7093 davidmj
                                                        WHERE forum_type <> ' . FORUM_CAT;
278 7093 davidmj
                                                $result = $db->sql_query($sql);
279 8688 acydburn
280 7093 davidmj
                                                $forum_ids = array();
281 7093 davidmj
                                                while ($row = $db->sql_fetchrow($result))
282 7093 davidmj
                                                {
283 7093 davidmj
                                                        $forum_ids[] = $row['forum_id'];
284 7093 davidmj
                                                }
285 7093 davidmj
                                                $db->sql_freeresult($result);
286 5973 acydburn
287 7093 davidmj
                                                // Any global announcements? ;)
288 7093 davidmj
                                                $forum_ids[] = 0;
289 5973 acydburn
290 7093 davidmj
                                                // Now go through the forums and get us some topics...
291 7093 davidmj
                                                foreach ($forum_ids as $forum_id)
292 7093 davidmj
                                                {
293 7093 davidmj
                                                        $sql = 'SELECT p.poster_id, p.topic_id
294 7093 davidmj
                                                                FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t
295 7093 davidmj
                                                                WHERE t.forum_id = ' . $forum_id . '
296 7093 davidmj
                                                                        AND t.topic_moved_id = 0
297 7093 davidmj
                                                                        AND t.topic_last_post_time > ' . $get_from_time . '
298 7093 davidmj
                                                                        AND t.topic_id = p.topic_id
299 7093 davidmj
                                                                        AND p.poster_id <> ' . ANONYMOUS . '
300 7093 davidmj
                                                                GROUP BY p.poster_id, p.topic_id';
301 7093 davidmj
                                                        $result = $db->sql_query($sql);
302 5973 acydburn
303 7093 davidmj
                                                        $posted = array();
304 7093 davidmj
                                                        while ($row = $db->sql_fetchrow($result))
305 7093 davidmj
                                                        {
306 7093 davidmj
                                                                $posted[$row['poster_id']][] = $row['topic_id'];
307 7093 davidmj
                                                        }
308 7093 davidmj
                                                        $db->sql_freeresult($result);
309 7093 davidmj
310 7093 davidmj
                                                        $sql_ary = array();
311 7093 davidmj
                                                        foreach ($posted as $user_id => $topic_row)
312 7093 davidmj
                                                        {
313 7093 davidmj
                                                                foreach ($topic_row as $topic_id)
314 7093 davidmj
                                                                {
315 7093 davidmj
                                                                        $sql_ary[] = array(
316 7961 acydburn
                                                                                'user_id'                => (int) $user_id,
317 7961 acydburn
                                                                                'topic_id'                => (int) $topic_id,
318 7093 davidmj
                                                                                'topic_posted'        => 1,
319 7093 davidmj
                                                                        );
320 7093 davidmj
                                                                }
321 7093 davidmj
                                                        }
322 7093 davidmj
                                                        unset($posted);
323 7093 davidmj
324 7118 acydburn
                                                        if (sizeof($sql_ary))
325 7118 acydburn
                                                        {
326 7118 acydburn
                                                                $db->sql_multi_insert(TOPICS_POSTED_TABLE, $sql_ary);
327 7118 acydburn
                                                        }
328 5973 acydburn
                                                }
329 8688 acydburn
330 7093 davidmj
                                                add_log('admin', 'LOG_RESYNC_POST_MARKING');
331 7093 davidmj
                                        break;
332 7612 davidmj
333 7612 davidmj
                                        case 'purge_cache':
334 7612 davidmj
                                                if ((int) $user->data['user_type'] !== USER_FOUNDER)
335 7612 davidmj
                                                {
336 7612 davidmj
                                                        trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
337 7612 davidmj
                                                }
338 7612 davidmj
339 7612 davidmj
                                                global $cache;
340 7612 davidmj
                                                $cache->purge();
341 7803 acydburn
342 7803 acydburn
                                                // Clear permissions
343 7803 acydburn
                                                $auth->acl_clear_prefetch();
344 8253 kellanved
                                                cache_moderators();
345 7803 acydburn
346 7612 davidmj
                                                add_log('admin', 'LOG_PURGE_CACHE');
347 7612 davidmj
                                        break;
348 9889 acydburn
349 9714 Kellanved
                                        case 'purge_sessions':
350 9714 Kellanved
                                                if ((int) $user->data['user_type'] !== USER_FOUNDER)
351 9714 Kellanved
                                                {
352 9714 Kellanved
                                                        trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
353 9714 Kellanved
                                                }
354 9889 acydburn
355 9714 Kellanved
                                                $tables = array(CONFIRM_TABLE, SESSIONS_TABLE);
356 9889 acydburn
357 9714 Kellanved
                                                foreach ($tables as $table)
358 9714 Kellanved
                                                {
359 9718 Kellanved
                                                        switch ($db->sql_layer)
360 9718 Kellanved
                                                        {
361 9718 Kellanved
                                                                case 'sqlite':
362 9718 Kellanved
                                                                case 'firebird':
363 9718 Kellanved
                                                                        $db->sql_query("DELETE FROM $table");
364 9718 Kellanved
                                                                break;
365 9718 Kellanved
366 9718 Kellanved
                                                                default:
367 9718 Kellanved
                                                                        $db->sql_query("TRUNCATE TABLE $table");
368 9718 Kellanved
                                                                break;
369 9718 Kellanved
                                                        }
370 9714 Kellanved
                                                }
371 9889 acydburn
372 9714 Kellanved
                                                // let's restore the admin session
373 9714 Kellanved
                                                $reinsert_ary = array(
374 9714 Kellanved
                                                                'session_id'                        => (string) $user->session_id,
375 9714 Kellanved
                                                                'session_page'                        => (string) substr($user->page['page'], 0, 199),
376 9714 Kellanved
                                                                'session_forum_id'                => $user->page['forum'],
377 9714 Kellanved
                                                                'session_user_id'                => (int) $user->data['user_id'],
378 9714 Kellanved
                                                                'session_start'                        => (int) $user->data['session_start'],
379 9714 Kellanved
                                                                'session_last_visit'        => (int) $user->data['session_last_visit'],
380 9714 Kellanved
                                                                'session_time'                        => (int) $user->time_now,
381 9714 Kellanved
                                                                'session_browser'                => (string) trim(substr($user->browser, 0, 149)),
382 9714 Kellanved
                                                                'session_forwarded_for'        => (string) $user->forwarded_for,
383 9714 Kellanved
                                                                'session_ip'                        => (string) $user->ip,
384 9714 Kellanved
                                                                'session_autologin'                => (int) $user->data['session_autologin'],
385 9714 Kellanved
                                                                'session_admin'                        => 1,
386 9714 Kellanved
                                                                'session_viewonline'        => (int) $user->data['session_viewonline'],
387 9714 Kellanved
                                                );
388 9889 acydburn
389 9714 Kellanved
                                                $sql = 'INSERT INTO ' . SESSIONS_TABLE . ' ' . $db->sql_build_array('INSERT', $reinsert_ary);
390 9714 Kellanved
                                                $db->sql_query($sql);
391 9889 acydburn
392 9714 Kellanved
                                                add_log('admin', 'LOG_PURGE_SESSIONS');
393 9714 Kellanved
                                        break;
394 5973 acydburn
                                }
395 7093 davidmj
                        }
396 5303 acydburn
                }
397 5303 acydburn
398 9880 aptx
                // Version check
399 9880 aptx
                $user->add_lang('install');
400 9880 aptx
401 10458 jelly_doughnut
                if ($auth->acl_get('a_server') && version_compare(PHP_VERSION, '5.2.0', '<'))
402 10458 jelly_doughnut
                {
403 10458 jelly_doughnut
                        $template->assign_vars(array(
404 10458 jelly_doughnut
                                'S_PHP_VERSION_OLD'        => true,
405 10458 jelly_doughnut
                                'L_PHP_VERSION_OLD'        => sprintf($user->lang['PHP_VERSION_OLD'], '<a href="http://www.phpbb.com/community/viewtopic.php?f=14&amp;t=1958605">', '</a>'),
406 10458 jelly_doughnut
                        ));
407 10458 jelly_doughnut
                }
408 10458 jelly_doughnut
409 9880 aptx
                $latest_version_info = false;
410 9880 aptx
                if (($latest_version_info = obtain_latest_version_info(request_var('versioncheck_force', false))) === false)
411 9880 aptx
                {
412 9880 aptx
                        $template->assign_var('S_VERSIONCHECK_FAIL', true);
413 9880 aptx
                }
414 9880 aptx
                else
415 9880 aptx
                {
416 9880 aptx
                        $latest_version_info = explode("\n", $latest_version_info);
417 9889 acydburn
418 9889 acydburn
                        $template->assign_vars(array(
419 11315 git-gate
                                'S_VERSION_UP_TO_DATE'        => phpbb_version_compare(trim($latest_version_info[0]), $config['version'], '<='),
420 9889 acydburn
                        ));
421 9880 aptx
                }
422 9880 aptx
423 5303 acydburn
                // Get forum statistics
424 5303 acydburn
                $total_posts = $config['num_posts'];
425 5303 acydburn
                $total_topics = $config['num_topics'];
426 5303 acydburn
                $total_users = $config['num_users'];
427 5303 acydburn
                $total_files = $config['num_files'];
428 5303 acydburn
429 5303 acydburn
                $start_date = $user->format_date($config['board_startdate']);
430 5303 acydburn
431 5303 acydburn
                $boarddays = (time() - $config['board_startdate']) / 86400;
432 5303 acydburn
433 5303 acydburn
                $posts_per_day = sprintf('%.2f', $total_posts / $boarddays);
434 5303 acydburn
                $topics_per_day = sprintf('%.2f', $total_topics / $boarddays);
435 5303 acydburn
                $users_per_day = sprintf('%.2f', $total_users / $boarddays);
436 5303 acydburn
                $files_per_day = sprintf('%.2f', $total_files / $boarddays);
437 5303 acydburn
438 8389 acydburn
                $upload_dir_size = get_formatted_filesize($config['upload_dir_size']);
439 8688 acydburn
440 5303 acydburn
                $avatar_dir_size = 0;
441 5303 acydburn
442 5303 acydburn
                if ($avatar_dir = @opendir($phpbb_root_path . $config['avatar_path']))
443 5303 acydburn
                {
444 5743 davidmj
                        while (($file = readdir($avatar_dir)) !== false)
445 5303 acydburn
                        {
446 6459 acydburn
                                if ($file[0] != '.' && $file != 'CVS' && strpos($file, 'index.') === false)
447 5303 acydburn
                                {
448 5303 acydburn
                                        $avatar_dir_size += filesize($phpbb_root_path . $config['avatar_path'] . '/' . $file);
449 5303 acydburn
                                }
450 5303 acydburn
                        }
451 8211 acydburn
                        closedir($avatar_dir);
452 5303 acydburn
453 8389 acydburn
                        $avatar_dir_size = get_formatted_filesize($avatar_dir_size);
454 5303 acydburn
                }
455 5303 acydburn
                else
456 5303 acydburn
                {
457 5303 acydburn
                        // Couldn't open Avatar dir.
458 5303 acydburn
                        $avatar_dir_size = $user->lang['NOT_AVAILABLE'];
459 5303 acydburn
                }
460 5303 acydburn
461 5303 acydburn
                if ($posts_per_day > $total_posts)
462 5303 acydburn
                {
463 5303 acydburn
                        $posts_per_day = $total_posts;
464 5303 acydburn
                }
465 5303 acydburn
466 5303 acydburn
                if ($topics_per_day > $total_topics)
467 5303 acydburn
                {
468 5303 acydburn
                        $topics_per_day = $total_topics;
469 5303 acydburn
                }
470 5303 acydburn
471 5303 acydburn
                if ($users_per_day > $total_users)
472 5303 acydburn
                {
473 5303 acydburn
                        $users_per_day = $total_users;
474 5303 acydburn
                }
475 5303 acydburn
476 5303 acydburn
                if ($files_per_day > $total_files)
477 5303 acydburn
                {
478 5303 acydburn
                        $files_per_day = $total_files;
479 5303 acydburn
                }
480 5303 acydburn
481 6383 acydburn
                if ($config['allow_attachments'] || $config['allow_pm_attach'])
482 6383 acydburn
                {
483 6383 acydburn
                        $sql = 'SELECT COUNT(attach_id) AS total_orphan
484 6383 acydburn
                                FROM ' . ATTACHMENTS_TABLE . '
485 6511 acydburn
                                WHERE is_orphan = 1
486 6511 acydburn
                                        AND filetime < ' . (time() - 3*60*60);
487 6383 acydburn
                        $result = $db->sql_query($sql);
488 6383 acydburn
                        $total_orphan = (int) $db->sql_fetchfield('total_orphan');
489 6383 acydburn
                        $db->sql_freeresult($result);
490 6383 acydburn
                }
491 6383 acydburn
                else
492 6383 acydburn
                {
493 6383 acydburn
                        $total_orphan = false;
494 6383 acydburn
                }
495 6364 acydburn
496 5303 acydburn
                $dbsize = get_database_size();
497 5303 acydburn
498 5303 acydburn
                $template->assign_vars(array(
499 5303 acydburn
                        'TOTAL_POSTS'                => $total_posts,
500 5303 acydburn
                        'POSTS_PER_DAY'                => $posts_per_day,
501 5303 acydburn
                        'TOTAL_TOPICS'                => $total_topics,
502 5303 acydburn
                        'TOPICS_PER_DAY'        => $topics_per_day,
503 5303 acydburn
                        'TOTAL_USERS'                => $total_users,
504 5303 acydburn
                        'USERS_PER_DAY'                => $users_per_day,
505 5303 acydburn
                        'TOTAL_FILES'                => $total_files,
506 5303 acydburn
                        'FILES_PER_DAY'                => $files_per_day,
507 5303 acydburn
                        'START_DATE'                => $start_date,
508 5303 acydburn
                        'AVATAR_DIR_SIZE'        => $avatar_dir_size,
509 5303 acydburn
                        'DBSIZE'                        => $dbsize,
510 5303 acydburn
                        'UPLOAD_DIR_SIZE'        => $upload_dir_size,
511 6364 acydburn
                        'TOTAL_ORPHAN'                => $total_orphan,
512 6383 acydburn
                        'S_TOTAL_ORPHAN'        => ($total_orphan === false) ? false : true,
513 9737 rxu
                        'GZIP_COMPRESSION'        => ($config['gzip_compress'] && @extension_loaded('zlib')) ? $user->lang['ON'] : $user->lang['OFF'],
514 6161 acydburn
                        'DATABASE_INFO'                => $db->sql_server_info(),
515 7940 acydburn
                        'BOARD_VERSION'                => $config['version'],
516 5303 acydburn
517 8334 aptx
                        'U_ACTION'                        => $this->u_action,
518 6161 acydburn
                        'U_ADMIN_LOG'                => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=logs&amp;mode=admin'),
519 6394 grahamje
                        'U_INACTIVE_USERS'        => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=inactive&amp;mode=list'),
520 9880 aptx
                        'U_VERSIONCHECK'        => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=update&amp;mode=version_check'),
521 11321 git-gate
                        'U_VERSIONCHECK_FORCE'        => append_sid("{$phpbb_admin_path}index.$phpEx", 'versioncheck_force=1'),
522 5303 acydburn
523 6974 naderman
                        'S_ACTION_OPTIONS'        => ($auth->acl_get('a_board')) ? true : false,
524 7612 davidmj
                        'S_FOUNDER'                        => ($user->data['user_type'] == USER_FOUNDER) ? true : false,
525 5303 acydburn
                        )
526 5303 acydburn
                );
527 5303 acydburn
528 5553 acydburn
                $log_data = array();
529 10991 git-gate
                $log_count = false;
530 5303 acydburn
531 5553 acydburn
                if ($auth->acl_get('a_viewlogs'))
532 5303 acydburn
                {
533 5553 acydburn
                        view_log('admin', $log_data, $log_count, 5);
534 5553 acydburn
535 5553 acydburn
                        foreach ($log_data as $row)
536 5553 acydburn
                        {
537 5553 acydburn
                                $template->assign_block_vars('log', array(
538 6650 acydburn
                                        'USERNAME'        => $row['username_full'],
539 5553 acydburn
                                        'IP'                => $row['ip'],
540 5553 acydburn
                                        'DATE'                => $user->format_date($row['time']),
541 5553 acydburn
                                        'ACTION'        => $row['action'])
542 5553 acydburn
                                );
543 5553 acydburn
                        }
544 5303 acydburn
                }
545 5553 acydburn
546 5303 acydburn
                if ($auth->acl_get('a_user'))
547 5303 acydburn
                {
548 10081 acydburn
                        $user->add_lang('memberlist');
549 10081 acydburn
550 6394 grahamje
                        $inactive = array();
551 6394 grahamje
                        $inactive_count = 0;
552 5303 acydburn
553 6394 grahamje
                        view_inactive_users($inactive, $inactive_count, 10);
554 6394 grahamje
555 6394 grahamje
                        foreach ($inactive as $row)
556 5303 acydburn
                        {
557 5303 acydburn
                                $template->assign_block_vars('inactive', array(
558 6394 grahamje
                                        'INACTIVE_DATE'        => $user->format_date($row['user_inactive_time']),
559 10081 acydburn
                                        'REMINDED_DATE'        => $user->format_date($row['user_reminded_time']),
560 6394 grahamje
                                        'JOINED'                => $user->format_date($row['user_regdate']),
561 6135 acydburn
                                        'LAST_VISIT'        => (!$row['user_lastvisit']) ? ' - ' : $user->format_date($row['user_lastvisit']),
562 10081 acydburn
563 6394 grahamje
                                        'REASON'                => $row['inactive_reason'],
564 5303 acydburn
                                        'USER_ID'                => $row['user_id'],
565 10081 acydburn
                                        'POSTS'                        => ($row['user_posts']) ? $row['user_posts'] : 0,
566 10081 acydburn
                                        'REMINDED'                => $row['user_reminded'],
567 10081 acydburn
568 10081 acydburn
                                        'REMINDED_EXPLAIN'        => $user->lang('USER_LAST_REMINDED', (int) $row['user_reminded'], $user->format_date($row['user_reminded_time'])),
569 10081 acydburn
570 10081 acydburn
                                        'USERNAME_FULL'                => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], false, append_sid("{$phpbb_admin_path}index.$phpEx", 'i=users&amp;mode=overview')),
571 10081 acydburn
                                        'USERNAME'                        => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']),
572 10081 acydburn
                                        'USER_COLOR'                => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']),
573 10081 acydburn
574 10081 acydburn
                                        'U_USER_ADMIN'        => append_sid("{$phpbb_admin_path}index.$phpEx", "i=users&amp;mode=overview&amp;u={$row['user_id']}"),
575 10081 acydburn
                                        'U_SEARCH_USER'        => ($auth->acl_get('u_search')) ? append_sid("{$phpbb_root_path}search.$phpEx", "author_id={$row['user_id']}&amp;sr=posts") : '',
576 10081 acydburn
                                ));
577 5303 acydburn
                        }
578 5303 acydburn
579 5303 acydburn
                        $option_ary = array('activate' => 'ACTIVATE', 'delete' => 'DELETE');
580 5303 acydburn
                        if ($config['email_enable'])
581 5303 acydburn
                        {
582 5303 acydburn
                                $option_ary += array('remind' => 'REMIND');
583 5303 acydburn
                        }
584 5303 acydburn
585 5303 acydburn
                        $template->assign_vars(array(
586 5303 acydburn
                                'S_INACTIVE_USERS'                => true,
587 5303 acydburn
                                'S_INACTIVE_OPTIONS'        => build_select($option_ary))
588 5303 acydburn
                        );
589 5303 acydburn
                }
590 5973 acydburn
591 6276 grahamje
                // Warn if install is still present
592 9654 rxu
                if (file_exists($phpbb_root_path . 'install') && !is_file($phpbb_root_path . 'install'))
593 6276 grahamje
                {
594 6276 grahamje
                        $template->assign_var('S_REMOVE_INSTALL', true);
595 6276 grahamje
                }
596 6276 grahamje
597 9528 toonarmy
                if (!defined('PHPBB_DISABLE_CONFIG_CHECK') && file_exists($phpbb_root_path . 'config.' . $phpEx) && phpbb_is_writable($phpbb_root_path . 'config.' . $phpEx))
598 8688 acydburn
                {
599 9055 acydburn
                        // World-Writable? (000x)
600 9055 acydburn
                        $template->assign_var('S_WRITABLE_CONFIG', (bool) (@fileperms($phpbb_root_path . 'config.' . $phpEx) & 0x0002));
601 8688 acydburn
                }
602 8688 acydburn
603 11542 git-gate
                if (extension_loaded('mbstring'))
604 11542 git-gate
                {
605 11542 git-gate
                        $template->assign_vars(array(
606 11542 git-gate
                                'S_MBSTRING_LOADED'                                                => true,
607 11542 git-gate
                                'S_MBSTRING_FUNC_OVERLOAD_FAIL'                        => (intval(@ini_get('mbstring.func_overload')) & (MB_OVERLOAD_MAIL | MB_OVERLOAD_STRING)),
608 11542 git-gate
                                'S_MBSTRING_ENCODING_TRANSLATION_FAIL'        => (@ini_get('mbstring.encoding_translation') != 0),
609 11542 git-gate
                                'S_MBSTRING_HTTP_INPUT_FAIL'                        => (@ini_get('mbstring.http_input') != 'pass'),
610 11542 git-gate
                                'S_MBSTRING_HTTP_OUTPUT_FAIL'                        => (@ini_get('mbstring.http_output') != 'pass'),
611 11542 git-gate
                        ));
612 11542 git-gate
                }
613 11542 git-gate
614 9351 acydburn
                // Fill dbms version if not yet filled
615 9351 acydburn
                if (empty($config['dbms_version']))
616 9351 acydburn
                {
617 9351 acydburn
                        set_config('dbms_version', $db->sql_server_info(true));
618 9351 acydburn
                }
619 9351 acydburn
620 5303 acydburn
                $this->tpl_name = 'acp_main';
621 5310 acydburn
                $this->page_title = 'ACP_MAIN';
622 5303 acydburn
        }
623 5303 acydburn
}
624 5303 acydburn
625 5303 acydburn
?>