diff options
| author | DSR! <xchwarze@gmail.com> | 2018-03-03 12:12:38 -0300 | 
|---|---|---|
| committer | Marc Alexander <admin@m-a-styles.de> | 2018-10-13 15:14:44 -0700 | 
| commit | c67dd0c5912844a50323b97e8fecb30d21bb361c (patch) | |
| tree | a6ef2266c480891a0b02c3fd322d0e71bde83569 | |
| parent | ca23d199c1064d6de9bab8d2ca6198b85fd35543 (diff) | |
| download | forums-c67dd0c5912844a50323b97e8fecb30d21bb361c.tar forums-c67dd0c5912844a50323b97e8fecb30d21bb361c.tar.gz forums-c67dd0c5912844a50323b97e8fecb30d21bb361c.tar.bz2 forums-c67dd0c5912844a50323b97e8fecb30d21bb361c.tar.xz forums-c67dd0c5912844a50323b97e8fecb30d21bb361c.zip | |
[ticket/15836] Event to send message via external transport
PHPBB3-15836
| -rw-r--r-- | phpBB/includes/functions_messenger.php | 83 | 
1 files changed, 66 insertions, 17 deletions
| diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php index fdd1dc6e32..7b530d7119 100644 --- a/phpBB/includes/functions_messenger.php +++ b/phpBB/includes/functions_messenger.php @@ -521,7 +521,7 @@ class messenger  	*/  	function msg_email()  	{ -		global $config; +		global $config, $phpbb_dispatcher;  		if (empty($config['email_enable']))  		{ @@ -549,6 +549,33 @@ class messenger  		$contact_name = htmlspecialchars_decode($config['board_contact_name']);  		$board_contact = (($contact_name !== '') ? '"' . mail_encode($contact_name) . '" ' : '') . '<' . $config['board_contact'] . '>'; +		$break = false; +		$addresses = $this->addresses; +		$subject = $this->subject; +		$msg = $this->msg; +		/** +		* Event to send message via external transport +		* +		* @event core.notification_message_email +		* @var	bool	break		Flag indicating if the function return after hook +		* @var	array	addresses 	The message recipients +		* @var	string	subject		The message subject +		* @var	string	msg			The message text +		* @since 3.2.4-RC1 +		*/ +		$vars = array( +			'break', +			'addresses', +			'subject', +			'msg', +		); +		extract($phpbb_dispatcher->trigger_event('core.notification_message_email', compact($vars))); + +		if ($break) +		{ +			return true; +		} +  		if (empty($this->replyto))  		{  			$this->replyto = $board_contact; @@ -787,7 +814,7 @@ class queue  	*/  	function process()  	{ -		global $config, $phpEx, $phpbb_root_path, $user; +		global $config, $phpEx, $phpbb_root_path, $user, $phpbb_dispatcher;  		$lock = new \phpbb\lock\flock($this->cache_file);  		$lock->acquire(); @@ -884,23 +911,45 @@ class queue  				switch ($object)  				{  					case 'email': -						$err_msg = ''; -						$to = (!$to) ? 'undisclosed-recipients:;' : $to; - -						if ($config['smtp_delivery']) -						{ -							$result = smtpmail($addresses, mail_encode($subject), wordwrap(utf8_wordwrap($msg), 997, "\n", true), $err_msg, $headers); -						} -						else +						$break = false; +						/** +						* Event to send message via external transport +						* +						* @event core.notification_message_email +						* @var	bool	break		Flag indicating if the function return after hook +						* @var	array	addresses 	The message recipients +						* @var	string	subject		The message subject +						* @var	string	msg			The message text +						* @since 3.2.4-RC1 +						*/ +						$vars = array( +							'break', +							'addresses', +							'subject', +							'msg', +						); +						extract($phpbb_dispatcher->trigger_event('core.notification_message_email', compact($vars))); + +						if (!$break)  						{ -							$result = phpbb_mail($to, $subject, $msg, $headers, PHP_EOL, $err_msg); -						} +							$err_msg = ''; +							$to = (!$to) ? 'undisclosed-recipients:;' : $to; -						if (!$result) -						{ -							$messenger = new messenger(); -							$messenger->error('EMAIL', $err_msg); -							continue 2; +							if ($config['smtp_delivery']) +							{ +								$result = smtpmail($addresses, mail_encode($subject), wordwrap(utf8_wordwrap($msg), 997, "\n", true), $err_msg, $headers); +							} +							else +							{ +								$result = phpbb_mail($to, $subject, $msg, $headers, PHP_EOL, $err_msg); +							} + +							if (!$result) +							{ +								$messenger = new messenger(); +								$messenger->error('EMAIL', $err_msg); +								continue 2; +							}  						}  					break; | 
