diff options
Diffstat (limited to 'phpBB/phpbb/feed')
| -rw-r--r-- | phpBB/phpbb/feed/attachments_base.php | 83 | ||||
| -rw-r--r-- | phpBB/phpbb/feed/base.php | 40 | ||||
| -rw-r--r-- | phpBB/phpbb/feed/factory.php | 20 | ||||
| -rw-r--r-- | phpBB/phpbb/feed/forum.php | 18 | ||||
| -rw-r--r-- | phpBB/phpbb/feed/forums.php | 10 | ||||
| -rw-r--r-- | phpBB/phpbb/feed/helper.php | 49 | ||||
| -rw-r--r-- | phpBB/phpbb/feed/news.php | 12 | ||||
| -rw-r--r-- | phpBB/phpbb/feed/overall.php | 12 | ||||
| -rw-r--r-- | phpBB/phpbb/feed/post_base.php | 11 | ||||
| -rw-r--r-- | phpBB/phpbb/feed/topic.php | 16 | ||||
| -rw-r--r-- | phpBB/phpbb/feed/topic_base.php | 10 | ||||
| -rw-r--r-- | phpBB/phpbb/feed/topics.php | 12 | ||||
| -rw-r--r-- | phpBB/phpbb/feed/topics_active.php | 12 |
13 files changed, 173 insertions, 132 deletions
diff --git a/phpBB/phpbb/feed/attachments_base.php b/phpBB/phpbb/feed/attachments_base.php new file mode 100644 index 0000000000..a9a8175928 --- /dev/null +++ b/phpBB/phpbb/feed/attachments_base.php @@ -0,0 +1,83 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2014 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +namespace phpbb\feed; + +/** +* Abstract class for feeds displaying attachments +* +* @package phpBB3 +*/ +abstract class attachments_base extends \phpbb\feed\base +{ + /** + * Attachments that may be displayed + */ + protected $attachments = array(); + + /** + * Retrieve the list of attachments that may be displayed + */ + protected function fetch_attachments() + { + $sql_array = array( + 'SELECT' => 'a.*', + 'FROM' => array( + ATTACHMENTS_TABLE => 'a' + ), + 'WHERE' => 'a.in_message = 0 ', + 'ORDER_BY' => 'a.filetime DESC, a.post_msg_id ASC', + ); + + if (isset($this->topic_id)) + { + $sql_array['WHERE'] .= 'AND a.topic_id = ' . (int) $this->topic_id; + } + else if (isset($this->forum_id)) + { + $sql_array['LEFT_JOIN'] = array( + array( + 'FROM' => array(TOPICS_TABLE => 't'), + 'ON' => 'a.topic_id = t.topic_id', + ) + ); + $sql_array['WHERE'] .= 'AND t.forum_id = ' . (int) $this->forum_id; + } + + $sql = $this->db->sql_build_query('SELECT', $sql_array); + $result = $this->db->sql_query($sql); + + // Set attachments in feed items + while ($row = $this->db->sql_fetchrow($result)) + { + $this->attachments[$row['post_msg_id']][] = $row; + } + $this->db->sql_freeresult($result); + } + + /** + * {@inheritDoc} + */ + public function open() + { + parent::open(); + $this->fetch_attachments(); + } + + /** + * Get attachments related to a given post + * + * @param $post_id int Post id + * @return mixed Attachments related to $post_id + */ + public function get_attachments($post_id) + { + return $this->attachments[$post_id]; + } +} diff --git a/phpBB/phpbb/feed/base.php b/phpBB/phpbb/feed/base.php index 296d830932..0e3a80ebb8 100644 --- a/phpBB/phpbb/feed/base.php +++ b/phpBB/phpbb/feed/base.php @@ -7,40 +7,34 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\feed; /** * Base class with some generic functions and settings. * * @package phpBB3 */ -abstract class phpbb_feed_base +abstract class base { /** * Feed helper object - * @var phpbb_feed_helper + * @var \phpbb\feed\helper */ protected $helper; - /** @var phpbb_config */ + /** @var \phpbb\config\config */ protected $config; - /** @var phpbb_db_driver */ + /** @var \phpbb\db\driver\driver_interface */ protected $db; - /** @var phpbb_cache_driver_interface */ + /** @var \phpbb\cache\driver\driver_interface */ protected $cache; - /** @var phpbb_user */ + /** @var \phpbb\user */ protected $user; - /** @var phpbb_auth */ + /** @var \phpbb\auth\auth */ protected $auth; /** @var string */ @@ -74,17 +68,17 @@ abstract class phpbb_feed_base /** * Constructor * - * @param phpbb_feed_helper $helper Feed helper - * @param phpbb_config $config Config object - * @param phpbb_db_driver $db Database connection - * @param phpbb_cache_driver_interface $cache Cache object - * @param phpbb_user $user User object - * @param phpbb_auth $auth Auth object - * @param phpbb_content_visibility $content_visibility Auth object + * @param \phpbb\feed\helper $helper Feed helper + * @param \phpbb\config\config $config Config object + * @param \phpbb\db\driver\driver_interface $db Database connection + * @param \phpbb\cache\driver\driver_interface $cache Cache object + * @param \phpbb\user $user User object + * @param \phpbb\auth\auth $auth Auth object + * @param \phpbb\content_visibility $content_visibility Auth object * @param string $phpEx php file extension * @return null */ - function __construct(phpbb_feed_helper $helper, phpbb_config $config, phpbb_db_driver $db, phpbb_cache_driver_interface $cache, phpbb_user $user, phpbb_auth $auth, phpbb_content_visibility $content_visibility, $phpEx) + function __construct(\phpbb\feed\helper $helper, \phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\cache\driver\driver_interface $cache, \phpbb\user $user, \phpbb\auth\auth $auth, \phpbb\content_visibility $content_visibility, $phpEx) { $this->config = $config; $this->helper = $helper; @@ -148,7 +142,7 @@ abstract class phpbb_feed_base */ function get($key) { - return (isset($this->keys[$key])) ? $this->keys[$key] : NULL; + return (isset($this->keys[$key])) ? $this->keys[$key] : null; } function get_readable_forums() diff --git a/phpBB/phpbb/feed/factory.php b/phpBB/phpbb/feed/factory.php index 63a1eb8ef0..742b279ef4 100644 --- a/phpBB/phpbb/feed/factory.php +++ b/phpBB/phpbb/feed/factory.php @@ -7,19 +7,13 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\feed; /** * Factory class to return correct object * @package phpBB3 */ -class phpbb_feed_factory +class factory { /** * Service container object @@ -27,21 +21,21 @@ class phpbb_feed_factory */ protected $container; - /** @var phpbb_config */ + /** @var \phpbb\config\config */ protected $config; - /** @var phpbb_db_driver */ + /** @var \phpbb\db\driver\driver_interface */ protected $db; /** * Constructor * * @param objec $container Container object - * @param phpbb_config $config Config object - * @param phpbb_db_driver $db Database connection + * @param \phpbb\config\config $config Config object + * @param \phpbb\db\driver\driver_interface $db Database connection * @return null */ - public function __construct($container, phpbb_config $config, phpbb_db_driver $db) + public function __construct($container, \phpbb\config\config $config, \phpbb\db\driver\driver_interface $db) { $this->container = $container; $this->config = $config; diff --git a/phpBB/phpbb/feed/forum.php b/phpBB/phpbb/feed/forum.php index b5f0dd0f8f..8e6490923d 100644 --- a/phpBB/phpbb/feed/forum.php +++ b/phpBB/phpbb/feed/forum.php @@ -7,13 +7,7 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\feed; /** * Forum feed @@ -23,7 +17,7 @@ if (!defined('IN_PHPBB')) * * @package phpBB3 */ -class phpbb_feed_forum extends phpbb_feed_post_base +class forum extends \phpbb\feed\post_base { var $forum_id = 0; var $forum_data = array(); @@ -32,9 +26,9 @@ class phpbb_feed_forum extends phpbb_feed_post_base * Set the Forum ID * * @param int $forum_id Forum ID - * @return phpbb_feed_forum + * @return \phpbb\feed\forum */ - public function set_forum_id($topic_id) + public function set_forum_id($forum_id) { $this->forum_id = (int) $forum_id; @@ -86,6 +80,8 @@ class phpbb_feed_forum extends phpbb_feed_post_base unset($forum_ids_passworded); } + + parent::open(); } function get_sql() @@ -115,7 +111,7 @@ class phpbb_feed_forum extends phpbb_feed_post_base } $this->sql = array( - 'SELECT' => 'p.post_id, p.topic_id, p.post_time, p.post_edit_time, p.post_visibility, p.post_subject, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, ' . + 'SELECT' => 'p.post_id, p.topic_id, p.post_time, p.post_edit_time, p.post_visibility, p.post_subject, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, p.post_attachment, ' . 'u.username, u.user_id', 'FROM' => array( POSTS_TABLE => 'p', diff --git a/phpBB/phpbb/feed/forums.php b/phpBB/phpbb/feed/forums.php index 409097a9f3..ddbb0bf7b3 100644 --- a/phpBB/phpbb/feed/forums.php +++ b/phpBB/phpbb/feed/forums.php @@ -7,13 +7,7 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\feed; /** * 'All Forums' feed @@ -23,7 +17,7 @@ if (!defined('IN_PHPBB')) * * @package phpBB3 */ -class phpbb_feed_forums extends phpbb_feed_base +class forums extends \phpbb\feed\base { var $num_items = 0; diff --git a/phpBB/phpbb/feed/helper.php b/phpBB/phpbb/feed/helper.php index 93330aa2ad..12acf997ac 100644 --- a/phpBB/phpbb/feed/helper.php +++ b/phpBB/phpbb/feed/helper.php @@ -7,42 +7,40 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\feed; /** * Class with some helpful functions used in feeds * @package phpBB3 */ -class phpbb_feed_helper +class helper { - /** @var phpbb_config */ + /** @var \phpbb\config\config */ protected $config; - /** @var phpbb_user */ + /** @var \phpbb\user */ protected $user; /** @var string */ protected $phpbb_root_path; + /** @var string */ + protected $phpEx; + /** * Constructor * - * @param phpbb_config $config Config object - * @param phpbb_user $user User object + * @param \phpbb\config\config $config Config object + * @param \phpbb\user $user User object * @param string $phpbb_root_path Root path * @return null */ - public function __construct(phpbb_config $config, phpbb_user $user, $phpbb_root_path) + public function __construct(\phpbb\config\config $config, \phpbb\user $user, $phpbb_root_path, $phpEx) { $this->config = $config; $this->user = $user; $this->phpbb_root_path = $phpbb_root_path; + $this->phpEx = $phpEx; } /** @@ -87,8 +85,16 @@ class phpbb_feed_helper /** * Generate text content + * + * @param string $content is feed text content + * @param string $uid is bbcode_uid + * @param string $bitfield is bbcode bitfield + * @param int $options bbcode flag options + * @param int $forum_id is the forum id + * @param array $post_attachments is an array containing the attachments and their respective info + * @return string the html content to be printed for the feed */ - public function generate_content($content, $uid, $bitfield, $options) + public function generate_content($content, $uid, $bitfield, $options, $forum_id, $post_attachments) { if (empty($content)) { @@ -135,8 +141,21 @@ class phpbb_feed_helper // Remove some specials html tag, because somewhere there are a mod to allow html tags ;) $content = preg_replace( '#<(script|iframe)([^[]+)\1>#siU', ' <strong>$1</strong> ', $content); + // Parse inline images to display with the feed + if (!empty($post_attachments)) + { + $update_count = array(); + parse_attachments($forum_id, $content, $post_attachments, $update_count); + $post_attachments = implode('<br />', $post_attachments); + + // Convert attachments' relative path to absolute path + $post_attachments = str_replace($this->phpbb_root_path . 'download/file.' . $this->phpEx, $this->get_board_url() . '/download/file.' . $this->phpEx, $post_attachments); + + $content .= $post_attachments; + } + // Remove Comments from inline attachments [ia] - $content = preg_replace('#<div class="(inline-attachment|attachtitle)">(.*?)<!-- ia(.*?) -->(.*?)<!-- ia(.*?) -->(.*?)</div>#si','$4',$content); + $content = preg_replace('#<dd>(.*?)</dd>#','',$content); // Replace some entities with their unicode counterpart $entities = array( diff --git a/phpBB/phpbb/feed/news.php b/phpBB/phpbb/feed/news.php index f2d45b5165..1b7c452a92 100644 --- a/phpBB/phpbb/feed/news.php +++ b/phpBB/phpbb/feed/news.php @@ -7,13 +7,7 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\feed; /** * News feed @@ -23,7 +17,7 @@ if (!defined('IN_PHPBB')) * * @package phpBB3 */ -class phpbb_feed_news extends phpbb_feed_topic_base +class news extends \phpbb\feed\topic_base { function get_news_forums() { @@ -91,7 +85,7 @@ class phpbb_feed_news extends phpbb_feed_topic_base $this->sql = array( 'SELECT' => 'f.forum_id, f.forum_name, t.topic_id, t.topic_title, t.topic_poster, t.topic_first_poster_name, t.topic_posts_approved, t.topic_posts_unapproved, t.topic_posts_softdeleted, t.topic_views, t.topic_time, t.topic_last_post_time, - p.post_id, p.post_time, p.post_edit_time, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url', + p.post_id, p.post_time, p.post_edit_time, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, p.post_attachment', 'FROM' => array( TOPICS_TABLE => 't', POSTS_TABLE => 'p', diff --git a/phpBB/phpbb/feed/overall.php b/phpBB/phpbb/feed/overall.php index 224d97ec03..d99200475e 100644 --- a/phpBB/phpbb/feed/overall.php +++ b/phpBB/phpbb/feed/overall.php @@ -7,13 +7,7 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\feed; /** * Board wide feed (aka overall feed) @@ -23,7 +17,7 @@ if (!defined('IN_PHPBB')) * * @package phpBB3 */ -class phpbb_feed_overall extends phpbb_feed_post_base +class overall extends \phpbb\feed\post_base { function get_sql() { @@ -59,7 +53,7 @@ class phpbb_feed_overall extends phpbb_feed_post_base // Get the actual data $this->sql = array( 'SELECT' => 'f.forum_id, f.forum_name, ' . - 'p.post_id, p.topic_id, p.post_time, p.post_edit_time, p.post_visibility, p.post_subject, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, ' . + 'p.post_id, p.topic_id, p.post_time, p.post_edit_time, p.post_visibility, p.post_subject, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, p.post_attachment, ' . 'u.username, u.user_id', 'FROM' => array( USERS_TABLE => 'u', diff --git a/phpBB/phpbb/feed/post_base.php b/phpBB/phpbb/feed/post_base.php index 1f4cb4b5ef..de98f446f3 100644 --- a/phpBB/phpbb/feed/post_base.php +++ b/phpBB/phpbb/feed/post_base.php @@ -7,22 +7,17 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\feed; /** * Abstract class for post based feeds * * @package phpBB3 */ -abstract class phpbb_feed_post_base extends phpbb_feed_base +abstract class post_base extends \phpbb\feed\attachments_base { var $num_items = 'feed_limit_post'; + var $attachments = array(); function set_keys() { diff --git a/phpBB/phpbb/feed/topic.php b/phpBB/phpbb/feed/topic.php index bb1753d823..fb49aa65cc 100644 --- a/phpBB/phpbb/feed/topic.php +++ b/phpBB/phpbb/feed/topic.php @@ -7,13 +7,7 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\feed; /** * Topic feed for a specific topic @@ -22,7 +16,7 @@ if (!defined('IN_PHPBB')) * * @package phpBB3 */ -class phpbb_feed_topic extends phpbb_feed_post_base +class topic extends \phpbb\feed\post_base { var $topic_id = 0; var $forum_id = 0; @@ -32,7 +26,7 @@ class phpbb_feed_topic extends phpbb_feed_post_base * Set the Topic ID * * @param int $topic_id Topic ID - * @return phpbb_feed_topic + * @return \phpbb\feed\topic */ public function set_topic_id($topic_id) { @@ -89,12 +83,14 @@ class phpbb_feed_topic extends phpbb_feed_post_base unset($forum_ids_passworded); } + + parent::open(); } function get_sql() { $this->sql = array( - 'SELECT' => 'p.post_id, p.post_time, p.post_edit_time, p.post_visibility, p.post_subject, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, ' . + 'SELECT' => 'p.post_id, p.post_time, p.post_edit_time, p.post_visibility, p.post_subject, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, p.post_attachment, ' . 'u.username, u.user_id', 'FROM' => array( POSTS_TABLE => 'p', diff --git a/phpBB/phpbb/feed/topic_base.php b/phpBB/phpbb/feed/topic_base.php index b104a46631..e8639a6fa6 100644 --- a/phpBB/phpbb/feed/topic_base.php +++ b/phpBB/phpbb/feed/topic_base.php @@ -7,20 +7,14 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\feed; /** * Abstract class for topic based feeds * * @package phpBB3 */ -abstract class phpbb_feed_topic_base extends phpbb_feed_base +abstract class topic_base extends \phpbb\feed\attachments_base { var $num_items = 'feed_limit_topic'; diff --git a/phpBB/phpbb/feed/topics.php b/phpBB/phpbb/feed/topics.php index 31f5177773..e8b9f6de6c 100644 --- a/phpBB/phpbb/feed/topics.php +++ b/phpBB/phpbb/feed/topics.php @@ -7,13 +7,7 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\feed; /** * New Topics feed @@ -23,7 +17,7 @@ if (!defined('IN_PHPBB')) * * @package phpBB3 */ -class phpbb_feed_topics extends phpbb_feed_topic_base +class topics extends \phpbb\feed\topic_base { function get_sql() { @@ -63,7 +57,7 @@ class phpbb_feed_topics extends phpbb_feed_topic_base $this->sql = array( 'SELECT' => 'f.forum_id, f.forum_name, t.topic_id, t.topic_title, t.topic_poster, t.topic_first_poster_name, t.topic_posts_approved, t.topic_posts_unapproved, t.topic_posts_softdeleted, t.topic_views, t.topic_time, t.topic_last_post_time, - p.post_id, p.post_time, p.post_edit_time, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url', + p.post_id, p.post_time, p.post_edit_time, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, p.post_attachment', 'FROM' => array( TOPICS_TABLE => 't', POSTS_TABLE => 'p', diff --git a/phpBB/phpbb/feed/topics_active.php b/phpBB/phpbb/feed/topics_active.php index 249dd1d66a..809a536c2a 100644 --- a/phpBB/phpbb/feed/topics_active.php +++ b/phpBB/phpbb/feed/topics_active.php @@ -7,13 +7,7 @@ * */ -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} +namespace phpbb\feed; /** * Active Topics feed @@ -24,7 +18,7 @@ if (!defined('IN_PHPBB')) * * @package phpBB3 */ -class phpbb_feed_topics_active extends phpbb_feed_topic_base +class topics_active extends \phpbb\feed\topic_base { var $sort_days = 7; @@ -80,7 +74,7 @@ class phpbb_feed_topics_active extends phpbb_feed_topic_base 'SELECT' => 'f.forum_id, f.forum_name, t.topic_id, t.topic_title, t.topic_posts_approved, t.topic_posts_unapproved, t.topic_posts_softdeleted, t.topic_views, t.topic_last_poster_id, t.topic_last_poster_name, t.topic_last_post_time, - p.post_id, p.post_time, p.post_edit_time, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url', + p.post_id, p.post_time, p.post_edit_time, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, p.post_attachment', 'FROM' => array( TOPICS_TABLE => 't', POSTS_TABLE => 'p', |
