1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-30 21:40:43 +02:00

Merge pull request #4969 from Elsensee/ticket/15245

[ticket/15245] Fix images in feeds when accessing via app.php
This commit is contained in:
Marc Alexander
2017-10-31 09:58:29 +01:00
4 changed files with 88 additions and 28 deletions

View File

@@ -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 */
/** @var ContainerInterface */
protected $container;
/** @var path_helper */
protected $path_helper;
/** @var renderer */
protected $renderer;
/** @var user */
protected $user;
/** @var string */
protected $phpbb_root_path;
/** @var string */
protected $phpEx;
/**
* 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,17 +115,13 @@ class helper
return '';
}
// Prepare some bbcodes for better parsing
$content = preg_replace("#\[quote(=&quot;.*?&quot;)?:$uid\]\s*(.*?)\s*\[/quote:$uid\]#si", "[quote$1:$uid]<br />$2<br />[/quote:$uid]", $content);
// Setup our own quote_helper to remove all attributes from quotes
$this->renderer->configure_quote_helper($this->container->get('feed.quote_helper'));
$this->renderer->set_smilies_path($this->get_board_url() . '/' . $this->config['smilies_path']);
$content = generate_text_for_display($content, $uid, $bitfield, $options);
// Add newlines
$content = str_replace('<br />', '<br />' . "\n", $content);
// 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);
// 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);
$content = preg_replace('#(onkeypress|onclick)="(.*?)"#si', '', $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]

View File

@@ -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 [];
}
);
}
}