Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 551 |
| acp_main | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
8556 | |
0.00% |
0 / 547 |
| main | |
0.00% |
0 / 1 |
8556 | |
0.00% |
0 / 547 |
|||
| <?php | |
| /** | |
| * | |
| * This file is part of the phpBB Forum Software package. | |
| * | |
| * @copyright (c) phpBB Limited <https://www.phpbb.com> | |
| * @license GNU General Public License, version 2 (GPL-2.0) | |
| * | |
| * For full copyright and license information, please see | |
| * the docs/CREDITS.txt file. | |
| * | |
| */ | |
| /** | |
| * @ignore | |
| */ | |
| if (!defined('IN_PHPBB')) | |
| { | |
| exit; | |
| } | |
| class acp_main | |
| { | |
| var $u_action; | |
| function main($id, $mode) | |
| { | |
| global $config, $db, $cache, $user, $auth, $template, $request, $phpbb_log; | |
| global $phpbb_root_path, $phpbb_admin_path, $phpEx, $phpbb_container, $phpbb_dispatcher, $phpbb_filesystem; | |
| // Show restore permissions notice | |
| if ($user->data['user_perm_from'] && $auth->acl_get('a_switchperm')) | |
| { | |
| $this->tpl_name = 'acp_main'; | |
| $this->page_title = 'ACP_MAIN'; | |
| $sql = 'SELECT user_id, username, user_colour | |
| FROM ' . USERS_TABLE . ' | |
| WHERE user_id = ' . $user->data['user_perm_from']; | |
| $result = $db->sql_query($sql); | |
| $user_row = $db->sql_fetchrow($result); | |
| $db->sql_freeresult($result); | |
| $perm_from = get_username_string('full', $user_row['user_id'], $user_row['username'], $user_row['user_colour']); | |
| $template->assign_vars(array( | |
| 'S_RESTORE_PERMISSIONS' => true, | |
| 'U_RESTORE_PERMISSIONS' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=restore_perm'), | |
| 'PERM_FROM' => $perm_from, | |
| 'L_PERMISSIONS_TRANSFERRED_EXPLAIN' => sprintf($user->lang['PERMISSIONS_TRANSFERRED_EXPLAIN'], $perm_from, append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=restore_perm')), | |
| )); | |
| return; | |
| } | |
| $action = $request->variable('action', ''); | |
| if ($action) | |
| { | |
| if ($action === 'admlogout') | |
| { | |
| $user->unset_admin(); | |
| redirect(append_sid("{$phpbb_root_path}index.$phpEx")); | |
| } | |
| if (!confirm_box(true)) | |
| { | |
| switch ($action) | |
| { | |
| case 'online': | |
| $confirm = true; | |
| $confirm_lang = 'RESET_ONLINE_CONFIRM'; | |
| break; | |
| case 'stats': | |
| $confirm = true; | |
| $confirm_lang = 'RESYNC_STATS_CONFIRM'; | |
| break; | |
| case 'user': | |
| $confirm = true; | |
| $confirm_lang = 'RESYNC_POSTCOUNTS_CONFIRM'; | |
| break; | |
| case 'date': | |
| $confirm = true; | |
| $confirm_lang = 'RESET_DATE_CONFIRM'; | |
| break; | |
| case 'db_track': | |
| $confirm = true; | |
| $confirm_lang = 'RESYNC_POST_MARKING_CONFIRM'; | |
| break; | |
| case 'purge_cache': | |
| $confirm = true; | |
| $confirm_lang = 'PURGE_CACHE_CONFIRM'; | |
| break; | |
| case 'purge_sessions': | |
| $confirm = true; | |
| $confirm_lang = 'PURGE_SESSIONS_CONFIRM'; | |
| break; | |
| default: | |
| $confirm = true; | |
| $confirm_lang = 'CONFIRM_OPERATION'; | |
| } | |
| if ($confirm) | |
| { | |
| confirm_box(false, $user->lang[$confirm_lang], build_hidden_fields(array( | |
| 'i' => $id, | |
| 'mode' => $mode, | |
| 'action' => $action, | |
| ))); | |
| } | |
| } | |
| else | |
| { | |
| switch ($action) | |
| { | |
| case 'online': | |
| if (!$auth->acl_get('a_board')) | |
| { | |
| send_status_line(403, 'Forbidden'); | |
| trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING); | |
| } | |
| $config->set('record_online_users', 1, false); | |
| $config->set('record_online_date', time(), false); | |
| $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RESET_ONLINE'); | |
| if ($request->is_ajax()) | |
| { | |
| trigger_error('RESET_ONLINE_SUCCESS'); | |
| } | |
| break; | |
| case 'stats': | |
| if (!$auth->acl_get('a_board')) | |
| { | |
| send_status_line(403, 'Forbidden'); | |
| trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING); | |
| } | |
| $sql = 'SELECT COUNT(post_id) AS stat | |
| FROM ' . POSTS_TABLE . ' | |
| WHERE post_visibility = ' . ITEM_APPROVED; | |
| $result = $db->sql_query($sql); | |
| $config->set('num_posts', (int) $db->sql_fetchfield('stat'), false); | |
| $db->sql_freeresult($result); | |
| $sql = 'SELECT COUNT(topic_id) AS stat | |
| FROM ' . TOPICS_TABLE . ' | |
| WHERE topic_visibility = ' . ITEM_APPROVED; | |
| $result = $db->sql_query($sql); | |
| $config->set('num_topics', (int) $db->sql_fetchfield('stat'), false); | |
| $db->sql_freeresult($result); | |
| $sql = 'SELECT COUNT(user_id) AS stat | |
| FROM ' . USERS_TABLE . ' | |
| WHERE user_type IN (' . USER_NORMAL . ',' . USER_FOUNDER . ')'; | |
| $result = $db->sql_query($sql); | |
| $config->set('num_users', (int) $db->sql_fetchfield('stat'), false); | |
| $db->sql_freeresult($result); | |
| $sql = 'SELECT COUNT(attach_id) as stat | |
| FROM ' . ATTACHMENTS_TABLE . ' | |
| WHERE is_orphan = 0'; | |
| $result = $db->sql_query($sql); | |
| $config->set('num_files', (int) $db->sql_fetchfield('stat'), false); | |
| $db->sql_freeresult($result); | |
| $sql = 'SELECT SUM(filesize) as stat | |
| FROM ' . ATTACHMENTS_TABLE . ' | |
| WHERE is_orphan = 0'; | |
| $result = $db->sql_query($sql); | |
| $config->set('upload_dir_size', (float) $db->sql_fetchfield('stat'), false); | |
| $db->sql_freeresult($result); | |
| if (!function_exists('update_last_username')) | |
| { | |
| include($phpbb_root_path . "includes/functions_user.$phpEx"); | |
| } | |
| update_last_username(); | |
| $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RESYNC_STATS'); | |
| if ($request->is_ajax()) | |
| { | |
| trigger_error('RESYNC_STATS_SUCCESS'); | |
| } | |
| break; | |
| case 'user': | |
| if (!$auth->acl_get('a_board')) | |
| { | |
| send_status_line(403, 'Forbidden'); | |
| trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING); | |
| } | |
| // Resync post counts | |
| $start = $max_post_id = 0; | |
| // Find the maximum post ID, we can only stop the cycle when we've reached it | |
| $sql = 'SELECT MAX(forum_last_post_id) as max_post_id | |
| FROM ' . FORUMS_TABLE; | |
| $result = $db->sql_query($sql); | |
| $max_post_id = (int) $db->sql_fetchfield('max_post_id'); | |
| $db->sql_freeresult($result); | |
| // No maximum post id? :o | |
| if (!$max_post_id) | |
| { | |
| $sql = 'SELECT MAX(post_id) as max_post_id | |
| FROM ' . POSTS_TABLE; | |
| $result = $db->sql_query($sql); | |
| $max_post_id = (int) $db->sql_fetchfield('max_post_id'); | |
| $db->sql_freeresult($result); | |
| } | |
| // Still no maximum post id? Then we are finished | |
| if (!$max_post_id) | |
| { | |
| $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RESYNC_POSTCOUNTS'); | |
| break; | |
| } | |
| $step = ($config['num_posts']) ? (max((int) ($config['num_posts'] / 5), 20000)) : 20000; | |
| $db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_posts = 0'); | |
| while ($start < $max_post_id) | |
| { | |
| $sql = 'SELECT COUNT(post_id) AS num_posts, poster_id | |
| FROM ' . POSTS_TABLE . ' | |
| WHERE post_id BETWEEN ' . ($start + 1) . ' AND ' . ($start + $step) . ' | |
| AND post_postcount = 1 AND post_visibility = ' . ITEM_APPROVED . ' | |
| GROUP BY poster_id'; | |
| $result = $db->sql_query($sql); | |
| if ($row = $db->sql_fetchrow($result)) | |
| { | |
| do | |
| { | |
| $sql = 'UPDATE ' . USERS_TABLE . " SET user_posts = user_posts + {$row['num_posts']} WHERE user_id = {$row['poster_id']}"; | |
| $db->sql_query($sql); | |
| } | |
| while ($row = $db->sql_fetchrow($result)); | |
| } | |
| $db->sql_freeresult($result); | |
| $start += $step; | |
| } | |
| $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RESYNC_POSTCOUNTS'); | |
| if ($request->is_ajax()) | |
| { | |
| trigger_error('RESYNC_POSTCOUNTS_SUCCESS'); | |
| } | |
| break; | |
| case 'date': | |
| if (!$auth->acl_get('a_board')) | |
| { | |
| send_status_line(403, 'Forbidden'); | |
| trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING); | |
| } | |
| $config->set('board_startdate', time() - 1); | |
| $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RESET_DATE'); | |
| if ($request->is_ajax()) | |
| { | |
| trigger_error('RESET_DATE_SUCCESS'); | |
| } | |
| break; | |
| case 'db_track': | |
| switch ($db->get_sql_layer()) | |
| { | |
| case 'sqlite3': | |
| $db->sql_query('DELETE FROM ' . TOPICS_POSTED_TABLE); | |
| break; | |
| default: | |
| $db->sql_query('TRUNCATE TABLE ' . TOPICS_POSTED_TABLE); | |
| break; | |
| } | |
| // This can get really nasty... therefore we only do the last six months | |
| $get_from_time = time() - (6 * 4 * 7 * 24 * 60 * 60); | |
| // Select forum ids, do not include categories | |
| $sql = 'SELECT forum_id | |
| FROM ' . FORUMS_TABLE . ' | |
| WHERE forum_type <> ' . FORUM_CAT; | |
| $result = $db->sql_query($sql); | |
| $forum_ids = array(); | |
| while ($row = $db->sql_fetchrow($result)) | |
| { | |
| $forum_ids[] = $row['forum_id']; | |
| } | |
| $db->sql_freeresult($result); | |
| // Any global announcements? ;) | |
| $forum_ids[] = 0; | |
| // Now go through the forums and get us some topics... | |
| foreach ($forum_ids as $forum_id) | |
| { | |
| $sql = 'SELECT p.poster_id, p.topic_id | |
| FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t | |
| WHERE t.forum_id = ' . $forum_id . ' | |
| AND t.topic_moved_id = 0 | |
| AND t.topic_last_post_time > ' . $get_from_time . ' | |
| AND t.topic_id = p.topic_id | |
| AND p.poster_id <> ' . ANONYMOUS . ' | |
| GROUP BY p.poster_id, p.topic_id'; | |
| $result = $db->sql_query($sql); | |
| $posted = array(); | |
| while ($row = $db->sql_fetchrow($result)) | |
| { | |
| $posted[$row['poster_id']][] = $row['topic_id']; | |
| } | |
| $db->sql_freeresult($result); | |
| $sql_ary = array(); | |
| foreach ($posted as $user_id => $topic_row) | |
| { | |
| foreach ($topic_row as $topic_id) | |
| { | |
| $sql_ary[] = array( | |
| 'user_id' => (int) $user_id, | |
| 'topic_id' => (int) $topic_id, | |
| 'topic_posted' => 1, | |
| ); | |
| } | |
| } | |
| unset($posted); | |
| if (count($sql_ary)) | |
| { | |
| $db->sql_multi_insert(TOPICS_POSTED_TABLE, $sql_ary); | |
| } | |
| } | |
| $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_RESYNC_POST_MARKING'); | |
| if ($request->is_ajax()) | |
| { | |
| trigger_error('RESYNC_POST_MARKING_SUCCESS'); | |
| } | |
| break; | |
| case 'purge_cache': | |
| $config->increment('assets_version', 1); | |
| $cache->purge(); | |
| // Remove old renderers from the text_formatter service. Since this | |
| // operation is performed after the cache is purged, there is not "current" | |
| // renderer and in effect all renderers will be purged | |
| $phpbb_container->get('text_formatter.cache')->tidy(); | |
| // Clear permissions | |
| $auth->acl_clear_prefetch(); | |
| phpbb_cache_moderators($db, $cache, $auth); | |
| $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_PURGE_CACHE'); | |
| if ($request->is_ajax()) | |
| { | |
| trigger_error('PURGE_CACHE_SUCCESS'); | |
| } | |
| break; | |
| case 'purge_sessions': | |
| if ((int) $user->data['user_type'] !== USER_FOUNDER) | |
| { | |
| send_status_line(403, 'Forbidden'); | |
| trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING); | |
| } | |
| $tables = array(CONFIRM_TABLE, SESSIONS_TABLE); | |
| foreach ($tables as $table) | |
| { | |
| switch ($db->get_sql_layer()) | |
| { | |
| case 'sqlite3': | |
| $db->sql_query("DELETE FROM $table"); | |
| break; | |
| default: | |
| $db->sql_query("TRUNCATE TABLE $table"); | |
| break; | |
| } | |
| } | |
| // let's restore the admin session | |
| $reinsert_ary = array( | |
| 'session_id' => (string) $user->session_id, | |
| 'session_page' => (string) substr($user->page['page'], 0, 199), | |
| 'session_forum_id' => $user->page['forum'], | |
| 'session_user_id' => (int) $user->data['user_id'], | |
| 'session_start' => (int) $user->data['session_start'], | |
| 'session_last_visit' => (int) $user->data['session_last_visit'], | |
| 'session_time' => (int) $user->time_now, | |
| 'session_browser' => (string) trim(substr($user->browser, 0, 149)), | |
| 'session_forwarded_for' => (string) $user->forwarded_for, | |
| 'session_ip' => (string) $user->ip, | |
| 'session_autologin' => (int) $user->data['session_autologin'], | |
| 'session_admin' => 1, | |
| 'session_viewonline' => (int) $user->data['session_viewonline'], | |
| ); | |
| $sql = 'INSERT INTO ' . SESSIONS_TABLE . ' ' . $db->sql_build_array('INSERT', $reinsert_ary); | |
| $db->sql_query($sql); | |
| $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_PURGE_SESSIONS'); | |
| if ($request->is_ajax()) | |
| { | |
| trigger_error('PURGE_SESSIONS_SUCCESS'); | |
| } | |
| break; | |
| } | |
| } | |
| } | |
| // Version check | |
| $user->add_lang('install'); | |
| if ($auth->acl_get('a_server') && version_compare(PHP_VERSION, '7.1.3', '<')) | |
| { | |
| $template->assign_vars(array( | |
| 'S_PHP_VERSION_OLD' => true, | |
| 'L_PHP_VERSION_OLD' => sprintf($user->lang['PHP_VERSION_OLD'], PHP_VERSION, '7.1.3', '<a href="https://www.phpbb.com/support/docs/en/3.3/ug/quickstart/requirements">', '</a>'), | |
| )); | |
| } | |
| if ($auth->acl_get('a_board')) | |
| { | |
| $version_helper = $phpbb_container->get('version_helper'); | |
| try | |
| { | |
| $recheck = $request->variable('versioncheck_force', false); | |
| $updates_available = $version_helper->get_update_on_branch($recheck); | |
| $upgrades_available = $version_helper->get_suggested_updates(); | |
| if (!empty($upgrades_available)) | |
| { | |
| $upgrades_available = array_pop($upgrades_available); | |
| } | |
| $template->assign_vars(array( | |
| 'S_VERSION_UP_TO_DATE' => empty($updates_available), | |
| 'S_VERSION_UPGRADEABLE' => !empty($upgrades_available), | |
| 'UPGRADE_INSTRUCTIONS' => !empty($upgrades_available) ? $user->lang('UPGRADE_INSTRUCTIONS', $upgrades_available['current'], $upgrades_available['announcement']) : false, | |
| )); | |
| } | |
| catch (\RuntimeException $e) | |
| { | |
| $message = call_user_func_array(array($user, 'lang'), array_merge(array($e->getMessage()), $e->get_parameters())); | |
| $template->assign_vars(array( | |
| 'S_VERSIONCHECK_FAIL' => true, | |
| 'VERSIONCHECK_FAIL_REASON' => ($e->getMessage() !== 'VERSIONCHECK_FAIL') ? $message : '', | |
| )); | |
| } | |
| } | |
| else | |
| { | |
| // We set this template var to true, to not display an outdated version notice. | |
| $template->assign_var('S_VERSION_UP_TO_DATE', true); | |
| } | |
| // Incomplete update? | |
| if (phpbb_version_compare($config['version'], PHPBB_VERSION, '<')) | |
| { | |
| $template->assign_var('S_UPDATE_INCOMPLETE', true); | |
| } | |
| /** | |
| * Notice admin | |
| * | |
| * @event core.acp_main_notice | |
| * @since 3.1.0-RC3 | |
| */ | |
| $phpbb_dispatcher->dispatch('core.acp_main_notice'); | |
| // Get forum statistics | |
| $total_posts = $config['num_posts']; | |
| $total_topics = $config['num_topics']; | |
| $total_users = $config['num_users']; | |
| $total_files = $config['num_files']; | |
| $start_date = $user->format_date($config['board_startdate']); | |
| $boarddays = (time() - (int) $config['board_startdate']) / 86400; | |
| $posts_per_day = sprintf('%.2f', $total_posts / $boarddays); | |
| $topics_per_day = sprintf('%.2f', $total_topics / $boarddays); | |
| $users_per_day = sprintf('%.2f', $total_users / $boarddays); | |
| $files_per_day = sprintf('%.2f', $total_files / $boarddays); | |
| $upload_dir_size = get_formatted_filesize($config['upload_dir_size']); | |
| $avatar_dir_size = 0; | |
| if ($avatar_dir = @opendir($phpbb_root_path . $config['avatar_path'])) | |
| { | |
| while (($file = readdir($avatar_dir)) !== false) | |
| { | |
| if ($file[0] != '.' && $file != 'CVS' && strpos($file, 'index.') === false) | |
| { | |
| $avatar_dir_size += filesize($phpbb_root_path . $config['avatar_path'] . '/' . $file); | |
| } | |
| } | |
| closedir($avatar_dir); | |
| $avatar_dir_size = get_formatted_filesize($avatar_dir_size); | |
| } | |
| else | |
| { | |
| // Couldn't open Avatar dir. | |
| $avatar_dir_size = $user->lang['NOT_AVAILABLE']; | |
| } | |
| if ($posts_per_day > $total_posts) | |
| { | |
| $posts_per_day = $total_posts; | |
| } | |
| if ($topics_per_day > $total_topics) | |
| { | |
| $topics_per_day = $total_topics; | |
| } | |
| if ($users_per_day > $total_users) | |
| { | |
| $users_per_day = $total_users; | |
| } | |
| if ($files_per_day > $total_files) | |
| { | |
| $files_per_day = $total_files; | |
| } | |
| if ($config['allow_attachments'] || $config['allow_pm_attach']) | |
| { | |
| $sql = 'SELECT COUNT(attach_id) AS total_orphan | |
| FROM ' . ATTACHMENTS_TABLE . ' | |
| WHERE is_orphan = 1 | |
| AND filetime < ' . (time() - 3*60*60); | |
| $result = $db->sql_query($sql); | |
| $total_orphan = (int) $db->sql_fetchfield('total_orphan'); | |
| $db->sql_freeresult($result); | |
| } | |
| else | |
| { | |
| $total_orphan = false; | |
| } | |
| $dbsize = get_database_size(); | |
| $template->assign_vars(array( | |
| 'TOTAL_POSTS' => $total_posts, | |
| 'POSTS_PER_DAY' => $posts_per_day, | |
| 'TOTAL_TOPICS' => $total_topics, | |
| 'TOPICS_PER_DAY' => $topics_per_day, | |
| 'TOTAL_USERS' => $total_users, | |
| 'USERS_PER_DAY' => $users_per_day, | |
| 'TOTAL_FILES' => $total_files, | |
| 'FILES_PER_DAY' => $files_per_day, | |
| 'START_DATE' => $start_date, | |
| 'AVATAR_DIR_SIZE' => $avatar_dir_size, | |
| 'DBSIZE' => $dbsize, | |
| 'UPLOAD_DIR_SIZE' => $upload_dir_size, | |
| 'TOTAL_ORPHAN' => $total_orphan, | |
| 'S_TOTAL_ORPHAN' => ($total_orphan === false) ? false : true, | |
| 'GZIP_COMPRESSION' => ($config['gzip_compress'] && @extension_loaded('zlib')) ? $user->lang['ON'] : $user->lang['OFF'], | |
| 'DATABASE_INFO' => $db->sql_server_info(), | |
| 'PHP_VERSION_INFO' => PHP_VERSION, | |
| 'BOARD_VERSION' => $config['version'], | |
| 'U_ACTION' => $this->u_action, | |
| 'U_ADMIN_LOG' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=logs&mode=admin'), | |
| 'U_INACTIVE_USERS' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=inactive&mode=list'), | |
| 'U_VERSIONCHECK' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=update&mode=version_check'), | |
| 'U_VERSIONCHECK_FORCE' => append_sid("{$phpbb_admin_path}index.$phpEx", 'versioncheck_force=1'), | |
| 'U_ATTACH_ORPHAN' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=acp_attachments&mode=orphan'), | |
| 'S_VERSIONCHECK' => ($auth->acl_get('a_board')) ? true : false, | |
| 'S_ACTION_OPTIONS' => ($auth->acl_get('a_board')) ? true : false, | |
| 'S_FOUNDER' => ($user->data['user_type'] == USER_FOUNDER) ? true : false, | |
| ) | |
| ); | |
| $log_data = array(); | |
| $log_count = false; | |
| if ($auth->acl_get('a_viewlogs')) | |
| { | |
| view_log('admin', $log_data, $log_count, 5); | |
| foreach ($log_data as $row) | |
| { | |
| $template->assign_block_vars('log', array( | |
| 'USERNAME' => $row['username_full'], | |
| 'IP' => $row['ip'], | |
| 'DATE' => $user->format_date($row['time']), | |
| 'ACTION' => $row['action']) | |
| ); | |
| } | |
| } | |
| if ($auth->acl_get('a_user')) | |
| { | |
| $user->add_lang('memberlist'); | |
| $inactive = array(); | |
| $inactive_count = 0; | |
| view_inactive_users($inactive, $inactive_count, 10); | |
| foreach ($inactive as $row) | |
| { | |
| $template->assign_block_vars('inactive', array( | |
| 'INACTIVE_DATE' => $user->format_date($row['user_inactive_time']), | |
| 'REMINDED_DATE' => $user->format_date($row['user_reminded_time']), | |
| 'JOINED' => $user->format_date($row['user_regdate']), | |
| 'LAST_VISIT' => (!$row['user_lastvisit']) ? ' - ' : $user->format_date($row['user_lastvisit']), | |
| 'REASON' => $row['inactive_reason'], | |
| 'USER_ID' => $row['user_id'], | |
| 'POSTS' => ($row['user_posts']) ? $row['user_posts'] : 0, | |
| 'REMINDED' => $row['user_reminded'], | |
| 'REMINDED_EXPLAIN' => $user->lang('USER_LAST_REMINDED', (int) $row['user_reminded'], $user->format_date($row['user_reminded_time'])), | |
| 'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], false, append_sid("{$phpbb_admin_path}index.$phpEx", 'i=users&mode=overview')), | |
| 'USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']), | |
| 'USER_COLOR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']), | |
| 'U_USER_ADMIN' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=users&mode=overview&u={$row['user_id']}"), | |
| 'U_SEARCH_USER' => ($auth->acl_get('u_search')) ? append_sid("{$phpbb_root_path}search.$phpEx", "author_id={$row['user_id']}&sr=posts") : '', | |
| )); | |
| } | |
| $option_ary = array('activate' => 'ACTIVATE', 'delete' => 'DELETE'); | |
| if ($config['email_enable']) | |
| { | |
| $option_ary += array('remind' => 'REMIND'); | |
| } | |
| $template->assign_vars(array( | |
| 'S_INACTIVE_USERS' => true, | |
| 'S_INACTIVE_OPTIONS' => build_select($option_ary)) | |
| ); | |
| } | |
| // Warn if install is still present | |
| if (file_exists($phpbb_root_path . 'install') && !is_file($phpbb_root_path . 'install')) | |
| { | |
| $template->assign_var('S_REMOVE_INSTALL', true); | |
| } | |
| // Warn if no search index is created | |
| if ($config['num_posts'] && class_exists($config['search_type'])) | |
| { | |
| $error = false; | |
| $search_type = $config['search_type']; | |
| $search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher); | |
| if (!$search->index_created()) | |
| { | |
| $template->assign_vars(array( | |
| 'S_SEARCH_INDEX_MISSING' => true, | |
| 'L_NO_SEARCH_INDEX' => $user->lang('NO_SEARCH_INDEX', $search->get_name(), '<a href="' . append_sid("{$phpbb_admin_path}index.$phpEx", 'i=acp_search&mode=index') . '">', '</a>'), | |
| )); | |
| } | |
| } | |
| if (!defined('PHPBB_DISABLE_CONFIG_CHECK') && file_exists($phpbb_root_path . 'config.' . $phpEx) && $phpbb_filesystem->is_writable($phpbb_root_path . 'config.' . $phpEx)) | |
| { | |
| // World-Writable? (000x) | |
| $template->assign_var('S_WRITABLE_CONFIG', (bool) (@fileperms($phpbb_root_path . 'config.' . $phpEx) & 0x0002)); | |
| } | |
| if (extension_loaded('mbstring')) | |
| { | |
| $template->assign_vars(array( | |
| 'S_MBSTRING_LOADED' => true, | |
| 'S_MBSTRING_FUNC_OVERLOAD_FAIL' => (intval(@ini_get('mbstring.func_overload')) & (MB_OVERLOAD_MAIL | MB_OVERLOAD_STRING)), | |
| 'S_MBSTRING_ENCODING_TRANSLATION_FAIL' => (@ini_get('mbstring.encoding_translation') != 0), | |
| 'S_MBSTRING_HTTP_INPUT_FAIL' => !in_array(@ini_get('mbstring.http_input'), array('pass', '')), | |
| 'S_MBSTRING_HTTP_OUTPUT_FAIL' => !in_array(@ini_get('mbstring.http_output'), array('pass', '')), | |
| )); | |
| } | |
| // Fill dbms version if not yet filled | |
| if (empty($config['dbms_version'])) | |
| { | |
| $config->set('dbms_version', $db->sql_server_info(true)); | |
| } | |
| $this->tpl_name = 'acp_main'; | |
| $this->page_title = 'ACP_MAIN'; | |
| } | |
| } |