diff options
Diffstat (limited to 'phpBB')
| -rw-r--r-- | phpBB/docs/events.md | 7 | ||||
| -rw-r--r-- | phpBB/includes/acp/acp_profile.php | 10 | ||||
| -rw-r--r-- | phpBB/includes/acp/acp_search.php | 23 | ||||
| -rw-r--r-- | phpBB/includes/acp/acp_users.php | 17 | ||||
| -rw-r--r-- | phpBB/includes/functions.php | 34 | ||||
| -rw-r--r-- | phpBB/phpbb/db/migration/tool/module.php | 37 | ||||
| -rw-r--r-- | phpBB/phpbb/event/kernel_exception_subscriber.php | 3 | ||||
| -rw-r--r-- | phpBB/styles/prosilver/template/overall_header.html | 1 | 
8 files changed, 81 insertions, 51 deletions
diff --git a/phpBB/docs/events.md b/phpBB/docs/events.md index 35c6877a89..0abda89706 100644 --- a/phpBB/docs/events.md +++ b/phpBB/docs/events.md @@ -1453,6 +1453,13 @@ overall_header_page_body_before  * Since: 3.1.0-b3  * Purpose: Add content after the page-header, but before the page-body +overall_header_searchbox_after +=== +* Locations: +    + styles/prosilver/template/overall_header.html +* Since: 3.1.11-RC1 +* Purpose: Add content after the search box in the header +  overall_header_searchbox_before  ===  * Locations: diff --git a/phpBB/includes/acp/acp_profile.php b/phpBB/includes/acp/acp_profile.php index 485f849f51..2012d3c513 100644 --- a/phpBB/includes/acp/acp_profile.php +++ b/phpBB/includes/acp/acp_profile.php @@ -597,13 +597,13 @@ class acp_profile  				if (!sizeof($error))  				{ -					if (!check_form_key($form_key)) -					{ -						trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING); -					} -  					if (($step == 3 && (sizeof($this->lang_defs['iso']) == 1 || $save)) || ($action == 'edit' && $save))  					{ +						if (!check_form_key($form_key)) +						{ +							trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING); +						} +  						$this->save_profile_field($cp, $field_type, $action);  					}  				} diff --git a/phpBB/includes/acp/acp_search.php b/phpBB/includes/acp/acp_search.php index f15a75e9a1..cc1e5df084 100644 --- a/phpBB/includes/acp/acp_search.php +++ b/phpBB/includes/acp/acp_search.php @@ -50,14 +50,12 @@ class acp_search  	function settings($id, $mode)  	{ -		global $db, $user, $auth, $template, $cache; +		global $db, $user, $auth, $template, $cache, $request;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;  		$submit = (isset($_POST['submit'])) ? true : false; -		$form_key = 'acp_search'; -		add_form_key($form_key); -		if ($submit && !check_form_key($form_key)) +		if ($submit && !check_link_hash($request->variable('hash', ''), 'acp_search'))  		{  			trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);  		} @@ -233,7 +231,7 @@ class acp_search  			'S_YES_SEARCH'			=> (bool) $config['load_search'],  			'S_SETTINGS'			=> true, -			'U_ACTION'				=> $this->u_action) +			'U_ACTION'				=> $this->u_action . '&hash=' . generate_link_hash('acp_search'))  		);  	} @@ -253,10 +251,7 @@ class acp_search  		}  		$submit = $request->is_set_post('submit', false); -		$form_key = 'acp_search'; -		add_form_key($form_key); - -		if (!check_form_key($form_key) && in_array($action, array('delete', 'create'))) +		if (!check_link_hash($request->variable('hash', ''), 'acp_search') && in_array($action, array('create', 'delete')))  		{  			trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);  		} @@ -310,7 +305,7 @@ class acp_search  					if (method_exists($this->search, 'delete_index'))  					{  						// pass a reference to myself so the $search object can make use of save_state() and attributes -						if ($error = $this->search->delete_index($this, append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=$mode&action=delete", false))) +						if ($error = $this->search->delete_index($this, append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=$mode&action=delete&hash=" . generate_link_hash('acp_search'), false)))  						{  							$this->state = array('');  							$this->save_state(); @@ -355,7 +350,7 @@ class acp_search  							$mtime = explode(' ', microtime());  							$totaltime = $mtime[0] + $mtime[1] - $starttime;  							$rows_per_second = $row_count / $totaltime; -							meta_refresh(1, append_sid($this->u_action . '&action=delete&skip_rows=' . $post_counter)); +							meta_refresh(1, append_sid($this->u_action . '&action=delete&skip_rows=' . $post_counter . '&hash=' . generate_link_hash('acp_search')));  							trigger_error($user->lang('SEARCH_INDEX_DELETE_REDIRECT', (int) $row_count, $post_counter, $rows_per_second));  						}  					} @@ -445,7 +440,7 @@ class acp_search  							$mtime = explode(' ', microtime());  							$totaltime = $mtime[0] + $mtime[1] - $starttime;  							$rows_per_second = $row_count / $totaltime; -							meta_refresh(1, append_sid($this->u_action . '&action=create&skip_rows=' . $post_counter)); +							meta_refresh(1, append_sid($this->u_action . '&action=create&skip_rows=' . $post_counter . '&hash=' . generate_link_hash('acp_search')));  							trigger_error($user->lang('SEARCH_INDEX_CREATE_REDIRECT', (int) $row_count, $post_counter) . $user->lang('SEARCH_INDEX_CREATE_REDIRECT_RATE', $rows_per_second));  						}  					} @@ -524,7 +519,7 @@ class acp_search  		$template->assign_vars(array(  			'S_INDEX'				=> true, -			'U_ACTION'				=> $this->u_action, +			'U_ACTION'				=> $this->u_action . '&hash=' . generate_link_hash('acp_search'),  			'U_PROGRESS_BAR'		=> append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=$mode&action=progress_bar"),  			'UA_PROGRESS_BAR'		=> addslashes(append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=$mode&action=progress_bar")),  		)); @@ -533,7 +528,7 @@ class acp_search  		{  			$template->assign_vars(array(  				'S_CONTINUE_INDEXING'	=> $this->state[1], -				'U_CONTINUE_INDEXING'	=> $this->u_action . '&action=' . $this->state[1], +				'U_CONTINUE_INDEXING'	=> $this->u_action . '&action=' . $this->state[1] . '&hash=' . generate_link_hash('acp_search'),  				'L_CONTINUE'			=> ($this->state[1] == 'create') ? $user->lang['CONTINUE_INDEXING'] : $user->lang['CONTINUE_DELETING_INDEX'],  				'L_CONTINUE_EXPLAIN'	=> ($this->state[1] == 'create') ? $user->lang['CONTINUE_INDEXING_EXPLAIN'] : $user->lang['CONTINUE_DELETING_INDEX_EXPLAIN'])  			); diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index 1e453e88ad..008cc02471 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -373,11 +373,6 @@ class acp_users  								if ($user_row['user_type'] == USER_NORMAL)  								{  									user_active_flip('deactivate', $user_id, INACTIVE_REMIND); - -									$sql = 'UPDATE ' . USERS_TABLE . " -										SET user_actkey = '" . $db->sql_escape($user_actkey) . "' -										WHERE user_id = $user_id"; -									$db->sql_query($sql);  								}  								else  								{ @@ -386,8 +381,18 @@ class acp_users  										FROM ' . USERS_TABLE . '  										WHERE user_id = ' . $user_id;  									$result = $db->sql_query($sql); -									$user_actkey = (string) $db->sql_fetchfield('user_actkey'); +									$user_activation_key = (string) $db->sql_fetchfield('user_actkey');  									$db->sql_freeresult($result); + +									$user_actkey = empty($user_activation_key) ? $user_actkey : $user_activation_key; +								} + +								if ($user_row['user_type'] == USER_NORMAL || empty($user_activation_key)) +								{ +									$sql = 'UPDATE ' . USERS_TABLE . " +										SET user_actkey = '" . $db->sql_escape($user_actkey) . "' +										WHERE user_id = $user_id"; +									$db->sql_query($sql);  								}  								$messenger = new messenger(false); diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 12ca5540ca..a152d9b620 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -2233,13 +2233,6 @@ function generate_board_url($without_script_path = false)  	global $config, $user, $request;  	$server_name = $user->host; -	$server_port = $request->server('SERVER_PORT', 0); -	$forwarded_proto = $request->server('HTTP_X_FORWARDED_PROTO'); - -	if (!empty($forwarded_proto) && $forwarded_proto === 'https') -	{ -		$server_port = 443; -	}  	// Forcing server vars is the only way to specify/override the protocol  	if ($config['force_server_vars'] || !$server_name) @@ -2254,6 +2247,13 @@ function generate_board_url($without_script_path = false)  	}  	else  	{ +		$server_port = $request->server('SERVER_PORT', 0); +		$forwarded_proto = $request->server('HTTP_X_FORWARDED_PROTO'); + +		if (!empty($forwarded_proto) && $forwarded_proto === 'https') +		{ +			$server_port = 443; +		}  		// Do not rely on cookie_secure, users seem to think that it means a secured cookie instead of an encrypted connection  		$cookie_secure = $request->is_secure() ? 1 : 0;  		$url = (($cookie_secure) ? 'https://' : 'http://') . $server_name; @@ -2609,8 +2609,9 @@ function check_link_hash($token, $link_name)  /**  * Add a secret token to the form (requires the S_FORM_TOKEN template variable)  * @param string  $form_name The name of the form; has to match the name used in check_form_key, otherwise no restrictions apply +* @param string  $template_variable_suffix A string that is appended to the name of the template variable to which the form elements are assigned  */ -function add_form_key($form_name) +function add_form_key($form_name, $template_variable_suffix = '')  {  	global $config, $template, $user, $phpbb_dispatcher; @@ -2627,13 +2628,15 @@ function add_form_key($form_name)  	* Perform additional actions on creation of the form token  	*  	* @event core.add_form_key -	* @var	string	form_name			The form name -	* @var	int		now					Current time timestamp -	* @var	string	s_fields			Generated hidden fields -	* @var	string	token				Form token -	* @var	string	token_sid			User session ID +	* @var	string	form_name					The form name +	* @var	int		now							Current time timestamp +	* @var	string	s_fields					Generated hidden fields +	* @var	string	token						Form token +	* @var	string	token_sid					User session ID +	* @var	string	template_variable_suffix	The string that is appended to template variable name  	*  	* @since 3.1.0-RC3 +	* @changed 3.1.11-RC1 Added template_variable_suffix  	*/  	$vars = array(  		'form_name', @@ -2641,12 +2644,11 @@ function add_form_key($form_name)  		's_fields',  		'token',  		'token_sid', +		'template_variable_suffix',  	);  	extract($phpbb_dispatcher->trigger_event('core.add_form_key', compact($vars))); -	$template->assign_vars(array( -		'S_FORM_TOKEN'	=> $s_fields, -	)); +	$template->assign_var('S_FORM_TOKEN' . $template_variable_suffix, $s_fields);  }  /** diff --git a/phpBB/phpbb/db/migration/tool/module.php b/phpBB/phpbb/db/migration/tool/module.php index 6d5378e35f..7ea7d1dac1 100644 --- a/phpBB/phpbb/db/migration/tool/module.php +++ b/phpBB/phpbb/db/migration/tool/module.php @@ -90,7 +90,12 @@ class module implements \phpbb\db\migration\tool\tool_interface  		$parent_sql = '';  		if ($parent !== false)  		{ -			$parent = $this->get_parent_module_id($parent, $module); +			$parent = $this->get_parent_module_id($parent, $module, false); +			if ($parent === false) +			{ +				return false; +			} +  			$parent_sql = 'AND parent_id = ' . (int) $parent;  		} @@ -197,7 +202,7 @@ class module implements \phpbb\db\migration\tool\tool_interface  		if ($this->exists($class, $parent, $data['module_langname']))  		{ -			throw new \phpbb\db\migration\exception('MODULE_EXISTS', $module_id); +			throw new \phpbb\db\migration\exception('MODULE_EXISTS', $data['module_langname']);  		}  		if (!class_exists('acp_modules')) @@ -448,12 +453,11 @@ class module implements \phpbb\db\migration\tool\tool_interface  	protected function get_categories_list()  	{  		// Select the top level categories -		// and 2nd level [sub]categories which exist for ACP only +		// and 2nd level [sub]categories  		$sql = 'SELECT m2.module_id, m2.module_langname  			FROM ' . $this->modules_table . ' m1, ' . $this->modules_table . " m2  			WHERE m1.parent_id = 0 -				AND (m1.module_id = m2.module_id -				OR m2.module_class = 'acp' AND m2.parent_id = m1.module_id) +				AND (m1.module_id = m2.module_id OR m2.parent_id = m1.module_id)  			ORDER BY m1.module_id, m2.module_id ASC";  		$result = $this->db->sql_query($sql); @@ -469,11 +473,15 @@ class module implements \phpbb\db\migration\tool\tool_interface  	*  	* @param string|int $parent_id The parent module_id|module_langname  	* @param int|string|array $data The module_id, module_langname for existance checking or module data array for adding -	* @return int The parent module_id +	* @param bool $throw_exception The flag indicating if exception should be thrown on error +	* @return mixed The int parent module_id or false  	* @throws \phpbb\db\migration\exception  	*/ -	public function get_parent_module_id($parent_id, $data = '') +	public function get_parent_module_id($parent_id, $data = '', $throw_exception = true)  	{ +		// Initialize exception object placeholder +		$exception = false; +  		// Allow '' to be sent as 0  		$parent_id = $parent_id ?: 0; @@ -495,7 +503,7 @@ class module implements \phpbb\db\migration\tool\tool_interface  			{  				// No parent with the given module_langname exist  				case 0: -					throw new \phpbb\db\migration\exception('MODULE_NOT_EXIST', $parent_id); +					$exception = new \phpbb\db\migration\exception('MODULE_NOT_EXIST', $parent_id);  				break;  				// Return the module id @@ -517,7 +525,7 @@ class module implements \phpbb\db\migration\tool\tool_interface  						$parent_id = (int) $this->db->sql_fetchfield('parent_id');  						if (!$parent_id)  						{ -							throw new \phpbb\db\migration\exception('PARENT_MODULE_FIND_ERROR', $data['parent_id']); +							$exception = new \phpbb\db\migration\exception('PARENT_MODULE_FIND_ERROR', $data['parent_id']);  						}  					}  					else if (!empty($data) && !is_array($data)) @@ -535,12 +543,21 @@ class module implements \phpbb\db\migration\tool\tool_interface  					else  					{  						//Unable to get the parent module id, throwing an exception -						throw new \phpbb\db\migration\exception('MODULE_EXIST_MULTIPLE', $parent_id); +						$exception = new \phpbb\db\migration\exception('MODULE_EXIST_MULTIPLE', $parent_id);  					}  				break;  			}  		} +		if ($exception !== false) +		{ +			if ($throw_exception) +			{ +				throw $exception; +			} +			return false; +		} +  		return $parent_id;  	}  } diff --git a/phpBB/phpbb/event/kernel_exception_subscriber.php b/phpBB/phpbb/event/kernel_exception_subscriber.php index 34c8422b0a..9d15f9370e 100644 --- a/phpBB/phpbb/event/kernel_exception_subscriber.php +++ b/phpBB/phpbb/event/kernel_exception_subscriber.php @@ -68,6 +68,9 @@ class kernel_exception_subscriber implements EventSubscriberInterface  			$message = call_user_func_array(array($this->user, 'lang'), array_merge(array($message), $exception->get_parameters()));  		} +		// Show <strong> text in bold +		$message = preg_replace('#<(/?strong)>#i', '<$1>', $message); +  		if (!$event->getRequest()->isXmlHttpRequest())  		{  			page_header($this->user->lang('INFORMATION')); diff --git a/phpBB/styles/prosilver/template/overall_header.html b/phpBB/styles/prosilver/template/overall_header.html index 5093d81919..e583c6e890 100644 --- a/phpBB/styles/prosilver/template/overall_header.html +++ b/phpBB/styles/prosilver/template/overall_header.html @@ -99,6 +99,7 @@  				</form>  			</div>  			<!-- ENDIF --> +			<!-- EVENT overall_header_searchbox_after -->  			</div>  			<!-- EVENT overall_header_headerbar_after -->  | 
