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