diff options
Diffstat (limited to 'phpBB/phpbb')
| -rw-r--r-- | phpBB/phpbb/console/exception_subscriber.php | 13 | ||||
| -rw-r--r-- | phpBB/phpbb/feed/helper.php | 55 | ||||
| -rw-r--r-- | phpBB/phpbb/feed/quote_helper.php | 36 | ||||
| -rw-r--r-- | phpBB/phpbb/log/log.php | 14 | 
4 files changed, 83 insertions, 35 deletions
| diff --git a/phpBB/phpbb/console/exception_subscriber.php b/phpBB/phpbb/console/exception_subscriber.php index b920d4abae..b240993203 100644 --- a/phpBB/phpbb/console/exception_subscriber.php +++ b/phpBB/phpbb/console/exception_subscriber.php @@ -29,12 +29,10 @@ class exception_subscriber implements EventSubscriberInterface  	 * Construct method  	 *  	 * @param \phpbb\language\language $language Language object -	 * @param bool $debug Debug mode  	 */ -	public function __construct(\phpbb\language\language $language, $debug = false) +	public function __construct(\phpbb\language\language $language)  	{  		$this->language = $language; -		$this->debug = $debug;  	}  	/** @@ -52,14 +50,7 @@ class exception_subscriber implements EventSubscriberInterface  			$parameters = array_merge(array($original_exception->getMessage()), $original_exception->get_parameters());  			$message = call_user_func_array(array($this->language, 'lang'), $parameters); -			if ($this->debug) -			{ -				$exception = new \RuntimeException($message , $original_exception->getCode(), $original_exception); -			} -			else -			{ -				$exception = new \RuntimeException($message , $original_exception->getCode()); -			} +			$exception = new \RuntimeException($message , $original_exception->getCode(), $original_exception);  			$event->setException($exception);  		} diff --git a/phpBB/phpbb/feed/helper.php b/phpBB/phpbb/feed/helper.php index e15d1e131e..7d50b7ce7d 100644 --- a/phpBB/phpbb/feed/helper.php +++ b/phpBB/phpbb/feed/helper.php @@ -13,41 +13,52 @@  namespace phpbb\feed; +use phpbb\config\config; +use phpbb\path_helper; +use phpbb\textformatter\s9e\renderer; +use phpbb\user; +use Symfony\Component\DependencyInjection\ContainerInterface; +  /**   * Class with some helpful functions used in feeds   */  class helper  { -	/** @var \phpbb\config\config */ +	/** @var config */  	protected $config; -	/** @var \phpbb\user */ -	protected $user; +	/** @var ContainerInterface */ +	protected $container; -	/** @var string */ -	protected $phpbb_root_path; +	/** @var path_helper */ +	protected $path_helper; -	/** @var string */ -	protected $phpEx; +	/** @var renderer */ +	protected $renderer; + +	/** @var user */ +	protected $user;  	/**  	 * Constructor  	 * -	 * @param	\phpbb\config\config	$config		Config object -	 * @param	\phpbb\user		$user		User object -	 * @param	string	$phpbb_root_path	Root path -	 * @param	string	$phpEx				PHP file extension +	 * @param	config				$config			Config object +	 * @param	ContainerInterface	$container		Service container object +	 * @param	path_helper			$path_helper 	Path helper object +	 * @param	renderer			$renderer		TextFormatter renderer object +	 * @param	user				$user			User object  	 */ -	public function __construct(\phpbb\config\config $config, \phpbb\user $user, $phpbb_root_path, $phpEx) +	public function __construct(config $config, ContainerInterface $container, path_helper $path_helper, renderer $renderer, user $user)  	{  		$this->config = $config; +		$this->container = $container; +		$this->path_helper = $path_helper; +		$this->renderer = $renderer;  		$this->user = $user; -		$this->phpbb_root_path = $phpbb_root_path; -		$this->phpEx = $phpEx;  	}  	/** -	 * Run links through append_sid(), prepend generate_board_url() and remove session id +	 * Returns the board url (and caches it in the function)  	 */  	public function get_board_url()  	{ @@ -104,16 +115,12 @@ class helper  			return '';  		} -		// Prepare some bbcodes for better parsing -		$content	= preg_replace("#\[quote(=".*?")?:$uid\]\s*(.*?)\s*\[/quote:$uid\]#si", "[quote$1:$uid]<br />$2<br />[/quote:$uid]", $content); - -		$content = generate_text_for_display($content, $uid, $bitfield, $options); +		// Setup our own quote_helper to remove all attributes from quotes +		$this->renderer->configure_quote_helper($this->container->get('feed.quote_helper')); -		// Add newlines -		$content = str_replace('<br />', '<br />' . "\n", $content); +		$this->renderer->set_smilies_path($this->get_board_url() . '/' . $this->config['smilies_path']); -		// Convert smiley Relative paths to Absolute path, Windows style -		$content = str_replace($this->phpbb_root_path . $this->config['smilies_path'], $this->get_board_url() . '/' . $this->config['smilies_path'], $content); +		$content = generate_text_for_display($content, $uid, $bitfield, $options);  		// Remove "Select all" link and mouse events  		$content = str_replace('<a href="#" onclick="selectCode(this); return false;">' . $this->user->lang['SELECT_ALL_CODE'] . '</a>', '', $content); @@ -152,7 +159,7 @@ class helper  			$content .= implode('<br />', $post_attachments);  			// Convert attachments' relative path to absolute path -			$content = str_replace($this->phpbb_root_path . 'download/file.' . $this->phpEx, $this->get_board_url() . '/download/file.' . $this->phpEx, $content); +			$content = str_replace($this->path_helper->get_web_root_path() . 'download/file.' . $this->path_helper->get_php_ext(), $this->get_board_url() . '/download/file.' . $this->path_helper->get_php_ext(), $content);  		}  		// Remove Comments from inline attachments [ia] diff --git a/phpBB/phpbb/feed/quote_helper.php b/phpBB/phpbb/feed/quote_helper.php new file mode 100644 index 0000000000..843d075028 --- /dev/null +++ b/phpBB/phpbb/feed/quote_helper.php @@ -0,0 +1,36 @@ +<?php +/** + * + * 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. + * + */ + +namespace phpbb\feed; + +/** + * Modified quote_helper for feeds (basically just removing all attributes) + */ +class quote_helper extends \phpbb\textformatter\s9e\quote_helper +{ +	/** +	 * {@inheritdoc} +	 */ +	public function inject_metadata($xml) +	{ +		// In feeds we don't want any attributes, so delete all of them +		return \s9e\TextFormatter\Utils::replaceAttributes( +			$xml, +			'QUOTE', +			function () +			{ +				return []; +			} +		); +	} +} diff --git a/phpBB/phpbb/log/log.php b/phpBB/phpbb/log/log.php index 5aad7ee326..dcc4cdde51 100644 --- a/phpBB/phpbb/log/log.php +++ b/phpBB/phpbb/log/log.php @@ -933,6 +933,20 @@ class log implements \phpbb\log\log_interface  				$forum_auth['f_read'][$row['topic_id']] = $row['forum_id'];  			} +			/** +			 * Allow modifying SQL query after topic data is retrieved (inside loop). +			 * +			 * @event core.phpbb_log_get_topic_auth_sql_after +			 * @var	array	forum_auth	Forum permissions +			 * @var	array	row			One row of data from SQL query +			 * @since 3.2.2-RC1 +			 */ +			$vars = array( +				'forum_auth', +				'row', +			); +			extract($this->dispatcher->trigger_event('core.phpbb_log_get_topic_auth_sql_after', compact($vars))); +  			if ($this->auth->acl_gets('a_', 'm_', $row['forum_id']))  			{  				$forum_auth['m_'][$row['topic_id']] = $row['forum_id']; | 
