diff options
Diffstat (limited to 'phpBB/includes/acp')
| -rw-r--r-- | phpBB/includes/acp/acp_attachments.php | 2 | ||||
| -rw-r--r-- | phpBB/includes/acp/acp_bbcodes.php | 159 | ||||
| -rw-r--r-- | phpBB/includes/acp/acp_board.php | 43 | ||||
| -rw-r--r-- | phpBB/includes/acp/acp_extensions.php | 151 | ||||
| -rw-r--r-- | phpBB/includes/acp/acp_main.php | 2 | 
5 files changed, 131 insertions, 226 deletions
| diff --git a/phpBB/includes/acp/acp_attachments.php b/phpBB/includes/acp/acp_attachments.php index 94e3660de8..feeccbe853 100644 --- a/phpBB/includes/acp/acp_attachments.php +++ b/phpBB/includes/acp/acp_attachments.php @@ -610,7 +610,6 @@ class acp_attachments  				$cat_lang = array(  					ATTACHMENT_CATEGORY_NONE		=> $user->lang['NO_FILE_CAT'],  					ATTACHMENT_CATEGORY_IMAGE		=> $user->lang['CAT_IMAGES'], -					ATTACHMENT_CATEGORY_FLASH		=> $user->lang['CAT_FLASH_FILES'],  				);  				$group_id = $request->variable('g', 0); @@ -1385,7 +1384,6 @@ class acp_attachments  		$types = array(  			ATTACHMENT_CATEGORY_NONE		=> $user->lang['NO_FILE_CAT'],  			ATTACHMENT_CATEGORY_IMAGE		=> $user->lang['CAT_IMAGES'], -			ATTACHMENT_CATEGORY_FLASH		=> $user->lang['CAT_FLASH_FILES'],  		);  		if ($group_id) diff --git a/phpBB/includes/acp/acp_bbcodes.php b/phpBB/includes/acp/acp_bbcodes.php index 1f7374a07f..b59f9e3a39 100644 --- a/phpBB/includes/acp/acp_bbcodes.php +++ b/phpBB/includes/acp/acp_bbcodes.php @@ -451,144 +451,7 @@ class acp_bbcodes  	function build_regexp(&$bbcode_match, &$bbcode_tpl)  	{  		$bbcode_match = trim($bbcode_match); -		$bbcode_tpl = trim($bbcode_tpl); - -		// Allow unicode characters for URL|LOCAL_URL|RELATIVE_URL|INTTEXT tokens -		$utf8 = preg_match('/(URL|LOCAL_URL|RELATIVE_URL|INTTEXT)/', $bbcode_match); - -		$fp_match = preg_quote($bbcode_match, '!'); -		$fp_replace = preg_replace('#^\[(.*?)\]#', '[$1:$uid]', $bbcode_match); -		$fp_replace = preg_replace('#\[/(.*?)\]$#', '[/$1:$uid]', $fp_replace); - -		$sp_match = preg_quote($bbcode_match, '!'); -		$sp_match = preg_replace('#^\\\\\[(.*?)\\\\\]#', '\[$1:$uid\]', $sp_match); -		$sp_match = preg_replace('#\\\\\[/(.*?)\\\\\]$#', '\[/$1:$uid\]', $sp_match); -		$sp_replace = $bbcode_tpl; - -		// @todo Make sure to change this too if something changed in message parsing -		$tokens = array( -			'URL'	 => array( -				'!(?:(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('url')) . ')|(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('www_url')) . '))!ie'	=>	"\$this->bbcode_specialchars(('\$1') ? '\$1' : 'http://\$2')" -			), -			'LOCAL_URL'	 => array( -				'!(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')!e'	=>	"\$this->bbcode_specialchars('$1')" -			), -			'RELATIVE_URL'	=> array( -				'!(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')!e'	=>	"\$this->bbcode_specialchars('$1')" -			), -			'EMAIL' => array( -				'!(' . get_preg_expression('email') . ')!ie'	=>	"\$this->bbcode_specialchars('$1')" -			), -			'TEXT' => array( -				'!(.*?)!es'	 =>	"str_replace(array(\"\\r\\n\", '\\\"', '\\'', '(', ')'), array(\"\\n\", '\"', ''', '(', ')'), trim('\$1'))" -			), -			'SIMPLETEXT' => array( -				'!([a-zA-Z0-9-+.,_ ]+)!'	 =>	"$1" -			), -			'INTTEXT' => array( -				'!([\p{L}\p{N}\-+,_. ]+)!u'	 =>	"$1" -			), -			'IDENTIFIER' => array( -				'!([a-zA-Z0-9-_]+)!'	 =>	"$1" -			), -			'COLOR' => array( -				'!([a-z]+|#[0-9abcdef]+)!i'	=>	'$1' -			), -			'NUMBER' => array( -				'!([0-9]+)!'	=>	'$1' -			) -		); - -		$sp_tokens = array( -			'URL'	 => '(?i)((?:' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('url')) . ')|(?:' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('www_url')) . '))(?-i)', -			'LOCAL_URL'	 => '(?i)(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')(?-i)', -			'RELATIVE_URL'	 => '(?i)(' . str_replace(array('!', '\#'), array('\!', '#'), get_preg_expression('relative_url')) . ')(?-i)', -			'EMAIL' => '(' . get_preg_expression('email') . ')', -			'TEXT' => '(.*?)', -			'SIMPLETEXT' => '([a-zA-Z0-9-+.,_ ]+)', -			'INTTEXT' => '([\p{L}\p{N}\-+,_. ]+)', -			'IDENTIFIER' => '([a-zA-Z0-9-_]+)', -			'COLOR' => '([a-zA-Z]+|#[0-9abcdefABCDEF]+)', -			'NUMBER' => '([0-9]+)', -		); - -		$pad = 0; -		$modifiers = 'i'; -		$modifiers .= ($utf8) ? 'u' : ''; - -		if (preg_match_all('/\{(' . implode('|', array_keys($tokens)) . ')[0-9]*\}/i', $bbcode_match, $m)) -		{ -			foreach ($m[0] as $n => $token) -			{ -				$token_type = $m[1][$n]; - -				reset($tokens[strtoupper($token_type)]); -				list($match, $replace) = each($tokens[strtoupper($token_type)]); - -				// Pad backreference numbers from tokens -				if (preg_match_all('/(?<!\\\\)\$([0-9]+)/', $replace, $repad)) -				{ -					$repad = $pad + count(array_unique($repad[0])); -					$replace = preg_replace_callback('/(?<!\\\\)\$([0-9]+)/', function ($match) use ($pad) { -						return '${' . ($match[1] + $pad) . '}'; -					}, $replace); -					$pad = $repad; -				} - -				// Obtain pattern modifiers to use and alter the regex accordingly -				$regex = preg_replace('/!(.*)!([a-z]*)/', '$1', $match); -				$regex_modifiers = preg_replace('/!(.*)!([a-z]*)/', '$2', $match); - -				for ($i = 0, $size = strlen($regex_modifiers); $i < $size; ++$i) -				{ -					if (strpos($modifiers, $regex_modifiers[$i]) === false) -					{ -						$modifiers .= $regex_modifiers[$i]; - -						if ($regex_modifiers[$i] == 'e') -						{ -							$fp_replace = "'" . str_replace("'", "\\'", $fp_replace) . "'"; -						} -					} - -					if ($regex_modifiers[$i] == 'e') -					{ -						$replace = "'.$replace.'"; -					} -				} - -				$fp_match = str_replace(preg_quote($token, '!'), $regex, $fp_match); -				$fp_replace = str_replace($token, $replace, $fp_replace); - -				$sp_match = str_replace(preg_quote($token, '!'), $sp_tokens[$token_type], $sp_match); - -				// Prepend the board url to local relative links -				$replace_prepend = ($token_type === 'LOCAL_URL') ? generate_board_url() . '/' : ''; - -				$sp_replace = str_replace($token, $replace_prepend . '${' . ($n + 1) . '}', $sp_replace); -			} - -			$fp_match = '!' . $fp_match . '!' . $modifiers; -			$sp_match = '!' . $sp_match . '!s' . (($utf8) ? 'u' : ''); - -			if (strpos($fp_match, 'e') !== false) -			{ -				$fp_replace = str_replace("'.'", '', $fp_replace); -				$fp_replace = str_replace(".''.", '.', $fp_replace); -			} -		} -		else -		{ -			// No replacement is present, no need for a second-pass pattern replacement -			// A simple str_replace will suffice -			$fp_match = '!' . $fp_match . '!' . $modifiers; -			$sp_match = $fp_replace; -			$sp_replace = ''; -		} - -		// Lowercase tags  		$bbcode_tag = preg_replace('/.*?\[([a-z0-9_-]+).*/i', '$1', $bbcode_match); -		$bbcode_search = preg_replace('/.*?\[([a-z0-9_-]+).*/i', '$1', $bbcode_match);  		if (!preg_match('/^[a-zA-Z0-9_-]+$/', $bbcode_tag))  		{ @@ -596,25 +459,13 @@ class acp_bbcodes  			trigger_error($user->lang['BBCODE_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);  		} -		$fp_match = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) { -			return strtolower($match[0]); -		}, $fp_match); -		$fp_replace = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) { -			return strtolower($match[0]); -		}, $fp_replace); -		$sp_match = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) { -			return strtolower($match[0]); -		}, $sp_match); -		$sp_replace = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) { -			return strtolower($match[0]); -		}, $sp_replace); -  		return array(  			'bbcode_tag'				=> $bbcode_tag, -			'first_pass_match'			=> $fp_match, -			'first_pass_replace'		=> $fp_replace, -			'second_pass_match'			=> $sp_match, -			'second_pass_replace'		=> $sp_replace +			'first_pass_match'			=> '/(?!)/', +			'first_pass_replace'		=> '', +			// Use a non-matching, valid regexp to effectively disable this BBCode +			'second_pass_match'			=> '/(?!)/', +			'second_pass_replace'		=> ''  		);  	}  } diff --git a/phpBB/includes/acp/acp_board.php b/phpBB/includes/acp/acp_board.php index e348c769bd..083bd5adac 100644 --- a/phpBB/includes/acp/acp_board.php +++ b/phpBB/includes/acp/acp_board.php @@ -85,34 +85,25 @@ class acp_board  				$display_vars = array(  					'title'	=> 'ACP_BOARD_FEATURES',  					'vars'	=> array( -						'legend1'				=> 'ACP_BOARD_FEATURES', -						'allow_privmsg'			=> array('lang' => 'BOARD_PM',				'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true), -						'allow_topic_notify'	=> array('lang' => 'ALLOW_TOPIC_NOTIFY',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), -						'allow_forum_notify'	=> array('lang' => 'ALLOW_FORUM_NOTIFY',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), -						'allow_namechange'		=> array('lang' => 'ALLOW_NAME_CHANGE',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), -						'allow_attachments'		=> array('lang' => 'ALLOW_ATTACHMENTS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), -						'allow_pm_attach'		=> array('lang' => 'ALLOW_PM_ATTACHMENTS',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), -						'allow_pm_report'		=> array('lang' => 'ALLOW_PM_REPORT',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true), -						'allow_bbcode'			=> array('lang' => 'ALLOW_BBCODE',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), -						'allow_smilies'			=> array('lang' => 'ALLOW_SMILIES',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), -						'allow_sig'				=> array('lang' => 'ALLOW_SIG',				'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), +						'legend1'						=> 'ACP_BOARD_FEATURES', +						'allow_privmsg'					=> array('lang' => 'BOARD_PM',						'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true), +						'allow_topic_notify'			=> array('lang' => 'ALLOW_TOPIC_NOTIFY',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), +						'allow_forum_notify'			=> array('lang' => 'ALLOW_FORUM_NOTIFY',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), +						'allow_namechange'				=> array('lang' => 'ALLOW_NAME_CHANGE',				'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), +						'allow_attachments'				=> array('lang' => 'ALLOW_ATTACHMENTS',				'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), +						'allow_pm_attach'				=> array('lang' => 'ALLOW_PM_ATTACHMENTS',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), +						'allow_pm_report'				=> array('lang' => 'ALLOW_PM_REPORT',				'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true), +						'allow_bbcode'					=> array('lang' => 'ALLOW_BBCODE',					'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), +						'allow_smilies'					=> array('lang' => 'ALLOW_SMILIES',					'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), +						'allow_sig'						=> array('lang' => 'ALLOW_SIG',						'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),  						'allow_board_notifications'		=> array('lang' => 'ALLOW_BOARD_NOTIFICATIONS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), -						'allow_nocensors'		=> array('lang' => 'ALLOW_NO_CENSORS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true), -						'allow_bookmarks'		=> array('lang' => 'ALLOW_BOOKMARKS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true), -						'allow_birthdays'		=> array('lang' => 'ALLOW_BIRTHDAYS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true), -						'display_last_subject'	=> array('lang' => 'DISPLAY_LAST_SUBJECT',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true), -						'allow_quick_reply'		=> array('lang' => 'ALLOW_QUICK_REPLY',		'validate' => 'bool',	'type' => 'custom', 'method' => 'quick_reply', 'explain' => true), - -						'legend2'				=> 'ACP_LOAD_SETTINGS', -						'load_birthdays'		=> array('lang' => 'YES_BIRTHDAYS',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true), -						'load_moderators'		=> array('lang' => 'YES_MODERATORS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), -						'load_jumpbox'			=> array('lang' => 'YES_JUMPBOX',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), -						'load_cpf_memberlist'	=> array('lang' => 'LOAD_CPF_MEMBERLIST',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), -						'load_cpf_pm'			=> array('lang' => 'LOAD_CPF_PM',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain'	=> false), -						'load_cpf_viewprofile'	=> array('lang' => 'LOAD_CPF_VIEWPROFILE',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), -						'load_cpf_viewtopic'	=> array('lang' => 'LOAD_CPF_VIEWTOPIC',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), +						'allow_nocensors'				=> array('lang' => 'ALLOW_NO_CENSORS',				'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true), +						'allow_bookmarks'				=> array('lang' => 'ALLOW_BOOKMARKS',				'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true), +						'allow_birthdays'				=> array('lang' => 'ALLOW_BIRTHDAYS',				'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true), +						'display_last_subject'			=> array('lang' => 'DISPLAY_LAST_SUBJECT',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true), +						'allow_quick_reply'				=> array('lang' => 'ALLOW_QUICK_REPLY',				'validate' => 'bool',	'type' => 'custom', 'method' => 'quick_reply', 'explain' => true), -						'legend3'					=> 'ACP_SUBMIT_CHANGES', +						'legend2'							=> 'ACP_SUBMIT_CHANGES',  					)  				);  			break; diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index a1cb2108e7..2929de3c4f 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -38,7 +38,7 @@ class acp_extensions  	private $phpbb_container;  	private $php_ini; -	function main() +	function main($id, $mode)  	{  		// Start the page  		global $config, $user, $template, $request, $phpbb_extension_manager, $phpbb_root_path, $phpbb_log, $phpbb_dispatcher, $phpbb_container; @@ -182,13 +182,19 @@ class acp_extensions  					redirect($this->u_action);  				} -				$this->tpl_name = 'acp_ext_enable'; - -				$this->template->assign_vars(array( -					'PRE'				=> true, -					'L_CONFIRM_MESSAGE'	=> $this->user->lang('EXTENSION_ENABLE_CONFIRM', $md_manager->get_metadata('display-name')), -					'U_ENABLE'			=> $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('enable.' . $ext_name), -				)); +				if (confirm_box(true)) +				{ +					redirect($this->u_action . '&action=enable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('enable.' . $ext_name)); +				} +				else +				{ +					confirm_box(false, $this->user->lang('EXTENSION_ENABLE_CONFIRM', $md_manager->get_metadata('display-name')), build_hidden_fields(array( +						'i'			=> $id, +						'mode'		=> $mode, +						'action'	=> 'enable_pre', +						'ext_name'	=> $ext_name, +					))); +				}  			break;  			case 'enable': @@ -215,9 +221,8 @@ class acp_extensions  						// Are we approaching the time limit? If so we want to pause the update and continue after refreshing  						if ((time() - $start_time) >= $safe_time_limit)  						{ -							$this->template->assign_var('S_NEXT_STEP', true); -  							meta_refresh(0, $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('enable.' . $ext_name)); +							trigger_error('EXTENSION_ENABLE_IN_PROGRESS', E_USER_NOTICE);  						}  					} @@ -233,14 +238,22 @@ class acp_extensions  				}  				catch (\phpbb\db\migration\exception $e)  				{ -					$this->template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($this->user)); +					trigger_error($this->user->lang('MIGRATION_EXCEPTION_ERROR', $e->getLocalisedMessage($this->user)), E_USER_WARNING);  				} -				$this->tpl_name = 'acp_ext_enable'; - -				$this->template->assign_vars(array( -					'U_RETURN'		=> $this->u_action . '&action=list', -				)); +				if ($this->request->is_ajax()) +				{ +					$actions = $this->output_actions('enabled', [ +						'DISABLE'	=> $this->u_action . '&action=disable_pre&ext_name=' . urlencode($ext_name), +					]); + +					$json_response = new \phpbb\json_response; +					$json_response->send(array( +						'EXT_ENABLE_SUCCESS'	=> true, +						'ACTIONS'				=> $actions, +					)); +				} +				trigger_error($this->user->lang('EXTENSION_ENABLE_SUCCESS') . adm_back_link($this->u_action), E_USER_NOTICE);  			break;  			case 'disable_pre': @@ -249,13 +262,19 @@ class acp_extensions  					redirect($this->u_action);  				} -				$this->tpl_name = 'acp_ext_disable'; - -				$this->template->assign_vars(array( -					'PRE'				=> true, -					'L_CONFIRM_MESSAGE'	=> $this->user->lang('EXTENSION_DISABLE_CONFIRM', $md_manager->get_metadata('display-name')), -					'U_DISABLE'			=> $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('disable.' . $ext_name), -				)); +				if (confirm_box(true)) +				{ +					redirect($this->u_action . '&action=disable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('disable.' . $ext_name)); +				} +				else +				{ +					confirm_box(false, $this->user->lang('EXTENSION_DISABLE_CONFIRM', $md_manager->get_metadata('display-name')), build_hidden_fields(array( +						'i'			=> $id, +						'mode'		=> $mode, +						'action'	=> 'disable_pre', +						'ext_name'	=> $ext_name, +					))); +				}  			break;  			case 'disable': @@ -272,15 +291,25 @@ class acp_extensions  						$this->template->assign_var('S_NEXT_STEP', true);  						meta_refresh(0, $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('disable.' . $ext_name)); +						trigger_error('EXTENSION_DISABLE_IN_PROGRESS', E_USER_NOTICE);  					}  				}  				$this->log->add('admin', $this->user->data['user_id'], $this->user->ip, 'LOG_EXT_DISABLE', time(), array($ext_name)); -				$this->tpl_name = 'acp_ext_disable'; - -				$this->template->assign_vars(array( -					'U_RETURN'	=> $this->u_action . '&action=list', -				)); +				if ($this->request->is_ajax()) +				{ +					$actions = $this->output_actions('disabled', [ +						'ENABLE'		=> $this->u_action . '&action=enable_pre&ext_name=' . urlencode($ext_name), +						'DELETE_DATA'	=> $this->u_action . '&action=delete_data_pre&ext_name=' . urlencode($ext_name), +					]); + +					$json_response = new \phpbb\json_response; +					$json_response->send(array( +						'EXT_DISABLE_SUCCESS'	=> true, +						'ACTIONS'				=> $actions, +					)); +				} +				trigger_error($this->user->lang('EXTENSION_DISABLE_SUCCESS') . adm_back_link($this->u_action), E_USER_NOTICE);  			break;  			case 'delete_data_pre': @@ -288,13 +317,20 @@ class acp_extensions  				{  					redirect($this->u_action);  				} -				$this->tpl_name = 'acp_ext_delete_data'; -				$this->template->assign_vars(array( -					'PRE'				=> true, -					'L_CONFIRM_MESSAGE'	=> $this->user->lang('EXTENSION_DELETE_DATA_CONFIRM', $md_manager->get_metadata('display-name')), -					'U_PURGE'			=> $this->u_action . '&action=delete_data&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('delete_data.' . $ext_name), -				)); +				if (confirm_box(true)) +				{ +					redirect($this->u_action . '&action=delete_data&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('delete_data.' . $ext_name)); +				} +				else +				{ +					confirm_box(false, $this->user->lang('EXTENSION_DELETE_DATA_CONFIRM', $md_manager->get_metadata('display-name')), build_hidden_fields(array( +						'i'			=> $id, +						'mode'		=> $mode, +						'action'	=> 'delete_data_pre', +						'ext_name'	=> $ext_name, +					))); +				}  			break;  			case 'delete_data': @@ -313,20 +349,29 @@ class acp_extensions  							$this->template->assign_var('S_NEXT_STEP', true);  							meta_refresh(0, $this->u_action . '&action=delete_data&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('delete_data.' . $ext_name)); +							trigger_error('EXTENSION_DELETE_DATA_IN_PROGRESS', E_USER_NOTICE);  						}  					}  					$this->log->add('admin', $this->user->data['user_id'], $this->user->ip, 'LOG_EXT_PURGE', time(), array($ext_name));  				}  				catch (\phpbb\db\migration\exception $e)  				{ -					$this->template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($this->user)); +					trigger_error($this->user->lang('MIGRATION_EXCEPTION_ERROR', $e->getLocalisedMessage($this->user)), E_USER_WARNING);  				} -				$this->tpl_name = 'acp_ext_delete_data'; - -				$this->template->assign_vars(array( -					'U_RETURN'	=> $this->u_action . '&action=list', -				)); +				if ($this->request->is_ajax()) +				{ +					$actions = $this->output_actions('disabled', [ +						'ENABLE'		=> $this->u_action . '&action=enable_pre&ext_name=' . urlencode($ext_name), +					]); + +					$json_response = new \phpbb\json_response; +					$json_response->send(array( +						'EXT_DELETE_DATA_SUCCESS'	=> true, +						'ACTIONS'					=> $actions, +					)); +				} +				trigger_error($this->user->lang('EXTENSION_DELETE_DATA_SUCCESS') . adm_back_link($this->u_action), E_USER_NOTICE);  			break;  			case 'details': @@ -605,17 +650,37 @@ class acp_extensions  	*  	* @param string $block  	* @param array $actions +	* @return array List of actions to be performed on the extension  	*/  	private function output_actions($block, $actions)  	{ -		foreach ($actions as $lang => $url) +		$vars_ary = array(); +		foreach ($actions as $lang => $options)  		{ -			$this->template->assign_block_vars($block . '.actions', array( +			$url = $options; +			if (is_array($options)) +			{ +				$url = $options['url']; +			} + +			$vars = array(  				'L_ACTION'			=> $this->user->lang('EXTENSION_' . $lang),  				'L_ACTION_EXPLAIN'	=> (isset($this->user->lang['EXTENSION_' . $lang . '_EXPLAIN'])) ? $this->user->lang('EXTENSION_' . $lang . '_EXPLAIN') : '',  				'U_ACTION'			=> $url, -			)); +				'ACTION_AJAX'		=> 'ext_' . strtolower($lang), +			); + +			if (isset($options['color'])) +			{ +				$vars['COLOR'] = $options['color']; +			} + +			$this->template->assign_block_vars($block . '.actions', $vars); + +			$vars_ary[] = $vars;  		} + +		return $vars_ary;  	}  	/** diff --git a/phpBB/includes/acp/acp_main.php b/phpBB/includes/acp/acp_main.php index 8f169d15a7..27fac54777 100644 --- a/phpBB/includes/acp/acp_main.php +++ b/phpBB/includes/acp/acp_main.php @@ -657,7 +657,7 @@ class acp_main  		}  		// Warn if install is still present -		if (file_exists($phpbb_root_path . 'install') && !is_file($phpbb_root_path . 'install')) +		if (!defined('IN_INSTALL') && !$phpbb_container->getParameter('allow_install_dir') && file_exists($phpbb_root_path . 'install') && !is_file($phpbb_root_path . 'install'))  		{  			$template->assign_var('S_REMOVE_INSTALL', true);  		} | 
