phpBB

Code Changes

File: phpbb/feed/topic.php

  Unmodified   Added   Modified   Removed
Line 12Line 12
*/

namespace phpbb\feed;

*/

namespace phpbb\feed;

 

use phpbb\feed\exception\no_feed_exception;
use phpbb\feed\exception\no_topic_exception;
use phpbb\feed\exception\unauthorized_forum_exception;
use phpbb\feed\exception\unauthorized_topic_exception;


/**
* Topic feed for a specific topic
*
* This will give you the last {$this->num_items} posts made within this topic.
*/


/**
* Topic feed for a specific topic
*
* This will give you the last {$this->num_items} posts made within this topic.
*/

class topic extends \phpbb\feed\post_base

class topic extends post_base

{

{

	var $topic_id		= 0;
var $forum_id = 0;
var $topic_data = array();

	protected $topic_id		= 0;
protected $forum_id = 0;
protected $topic_data = array();


/**
* Set the Topic ID


/**
* Set the Topic ID

Line 37Line 42
		return $this;
}


		return $this;
}


	function open()




	/**
* {@inheritdoc}
*/
public function open()

	{
$sql = 'SELECT f.forum_options, f.forum_password, t.topic_id, t.forum_id, t.topic_visibility, t.topic_title, t.topic_time, t.topic_views, t.topic_posts_approved, t.topic_type
FROM ' . TOPICS_TABLE . ' t

	{
$sql = 'SELECT f.forum_options, f.forum_password, t.topic_id, t.forum_id, t.topic_visibility, t.topic_title, t.topic_time, t.topic_views, t.topic_posts_approved, t.topic_type
FROM ' . TOPICS_TABLE . ' t

Line 50Line 58

if (empty($this->topic_data))
{


if (empty($this->topic_data))
{

			trigger_error('NO_TOPIC');

			throw new no_topic_exception($this->topic_id);

		}

$this->forum_id = (int) $this->topic_data['forum_id'];

		}

$this->forum_id = (int) $this->topic_data['forum_id'];

Line 58Line 66
		// Make sure topic is either approved or user authed
if ($this->topic_data['topic_visibility'] != ITEM_APPROVED && !$this->auth->acl_get('m_approve', $this->forum_id))
{

		// Make sure topic is either approved or user authed
if ($this->topic_data['topic_visibility'] != ITEM_APPROVED && !$this->auth->acl_get('m_approve', $this->forum_id))
{

			trigger_error('SORRY_AUTH_READ');









			if ($this->user->data['user_id'] != ANONYMOUS)
{
send_status_line(403, 'Forbidden');
}
else
{
send_status_line(401, 'Unauthorized');
}
throw new unauthorized_topic_exception($this->topic_id);

		}

// Make sure forum is not excluded from feed
if (phpbb_optionget(FORUM_OPTION_FEED_EXCLUDE, $this->topic_data['forum_options']))
{

		}

// Make sure forum is not excluded from feed
if (phpbb_optionget(FORUM_OPTION_FEED_EXCLUDE, $this->topic_data['forum_options']))
{

			trigger_error('NO_FEED');

			throw new no_feed_exception();

		}

// Make sure we can read this forum
if (!$this->auth->acl_get('f_read', $this->forum_id))
{

		}

// Make sure we can read this forum
if (!$this->auth->acl_get('f_read', $this->forum_id))
{

			trigger_error('SORRY_AUTH_READ');









			if ($this->user->data['user_id'] != ANONYMOUS)
{
send_status_line(403, 'Forbidden');
}
else
{
send_status_line(401, 'Unauthorized');
}
throw new unauthorized_forum_exception($this->forum_id);

		}

// Make sure forum is not passworded or user is authed

		}

// Make sure forum is not passworded or user is authed

Line 80Line 104

if (isset($forum_ids_passworded[$this->forum_id]))
{


if (isset($forum_ids_passworded[$this->forum_id]))
{

				trigger_error('SORRY_AUTH_READ');









				if ($this->user->data['user_id'] != ANONYMOUS)
{
send_status_line(403, 'Forbidden');
}
else
{
send_status_line(401, 'Unauthorized');
}
throw new unauthorized_forum_exception($this->forum_id);

			}

unset($forum_ids_passworded);

			}

unset($forum_ids_passworded);

Line 89Line 121
		parent::open();
}


		parent::open();
}


	function get_sql()




	/**
* {@inheritdoc}
*/
protected function get_sql()

	{

	{

 
		parent::fetch_attachments();


		$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, p.post_attachment, ' .
'u.username, u.user_id',

		$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, p.post_attachment, ' .
'u.username, u.user_id',

Line 107Line 144
		return true;
}


		return true;
}


	function adjust_item(&$item_row, &$row)




	/**
* {@inheritdoc}
*/
public function adjust_item(&$item_row, &$row)

	{
parent::adjust_item($item_row, $row);

$item_row['forum_id'] = $this->forum_id;
}


	{
parent::adjust_item($item_row, $row);

$item_row['forum_id'] = $this->forum_id;
}


	function get_item()




	/**
* {@inheritdoc}
*/
public function get_item()

	{
return ($row = parent::get_item()) ? array_merge($this->topic_data, $row) : $row;
}

	{
return ($row = parent::get_item()) ? array_merge($this->topic_data, $row) : $row;
}