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

base.php

Zuletzt modifiziert: 09.10.2024, 12:52 - Dateigröße: 5.24 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  * Base class with some generic functions and settings.
 018  */
 019  abstract class base
 020  {
 021      /**
 022      * Feed helper object
 023      * @var \phpbb\feed\helper
 024      */
 025      protected $helper;
 026   
 027      /** @var \phpbb\config\config */
 028      protected $config;
 029   
 030      /** @var \phpbb\db\driver\driver_interface */
 031      protected $db;
 032   
 033      /** @var \phpbb\cache\driver\driver_interface */
 034      protected $cache;
 035   
 036      /** @var \phpbb\user */
 037      protected $user;
 038   
 039      /** @var \phpbb\auth\auth */
 040      protected $auth;
 041   
 042      /** @var string */
 043      protected $phpEx;
 044   
 045      /**
 046      * SQL Query to be executed to get feed items
 047      */
 048      var $sql = array();
 049   
 050      /**
 051      * Keys specified for retrieval of title, content, etc.
 052      */
 053      var $keys = array();
 054   
 055      /**
 056      * Number of items to fetch. Usually overwritten by $config['feed_something']
 057      */
 058      var $num_items = 15;
 059   
 060      /**
 061      * Separator for title elements to separate items (for example forum / topic)
 062      */
 063      var $separator = "\xE2\x80\xA2"; // &bull;
 064   
 065      /**
 066      * Separator for the statistics row (Posted by, post date, replies, etc.)
 067      */
 068      var $separator_stats = "\xE2\x80\x94"; // &mdash;
 069   
 070      /**
 071      * Constructor
 072      *
 073      * @param \phpbb\feed\helper                    $helper        Feed helper
 074      * @param \phpbb\config\config                $config        Config object
 075      * @param \phpbb\db\driver\driver_interface    $db            Database connection
 076      * @param \phpbb\cache\driver\driver_interface    $cache    Cache object
 077      * @param \phpbb\user                        $user        User object
 078      * @param \phpbb\auth\auth                    $auth        Auth object
 079      * @param \phpbb\content_visibility            $content_visibility        Auth object
 080      * @param string                                $phpEx        php file extension
 081      */
 082      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)
 083      {
 084          $this->config = $config;
 085          $this->helper = $helper;
 086          $this->db = $db;
 087          $this->cache = $cache;
 088          $this->user = $user;
 089          $this->auth = $auth;
 090          $this->content_visibility = $content_visibility;
 091          $this->phpEx = $phpEx;
 092   
 093          $this->set_keys();
 094   
 095          // Allow num_items to be string
 096          if (is_string($this->num_items))
 097          {
 098              $this->num_items = (int) $this->config[$this->num_items];
 099   
 100              // A precaution
 101              if (!$this->num_items)
 102              {
 103                  $this->num_items = 10;
 104              }
 105          }
 106      }
 107   
 108      /**
 109      * Set keys.
 110      */
 111      function set_keys()
 112      {
 113      }
 114   
 115      /**
 116      * Open feed
 117      */
 118      function open()
 119      {
 120      }
 121   
 122      /**
 123      * Close feed
 124      */
 125      function close()
 126      {
 127          if (!empty($this->result))
 128          {
 129              $this->db->sql_freeresult($this->result);
 130          }
 131      }
 132   
 133      /**
 134      * Set key
 135      *
 136      * @param string $key Key
 137      * @param mixed $value Value
 138      */
 139      function set($key, $value)
 140      {
 141          $this->keys[$key] = $value;
 142      }
 143   
 144      /**
 145      * Get key
 146      *
 147      * @param string $key Key
 148      * @return mixed
 149      */
 150      function get($key)
 151      {
 152          return (isset($this->keys[$key])) ? $this->keys[$key] : null;
 153      }
 154   
 155      function get_readable_forums()
 156      {
 157          static $forum_ids;
 158   
 159          if (!isset($forum_ids))
 160          {
 161              $forum_ids = array_keys($this->auth->acl_getf('f_read', true));
 162          }
 163   
 164          return $forum_ids;
 165      }
 166   
 167      function get_moderator_approve_forums()
 168      {
 169          static $forum_ids;
 170   
 171          if (!isset($forum_ids))
 172          {
 173              $forum_ids = array_keys($this->auth->acl_getf('m_approve', true));
 174          }
 175   
 176          return $forum_ids;
 177      }
 178   
 179      function is_moderator_approve_forum($forum_id)
 180      {
 181          static $forum_ids;
 182   
 183          if (!isset($forum_ids))
 184          {
 185              $forum_ids = array_flip($this->get_moderator_approve_forums());
 186          }
 187   
 188          return (isset($forum_ids[$forum_id])) ? true : false;
 189      }
 190   
 191      function get_excluded_forums()
 192      {
 193          static $forum_ids;
 194   
 195          // Matches acp/acp_board.php
 196          $cache_name    = 'feed_excluded_forum_ids';
 197   
 198          if (!isset($forum_ids) && ($forum_ids = $this->cache->get('_' . $cache_name)) === false)
 199          {
 200              $sql = 'SELECT forum_id
 201                  FROM ' . FORUMS_TABLE . '
 202                  WHERE ' . $this->db->sql_bit_and('forum_options', FORUM_OPTION_FEED_EXCLUDE, '<> 0');
 203              $result = $this->db->sql_query($sql);
 204   
 205              $forum_ids = array();
 206              while ($forum_id = (int) $this->db->sql_fetchfield('forum_id'))
 207              {
 208                  $forum_ids[$forum_id] = $forum_id;
 209              }
 210              $this->db->sql_freeresult($result);
 211   
 212              $this->cache->put('_' . $cache_name, $forum_ids);
 213          }
 214   
 215          return $forum_ids;
 216      }
 217   
 218      function is_excluded_forum($forum_id)
 219      {
 220          $forum_ids = $this->get_excluded_forums();
 221   
 222          return isset($forum_ids[$forum_id]) ? true : false;
 223      }
 224   
 225      function get_passworded_forums()
 226      {
 227          return $this->user->get_passworded_forums();
 228      }
 229   
 230      function get_item()
 231      {
 232          static $result;
 233   
 234          if (!isset($result))
 235          {
 236              if (!$this->get_sql())
 237              {
 238                  return false;
 239              }
 240   
 241              // Query database
 242              $sql = $this->db->sql_build_query('SELECT', $this->sql);
 243              $result = $this->db->sql_query_limit($sql, $this->num_items);
 244          }
 245   
 246          return $this->db->sql_fetchrow($result);
 247      }
 248   
 249      function user_viewprofile($row)
 250      {
 251          $author_id = (int) $row[$this->get('author_id')];
 252   
 253          if ($author_id == ANONYMOUS)
 254          {
 255              // Since we cannot link to a profile, we just return GUEST
 256              // instead of $row['username']
 257              return $this->user->lang['GUEST'];
 258          }
 259   
 260          return '<a href="' . $this->helper->append_sid('memberlist.' . $this->phpEx, 'mode=viewprofile&amp;u=' . $author_id) . '">' . $row[$this->get('creator')] . '</a>';
 261      }
 262  }
 263