diff options
Diffstat (limited to 'phpBB/includes/acp/acp_main.php')
| -rw-r--r-- | phpBB/includes/acp/acp_main.php | 125 | 
1 files changed, 86 insertions, 39 deletions
| diff --git a/phpBB/includes/acp/acp_main.php b/phpBB/includes/acp/acp_main.php index d80b0d1532..2a28226d6c 100644 --- a/phpBB/includes/acp/acp_main.php +++ b/phpBB/includes/acp/acp_main.php @@ -1,10 +1,13 @@  <?php  /**  * -* @package acp -* @version $Id$ -* @copyright (c) 2005 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* 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.  *  */ @@ -16,17 +19,14 @@ if (!defined('IN_PHPBB'))  	exit;  } -/** -* @package acp -*/  class acp_main  {  	var $u_action;  	function main($id, $mode)  	{ -		global $config, $db, $user, $auth, $template; -		global $phpbb_root_path, $phpbb_admin_path, $phpEx; +		global $config, $db, $cache, $user, $auth, $template, $request; +		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $phpbb_container, $phpbb_dispatcher;  		// Show restore permissions notice  		if ($user->data['user_perm_from'] && $auth->acl_get('a_switchperm')) @@ -41,11 +41,7 @@ class acp_main  			$user_row = $db->sql_fetchrow($result);  			$db->sql_freeresult($result); -			$perm_from = '<strong' . (($user_row['user_colour']) ? ' style="color: #' . $user_row['user_colour'] . '">' : '>'); -			$perm_from .= ($user_row['user_id'] != ANONYMOUS) ? '<a href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $user_row['user_id']) . '">' : ''; -			$perm_from .= $user_row['username']; -			$perm_from .= ($user_row['user_id'] != ANONYMOUS) ? '</a>' : ''; -			$perm_from .= '</strong>'; +			$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, @@ -64,9 +60,7 @@ class acp_main  			if ($action === 'admlogout')  			{  				$user->unset_admin(); -				$redirect_url = append_sid("{$phpbb_root_path}index.$phpEx"); -				meta_refresh(3, $redirect_url); -				trigger_error($user->lang['ADM_LOGGED_OUT'] . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . $redirect_url . '">', '</a>')); +				redirect(append_sid("{$phpbb_root_path}index.$phpEx"));  			}  			if (!confirm_box(true)) @@ -130,6 +124,11 @@ class acp_main  						set_config('record_online_users', 1, true);  						set_config('record_online_date', time(), true);  						add_log('admin', 'LOG_RESET_ONLINE'); + +						if ($request->is_ajax()) +						{ +							trigger_error('RESET_ONLINE_SUCCESS'); +						}  					break;  					case 'stats': @@ -140,14 +139,14 @@ class acp_main  						$sql = 'SELECT COUNT(post_id) AS stat  							FROM ' . POSTS_TABLE . ' -							WHERE post_approved = 1'; +							WHERE post_visibility = ' . ITEM_APPROVED;  						$result = $db->sql_query($sql);  						set_config('num_posts', (int) $db->sql_fetchfield('stat'), true);  						$db->sql_freeresult($result);  						$sql = 'SELECT COUNT(topic_id) AS stat  							FROM ' . TOPICS_TABLE . ' -							WHERE topic_approved = 1'; +							WHERE topic_visibility = ' . ITEM_APPROVED;  						$result = $db->sql_query($sql);  						set_config('num_topics', (int) $db->sql_fetchfield('stat'), true);  						$db->sql_freeresult($result); @@ -180,6 +179,11 @@ class acp_main  						update_last_username();  						add_log('admin', 'LOG_RESYNC_STATS'); + +						if ($request->is_ajax()) +						{ +							trigger_error('RESYNC_STATS_SUCCESS'); +						}  					break;  					case 'user': @@ -223,7 +227,7 @@ class acp_main  							$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_approved = 1 +									AND post_postcount = 1 AND post_visibility = ' . ITEM_APPROVED . '  								GROUP BY poster_id';  							$result = $db->sql_query($sql); @@ -243,6 +247,10 @@ class acp_main  						add_log('admin', 'LOG_RESYNC_POSTCOUNTS'); +						if ($request->is_ajax()) +						{ +							trigger_error('RESYNC_POSTCOUNTS_SUCCESS'); +						}  					break;  					case 'date': @@ -253,13 +261,18 @@ class acp_main  						set_config('board_startdate', time() - 1);  						add_log('admin', 'LOG_RESET_DATE'); + +						if ($request->is_ajax()) +						{ +							trigger_error('RESET_DATE_SUCCESS'); +						}  					break;  					case 'db_track': -						switch ($db->sql_layer) +						switch ($db->get_sql_layer())  						{  							case 'sqlite': -							case 'firebird': +							case 'sqlite3':  								$db->sql_query('DELETE FROM ' . TOPICS_POSTED_TABLE);  							break; @@ -328,22 +341,27 @@ class acp_main  						}  						add_log('admin', 'LOG_RESYNC_POST_MARKING'); -					break; -					case 'purge_cache': -						if ((int) $user->data['user_type'] !== USER_FOUNDER) +						if ($request->is_ajax())  						{ -							trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING); +							trigger_error('RESYNC_POST_MARKING_SUCCESS');  						} +					break; -						global $cache; +					case 'purge_cache': +						$config->increment('assets_version', 1);  						$cache->purge();  						// Clear permissions  						$auth->acl_clear_prefetch(); -						cache_moderators(); +						phpbb_cache_moderators($db, $cache, $auth);  						add_log('admin', 'LOG_PURGE_CACHE'); + +						if ($request->is_ajax()) +						{ +							trigger_error('PURGE_CACHE_SUCCESS'); +						}  					break;  					case 'purge_sessions': @@ -356,10 +374,10 @@ class acp_main  						foreach ($tables as $table)  						{ -							switch ($db->sql_layer) +							switch ($db->get_sql_layer())  							{  								case 'sqlite': -								case 'firebird': +								case 'sqlite3':  									$db->sql_query("DELETE FROM $table");  								break; @@ -390,6 +408,11 @@ class acp_main  						$db->sql_query($sql);  						add_log('admin', 'LOG_PURGE_SESSIONS'); + +						if ($request->is_ajax()) +						{ +							trigger_error('PURGE_SESSIONS_SUCCESS'); +						}  					break;  				}  			} @@ -406,20 +429,30 @@ class acp_main  			));  		} -		$latest_version_info = false; -		if (($latest_version_info = obtain_latest_version_info(request_var('versioncheck_force', false))) === false) +		$version_helper = $phpbb_container->get('version_helper'); +		try  		{ -			$template->assign_var('S_VERSIONCHECK_FAIL', true); +			$recheck = $request->variable('versioncheck_force', false); +			$updates_available = $version_helper->get_suggested_updates($recheck); + +			$template->assign_var('S_VERSION_UP_TO_DATE', empty($updates_available));  		} -		else +		catch (\RuntimeException $e)  		{ -			$latest_version_info = explode("\n", $latest_version_info); -  			$template->assign_vars(array( -				'S_VERSION_UP_TO_DATE'	=> phpbb_version_compare(trim($latest_version_info[0]), $config['version'], '<='), +				'S_VERSIONCHECK_FAIL'		=> true, +				'VERSIONCHECK_FAIL_REASON'	=> ($e->getMessage() !== $user->lang('VERSIONCHECK_FAIL')) ? $e->getMessage() : '',  			));  		} +		/** +		* 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']; @@ -594,6 +627,22 @@ class acp_main  			$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); + +			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_is_writable($phpbb_root_path . 'config.' . $phpEx))  		{  			// World-Writable? (000x) @@ -621,5 +670,3 @@ class acp_main  		$this->page_title = 'ACP_MAIN';  	}  } - -?>
\ No newline at end of file | 
