diff options
Diffstat (limited to 'phpBB')
| -rw-r--r-- | phpBB/includes/functions_messenger.php | 25 | ||||
| -rw-r--r-- | phpBB/includes/ucp/ucp_register.php | 14 | ||||
| -rw-r--r-- | phpBB/phpbb/textformatter/s9e/bbcode_merger.php | 26 | 
3 files changed, 45 insertions, 20 deletions
diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php index 7f8238e1bf..ec297b536a 100644 --- a/phpBB/includes/functions_messenger.php +++ b/phpBB/includes/functions_messenger.php @@ -1893,14 +1893,21 @@ function mail_encode($str, $eol = "\r\n")  }  /** -* Wrapper for sending out emails with the PHP's mail function -*/ + * Wrapper for sending out emails with the PHP's mail function + */  function phpbb_mail($to, $subject, $msg, $headers, $eol, &$err_msg)  {  	global $config, $phpbb_root_path, $phpEx; -	// We use the EOL character for the OS here because the PHP mail function does not correctly transform line endings. On Windows SMTP is used (SMTP is \r\n), on UNIX a command is used... -	// Reference: http://bugs.php.net/bug.php?id=15841 +	// Convert Numeric Character References to UTF-8 chars (ie. Emojis) +	$subject = utf8_decode_ncr($subject); +	$msg = utf8_decode_ncr($msg); + +	/** +	 * We use the EOL character for the OS here because the PHP mail function does not correctly transform line endings. +	 * On Windows SMTP is used (SMTP is \r\n), on UNIX a command is used... +	 * Reference: http://bugs.php.net/bug.php?id=15841 +	 */  	$headers = implode($eol, $headers);  	if (!class_exists('\phpbb\error_collector')) @@ -1911,10 +1918,14 @@ function phpbb_mail($to, $subject, $msg, $headers, $eol, &$err_msg)  	$collector = new \phpbb\error_collector;  	$collector->install(); -	// On some PHP Versions mail() *may* fail if there are newlines within the subject. -	// Newlines are used as a delimiter for lines in mail_encode() according to RFC 2045 section 6.8. -	// Because PHP can't decide what is wanted we revert back to the non-RFC-compliant way of separating by one space (Use '' as parameter to mail_encode() results in SPACE used) +	/** +	 * On some PHP Versions mail() *may* fail if there are newlines within the subject. +	 * Newlines are used as a delimiter for lines in mail_encode() according to RFC 2045 section 6.8. +	 * Because PHP can't decide what is wanted we revert back to the non-RFC-compliant way of separating by one space +	 * (Use '' as parameter to mail_encode() results in SPACE used) +	 */  	$additional_parameters = $config['email_force_sender'] ? '-f' . $config['board_email'] : ''; +  	$result = mail($to, mail_encode($subject, ''), wordwrap(utf8_wordwrap($msg), 997, "\n", true), $headers, $additional_parameters);  	$collector->uninstall(); diff --git a/phpBB/includes/ucp/ucp_register.php b/phpBB/includes/ucp/ucp_register.php index 0e673cb692..54e418d58c 100644 --- a/phpBB/includes/ucp/ucp_register.php +++ b/phpBB/includes/ucp/ucp_register.php @@ -45,6 +45,11 @@ class ucp_register  		$change_lang	= $request->variable('change_lang', '');  		$user_lang		= $request->variable('lang', $user->lang_name); +		if ($agreed && !check_form_key('ucp_register')) +		{ +			$agreed = false; +		} +  		/**  		* Add UCP register data before they are assigned to the template or submitted  		* @@ -67,14 +72,7 @@ class ucp_register  		);  		extract($phpbb_dispatcher->trigger_event('core.ucp_register_requests_after', compact($vars))); -		if ($agreed) -		{ -			add_form_key('ucp_register'); -		} -		else -		{ -			add_form_key('ucp_register_terms'); -		} +		add_form_key('ucp_register');  		if ($change_lang || $user_lang != $config['default_lang'])  		{ diff --git a/phpBB/phpbb/textformatter/s9e/bbcode_merger.php b/phpBB/phpbb/textformatter/s9e/bbcode_merger.php index a05ca3c2b8..264eb93782 100644 --- a/phpBB/phpbb/textformatter/s9e/bbcode_merger.php +++ b/phpBB/phpbb/textformatter/s9e/bbcode_merger.php @@ -50,7 +50,7 @@ class bbcode_merger  		$with    = $this->create_bbcode($with);  		// Select the appropriate strategy for merging this BBCode -		if ($this->is_content_bbcode($without, $with)) +		if (!$this->is_optional_bbcode($without, $with) && $this->is_content_bbcode($without, $with))  		{  			$merged = $this->merge_content_bbcode($without, $with);  		} @@ -107,12 +107,12 @@ class bbcode_merger  	/**  	* Test whether the two definitions form a "content"-style BBCode  	* -	* Such BBCodes include the [URL] BBCode, which uses its text content as +	* Such BBCodes include the [url] BBCode, which uses its text content as  	* attribute if none is provided  	*  	* @param  array $without BBCode definition without an attribute  	* @param  array $with    BBCode definition with an attribute -	* @return array          Merged definition +	* @return bool  	*/  	protected function is_content_bbcode(array $without, array $with)  	{ @@ -123,6 +123,22 @@ class bbcode_merger  	}  	/** +	* Test whether the two definitions form BBCode with an optional attribute +	* +	* @param  array $without BBCode definition without an attribute +	* @param  array $with    BBCode definition with an attribute +	* @return bool +	*/ +	protected function is_optional_bbcode(array $without, array $with) +	{ +		// Remove the default attribute from the definition +		$with['usage'] = preg_replace('(=[^\\]]++)', '', $with['usage']); + +		// Test whether both definitions are the same, regardless of case +		return strcasecmp($without['usage'], $with['usage']) === 0; +	} + +	/**  	* Merge the two BBCode definitions of a "content"-style BBCode  	*  	* @param  array $without BBCode definition without an attribute @@ -131,7 +147,7 @@ class bbcode_merger  	*/  	protected function merge_content_bbcode(array $without, array $with)  	{ -		// Convert [X={X}] into [X={X;useContent}] +		// Convert [x={X}] into [x={X;useContent}]  		$usage = preg_replace('(\\})', ';useContent}', $with['usage'], 1);  		// Use the template from the definition that uses an attribute @@ -143,7 +159,7 @@ class bbcode_merger  	/**  	* Merge the two BBCode definitions of a BBCode with an optional argument  	* -	* Such BBCodes include the [QUOTE] BBCode, which takes an optional argument +	* Such BBCodes include the [quote] BBCode, which takes an optional argument  	* but otherwise does not behave differently  	*  	* @param  array $without BBCode definition without an attribute  | 
