~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/php/phpBB3/includes/acp/acp_main.php

  • Committer: dcoles
  • Date: 2008-02-13 04:10:55 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:443
Added Forum application along with unmodifed version of phpBB3 "Olympus" 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
/**
 
3
*
 
4
* @package acp
 
5
* @version $Id: acp_main.php,v 1.52 2007/11/27 15:13:50 kellanved Exp $
 
6
* @copyright (c) 2005 phpBB Group
 
7
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
 
8
*
 
9
*/
 
10
 
 
11
/**
 
12
* @ignore
 
13
*/
 
14
if (!defined('IN_PHPBB'))
 
15
{
 
16
        exit;
 
17
}
 
18
 
 
19
/**
 
20
* @package acp
 
21
*/
 
22
class acp_main
 
23
{
 
24
        var $u_action;
 
25
 
 
26
        function main($id, $mode)
 
27
        {
 
28
                global $config, $db, $user, $auth, $template;
 
29
                global $phpbb_root_path, $phpbb_admin_path, $phpEx;
 
30
 
 
31
                // Show restore permissions notice
 
32
                if ($user->data['user_perm_from'] && $auth->acl_get('a_switchperm'))
 
33
                {
 
34
                        $this->tpl_name = 'acp_main';
 
35
                        $this->page_title = 'ACP_MAIN';
 
36
 
 
37
                        $sql = 'SELECT user_id, username, user_colour
 
38
                                FROM ' . USERS_TABLE . '
 
39
                                WHERE user_id = ' . $user->data['user_perm_from'];
 
40
                        $result = $db->sql_query($sql);
 
41
                        $user_row = $db->sql_fetchrow($result);
 
42
                        $db->sql_freeresult($result);
 
43
 
 
44
                        $perm_from = '<strong' . (($user_row['user_colour']) ? ' style="color: #' . $user_row['user_colour'] . '">' : '>');
 
45
                        $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
                        $perm_from .= $user_row['username'];
 
47
                        $perm_from .= ($user_row['user_id'] != ANONYMOUS) ? '</a>' : '';
 
48
                        $perm_from .= '</strong>';
 
49
 
 
50
                        $template->assign_vars(array(
 
51
                                'S_RESTORE_PERMISSIONS'         => true,
 
52
                                'U_RESTORE_PERMISSIONS'         => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=restore_perm'),
 
53
                                'PERM_FROM'                                     => $perm_from,
 
54
                                'L_PERMISSIONS_TRANSFERRED_EXPLAIN'     => sprintf($user->lang['PERMISSIONS_TRANSFERRED_EXPLAIN'], $perm_from, append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=restore_perm')),
 
55
                        ));
 
56
 
 
57
                        return;
 
58
                }
 
59
 
 
60
                $action = request_var('action', '');
 
61
 
 
62
                if ($action)
 
63
                {
 
64
                        if (!confirm_box(true))
 
65
                        {
 
66
                                switch ($action)
 
67
                                {
 
68
                                        case 'online':
 
69
                                                $confirm = true;
 
70
                                                $confirm_lang = 'RESET_ONLINE_CONFIRM';
 
71
                                        break;
 
72
                                        case 'stats':
 
73
                                                $confirm = true;
 
74
                                                $confirm_lang = 'RESYNC_STATS_CONFIRM';
 
75
                                        break;
 
76
                                        case 'user':
 
77
                                                $confirm = true;
 
78
                                                $confirm_lang = 'RESYNC_POSTCOUNTS_CONFIRM';
 
79
                                        break;
 
80
                                        case 'date':
 
81
                                                $confirm = true;
 
82
                                                $confirm_lang = 'RESET_DATE_CONFIRM';
 
83
                                        break;
 
84
                                        case 'db_track':
 
85
                                                $confirm = true;
 
86
                                                $confirm_lang = 'RESYNC_POST_MARKING_CONFIRM';
 
87
                                        break;
 
88
                                        case 'purge_cache':
 
89
                                                $confirm = true;
 
90
                                                $confirm_lang = 'PURGE_CACHE_CONFIRM';
 
91
                                        break;
 
92
 
 
93
                                        default:
 
94
                                                $confirm = true;
 
95
                                                $confirm_lang = 'CONFIRM_OPERATION';
 
96
                                }
 
97
 
 
98
                                if ($confirm)
 
99
                                {
 
100
                                        confirm_box(false, $user->lang[$confirm_lang], build_hidden_fields(array(
 
101
                                                'i'                     => $id,
 
102
                                                'mode'          => $mode,
 
103
                                                'action'        => $action,
 
104
                                        )));
 
105
                                }
 
106
                        }
 
107
                        else
 
108
                        {
 
109
                                switch ($action)
 
110
                                {
 
111
                                        case 'online':
 
112
                                                if (!$auth->acl_get('a_board'))
 
113
                                                {
 
114
                                                        trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
 
115
                                                }
 
116
 
 
117
                                                set_config('record_online_users', 1, true);
 
118
                                                set_config('record_online_date', time(), true);
 
119
                                                add_log('admin', 'LOG_RESET_ONLINE');
 
120
                                        break;
 
121
 
 
122
                                        case 'stats':
 
123
                                                if (!$auth->acl_get('a_board'))
 
124
                                                {
 
125
                                                        trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
 
126
                                                }
 
127
 
 
128
                                                $sql = 'SELECT COUNT(post_id) AS stat
 
129
                                                        FROM ' . POSTS_TABLE . '
 
130
                                                        WHERE post_approved = 1';
 
131
                                                $result = $db->sql_query($sql);
 
132
                                                set_config('num_posts', (int) $db->sql_fetchfield('stat'), true);
 
133
                                                $db->sql_freeresult($result);
 
134
 
 
135
                                                $sql = 'SELECT COUNT(topic_id) AS stat
 
136
                                                        FROM ' . TOPICS_TABLE . '
 
137
                                                        WHERE topic_approved = 1';
 
138
                                                $result = $db->sql_query($sql);
 
139
                                                set_config('num_topics', (int) $db->sql_fetchfield('stat'), true);
 
140
                                                $db->sql_freeresult($result);
 
141
 
 
142
                                                $sql = 'SELECT COUNT(user_id) AS stat
 
143
                                                        FROM ' . USERS_TABLE . '
 
144
                                                        WHERE user_type IN (' . USER_NORMAL . ',' . USER_FOUNDER . ')';
 
145
                                                $result = $db->sql_query($sql);
 
146
                                                set_config('num_users', (int) $db->sql_fetchfield('stat'), true);
 
147
                                                $db->sql_freeresult($result);
 
148
 
 
149
                                                $sql = 'SELECT COUNT(attach_id) as stat
 
150
                                                        FROM ' . ATTACHMENTS_TABLE . '
 
151
                                                        WHERE is_orphan = 0';
 
152
                                                $result = $db->sql_query($sql);
 
153
                                                set_config('num_files', (int) $db->sql_fetchfield('stat'), true);
 
154
                                                $db->sql_freeresult($result);
 
155
 
 
156
                                                $sql = 'SELECT SUM(filesize) as stat
 
157
                                                        FROM ' . ATTACHMENTS_TABLE . '
 
158
                                                        WHERE is_orphan = 0';
 
159
                                                $result = $db->sql_query($sql);
 
160
                                                set_config('upload_dir_size', (int) $db->sql_fetchfield('stat'), true);
 
161
                                                $db->sql_freeresult($result);
 
162
                                                
 
163
                                                if (!function_exists('update_last_username'))
 
164
                                                {
 
165
                                                        include($phpbb_root_path . "includes/functions_user.$phpEx");
 
166
                                                }
 
167
                                                update_last_username();
 
168
 
 
169
                                                add_log('admin', 'LOG_RESYNC_STATS');
 
170
                                        break;
 
171
 
 
172
                                        case 'user':
 
173
                                                if (!$auth->acl_get('a_board'))
 
174
                                                {
 
175
                                                        trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
 
176
                                                }
 
177
 
 
178
                                                $sql = 'SELECT COUNT(p.post_id) AS num_posts, u.user_id
 
179
                                                        FROM ' . USERS_TABLE . ' u
 
180
                                                        LEFT JOIN  ' . POSTS_TABLE . ' p ON (u.user_id = p.poster_id AND p.post_postcount = 1)
 
181
                                                        GROUP BY u.user_id';
 
182
                                                $result = $db->sql_query($sql);
 
183
 
 
184
                                                while ($row = $db->sql_fetchrow($result))
 
185
                                                {
 
186
                                                        $db->sql_query('UPDATE ' . USERS_TABLE . " SET user_posts = {$row['num_posts']} WHERE user_id = {$row['user_id']}");
 
187
                                                }
 
188
                                                $db->sql_freeresult($result);
 
189
 
 
190
                                                add_log('admin', 'LOG_RESYNC_POSTCOUNTS');
 
191
 
 
192
                                        break;
 
193
                        
 
194
                                        case 'date':
 
195
                                                if (!$auth->acl_get('a_board'))
 
196
                                                {
 
197
                                                        trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
 
198
                                                }
 
199
 
 
200
                                                set_config('board_startdate', time() - 1);
 
201
                                                add_log('admin', 'LOG_RESET_DATE');
 
202
                                        break;
 
203
                                
 
204
                                        case 'db_track':
 
205
                                                switch ($db->sql_layer)
 
206
                                                {
 
207
                                                        case 'sqlite':
 
208
                                                        case 'firebird':
 
209
                                                                $db->sql_query('DELETE FROM ' . TOPICS_POSTED_TABLE);
 
210
                                                        break;
 
211
 
 
212
                                                        default:
 
213
                                                                $db->sql_query('TRUNCATE TABLE ' . TOPICS_POSTED_TABLE);
 
214
                                                        break;
 
215
                                                }
 
216
 
 
217
                                                // This can get really nasty... therefore we only do the last six months
 
218
                                                $get_from_time = time() - (6 * 4 * 7 * 24 * 60 * 60);
 
219
 
 
220
                                                // Select forum ids, do not include categories
 
221
                                                $sql = 'SELECT forum_id
 
222
                                                        FROM ' . FORUMS_TABLE . '
 
223
                                                        WHERE forum_type <> ' . FORUM_CAT;
 
224
                                                $result = $db->sql_query($sql);
 
225
                                
 
226
                                                $forum_ids = array();
 
227
                                                while ($row = $db->sql_fetchrow($result))
 
228
                                                {
 
229
                                                        $forum_ids[] = $row['forum_id'];
 
230
                                                }
 
231
                                                $db->sql_freeresult($result);
 
232
 
 
233
                                                // Any global announcements? ;)
 
234
                                                $forum_ids[] = 0;
 
235
 
 
236
                                                // Now go through the forums and get us some topics...
 
237
                                                foreach ($forum_ids as $forum_id)
 
238
                                                {
 
239
                                                        $sql = 'SELECT p.poster_id, p.topic_id
 
240
                                                                FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t
 
241
                                                                WHERE t.forum_id = ' . $forum_id . '
 
242
                                                                        AND t.topic_moved_id = 0
 
243
                                                                        AND t.topic_last_post_time > ' . $get_from_time . '
 
244
                                                                        AND t.topic_id = p.topic_id
 
245
                                                                        AND p.poster_id <> ' . ANONYMOUS . '
 
246
                                                                GROUP BY p.poster_id, p.topic_id';
 
247
                                                        $result = $db->sql_query($sql);
 
248
 
 
249
                                                        $posted = array();
 
250
                                                        while ($row = $db->sql_fetchrow($result))
 
251
                                                        {
 
252
                                                                $posted[$row['poster_id']][] = $row['topic_id'];
 
253
                                                        }
 
254
                                                        $db->sql_freeresult($result);
 
255
 
 
256
                                                        $sql_ary = array();
 
257
                                                        foreach ($posted as $user_id => $topic_row)
 
258
                                                        {
 
259
                                                                foreach ($topic_row as $topic_id)
 
260
                                                                {
 
261
                                                                        $sql_ary[] = array(
 
262
                                                                                'user_id'               => (int) $user_id,
 
263
                                                                                'topic_id'              => (int) $topic_id,
 
264
                                                                                'topic_posted'  => 1,
 
265
                                                                        );
 
266
                                                                }
 
267
                                                        }
 
268
                                                        unset($posted);
 
269
 
 
270
                                                        if (sizeof($sql_ary))
 
271
                                                        {
 
272
                                                                $db->sql_multi_insert(TOPICS_POSTED_TABLE, $sql_ary);
 
273
                                                        }
 
274
                                                }
 
275
                        
 
276
                                                add_log('admin', 'LOG_RESYNC_POST_MARKING');
 
277
                                        break;
 
278
 
 
279
                                        case 'purge_cache':
 
280
                                                if ((int) $user->data['user_type'] !== USER_FOUNDER)
 
281
                                                {
 
282
                                                        trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
 
283
                                                }
 
284
 
 
285
                                                global $cache;
 
286
                                                $cache->purge();
 
287
 
 
288
                                                // Clear permissions
 
289
                                                $auth->acl_clear_prefetch();
 
290
                                                cache_moderators();
 
291
 
 
292
                                                add_log('admin', 'LOG_PURGE_CACHE');
 
293
                                        break;
 
294
                                }
 
295
                        }
 
296
                }
 
297
 
 
298
                // Get forum statistics
 
299
                $total_posts = $config['num_posts'];
 
300
                $total_topics = $config['num_topics'];
 
301
                $total_users = $config['num_users'];
 
302
                $total_files = $config['num_files'];
 
303
 
 
304
                $start_date = $user->format_date($config['board_startdate']);
 
305
 
 
306
                $boarddays = (time() - $config['board_startdate']) / 86400;
 
307
 
 
308
                $posts_per_day = sprintf('%.2f', $total_posts / $boarddays);
 
309
                $topics_per_day = sprintf('%.2f', $total_topics / $boarddays);
 
310
                $users_per_day = sprintf('%.2f', $total_users / $boarddays);
 
311
                $files_per_day = sprintf('%.2f', $total_files / $boarddays);
 
312
 
 
313
                $upload_dir_size = ($config['upload_dir_size'] >= 1048576) ? sprintf('%.2f ' . $user->lang['MB'], ($config['upload_dir_size'] / 1048576)) : (($config['upload_dir_size'] >= 1024) ? sprintf('%.2f ' . $user->lang['KB'], ($config['upload_dir_size'] / 1024)) : sprintf('%.2f ' . $user->lang['BYTES'], $config['upload_dir_size']));
 
314
 
 
315
                $avatar_dir_size = 0;
 
316
 
 
317
                if ($avatar_dir = @opendir($phpbb_root_path . $config['avatar_path']))
 
318
                {
 
319
                        while (($file = readdir($avatar_dir)) !== false)
 
320
                        {
 
321
                                if ($file[0] != '.' && $file != 'CVS' && strpos($file, 'index.') === false)
 
322
                                {
 
323
                                        $avatar_dir_size += filesize($phpbb_root_path . $config['avatar_path'] . '/' . $file);
 
324
                                }
 
325
                        }
 
326
                        closedir($avatar_dir);
 
327
 
 
328
                        // This bit of code translates the avatar directory size into human readable format
 
329
                        // Borrowed the code from the PHP.net annoted manual, origanally written by:
 
330
                        // Jesse (jesse@jess.on.ca)
 
331
                        $avatar_dir_size = ($avatar_dir_size >= 1048576) ? sprintf('%.2f ' . $user->lang['MB'], ($avatar_dir_size / 1048576)) : (($avatar_dir_size >= 1024) ? sprintf('%.2f ' . $user->lang['KB'], ($avatar_dir_size / 1024)) : sprintf('%.2f ' . $user->lang['BYTES'], $avatar_dir_size));
 
332
                }
 
333
                else
 
334
                {
 
335
                        // Couldn't open Avatar dir.
 
336
                        $avatar_dir_size = $user->lang['NOT_AVAILABLE'];
 
337
                }
 
338
 
 
339
                if ($posts_per_day > $total_posts)
 
340
                {
 
341
                        $posts_per_day = $total_posts;
 
342
                }
 
343
 
 
344
                if ($topics_per_day > $total_topics)
 
345
                {
 
346
                        $topics_per_day = $total_topics;
 
347
                }
 
348
 
 
349
                if ($users_per_day > $total_users)
 
350
                {
 
351
                        $users_per_day = $total_users;
 
352
                }
 
353
 
 
354
                if ($files_per_day > $total_files)
 
355
                {
 
356
                        $files_per_day = $total_files;
 
357
                }
 
358
 
 
359
                if ($config['allow_attachments'] || $config['allow_pm_attach'])
 
360
                {
 
361
                        $sql = 'SELECT COUNT(attach_id) AS total_orphan
 
362
                                FROM ' . ATTACHMENTS_TABLE . '
 
363
                                WHERE is_orphan = 1
 
364
                                        AND filetime < ' . (time() - 3*60*60);
 
365
                        $result = $db->sql_query($sql);
 
366
                        $total_orphan = (int) $db->sql_fetchfield('total_orphan');
 
367
                        $db->sql_freeresult($result);
 
368
                }
 
369
                else
 
370
                {
 
371
                        $total_orphan = false;
 
372
                }
 
373
 
 
374
                $dbsize = get_database_size();
 
375
 
 
376
                $template->assign_vars(array(
 
377
                        'TOTAL_POSTS'           => $total_posts,
 
378
                        'POSTS_PER_DAY'         => $posts_per_day,
 
379
                        'TOTAL_TOPICS'          => $total_topics,
 
380
                        'TOPICS_PER_DAY'        => $topics_per_day,
 
381
                        'TOTAL_USERS'           => $total_users,
 
382
                        'USERS_PER_DAY'         => $users_per_day,
 
383
                        'TOTAL_FILES'           => $total_files,
 
384
                        'FILES_PER_DAY'         => $files_per_day,
 
385
                        'START_DATE'            => $start_date,
 
386
                        'AVATAR_DIR_SIZE'       => $avatar_dir_size,
 
387
                        'DBSIZE'                        => $dbsize,
 
388
                        'UPLOAD_DIR_SIZE'       => $upload_dir_size,
 
389
                        'TOTAL_ORPHAN'          => $total_orphan,
 
390
                        'S_TOTAL_ORPHAN'        => ($total_orphan === false) ? false : true,
 
391
                        'GZIP_COMPRESSION'      => ($config['gzip_compress']) ? $user->lang['ON'] : $user->lang['OFF'],
 
392
                        'DATABASE_INFO'         => $db->sql_server_info(),
 
393
                        'BOARD_VERSION'         => $config['version'],
 
394
 
 
395
                        'U_ACTION'                      => append_sid("{$phpbb_admin_path}index.$phpEx"),
 
396
                        'U_ADMIN_LOG'           => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=logs&amp;mode=admin'),
 
397
                        'U_INACTIVE_USERS'      => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=inactive&amp;mode=list'),
 
398
 
 
399
                        'S_ACTION_OPTIONS'      => ($auth->acl_get('a_board')) ? true : false,
 
400
                        'S_FOUNDER'                     => ($user->data['user_type'] == USER_FOUNDER) ? true : false,
 
401
                        )
 
402
                );
 
403
 
 
404
                $log_data = array();
 
405
                $log_count = 0;
 
406
 
 
407
                if ($auth->acl_get('a_viewlogs'))
 
408
                {
 
409
                        view_log('admin', $log_data, $log_count, 5);
 
410
 
 
411
                        foreach ($log_data as $row)
 
412
                        {
 
413
                                $template->assign_block_vars('log', array(
 
414
                                        'USERNAME'      => $row['username_full'],
 
415
                                        'IP'            => $row['ip'],
 
416
                                        'DATE'          => $user->format_date($row['time']),
 
417
                                        'ACTION'        => $row['action'])
 
418
                                );
 
419
                        }
 
420
                }
 
421
 
 
422
                if ($auth->acl_get('a_user'))
 
423
                {
 
424
                        $inactive = array();
 
425
                        $inactive_count = 0;
 
426
 
 
427
                        view_inactive_users($inactive, $inactive_count, 10);
 
428
 
 
429
                        foreach ($inactive as $row)
 
430
                        {
 
431
                                $template->assign_block_vars('inactive', array(
 
432
                                        'INACTIVE_DATE' => $user->format_date($row['user_inactive_time']),
 
433
                                        'JOINED'                => $user->format_date($row['user_regdate']),
 
434
                                        'LAST_VISIT'    => (!$row['user_lastvisit']) ? ' - ' : $user->format_date($row['user_lastvisit']),
 
435
                                        'REASON'                => $row['inactive_reason'],
 
436
                                        'USER_ID'               => $row['user_id'],
 
437
                                        'USERNAME'              => $row['username'],
 
438
                                        'U_USER_ADMIN'  => append_sid("{$phpbb_admin_path}index.$phpEx", "i=users&amp;mode=overview&amp;u={$row['user_id']}"))
 
439
                                );
 
440
                        }
 
441
 
 
442
                        $option_ary = array('activate' => 'ACTIVATE', 'delete' => 'DELETE');
 
443
                        if ($config['email_enable'])
 
444
                        {
 
445
                                $option_ary += array('remind' => 'REMIND');
 
446
                        }
 
447
 
 
448
                        $template->assign_vars(array(
 
449
                                'S_INACTIVE_USERS'              => true,
 
450
                                'S_INACTIVE_OPTIONS'    => build_select($option_ary))
 
451
                        );
 
452
                }
 
453
 
 
454
                // Warn if install is still present
 
455
                if (file_exists($phpbb_root_path . 'install'))
 
456
                {
 
457
                        $template->assign_var('S_REMOVE_INSTALL', true);
 
458
                }
 
459
 
 
460
                $this->tpl_name = 'acp_main';
 
461
                $this->page_title = 'ACP_MAIN';
 
462
        }
 
463
}
 
464
 
 
465
?>
 
 
b'\\ No newline at end of file'