aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/feed
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/phpbb/feed')
-rw-r--r--phpBB/phpbb/feed/attachments_base.php83
-rw-r--r--phpBB/phpbb/feed/base.php40
-rw-r--r--phpBB/phpbb/feed/factory.php20
-rw-r--r--phpBB/phpbb/feed/forum.php18
-rw-r--r--phpBB/phpbb/feed/forums.php10
-rw-r--r--phpBB/phpbb/feed/helper.php49
-rw-r--r--phpBB/phpbb/feed/news.php12
-rw-r--r--phpBB/phpbb/feed/overall.php12
-rw-r--r--phpBB/phpbb/feed/post_base.php11
-rw-r--r--phpBB/phpbb/feed/topic.php16
-rw-r--r--phpBB/phpbb/feed/topic_base.php10
-rw-r--r--phpBB/phpbb/feed/topics.php12
-rw-r--r--phpBB/phpbb/feed/topics_active.php12
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',