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

permissions.php

Zuletzt modifiziert: 09.10.2024, 12:51 - Dateigröße: 13.34 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;
 015   
 016  class permissions
 017  {
 018      /**
 019      * Event dispatcher object
 020      * @var \phpbb\event\dispatcher_interface
 021      */
 022      protected $dispatcher;
 023   
 024      /**
 025      * User object
 026      * @var \phpbb\user
 027      */
 028      protected $user;
 029   
 030      /**
 031      * Constructor
 032      *
 033      * @param    \phpbb\event\dispatcher_interface    $phpbb_dispatcher    Event dispatcher
 034      * @param    \phpbb\user                $user                User Object
 035      */
 036      public function __construct(\phpbb\event\dispatcher_interface $phpbb_dispatcher, \phpbb\user $user)
 037      {
 038          $this->dispatcher = $phpbb_dispatcher;
 039          $this->user = $user;
 040   
 041          $categories = $this->categories;
 042          $types = $this->types;
 043          $permissions = $this->permissions;
 044   
 045          /**
 046          * Allows to specify additional permission categories, types and permissions
 047          *
 048          * @event core.permissions
 049          * @var    array    types            Array with permission types (a_, u_, m_, etc.)
 050          * @var    array    categories        Array with permission categories (pm, post, settings, misc, etc.)
 051          * @var    array    permissions        Array with permissions. Each Permission has the following layout:
 052          *        '<type><permission>' => array(
 053          *            'lang'    => 'Language Key with a Short description', // Optional, if not set,
 054          *                        // the permissions identifier '<type><permission>' is used with
 055          *                        // all uppercase.
 056          *            'cat'    => 'Identifier of the category, the permission should be displayed in',
 057          *        ),
 058          *        Example:
 059          *        'u_viewprofile' => array(
 060          *            'lang'    => 'ACL_U_VIEWPROFILE',
 061          *            'cat'    => 'profile',
 062          *        ),
 063          * @since 3.1.0-a1
 064          */
 065          $vars = array('types', 'categories', 'permissions');
 066          extract($phpbb_dispatcher->trigger_event('core.permissions', compact($vars)));
 067   
 068          $this->categories = $categories;
 069          $this->types = $types;
 070          $this->permissions = $permissions;
 071      }
 072   
 073      /**
 074      * Returns an array with all the permission categories (pm, post, settings, misc, etc.)
 075      *
 076      * @return    array    Layout: cat-identifier => Language key
 077      */
 078      public function get_categories()
 079      {
 080          return $this->categories;
 081      }
 082   
 083      /**
 084      * Returns the language string of a permission category
 085      *
 086      * @param    string    $category    Identifier of the category
 087      * @return    string        Language string
 088      */
 089      public function get_category_lang($category)
 090      {
 091          return $this->user->lang($this->categories[$category]);
 092      }
 093   
 094      /**
 095      * Returns an array with all the permission types (a_, u_, m_, etc.)
 096      *
 097      * @return    array    Layout: type-identifier => Language key
 098      */
 099      public function get_types()
 100      {
 101          return $this->types;
 102      }
 103   
 104      /**
 105      * Returns the language string of a permission type
 106      *
 107      * @param    string    $type    Identifier of the type
 108      * @param    mixed    $scope    Scope of the type (should be 'global', 'local' or false)
 109      * @return    string    Language string
 110      */
 111      public function get_type_lang($type, $scope = false)
 112      {
 113          if ($scope && isset($this->types[$scope][$type]))
 114          {
 115              $lang_key = $this->types[$scope][$type];
 116          }
 117          else if (isset($this->types[$type]))
 118          {
 119              $lang_key = $this->types[$type];
 120          }
 121          else
 122          {
 123              $lang_key = 'ACL_TYPE_' . strtoupper(($scope) ? $scope . '_' . $type : $type);
 124          }
 125   
 126          return $this->user->lang($lang_key);
 127      }
 128   
 129      /**
 130      * Returns an array with all the permissions.
 131      * Each Permission has the following layout:
 132      *    '<type><permission>' => array(
 133      *        'lang'    => 'Language Key with a Short description', // Optional, if not set,
 134      *                    // the permissions identifier '<type><permission>' is used with
 135      *                    // all uppercase.
 136      *        'cat'    => 'Identifier of the category, the permission should be displayed in',
 137      *    ),
 138      *    Example:
 139      *    'u_viewprofile' => array(
 140      *        'lang'    => 'ACL_U_VIEWPROFILE',
 141      *        'cat'    => 'profile',
 142      *    ),
 143      *
 144      * @return    array
 145      */
 146      public function get_permissions()
 147      {
 148          return $this->permissions;
 149      }
 150   
 151      /**
 152      * Returns the category of a permission
 153      *
 154      * @param    string    $permission    Identifier of the permission
 155      * @return    string        Returns the category identifier of the permission
 156      */
 157      public function get_permission_category($permission)
 158      {
 159          return (isset($this->permissions[$permission]['cat'])) ? $this->permissions[$permission]['cat'] : 'misc';
 160      }
 161   
 162      /**
 163      * Returns the language string of a permission
 164      *
 165      * @param    string    $permission    Identifier of the permission
 166      * @return    string    Language string
 167      */
 168      public function get_permission_lang($permission)
 169      {
 170          return (isset($this->permissions[$permission]['lang'])) ? $this->user->lang($this->permissions[$permission]['lang']) : $this->user->lang('ACL_' . strtoupper($permission));
 171      }
 172   
 173      protected $types = array(
 174          'u_'            => 'ACL_TYPE_U_',
 175          'a_'            => 'ACL_TYPE_A_',
 176          'm_'            => 'ACL_TYPE_M_',
 177          'f_'            => 'ACL_TYPE_F_',
 178          'global'        => array(
 179              'm_'            => 'ACL_TYPE_GLOBAL_M_',
 180          ),
 181      );
 182   
 183      protected $categories = array(
 184          'actions'        => 'ACL_CAT_ACTIONS',
 185          'content'        => 'ACL_CAT_CONTENT',
 186          'forums'        => 'ACL_CAT_FORUMS',
 187          'misc'            => 'ACL_CAT_MISC',
 188          'permissions'    => 'ACL_CAT_PERMISSIONS',
 189          'pm'            => 'ACL_CAT_PM',
 190          'polls'            => 'ACL_CAT_POLLS',
 191          'post'            => 'ACL_CAT_POST',
 192          'post_actions'    => 'ACL_CAT_POST_ACTIONS',
 193          'posting'        => 'ACL_CAT_POSTING',
 194          'profile'        => 'ACL_CAT_PROFILE',
 195          'settings'        => 'ACL_CAT_SETTINGS',
 196          'topic_actions'    => 'ACL_CAT_TOPIC_ACTIONS',
 197          'user_group'    => 'ACL_CAT_USER_GROUP',
 198      );
 199   
 200      protected $permissions = array(
 201          // User Permissions
 202          'u_viewprofile'    => array('lang' => 'ACL_U_VIEWPROFILE', 'cat' => 'profile'),
 203          'u_chgname'        => array('lang' => 'ACL_U_CHGNAME', 'cat' => 'profile'),
 204          'u_chgpasswd'    => array('lang' => 'ACL_U_CHGPASSWD', 'cat' => 'profile'),
 205          'u_chgemail'    => array('lang' => 'ACL_U_CHGEMAIL', 'cat' => 'profile'),
 206          'u_chgavatar'    => array('lang' => 'ACL_U_CHGAVATAR', 'cat' => 'profile'),
 207          'u_chggrp'        => array('lang' => 'ACL_U_CHGGRP', 'cat' => 'profile'),
 208          'u_chgprofileinfo'    => array('lang' => 'ACL_U_CHGPROFILEINFO', 'cat' => 'profile'),
 209   
 210          'u_attach'        => array('lang' => 'ACL_U_ATTACH', 'cat' => 'post'),
 211          'u_download'    => array('lang' => 'ACL_U_DOWNLOAD', 'cat' => 'post'),
 212          'u_savedrafts'    => array('lang' => 'ACL_U_SAVEDRAFTS', 'cat' => 'post'),
 213          'u_chgcensors'    => array('lang' => 'ACL_U_CHGCENSORS', 'cat' => 'post'),
 214          'u_sig'            => array('lang' => 'ACL_U_SIG', 'cat' => 'post'),
 215   
 216          'u_sendpm'        => array('lang' => 'ACL_U_SENDPM', 'cat' => 'pm'),
 217          'u_masspm'        => array('lang' => 'ACL_U_MASSPM', 'cat' => 'pm'),
 218          'u_masspm_group'=> array('lang' => 'ACL_U_MASSPM_GROUP', 'cat' => 'pm'),
 219          'u_readpm'        => array('lang' => 'ACL_U_READPM', 'cat' => 'pm'),
 220          'u_pm_edit'        => array('lang' => 'ACL_U_PM_EDIT', 'cat' => 'pm'),
 221          'u_pm_delete'    => array('lang' => 'ACL_U_PM_DELETE', 'cat' => 'pm'),
 222          'u_pm_forward'    => array('lang' => 'ACL_U_PM_FORWARD', 'cat' => 'pm'),
 223          'u_pm_emailpm'    => array('lang' => 'ACL_U_PM_EMAILPM', 'cat' => 'pm'),
 224          'u_pm_printpm'    => array('lang' => 'ACL_U_PM_PRINTPM', 'cat' => 'pm'),
 225          'u_pm_attach'    => array('lang' => 'ACL_U_PM_ATTACH', 'cat' => 'pm'),
 226          'u_pm_download'    => array('lang' => 'ACL_U_PM_DOWNLOAD', 'cat' => 'pm'),
 227          'u_pm_bbcode'    => array('lang' => 'ACL_U_PM_BBCODE', 'cat' => 'pm'),
 228          'u_pm_smilies'    => array('lang' => 'ACL_U_PM_SMILIES', 'cat' => 'pm'),
 229          'u_pm_img'        => array('lang' => 'ACL_U_PM_IMG', 'cat' => 'pm'),
 230          'u_pm_flash'    => array('lang' => 'ACL_U_PM_FLASH', 'cat' => 'pm'),
 231   
 232          'u_sendemail'    => array('lang' => 'ACL_U_SENDEMAIL', 'cat' => 'misc'),
 233          'u_sendim'        => array('lang' => 'ACL_U_SENDIM', 'cat' => 'misc'),
 234          'u_ignoreflood'    => array('lang' => 'ACL_U_IGNOREFLOOD', 'cat' => 'misc'),
 235          'u_hideonline'    => array('lang' => 'ACL_U_HIDEONLINE', 'cat' => 'misc'),
 236          'u_viewonline'    => array('lang' => 'ACL_U_VIEWONLINE', 'cat' => 'misc'),
 237          'u_search'        => array('lang' => 'ACL_U_SEARCH', 'cat' => 'misc'),
 238   
 239          // Forum Permissions
 240          'f_list'        => array('lang' => 'ACL_F_LIST', 'cat' => 'actions'),
 241          'f_read'        => array('lang' => 'ACL_F_READ', 'cat' => 'actions'),
 242          'f_search'        => array('lang' => 'ACL_F_SEARCH', 'cat' => 'actions'),
 243          'f_subscribe'    => array('lang' => 'ACL_F_SUBSCRIBE', 'cat' => 'actions'),
 244          'f_print'        => array('lang' => 'ACL_F_PRINT', 'cat' => 'actions'),
 245          'f_email'        => array('lang' => 'ACL_F_EMAIL', 'cat' => 'actions'),
 246          'f_bump'        => array('lang' => 'ACL_F_BUMP', 'cat' => 'actions'),
 247          'f_user_lock'    => array('lang' => 'ACL_F_USER_LOCK', 'cat' => 'actions'),
 248          'f_download'    => array('lang' => 'ACL_F_DOWNLOAD', 'cat' => 'actions'),
 249          'f_report'        => array('lang' => 'ACL_F_REPORT', 'cat' => 'actions'),
 250   
 251          'f_post'        => array('lang' => 'ACL_F_POST', 'cat' => 'post'),
 252          'f_sticky'        => array('lang' => 'ACL_F_STICKY', 'cat' => 'post'),
 253          'f_announce'    => array('lang' => 'ACL_F_ANNOUNCE', 'cat' => 'post'),
 254          'f_reply'        => array('lang' => 'ACL_F_REPLY', 'cat' => 'post'),
 255          'f_edit'        => array('lang' => 'ACL_F_EDIT', 'cat' => 'post'),
 256          'f_delete'        => array('lang' => 'ACL_F_DELETE', 'cat' => 'post'),
 257          'f_softdelete'    => array('lang' => 'ACL_F_SOFTDELETE', 'cat' => 'post'),
 258          'f_ignoreflood' => array('lang' => 'ACL_F_IGNOREFLOOD', 'cat' => 'post'),
 259          'f_postcount'    => array('lang' => 'ACL_F_POSTCOUNT', 'cat' => 'post'),
 260          'f_noapprove'    => array('lang' => 'ACL_F_NOAPPROVE', 'cat' => 'post'),
 261   
 262          'f_attach'        => array('lang' => 'ACL_F_ATTACH', 'cat' => 'content'),
 263          'f_icons'        => array('lang' => 'ACL_F_ICONS', 'cat' => 'content'),
 264          'f_bbcode'        => array('lang' => 'ACL_F_BBCODE', 'cat' => 'content'),
 265          'f_flash'        => array('lang' => 'ACL_F_FLASH', 'cat' => 'content'),
 266          'f_img'            => array('lang' => 'ACL_F_IMG', 'cat' => 'content'),
 267          'f_sigs'        => array('lang' => 'ACL_F_SIGS', 'cat' => 'content'),
 268          'f_smilies'        => array('lang' => 'ACL_F_SMILIES', 'cat' => 'content'),
 269   
 270          'f_poll'        => array('lang' => 'ACL_F_POLL', 'cat' => 'polls'),
 271          'f_vote'        => array('lang' => 'ACL_F_VOTE', 'cat' => 'polls'),
 272          'f_votechg'        => array('lang' => 'ACL_F_VOTECHG', 'cat' => 'polls'),
 273   
 274          // Moderator Permissions
 275          'm_edit'        => array('lang' => 'ACL_M_EDIT', 'cat' => 'post_actions'),
 276          'm_delete'        => array('lang' => 'ACL_M_DELETE', 'cat' => 'post_actions'),
 277          'm_approve'        => array('lang' => 'ACL_M_APPROVE', 'cat' => 'post_actions'),
 278          'm_report'        => array('lang' => 'ACL_M_REPORT', 'cat' => 'post_actions'),
 279          'm_chgposter'    => array('lang' => 'ACL_M_CHGPOSTER', 'cat' => 'post_actions'),
 280   
 281          'm_move'    => array('lang' => 'ACL_M_MOVE', 'cat' => 'topic_actions'),
 282          'm_lock'    => array('lang' => 'ACL_M_LOCK', 'cat' => 'topic_actions'),
 283          'm_split'    => array('lang' => 'ACL_M_SPLIT', 'cat' => 'topic_actions'),
 284          'm_merge'    => array('lang' => 'ACL_M_MERGE', 'cat' => 'topic_actions'),
 285   
 286          'm_info'    => array('lang' => 'ACL_M_INFO', 'cat' => 'misc'),
 287          'm_warn'    => array('lang' => 'ACL_M_WARN', 'cat' => 'misc'),
 288          'm_ban'        => array('lang' => 'ACL_M_BAN', 'cat' => 'misc'),
 289   
 290          // Admin Permissions
 291          'a_board'        => array('lang' => 'ACL_A_BOARD', 'cat' => 'settings'),
 292          'a_server'        => array('lang' => 'ACL_A_SERVER', 'cat' => 'settings'),
 293          'a_jabber'        => array('lang' => 'ACL_A_JABBER', 'cat' => 'settings'),
 294          'a_phpinfo'        => array('lang' => 'ACL_A_PHPINFO', 'cat' => 'settings'),
 295   
 296          'a_forum'        => array('lang' => 'ACL_A_FORUM', 'cat' => 'forums'),
 297          'a_forumadd'    => array('lang' => 'ACL_A_FORUMADD', 'cat' => 'forums'),
 298          'a_forumdel'    => array('lang' => 'ACL_A_FORUMDEL', 'cat' => 'forums'),
 299          'a_prune'        => array('lang' => 'ACL_A_PRUNE', 'cat' => 'forums'),
 300   
 301          'a_icons'        => array('lang' => 'ACL_A_ICONS', 'cat' => 'posting'),
 302          'a_words'        => array('lang' => 'ACL_A_WORDS', 'cat' => 'posting'),
 303          'a_bbcode'        => array('lang' => 'ACL_A_BBCODE', 'cat' => 'posting'),
 304          'a_attach'        => array('lang' => 'ACL_A_ATTACH', 'cat' => 'posting'),
 305   
 306          'a_user'        => array('lang' => 'ACL_A_USER', 'cat' => 'user_group'),
 307          'a_userdel'        => array('lang' => 'ACL_A_USERDEL', 'cat' => 'user_group'),
 308          'a_group'        => array('lang' => 'ACL_A_GROUP', 'cat' => 'user_group'),
 309          'a_groupadd'    => array('lang' => 'ACL_A_GROUPADD', 'cat' => 'user_group'),
 310          'a_groupdel'    => array('lang' => 'ACL_A_GROUPDEL', 'cat' => 'user_group'),
 311          'a_ranks'        => array('lang' => 'ACL_A_RANKS', 'cat' => 'user_group'),
 312          'a_profile'        => array('lang' => 'ACL_A_PROFILE', 'cat' => 'user_group'),
 313          'a_names'        => array('lang' => 'ACL_A_NAMES', 'cat' => 'user_group'),
 314          'a_ban'            => array('lang' => 'ACL_A_BAN', 'cat' => 'user_group'),
 315   
 316          'a_viewauth'    => array('lang' => 'ACL_A_VIEWAUTH', 'cat' => 'permissions'),
 317          'a_authgroups'    => array('lang' => 'ACL_A_AUTHGROUPS', 'cat' => 'permissions'),
 318          'a_authusers'    => array('lang' => 'ACL_A_AUTHUSERS', 'cat' => 'permissions'),
 319          'a_fauth'        => array('lang' => 'ACL_A_FAUTH', 'cat' => 'permissions'),
 320          'a_mauth'        => array('lang' => 'ACL_A_MAUTH', 'cat' => 'permissions'),
 321          'a_aauth'        => array('lang' => 'ACL_A_AAUTH', 'cat' => 'permissions'),
 322          'a_uauth'        => array('lang' => 'ACL_A_UAUTH', 'cat' => 'permissions'),
 323          'a_roles'        => array('lang' => 'ACL_A_ROLES', 'cat' => 'permissions'),
 324          'a_switchperm'    => array('lang' => 'ACL_A_SWITCHPERM', 'cat' => 'permissions'),
 325   
 326          'a_styles'        => array('lang' => 'ACL_A_STYLES', 'cat' => 'misc'),
 327          'a_extensions'    => array('lang' => 'ACL_A_EXTENSIONS', 'cat' => 'misc'),
 328          'a_viewlogs'    => array('lang' => 'ACL_A_VIEWLOGS', 'cat' => 'misc'),
 329          'a_clearlogs'    => array('lang' => 'ACL_A_CLEARLOGS', 'cat' => 'misc'),
 330          'a_modules'        => array('lang' => 'ACL_A_MODULES', 'cat' => 'misc'),
 331          'a_language'    => array('lang' => 'ACL_A_LANGUAGE', 'cat' => 'misc'),
 332          'a_email'        => array('lang' => 'ACL_A_EMAIL', 'cat' => 'misc'),
 333          'a_bots'        => array('lang' => 'ACL_A_BOTS', 'cat' => 'misc'),
 334          'a_reasons'        => array('lang' => 'ACL_A_REASONS', 'cat' => 'misc'),
 335          'a_backup'        => array('lang' => 'ACL_A_BACKUP', 'cat' => 'misc'),
 336          'a_search'        => array('lang' => 'ACL_A_SEARCH', 'cat' => 'misc'),
 337      );
 338  }
 339