diff options
Diffstat (limited to 'phpBB/phpbb')
25 files changed, 226 insertions, 59 deletions
| diff --git a/phpBB/phpbb/auth/provider/oauth/oauth.php b/phpBB/phpbb/auth/provider/oauth/oauth.php index 8809a0c6b4..3e9b424e8d 100644 --- a/phpBB/phpbb/auth/provider/oauth/oauth.php +++ b/phpBB/phpbb/auth/provider/oauth/oauth.php @@ -674,6 +674,7 @@ class oauth extends \phpbb\auth\provider\base  						'oauth_service' => $actual_name,  					), +					'SERVICE_ID'	=> $actual_name,  					'SERVICE_NAME'	=> $this->user->lang['AUTH_PROVIDER_OAUTH_SERVICE_' . strtoupper($actual_name)],  					'UNIQUE_ID'		=> (isset($oauth_user_ids[$actual_name])) ? $oauth_user_ids[$actual_name] : null,  				); diff --git a/phpBB/phpbb/captcha/plugins/gd.php b/phpBB/phpbb/captcha/plugins/gd.php index 831e5bcfdf..6d3c9bb3d2 100644 --- a/phpBB/phpbb/captcha/plugins/gd.php +++ b/phpBB/phpbb/captcha/plugins/gd.php @@ -51,7 +51,7 @@ class gd extends captcha_abstract  		return 'CAPTCHA_GD';  	} -	function acp_page($id, &$module) +	function acp_page($id, $module)  	{  		global $user, $template, $phpbb_log, $request;  		global $config; diff --git a/phpBB/phpbb/captcha/plugins/gd_wave.php b/phpBB/phpbb/captcha/plugins/gd_wave.php index bde46f8815..4ac26ed2b7 100644 --- a/phpBB/phpbb/captcha/plugins/gd_wave.php +++ b/phpBB/phpbb/captcha/plugins/gd_wave.php @@ -33,7 +33,7 @@ class gd_wave extends captcha_abstract  		return '\\phpbb\\captcha\\gd_wave';  	} -	function acp_page($id, &$module) +	function acp_page($id, $module)  	{  		global $user; diff --git a/phpBB/phpbb/captcha/plugins/nogd.php b/phpBB/phpbb/captcha/plugins/nogd.php index 6845e5935c..da67cd2bf4 100644 --- a/phpBB/phpbb/captcha/plugins/nogd.php +++ b/phpBB/phpbb/captcha/plugins/nogd.php @@ -33,7 +33,7 @@ class nogd extends captcha_abstract  		return '\\phpbb\\captcha\\non_gd';  	} -	function acp_page($id, &$module) +	function acp_page($id, $module)  	{  		global $user; diff --git a/phpBB/phpbb/captcha/plugins/qa.php b/phpBB/phpbb/captcha/plugins/qa.php index 7797212ac9..70b3f72cc3 100644 --- a/phpBB/phpbb/captcha/plugins/qa.php +++ b/phpBB/phpbb/captcha/plugins/qa.php @@ -107,8 +107,7 @@ class qa  			$sql = 'SELECT q.question_id, q.lang_iso  				FROM ' . $this->table_captcha_questions . ' q, ' . $this->table_captcha_answers . ' a -				WHERE q.question_id = a.question_id -				GROUP BY lang_iso'; +				WHERE q.question_id = a.question_id';  			$result = $db->sql_query($sql, 7200);  			while ($row = $db->sql_fetchrow($result)) @@ -638,7 +637,7 @@ class qa  	/**  	*  API function - The ACP backend, this marks the end of the easy methods  	*/ -	function acp_page($id, &$module) +	function acp_page($id, $module)  	{  		global $config, $request, $phpbb_log, $template, $user; @@ -776,7 +775,7 @@ class qa  	/**  	*  This handles the list overview  	*/ -	function acp_question_list(&$module) +	function acp_question_list($module)  	{  		global $db, $template; diff --git a/phpBB/phpbb/captcha/plugins/recaptcha.php b/phpBB/phpbb/captcha/plugins/recaptcha.php index 152709a9ea..b7c0b5f5e2 100644 --- a/phpBB/phpbb/captcha/plugins/recaptcha.php +++ b/phpBB/phpbb/captcha/plugins/recaptcha.php @@ -66,7 +66,7 @@ class recaptcha extends captcha_abstract  		throw new \Exception('No generator class given.');  	} -	function acp_page($id, &$module) +	function acp_page($id, $module)  	{  		global $config, $template, $user, $phpbb_log, $request; diff --git a/phpBB/phpbb/console/command/thumbnail/delete.php b/phpBB/phpbb/console/command/thumbnail/delete.php index 9f2ee822be..7b95c20cf2 100644 --- a/phpBB/phpbb/console/command/thumbnail/delete.php +++ b/phpBB/phpbb/console/command/thumbnail/delete.php @@ -19,6 +19,11 @@ use Symfony\Component\Console\Style\SymfonyStyle;  class delete extends \phpbb\console\command\command  {  	/** +	* @var \phpbb\config\config +	*/ +	protected $config; + +	/**  	* @var \phpbb\db\driver\driver_interface  	*/  	protected $db; @@ -32,12 +37,14 @@ class delete extends \phpbb\console\command\command  	/**  	* Constructor  	* +	* @param \config\config $config The config  	* @param \phpbb\user $user The user object (used to get language information)  	* @param \phpbb\db\driver\driver_interface $db Database connection  	* @param string $phpbb_root_path Root path  	*/ -	public function __construct(\phpbb\user $user, \phpbb\db\driver\driver_interface $db, $phpbb_root_path) +	public function __construct(\phpbb\config\config $config, \phpbb\user $user, \phpbb\db\driver\driver_interface $db, $phpbb_root_path)  	{ +		$this->config = $config;  		$this->db = $db;  		$this->phpbb_root_path = $phpbb_root_path; @@ -101,7 +108,7 @@ class delete extends \phpbb\console\command\command  		$return = 0;  		while ($row = $this->db->sql_fetchrow($result))  		{ -			$thumbnail_path = $this->phpbb_root_path . 'files/thumb_' . $row['physical_filename']; +			$thumbnail_path = $this->phpbb_root_path . $this->config['upload_path'] . '/thumb_' . $row['physical_filename'];  			if (@unlink($thumbnail_path))  			{ diff --git a/phpBB/phpbb/console/command/thumbnail/generate.php b/phpBB/phpbb/console/command/thumbnail/generate.php index 64f7555336..1f6582b17b 100644 --- a/phpBB/phpbb/console/command/thumbnail/generate.php +++ b/phpBB/phpbb/console/command/thumbnail/generate.php @@ -20,6 +20,11 @@ use Symfony\Component\Console\Style\SymfonyStyle;  class generate extends \phpbb\console\command\command  {  	/** +	* @var \phpbb\config\config +	*/ +	protected $config; + +	/**  	* @var \phpbb\db\driver\driver_interface  	*/  	protected $db; @@ -45,14 +50,16 @@ class generate extends \phpbb\console\command\command  	/**  	* Constructor  	* +	* @param \config\config $config The config  	* @param \phpbb\user $user The user object (used to get language information)  	* @param \phpbb\db\driver\driver_interface $db Database connection  	* @param \phpbb\cache\service $cache The cache service  	* @param string $phpbb_root_path Root path  	* @param string $php_ext PHP extension  	*/ -	public function __construct(\phpbb\user $user, \phpbb\db\driver\driver_interface $db, \phpbb\cache\service $cache, $phpbb_root_path, $php_ext) +	public function __construct(\phpbb\config\config $config, \phpbb\user $user, \phpbb\db\driver\driver_interface $db, \phpbb\cache\service $cache, $phpbb_root_path, $php_ext)  	{ +		$this->config = $config;  		$this->db = $db;  		$this->cache = $cache;  		$this->phpbb_root_path = $phpbb_root_path; @@ -126,8 +133,8 @@ class generate extends \phpbb\console\command\command  		{  			if (isset($extensions[$row['extension']]['display_cat']) && $extensions[$row['extension']]['display_cat'] == ATTACHMENT_CATEGORY_IMAGE)  			{ -				$source = $this->phpbb_root_path . 'files/' . $row['physical_filename']; -				$destination = $this->phpbb_root_path . 'files/thumb_' . $row['physical_filename']; +				$source = $this->phpbb_root_path . $this->config['upload_path'] . '/' . $row['physical_filename']; +				$destination = $this->phpbb_root_path . $this->config['upload_path'] . '/thumb_' . $row['physical_filename'];  				if (create_thumbnail($source, $destination, $row['mimetype']))  				{ diff --git a/phpBB/phpbb/db/migration/data/v30x/release_3_0_8_rc1.php b/phpBB/phpbb/db/migration/data/v30x/release_3_0_8_rc1.php index c018adab46..836cb4577a 100644 --- a/phpBB/phpbb/db/migration/data/v30x/release_3_0_8_rc1.php +++ b/phpBB/phpbb/db/migration/data/v30x/release_3_0_8_rc1.php @@ -58,9 +58,14 @@ class release_3_0_8_rc1 extends \phpbb\db\migration\migration  		$result = $this->db->sql_query($sql);  		$extension_groups_updated = array(); -		while ($lang_dir = $this->db->sql_fetchfield('lang_dir')) +		while ($row = $this->db->sql_fetchrow($result))  		{ -			$lang_dir = basename($lang_dir); +			if (empty($row['lang_dir'])) +			{ +				continue; +			} + +			$lang_dir = basename($row['lang_dir']);  			// The language strings we need are either in language/.../acp/attachments.php  			// in the update package if we're updating to 3.0.8-RC1 or later, diff --git a/phpBB/phpbb/db/migration/data/v32x/jquery_update.php b/phpBB/phpbb/db/migration/data/v32x/jquery_update.php new file mode 100644 index 0000000000..6dc58ec638 --- /dev/null +++ b/phpBB/phpbb/db/migration/data/v32x/jquery_update.php @@ -0,0 +1,37 @@ +<?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\db\migration\data\v32x; + +class jquery_update extends \phpbb\db\migration\migration +{ +	public function effectively_installed() +	{ +		return $this->config['load_jquery_url'] === '//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js'; +	} + +	static public function depends_on() +	{ +		return array( +			'\phpbb\db\migration\data\v32x\v325rc1', +		); +	} + +	public function update_data() +	{ +		return array( +			array('config.update', array('load_jquery_url', '//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js')), +		); +	} + +} diff --git a/phpBB/phpbb/db/migration/data/v32x/v325.php b/phpBB/phpbb/db/migration/data/v32x/v325.php new file mode 100644 index 0000000000..59de4916df --- /dev/null +++ b/phpBB/phpbb/db/migration/data/v32x/v325.php @@ -0,0 +1,38 @@ +<?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\db\migration\data\v32x; + +class v325 extends \phpbb\db\migration\migration +{ +	public function effectively_installed() +	{ +		return phpbb_version_compare($this->config['version'], '3.2.5', '>='); +	} + +	static public function depends_on() +	{ +		return array( +			'\phpbb\db\migration\data\v32x\v325rc1', +			'\phpbb\db\migration\data\v32x\jquery_update', +		); + +	} + +	public function update_data() +	{ +		return array( +			array('config.update', array('version', '3.2.5')), +		); +	} +} diff --git a/phpBB/phpbb/db/migration/data/v32x/v325rc1.php b/phpBB/phpbb/db/migration/data/v32x/v325rc1.php new file mode 100644 index 0000000000..2d0de0a432 --- /dev/null +++ b/phpBB/phpbb/db/migration/data/v32x/v325rc1.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\db\migration\data\v32x; + +class v325rc1 extends \phpbb\db\migration\migration +{ +	public function effectively_installed() +	{ +		return phpbb_version_compare($this->config['version'], '3.2.5-RC1', '>='); +	} + +	static public function depends_on() +	{ +		return array( +			'\phpbb\db\migration\data\v32x\v324', +		); +	} + +	public function update_data() +	{ +		return array( +			array('config.update', array('version', '3.2.5-RC1')), +		); +	} +} diff --git a/phpBB/phpbb/files/upload.php b/phpBB/phpbb/files/upload.php index a9bf74094d..50e15c9844 100644 --- a/phpBB/phpbb/files/upload.php +++ b/phpBB/phpbb/files/upload.php @@ -261,7 +261,7 @@ class upload  	 *  	 * @param filespec $file Instance of filespec class  	 */ -	public function common_checks(&$file) +	public function common_checks($file)  	{  		// Filesize is too big or it's 0 if it was larger than the maxsize in the upload form  		if ($this->max_filesize && ($file->get('filesize') > $this->max_filesize || $file->get('filesize') == 0)) @@ -297,7 +297,7 @@ class upload  	 *  	 * @return bool True if extension is allowed, false if not  	 */ -	public function valid_extension(&$file) +	public function valid_extension($file)  	{  		return (in_array($file->get('extension'), $this->allowed_extensions)) ? true : false;  	} @@ -310,7 +310,7 @@ class upload  	 * @return bool True if dimensions are valid or no constraints set, false  	 *			if not  	 */ -	public function valid_dimensions(&$file) +	public function valid_dimensions($file)  	{  		if (!$this->max_width && !$this->max_height && !$this->min_width && !$this->min_height)  		{ @@ -350,7 +350,7 @@ class upload  	 *  	 * @return bool True if content is valid, false if not  	 */ -	public function valid_content(&$file) +	public function valid_content($file)  	{  		return ($file->check_content($this->disallowed_content));  	} diff --git a/phpBB/phpbb/install/module/obtain_data/task/obtain_database_data.php b/phpBB/phpbb/install/module/obtain_data/task/obtain_database_data.php index dc7b060746..6ec1e612b9 100644 --- a/phpBB/phpbb/install/module/obtain_data/task/obtain_database_data.php +++ b/phpBB/phpbb/install/module/obtain_data/task/obtain_database_data.php @@ -78,10 +78,10 @@ class obtain_database_data extends \phpbb\install\task_base implements \phpbb\in  		$dbms			= $this->io_handler->get_input('dbms', '');  		$dbhost			= $this->io_handler->get_input('dbhost', '', true);  		$dbport			= $this->io_handler->get_input('dbport', ''); -		$dbuser			= $this->io_handler->get_input('dbuser', ''); -		$dbpasswd		= $this->io_handler->get_raw_input('dbpasswd', ''); -		$dbname			= $this->io_handler->get_input('dbname', ''); -		$table_prefix	= $this->io_handler->get_input('table_prefix', ''); +		$dbuser			= $this->io_handler->get_input('dbuser', '', true); +		$dbpasswd		= $this->io_handler->get_raw_input('dbpasswd', '', true); +		$dbname			= $this->io_handler->get_input('dbname', '', true); +		$table_prefix	= $this->io_handler->get_input('table_prefix', '', true);  		// Check database data  		$user_data_vaild = $this->check_database_data($dbms, $dbhost, $dbport, $dbuser, $dbpasswd, $dbname, $table_prefix); diff --git a/phpBB/phpbb/install/module/obtain_data/task/obtain_email_data.php b/phpBB/phpbb/install/module/obtain_data/task/obtain_email_data.php index e8a9c971b7..7cd0d7bf23 100644 --- a/phpBB/phpbb/install/module/obtain_data/task/obtain_email_data.php +++ b/phpBB/phpbb/install/module/obtain_data/task/obtain_email_data.php @@ -50,11 +50,11 @@ class obtain_email_data extends \phpbb\install\task_base implements \phpbb\insta  		// E-mail data  		$email_enable	= $this->io_handler->get_input('email_enable', true);  		$smtp_delivery	= $this->io_handler->get_input('smtp_delivery', ''); -		$smtp_host		= $this->io_handler->get_input('smtp_host', ''); +		$smtp_host		= $this->io_handler->get_input('smtp_host', '', true);  		$smtp_port		= $this->io_handler->get_input('smtp_port', '');  		$smtp_auth		= $this->io_handler->get_input('smtp_auth', ''); -		$smtp_user		= $this->io_handler->get_input('smtp_user', ''); -		$smtp_passwd	= $this->io_handler->get_input('smtp_pass', ''); +		$smtp_user		= $this->io_handler->get_input('smtp_user', '', true); +		$smtp_passwd	= $this->io_handler->get_input('smtp_pass', '', true);  		$auth_methods = array('PLAIN', 'LOGIN', 'CRAM-MD5', 'DIGEST-MD5', 'POP-BEFORE-SMTP'); diff --git a/phpBB/phpbb/install/module/obtain_data/task/obtain_server_data.php b/phpBB/phpbb/install/module/obtain_data/task/obtain_server_data.php index 1ef70eae08..5096ce284e 100644 --- a/phpBB/phpbb/install/module/obtain_data/task/obtain_server_data.php +++ b/phpBB/phpbb/install/module/obtain_data/task/obtain_server_data.php @@ -79,9 +79,9 @@ class obtain_server_data extends \phpbb\install\task_base implements \phpbb\inst  		$cookie_secure		= $this->io_handler->get_input('cookie_secure', $cookie_secure);  		$server_protocol	= $this->io_handler->get_input('server_protocol', $server_protocol);  		$force_server_vars	= $this->io_handler->get_input('force_server_vars', 0); -		$server_name		= $this->io_handler->get_input('server_name', $server_name); +		$server_name		= $this->io_handler->get_input('server_name', $server_name, true);  		$server_port		= $this->io_handler->get_input('server_port', $server_port); -		$script_path		= $this->io_handler->get_input('script_path', $script_path); +		$script_path		= $this->io_handler->get_input('script_path', $script_path, true);  		// Clean up script path  		if ($script_path !== '/') diff --git a/phpBB/phpbb/install/module/obtain_data/task/obtain_update_ftp_data.php b/phpBB/phpbb/install/module/obtain_data/task/obtain_update_ftp_data.php index f31472fc58..3c17576c13 100644 --- a/phpBB/phpbb/install/module/obtain_data/task/obtain_update_ftp_data.php +++ b/phpBB/phpbb/install/module/obtain_data/task/obtain_update_ftp_data.php @@ -85,10 +85,10 @@ class obtain_update_ftp_data extends task_base  				$method = $methods[0];  			} -			$ftp_host = $this->iohandler->get_input('ftp_host', ''); -			$ftp_user = $this->iohandler->get_input('ftp_user', ''); -			$ftp_pass = htmlspecialchars_decode($this->iohandler->get_input('ftp_pass', '')); -			$ftp_path = $this->iohandler->get_input('ftp_path', ''); +			$ftp_host = $this->iohandler->get_input('ftp_host', '', true); +			$ftp_user = $this->iohandler->get_input('ftp_user', '', true); +			$ftp_pass = htmlspecialchars_decode($this->iohandler->get_input('ftp_pass', '', true)); +			$ftp_path = $this->iohandler->get_input('ftp_path', '', true);  			$ftp_port = $this->iohandler->get_input('ftp_port', 21);  			$ftp_time = $this->iohandler->get_input('ftp_timeout', 10); diff --git a/phpBB/phpbb/message/admin_form.php b/phpBB/phpbb/message/admin_form.php index 96b8d3499e..ae1c1d8614 100644 --- a/phpBB/phpbb/message/admin_form.php +++ b/phpBB/phpbb/message/admin_form.php @@ -22,6 +22,9 @@ class admin_form extends form  	/** @var \phpbb\config\db_text */  	protected $config_text; +	/** @var \phpbb\event\dispatcher_interface */ +	protected $dispatcher; +  	/** @var string */  	protected $subject;  	/** @var string */ @@ -37,13 +40,15 @@ class admin_form extends form  	* @param \phpbb\config\db_text $config_text  	* @param \phpbb\db\driver\driver_interface $db  	* @param \phpbb\user $user +	* @param \phpbb\event\dispatcher_interface $dispatcher  	* @param string $phpbb_root_path  	* @param string $phpEx  	*/ -	public function __construct(\phpbb\auth\auth $auth, \phpbb\config\config $config, \phpbb\config\db_text $config_text, \phpbb\db\driver\driver_interface $db, \phpbb\user $user, $phpbb_root_path, $phpEx) +	public function __construct(\phpbb\auth\auth $auth, \phpbb\config\config $config, \phpbb\config\db_text $config_text, \phpbb\db\driver\driver_interface $db, \phpbb\user $user, \phpbb\event\dispatcher_interface $dispatcher, $phpbb_root_path, $phpEx)  	{  		parent::__construct($auth, $config, $db, $user, $phpbb_root_path, $phpEx);  		$this->config_text = $config_text; +		$this->dispatcher = $dispatcher;  	}  	/** @@ -91,6 +96,29 @@ class admin_form extends form  			$this->errors[] = $this->user->lang['EMPTY_MESSAGE_EMAIL'];  		} +		$subject = $this->subject; +		$body = $this->body; +		$errors = $this->errors; + +		/** +		* You can use this event to modify subject and/or body and add new errors. +		* +		* @event core.message_admin_form_submit_before +		* @var	string	subject	Message subject +		* @var	string	body	Message body +		* @var	array	errors	Form errors +		* @since 3.2.6-RC1 +		*/ +		$vars = [ +			'subject', +			'body', +			'errors', +		]; +		extract($this->dispatcher->trigger_event('core.message_admin_form_submit_before', compact($vars))); +		$this->subject = $subject; +		$this->body = $body; +		$this->errors = $errors; +  		if ($this->user->data['is_registered'])  		{  			$this->message->set_sender_from_user($this->user); diff --git a/phpBB/phpbb/notification/method/email.php b/phpBB/phpbb/notification/method/email.php index 56dd1e9367..6376d13dc7 100644 --- a/phpBB/phpbb/notification/method/email.php +++ b/phpBB/phpbb/notification/method/email.php @@ -65,7 +65,7 @@ class email extends \phpbb\notification\method\messenger_base  	*/  	public function is_available(type_interface $notification_type = null)  	{ -		return parent::is_available($notification_type) && $this->config['email_enable'] && $this->user->data['user_email']; +		return parent::is_available($notification_type) && $this->config['email_enable'] && !empty($this->user->data['user_email']);  	}  	/** diff --git a/phpBB/phpbb/notification/type/report_pm.php b/phpBB/phpbb/notification/type/report_pm.php index 7e53ffb3ca..444f98270d 100644 --- a/phpBB/phpbb/notification/type/report_pm.php +++ b/phpBB/phpbb/notification/type/report_pm.php @@ -142,13 +142,16 @@ class report_pm extends \phpbb\notification\type\pm  	*/  	public function get_email_template_variables()  	{ -		$user_data = $this->user_loader->get_user($this->get_data('reporter_id')); +		$user_data = $this->user_loader->get_user($this->get_data('from_user_id'));  		return array(  			'AUTHOR_NAME'	=> htmlspecialchars_decode($user_data['username']),  			'SUBJECT'		=> htmlspecialchars_decode(censor_text($this->get_data('message_subject'))), -			'U_VIEW_REPORT'	=> generate_board_url() . "mcp.{$this->php_ext}?r={$this->item_parent_id}&i=pm_reports&mode=pm_report_details", +			/** @deprecated	3.2.6-RC1	(to be removed in 4.0.0) use {SUBJECT} instead in report_pm.txt */ +			'TOPIC_TITLE'	=> htmlspecialchars_decode(censor_text($this->get_data('message_subject'))), + +			'U_VIEW_REPORT'	=> generate_board_url() . "/mcp.{$this->php_ext}?r={$this->item_parent_id}&i=pm_reports&mode=pm_report_details",  		);  	} @@ -236,8 +239,10 @@ class report_pm extends \phpbb\notification\type\pm  	*/  	public function users_to_query()  	{ -		return array($this->get_data('reporter_id')); -	} +		return array( +			$this->get_data('from_user_id'), +			$this->get_data('reporter_id'), +		);	}  	/**  	* {@inheritdoc} diff --git a/phpBB/phpbb/pagination.php b/phpBB/phpbb/pagination.php index 40af5eda6b..a7086f6691 100644 --- a/phpBB/phpbb/pagination.php +++ b/phpBB/phpbb/pagination.php @@ -46,7 +46,7 @@ class pagination  	/**  	* Generate a pagination link based on the url and the page information  	* -	* @param string $base_url is url prepended to all links generated within the function +	* @param string|array $base_url is url prepended to all links generated within the function  	*							If you use page numbers inside your controller route, base_url should contains a placeholder (%d)  	*							for the page. Also be sure to specify the pagination path information into the start_name argument  	* @param string $on_page is the page for which we want to generate the link @@ -69,7 +69,7 @@ class pagination  		* set $generate_page_link_override to the new URL value  		*  		* @event core.pagination_generate_page_link -		* @var string base_url is url prepended to all links generated within the function +		* @var string|array base_url is url prepended to all links generated within the function  		*							If you use page numbers inside your controller route, base_url should contains a placeholder (%d)  		*							for the page. Also be sure to specify the pagination path information into the start_name argument  		* @var string on_page is the page for which we want to generate the link @@ -120,7 +120,7 @@ class pagination  	* Generate template rendered pagination  	* Allows full control of rendering of pagination with the template  	* -	* @param string $base_url is url prepended to all links generated within the function +	* @param string|array $base_url is url prepended to all links generated within the function  	*							If you use page numbers inside your controller route, base_url should contains a placeholder (%d)  	*							for the page. Also be sure to specify the pagination path information into the start_name argument  	* @param string $block_var_name is the name assigned to the pagination data block within the template (example: <!-- BEGIN pagination -->) @@ -132,7 +132,7 @@ class pagination  	* @param int $start the item which should be considered currently active, used to determine the page we're on  	* @param bool $reverse_count determines whether we weight display of the list towards the start (false) or end (true) of the list  	* @param bool $ignore_on_page decides whether we enable an active (unlinked) item, used primarily for embedded lists -	* @return null +	* @return void  	*/  	public function generate_template_pagination($base_url, $block_var_name, $start_name, $num_items, $per_page, $start = 1, $reverse_count = false, $ignore_on_page = false)  	{ diff --git a/phpBB/phpbb/template/context.php b/phpBB/phpbb/template/context.php index 2ba6d185ad..202e29ce00 100644 --- a/phpBB/phpbb/template/context.php +++ b/phpBB/phpbb/template/context.php @@ -201,7 +201,8 @@ class context  			$pos = strpos($blocks[$i], '[');  			$name = ($pos !== false) ? substr($blocks[$i], 0, $pos) : $blocks[$i];  			$block = &$block[$name]; -			$index = (!$pos || strpos($blocks[$i], '[]') === $pos) ? (count($block) - 1) : (min((int) substr($blocks[$i], $pos + 1, -1), count($block) - 1)); +			$block_count = empty($block) ? 0 : count($block) - 1; +			$index = (!$pos || strpos($blocks[$i], '[]') === $pos) ? $block_count : (min((int) substr($blocks[$i], $pos + 1, -1), $block_count));  			$block = &$block[$index];  		} diff --git a/phpBB/phpbb/textformatter/s9e/factory.php b/phpBB/phpbb/textformatter/s9e/factory.php index c0bbc7b0e8..6191b9a315 100644 --- a/phpBB/phpbb/textformatter/s9e/factory.php +++ b/phpBB/phpbb/textformatter/s9e/factory.php @@ -354,6 +354,14 @@ class factory implements \phpbb\textformatter\cache_interface  		// Load the Emoji plugin and modify its tag's template to obey viewsmilies  		$tag = $configurator->Emoji->getTag(); +		$tag->template = '<xsl:choose> +			<xsl:when test="@tseq"> +				<img alt="{.}" class="emoji" draggable="false" src="//twemoji.maxcdn.com/2/svg/{@tseq}.svg"/> +			</xsl:when> +			<xsl:otherwise> +				<img alt="{.}" class="emoji" draggable="false" src="https://cdn.jsdelivr.net/gh/s9e/emoji-assets-twemoji@11.2/dist/svgz/{@seq}.svgz"/> +			</xsl:otherwise> +		</xsl:choose>';  		$tag->template = '<xsl:choose><xsl:when test="$S_VIEWSMILIES">' . str_replace('class="emoji"', 'class="emoji smilies"', $tag->template) . '</xsl:when><xsl:otherwise><xsl:value-of select="."/></xsl:otherwise></xsl:choose>';  		/** diff --git a/phpBB/phpbb/textformatter/s9e/link_helper.php b/phpBB/phpbb/textformatter/s9e/link_helper.php index 0f44603dec..1e113b6449 100644 --- a/phpBB/phpbb/textformatter/s9e/link_helper.php +++ b/phpBB/phpbb/textformatter/s9e/link_helper.php @@ -23,14 +23,16 @@ class link_helper  	*  	* @param  \s9e\TextFormatter\Parser\Tag $tag    LINK_TEXT tag  	* @param  \s9e\TextFormatter\Parser     $parser Parser -	* @return bool                                  Whether the tag is valid +	* @return void  	*/  	public function cleanup_tag(\s9e\TextFormatter\Parser\Tag $tag, \s9e\TextFormatter\Parser $parser)  	{  		// Invalidate if the content of the tag matches the text attribute  		$text = substr($parser->getText(), $tag->getPos(), $tag->getLen()); - -		return ($text !== $tag->getAttribute('text')); +		if ($text === $tag->getAttribute('text')) +		{ +			$tag->invalidate(); +		}  	}  	/** @@ -40,7 +42,7 @@ class link_helper  	*  	* @param  \s9e\TextFormatter\Parser\Tag $tag    URL tag (start tag)  	* @param  \s9e\TextFormatter\Parser     $parser Parser -	* @return bool                                  Always true to indicate that the tag is valid +	* @return void  	*/  	public function generate_link_text_tag(\s9e\TextFormatter\Parser\Tag $tag, \s9e\TextFormatter\Parser $parser)  	{ @@ -49,7 +51,7 @@ class link_helper  		// the [url] BBCode when its content is used for the URL  		if (!$tag->getEndTag() || !$this->should_shorten($tag, $parser->getText()))  		{ -			return true; +			return;  		}  		// Capture the text between the start tag and its end tag @@ -60,8 +62,6 @@ class link_helper  		// Create a tag that consumes the link's text  		$parser->addSelfClosingTag('LINK_TEXT', $start, $length)->setAttribute('text', $text); - -		return true;  	}  	/** @@ -84,7 +84,7 @@ class link_helper  	*  	* @param  \s9e\TextFormatter\Parser\Tag $tag       LINK_TEXT tag  	* @param  string                        $board_url Forum's root URL (with trailing slash) -	* @return bool                                     Always true to indicate that the tag is valid +	* @return void  	*/  	public function truncate_local_url(\s9e\TextFormatter\Parser\Tag $tag, $board_url)  	{ @@ -93,15 +93,13 @@ class link_helper  		{  			$tag->setAttribute('text', substr($text, strlen($board_url)));  		} - -		return true;  	}  	/**  	* Truncate the replacement text set in a LINK_TEXT tag  	*  	* @param  \s9e\TextFormatter\Parser\Tag $tag LINK_TEXT tag -	* @return bool                               Always true to indicate that the tag is valid +	* @return void  	*/  	public function truncate_text(\s9e\TextFormatter\Parser\Tag $tag)  	{ @@ -109,10 +107,7 @@ class link_helper  		if (utf8_strlen($text) > 55)  		{  			$text = utf8_substr($text, 0, 39) . ' ... ' . utf8_substr($text, -10); +			$tag->setAttribute('text', $text);  		} - -		$tag->setAttribute('text', $text); - -		return true;  	}  } diff --git a/phpBB/phpbb/user.php b/phpBB/phpbb/user.php index ca0e5872e4..7363290e11 100644 --- a/phpBB/phpbb/user.php +++ b/phpBB/phpbb/user.php @@ -343,7 +343,7 @@ class user extends \phpbb\session  		}  		// Is board disabled and user not an admin or moderator? -		if ($config['board_disable'] && !defined('IN_LOGIN') && !defined('SKIP_CHECK_DISABLED') && !$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_')) +		if ($config['board_disable'] && !defined('IN_INSTALL') && !defined('IN_LOGIN') && !defined('SKIP_CHECK_DISABLED') && !$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_'))  		{  			if ($this->data['is_bot'])  			{ | 
