Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

topic.php

Zuletzt modifiziert: 09.10.2024, 12:52 - Dateigröße: 3.01 KiB


001  <?php
002  /**
003  *
004  * This file is part of the phpBB Forum Software package.
005  *
006  * @copyright (c) phpBB Limited <https://www.phpbb.com>
007  * @license GNU General Public License, version 2 (GPL-2.0)
008  *
009  * For full copyright and license information, please see
010  * the docs/CREDITS.txt file.
011  *
012  */
013   
014  namespace phpbb\feed;
015   
016  /**
017  * Topic feed for a specific topic
018  *
019  * This will give you the last {$this->num_items} posts made within this topic.
020  */
021  class topic extends \phpbb\feed\post_base
022  {
023      var $topic_id        = 0;
024      var $forum_id        = 0;
025      var $topic_data        = array();
026   
027      /**
028      * Set the Topic ID
029      *
030      * @param int    $topic_id            Topic ID
031      * @return    \phpbb\feed\topic
032      */
033      public function set_topic_id($topic_id)
034      {
035          $this->topic_id = (int) $topic_id;
036   
037          return $this;
038      }
039   
040      function open()
041      {
042          $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
043              FROM ' . TOPICS_TABLE . ' t
044              LEFT JOIN ' . FORUMS_TABLE . ' f
045                  ON (f.forum_id = t.forum_id)
046              WHERE t.topic_id = ' . $this->topic_id;
047          $result = $this->db->sql_query($sql);
048          $this->topic_data = $this->db->sql_fetchrow($result);
049          $this->db->sql_freeresult($result);
050   
051          if (empty($this->topic_data))
052          {
053              trigger_error('NO_TOPIC');
054          }
055   
056          $this->forum_id = (int) $this->topic_data['forum_id'];
057   
058          // Make sure topic is either approved or user authed
059          if ($this->topic_data['topic_visibility'] != ITEM_APPROVED && !$this->auth->acl_get('m_approve', $this->forum_id))
060          {
061              trigger_error('SORRY_AUTH_READ');
062          }
063   
064          // Make sure forum is not excluded from feed
065          if (phpbb_optionget(FORUM_OPTION_FEED_EXCLUDE, $this->topic_data['forum_options']))
066          {
067              trigger_error('NO_FEED');
068          }
069   
070          // Make sure we can read this forum
071          if (!$this->auth->acl_get('f_read', $this->forum_id))
072          {
073              trigger_error('SORRY_AUTH_READ');
074          }
075   
076          // Make sure forum is not passworded or user is authed
077          if ($this->topic_data['forum_password'])
078          {
079              $forum_ids_passworded = $this->get_passworded_forums();
080   
081              if (isset($forum_ids_passworded[$this->forum_id]))
082              {
083                  trigger_error('SORRY_AUTH_READ');
084              }
085   
086              unset($forum_ids_passworded);
087          }
088   
089          parent::open();
090      }
091   
092      function get_sql()
093      {
094          $this->sql = array(
095              '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, ' .
096                              'u.username, u.user_id',
097              'FROM'        => array(
098                  POSTS_TABLE        => 'p',
099                  USERS_TABLE        => 'u',
100              ),
101              'WHERE'        => 'p.topic_id = ' . $this->topic_id . '
102                                  AND ' . $this->content_visibility->get_visibility_sql('post', $this->forum_id, 'p.') . '
103                                  AND p.poster_id = u.user_id',
104              'ORDER_BY'    => 'p.post_time DESC, p.post_id DESC',
105          );
106   
107          return true;
108      }
109   
110      function adjust_item(&$item_row, &$row)
111      {
112          parent::adjust_item($item_row, $row);
113   
114          $item_row['forum_id'] = $this->forum_id;
115      }
116   
117      function get_item()
118      {
119          return ($row = parent::get_item()) ? array_merge($this->topic_data, $row) : $row;
120      }
121  }
122