mirror of
https://github.com/phpbb/phpbb.git
synced 2025-05-05 15:16:16 +02:00
Merge pull request #1513 from nickvergessen/ticket/11582
Ticket/11582 Split permission logic from translations
This commit is contained in:
commit
b71038486e
@ -8,6 +8,12 @@ imports:
|
||||
- { resource: auth_providers.yml }
|
||||
|
||||
services:
|
||||
acl.permissions:
|
||||
class: phpbb_permissions
|
||||
arguments:
|
||||
- @dispatcher
|
||||
- @user
|
||||
|
||||
auth:
|
||||
class: phpbb_auth
|
||||
|
||||
|
@ -25,7 +25,7 @@ class acp_permission_roles
|
||||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $db, $user, $auth, $template, $cache;
|
||||
global $db, $user, $auth, $template, $cache, $phpbb_container;
|
||||
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||
|
||||
include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
||||
@ -306,6 +306,8 @@ class acp_permission_roles
|
||||
trigger_error($user->lang['NO_ROLE_SELECTED'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$phpbb_permissions = $phpbb_container->get('acl.permissions');
|
||||
|
||||
$template->assign_vars(array(
|
||||
'S_EDIT' => true,
|
||||
|
||||
@ -314,9 +316,8 @@ class acp_permission_roles
|
||||
|
||||
'ROLE_NAME' => $role_row['role_name'],
|
||||
'ROLE_DESCRIPTION' => $role_row['role_description'],
|
||||
'L_ACL_TYPE' => $user->lang['ACL_TYPE_' . strtoupper($permission_type)],
|
||||
)
|
||||
);
|
||||
'L_ACL_TYPE' => $phpbb_permissions->get_type_lang($permission_type),
|
||||
));
|
||||
|
||||
// We need to fill the auth options array with ACL_NO options ;)
|
||||
$sql = 'SELECT auth_option_id, auth_option
|
||||
@ -456,7 +457,9 @@ class acp_permission_roles
|
||||
*/
|
||||
function display_auth_options($auth_options)
|
||||
{
|
||||
global $template, $user;
|
||||
global $template, $user, $phpbb_container;
|
||||
|
||||
$phpbb_permissions = $phpbb_container->get('acl.permissions');
|
||||
|
||||
$content_array = $categories = array();
|
||||
$key_sort_array = array(0);
|
||||
@ -473,7 +476,7 @@ class acp_permission_roles
|
||||
foreach ($content_array as $cat => $cat_array)
|
||||
{
|
||||
$template->assign_block_vars('auth', array(
|
||||
'CAT_NAME' => $user->lang['permission_cat'][$cat],
|
||||
'CAT_NAME' => $phpbb_permissions->get_category_lang($cat),
|
||||
|
||||
'S_YES' => ($cat_array['S_YES'] && !$cat_array['S_NEVER'] && !$cat_array['S_NO']) ? true : false,
|
||||
'S_NEVER' => ($cat_array['S_NEVER'] && !$cat_array['S_YES'] && !$cat_array['S_NO']) ? true : false,
|
||||
@ -488,8 +491,8 @@ class acp_permission_roles
|
||||
'S_NO' => ($allowed == ACL_NO) ? true : false,
|
||||
|
||||
'FIELD_NAME' => $permission,
|
||||
'PERMISSION' => $user->lang['acl_' . $permission]['lang'])
|
||||
);
|
||||
'PERMISSION' => $phpbb_permissions->get_permission_lang($permission),
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -22,15 +22,18 @@ class acp_permissions
|
||||
{
|
||||
var $u_action;
|
||||
var $permission_dropdown;
|
||||
protected $permissions;
|
||||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $db, $user, $auth, $template, $cache;
|
||||
global $db, $user, $auth, $template, $cache, $phpbb_container;
|
||||
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
|
||||
|
||||
include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
||||
include_once($phpbb_root_path . 'includes/acp/auth.' . $phpEx);
|
||||
|
||||
$this->permissions = $phpbb_container->get('acl.permissions');
|
||||
|
||||
$auth_admin = new auth_admin();
|
||||
|
||||
$user->add_lang('acp/permissions');
|
||||
@ -49,7 +52,7 @@ class acp_permissions
|
||||
|
||||
if ($user_id && isset($auth_admin->acl_options['id'][$permission]) && $auth->acl_get('a_viewauth'))
|
||||
{
|
||||
$this->page_title = sprintf($user->lang['TRACE_PERMISSION'], $user->lang['acl_' . $permission]['lang']);
|
||||
$this->page_title = sprintf($user->lang['TRACE_PERMISSION'], $this->permissions->get_permission_lang($permission));
|
||||
$this->permission_trace($user_id, $forum_id, $permission);
|
||||
return;
|
||||
}
|
||||
@ -512,7 +515,7 @@ class acp_permissions
|
||||
|
||||
$template->assign_vars(array(
|
||||
'S_PERMISSION_DROPDOWN' => (sizeof($this->permission_dropdown) > 1) ? $this->build_permission_dropdown($this->permission_dropdown, $permission_type, $permission_scope) : false,
|
||||
'L_PERMISSION_TYPE' => $user->lang['ACL_TYPE_' . strtoupper($permission_type)],
|
||||
'L_PERMISSION_TYPE' => $this->permissions->get_type_lang($permission_type),
|
||||
|
||||
'U_ACTION' => $this->u_action,
|
||||
'S_HIDDEN_FIELDS' => $s_hidden_fields)
|
||||
@ -587,7 +590,7 @@ class acp_permissions
|
||||
*/
|
||||
function build_permission_dropdown($options, $default_option, $permission_scope)
|
||||
{
|
||||
global $user, $auth;
|
||||
global $auth;
|
||||
|
||||
$s_dropdown_options = '';
|
||||
foreach ($options as $setting)
|
||||
@ -598,7 +601,7 @@ class acp_permissions
|
||||
}
|
||||
|
||||
$selected = ($setting == $default_option) ? ' selected="selected"' : '';
|
||||
$l_setting = (isset($user->lang['permission_type'][$permission_scope][$setting])) ? $user->lang['permission_type'][$permission_scope][$setting] : $user->lang['permission_type'][$setting];
|
||||
$l_setting = $this->permissions->get_type_lang($setting, $permission_scope);
|
||||
$s_dropdown_options .= '<option value="' . $setting . '"' . $selected . '>' . $l_setting . '</option>';
|
||||
}
|
||||
|
||||
@ -979,7 +982,7 @@ class acp_permissions
|
||||
$back = request_var('back', 0);
|
||||
|
||||
$template->assign_vars(array(
|
||||
'PERMISSION' => $user->lang['acl_' . $permission]['lang'],
|
||||
'PERMISSION' => $this->permissions->get_permission_lang($permission),
|
||||
'PERMISSION_USERNAME' => $userdata['username'],
|
||||
'FORUM_NAME' => $forum_name,
|
||||
|
||||
|
@ -261,7 +261,8 @@ class auth_admin extends phpbb_auth
|
||||
*/
|
||||
function display_mask($mode, $permission_type, &$hold_ary, $user_mode = 'user', $local = false, $group_display = true)
|
||||
{
|
||||
global $template, $user, $db, $phpbb_root_path, $phpEx;
|
||||
global $template, $user, $db, $phpbb_root_path, $phpEx, $phpbb_container;
|
||||
$phpbb_permissions = $phpbb_container->get('acl.permissions');
|
||||
|
||||
// Define names for template loops, might be able to be set
|
||||
$tpl_pmask = 'p_mask';
|
||||
@ -269,7 +270,7 @@ class auth_admin extends phpbb_auth
|
||||
$tpl_category = 'category';
|
||||
$tpl_mask = 'mask';
|
||||
|
||||
$l_acl_type = (isset($user->lang['ACL_TYPE_' . (($local) ? 'LOCAL' : 'GLOBAL') . '_' . strtoupper($permission_type)])) ? $user->lang['ACL_TYPE_' . (($local) ? 'LOCAL' : 'GLOBAL') . '_' . strtoupper($permission_type)] : 'ACL_TYPE_' . (($local) ? 'LOCAL' : 'GLOBAL') . '_' . strtoupper($permission_type);
|
||||
$l_acl_type = $phpbb_permissions->get_type_lang($permission_type, (($local) ? 'local' : 'global'));
|
||||
|
||||
// Allow trace for viewing permissions and in user mode
|
||||
$show_trace = ($mode == 'view' && $user_mode == 'user') ? true : false;
|
||||
@ -1100,7 +1101,9 @@ class auth_admin extends phpbb_auth
|
||||
*/
|
||||
function assign_cat_array(&$category_array, $tpl_cat, $tpl_mask, $ug_id, $forum_id, $show_trace = false, $s_view)
|
||||
{
|
||||
global $template, $user, $phpbb_admin_path, $phpEx;
|
||||
global $template, $user, $phpbb_admin_path, $phpEx, $phpbb_container;
|
||||
|
||||
$phpbb_permissions = $phpbb_container->get('acl.permissions');
|
||||
|
||||
@reset($category_array);
|
||||
while (list($cat, $cat_array) = each($category_array))
|
||||
@ -1110,8 +1113,8 @@ class auth_admin extends phpbb_auth
|
||||
'S_NEVER' => ($cat_array['S_NEVER'] && !$cat_array['S_YES'] && !$cat_array['S_NO']) ? true : false,
|
||||
'S_NO' => ($cat_array['S_NO'] && !$cat_array['S_NEVER'] && !$cat_array['S_YES']) ? true : false,
|
||||
|
||||
'CAT_NAME' => $user->lang['permission_cat'][$cat])
|
||||
);
|
||||
'CAT_NAME' => $phpbb_permissions->get_category_lang($cat),
|
||||
));
|
||||
|
||||
/* Sort permissions by name (more naturaly and user friendly than sorting by a primary key)
|
||||
* Commented out due to it's memory consumption and time needed
|
||||
@ -1145,8 +1148,8 @@ class auth_admin extends phpbb_auth
|
||||
'U_TRACE' => ($show_trace) ? append_sid("{$phpbb_admin_path}index.$phpEx", "i=permissions&mode=trace&u=$ug_id&f=$forum_id&auth=$permission") : '',
|
||||
'UA_TRACE' => ($show_trace) ? append_sid("{$phpbb_admin_path}index.$phpEx", "i=permissions&mode=trace&u=$ug_id&f=$forum_id&auth=$permission", false) : '',
|
||||
|
||||
'PERMISSION' => $user->lang['acl_' . $permission]['lang'])
|
||||
);
|
||||
'PERMISSION' => $phpbb_permissions->get_permission_lang($permission),
|
||||
));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1163,8 +1166,8 @@ class auth_admin extends phpbb_auth
|
||||
'U_TRACE' => ($show_trace) ? append_sid("{$phpbb_admin_path}index.$phpEx", "i=permissions&mode=trace&u=$ug_id&f=$forum_id&auth=$permission") : '',
|
||||
'UA_TRACE' => ($show_trace) ? append_sid("{$phpbb_admin_path}index.$phpEx", "i=permissions&mode=trace&u=$ug_id&f=$forum_id&auth=$permission", false) : '',
|
||||
|
||||
'PERMISSION' => $user->lang['acl_' . $permission]['lang'])
|
||||
);
|
||||
'PERMISSION' => $phpbb_permissions->get_permission_lang($permission),
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1176,7 +1179,9 @@ class auth_admin extends phpbb_auth
|
||||
*/
|
||||
function build_permission_array(&$permission_row, &$content_array, &$categories, $key_sort_array)
|
||||
{
|
||||
global $user;
|
||||
global $user, $phpbb_container;
|
||||
|
||||
$phpbb_permissions = $phpbb_container->get('acl.permissions');
|
||||
|
||||
foreach ($key_sort_array as $forum_id)
|
||||
{
|
||||
@ -1191,20 +1196,12 @@ class auth_admin extends phpbb_auth
|
||||
@reset($permissions);
|
||||
while (list($permission, $auth_setting) = each($permissions))
|
||||
{
|
||||
if (!isset($user->lang['acl_' . $permission]))
|
||||
{
|
||||
$user->lang['acl_' . $permission] = array(
|
||||
'cat' => 'misc',
|
||||
'lang' => '{ acl_' . $permission . ' }'
|
||||
);
|
||||
}
|
||||
|
||||
$cat = $user->lang['acl_' . $permission]['cat'];
|
||||
$cat = $phpbb_permissions->get_permission_category($permission);
|
||||
|
||||
// Build our categories array
|
||||
if (!isset($categories[$cat]))
|
||||
{
|
||||
$categories[$cat] = $user->lang['permission_cat'][$cat];
|
||||
$categories[$cat] = $phpbb_permissions->get_category_lang($cat);
|
||||
}
|
||||
|
||||
// Build our content array
|
||||
|
@ -33,209 +33,164 @@ if (empty($lang) || !is_array($lang))
|
||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||
|
||||
/**
|
||||
* MODDERS PLEASE NOTE
|
||||
* EXTENSION-DEVELOPERS PLEASE NOTE
|
||||
*
|
||||
* You are able to put your permission sets into a separate file too by
|
||||
* prefixing the new file with permissions_ and putting it into the acp
|
||||
* language folder.
|
||||
*
|
||||
* An example of how the file could look like:
|
||||
*
|
||||
* <code>
|
||||
*
|
||||
* if (empty($lang) || !is_array($lang))
|
||||
* {
|
||||
* $lang = array();
|
||||
* }
|
||||
*
|
||||
* // Adding new category
|
||||
* $lang['permission_cat']['bugs'] = 'Bugs';
|
||||
*
|
||||
* // Adding new permission set
|
||||
* $lang['permission_type']['bug_'] = 'Bug Permissions';
|
||||
*
|
||||
* // Adding the permissions
|
||||
* $lang = array_merge($lang, array(
|
||||
* 'acl_bug_view' => array('lang' => 'Can view bug reports', 'cat' => 'bugs'),
|
||||
* 'acl_bug_post' => array('lang' => 'Can post bugs', 'cat' => 'post'), // Using a phpBB category here
|
||||
* ));
|
||||
*
|
||||
* </code>
|
||||
* You are able to put your permission sets into your extension.
|
||||
* The permissions logic should be added via the 'core.permissions' event.
|
||||
* You can easily add new permission categories, types and permissions, by
|
||||
* simply merging them into the respective arrays.
|
||||
* The respective language strings should be added into a language file, that
|
||||
* start with 'permissions_', so they are automatically loaded within the ACP.
|
||||
*/
|
||||
|
||||
// Define categories and permission types
|
||||
$lang = array_merge($lang, array(
|
||||
'permission_cat' => array(
|
||||
'actions' => 'Actions',
|
||||
'content' => 'Content',
|
||||
'forums' => 'Forums',
|
||||
'misc' => 'Misc',
|
||||
'permissions' => 'Permissions',
|
||||
'pm' => 'Private messages',
|
||||
'polls' => 'Polls',
|
||||
'post' => 'Post',
|
||||
'post_actions' => 'Post actions',
|
||||
'posting' => 'Posting',
|
||||
'profile' => 'Profile',
|
||||
'settings' => 'Settings',
|
||||
'topic_actions' => 'Topic actions',
|
||||
'user_group' => 'Users & Groups',
|
||||
),
|
||||
|
||||
// With defining 'global' here we are able to specify what is printed out if the permission is within the global scope.
|
||||
'permission_type' => array(
|
||||
'u_' => 'User permissions',
|
||||
'a_' => 'Admin permissions',
|
||||
'm_' => 'Moderator permissions',
|
||||
'f_' => 'Forum permissions',
|
||||
'global' => array(
|
||||
'm_' => 'Global moderator permissions',
|
||||
),
|
||||
),
|
||||
'ACL_CAT_ACTIONS' => 'Actions',
|
||||
'ACL_CAT_CONTENT' => 'Content',
|
||||
'ACL_CAT_FORUMS' => 'Forums',
|
||||
'ACL_CAT_MISC' => 'Misc',
|
||||
'ACL_CAT_PERMISSIONS' => 'Permissions',
|
||||
'ACL_CAT_PM' => 'Private messages',
|
||||
'ACL_CAT_POLLS' => 'Polls',
|
||||
'ACL_CAT_POST' => 'Post',
|
||||
'ACL_CAT_POST_ACTIONS' => 'Post actions',
|
||||
'ACL_CAT_POSTING' => 'Posting',
|
||||
'ACL_CAT_PROFILE' => 'Profile',
|
||||
'ACL_CAT_SETTINGS' => 'Settings',
|
||||
'ACL_CAT_TOPIC_ACTIONS' => 'Topic actions',
|
||||
'ACL_CAT_USER_GROUP' => 'Users & Groups',
|
||||
));
|
||||
|
||||
// User Permissions
|
||||
$lang = array_merge($lang, array(
|
||||
'acl_u_viewprofile' => array('lang' => 'Can view profiles, memberlist and online list', 'cat' => 'profile'),
|
||||
'acl_u_chgname' => array('lang' => 'Can change username', 'cat' => 'profile'),
|
||||
'acl_u_chgpasswd' => array('lang' => 'Can change password', 'cat' => 'profile'),
|
||||
'acl_u_chgemail' => array('lang' => 'Can change email address', 'cat' => 'profile'),
|
||||
'acl_u_chgavatar' => array('lang' => 'Can change avatar', 'cat' => 'profile'),
|
||||
'acl_u_chggrp' => array('lang' => 'Can change default usergroup', 'cat' => 'profile'),
|
||||
'acl_u_chgprofileinfo' => array('lang' => 'Can change profile field information', 'cat' => 'profile'),
|
||||
'ACL_U_VIEWPROFILE' => 'Can view profiles, memberlist and online list',
|
||||
'ACL_U_CHGNAME' => 'Can change username',
|
||||
'ACL_U_CHGPASSWD' => 'Can change password',
|
||||
'ACL_U_CHGEMAIL' => 'Can change email address',
|
||||
'ACL_U_CHGAVATAR' => 'Can change avatar',
|
||||
'ACL_U_CHGGRP' => 'Can change default usergroup',
|
||||
'ACL_U_CHGPROFILEINFO' => 'Can change profile field information',
|
||||
|
||||
'acl_u_attach' => array('lang' => 'Can attach files', 'cat' => 'post'),
|
||||
'acl_u_download' => array('lang' => 'Can download files', 'cat' => 'post'),
|
||||
'acl_u_savedrafts' => array('lang' => 'Can save drafts', 'cat' => 'post'),
|
||||
'acl_u_chgcensors' => array('lang' => 'Can disable word censors', 'cat' => 'post'),
|
||||
'acl_u_sig' => array('lang' => 'Can use signature', 'cat' => 'post'),
|
||||
'ACL_U_ATTACH' => 'Can attach files',
|
||||
'ACL_U_DOWNLOAD' => 'Can download files',
|
||||
'ACL_U_SAVEDRAFTS' => 'Can save drafts',
|
||||
'ACL_U_CHGCENSORS' => 'Can disable word censors',
|
||||
'ACL_U_SIG' => 'Can use signature',
|
||||
|
||||
'acl_u_sendpm' => array('lang' => 'Can send private messages', 'cat' => 'pm'),
|
||||
'acl_u_masspm' => array('lang' => 'Can send messages to multiple users', 'cat' => 'pm'),
|
||||
'acl_u_masspm_group'=> array('lang' => 'Can send messages to groups', 'cat' => 'pm'),
|
||||
'acl_u_readpm' => array('lang' => 'Can read private messages', 'cat' => 'pm'),
|
||||
'acl_u_pm_edit' => array('lang' => 'Can edit own private messages', 'cat' => 'pm'),
|
||||
'acl_u_pm_delete' => array('lang' => 'Can remove private messages from own folder', 'cat' => 'pm'),
|
||||
'acl_u_pm_forward' => array('lang' => 'Can forward private messages', 'cat' => 'pm'),
|
||||
'acl_u_pm_emailpm' => array('lang' => 'Can email private messages', 'cat' => 'pm'),
|
||||
'acl_u_pm_printpm' => array('lang' => 'Can print private messages', 'cat' => 'pm'),
|
||||
'acl_u_pm_attach' => array('lang' => 'Can attach files in private messages', 'cat' => 'pm'),
|
||||
'acl_u_pm_download' => array('lang' => 'Can download files in private messages', 'cat' => 'pm'),
|
||||
'acl_u_pm_bbcode' => array('lang' => 'Can use BBCode in private messages', 'cat' => 'pm'),
|
||||
'acl_u_pm_smilies' => array('lang' => 'Can use smilies in private messages', 'cat' => 'pm'),
|
||||
'acl_u_pm_img' => array('lang' => 'Can use [img] BBCode tag in private messages', 'cat' => 'pm'),
|
||||
'acl_u_pm_flash' => array('lang' => 'Can use [flash] BBCode tag in private messages', 'cat' => 'pm'),
|
||||
'ACL_U_SENDPM' => 'Can send private messages',
|
||||
'ACL_U_MASSPM' => 'Can send messages to multiple users',
|
||||
'ACL_U_MASSPM_GROUP'=> 'Can send messages to groups',
|
||||
'ACL_U_READPM' => 'Can read private messages',
|
||||
'ACL_U_PM_EDIT' => 'Can edit own private messages',
|
||||
'ACL_U_PM_DELETE' => 'Can remove private messages from own folder',
|
||||
'ACL_U_PM_FORWARD' => 'Can forward private messages',
|
||||
'ACL_U_PM_EMAILPM' => 'Can email private messages',
|
||||
'ACL_U_PM_PRINTPM' => 'Can print private messages',
|
||||
'ACL_U_PM_ATTACH' => 'Can attach files in private messages',
|
||||
'ACL_U_PM_DOWNLOAD' => 'Can download files in private messages',
|
||||
'ACL_U_PM_BBCODE' => 'Can use BBCode in private messages',
|
||||
'ACL_U_PM_SMILIES' => 'Can use smilies in private messages',
|
||||
'ACL_U_PM_IMG' => 'Can use [img] BBCode tag in private messages',
|
||||
'ACL_U_PM_FLASH' => 'Can use [flash] BBCode tag in private messages',
|
||||
|
||||
'acl_u_sendemail' => array('lang' => 'Can send emails', 'cat' => 'misc'),
|
||||
'acl_u_sendim' => array('lang' => 'Can send instant messages', 'cat' => 'misc'),
|
||||
'acl_u_ignoreflood' => array('lang' => 'Can ignore flood limit', 'cat' => 'misc'),
|
||||
'acl_u_hideonline' => array('lang' => 'Can hide online status', 'cat' => 'misc'),
|
||||
'acl_u_viewonline' => array('lang' => 'Can view hidden online users', 'cat' => 'misc'),
|
||||
'acl_u_search' => array('lang' => 'Can search board', 'cat' => 'misc'),
|
||||
'ACL_U_SENDEMAIL' => 'Can send emails',
|
||||
'ACL_U_SENDIM' => 'Can send instant messages',
|
||||
'ACL_U_IGNOREFLOOD' => 'Can ignore flood limit',
|
||||
'ACL_U_HIDEONLINE' => 'Can hide online status',
|
||||
'ACL_U_VIEWONLINE' => 'Can view hidden online users',
|
||||
'ACL_U_SEARCH' => 'Can search board',
|
||||
));
|
||||
|
||||
// Forum Permissions
|
||||
$lang = array_merge($lang, array(
|
||||
'acl_f_list' => array('lang' => 'Can see forum', 'cat' => 'actions'),
|
||||
'acl_f_read' => array('lang' => 'Can read forum', 'cat' => 'actions'),
|
||||
'acl_f_search' => array('lang' => 'Can search the forum', 'cat' => 'actions'),
|
||||
'acl_f_subscribe' => array('lang' => 'Can subscribe forum', 'cat' => 'actions'),
|
||||
'acl_f_print' => array('lang' => 'Can print topics', 'cat' => 'actions'),
|
||||
'acl_f_email' => array('lang' => 'Can email topics', 'cat' => 'actions'),
|
||||
'acl_f_bump' => array('lang' => 'Can bump topics', 'cat' => 'actions'),
|
||||
'acl_f_user_lock' => array('lang' => 'Can lock own topics', 'cat' => 'actions'),
|
||||
'acl_f_download' => array('lang' => 'Can download files', 'cat' => 'actions'),
|
||||
'acl_f_report' => array('lang' => 'Can report posts', 'cat' => 'actions'),
|
||||
'ACL_F_POST' => 'Can start new topics',
|
||||
'ACL_F_STICKY' => 'Can post stickies',
|
||||
'ACL_F_ANNOUNCE' => 'Can post announcements',
|
||||
'ACL_F_REPLY' => 'Can reply to topics',
|
||||
'ACL_F_EDIT' => 'Can edit own posts',
|
||||
'ACL_F_DELETE' => 'Can permanently delete own posts',
|
||||
'ACL_F_SOFTDELETE' => 'Can soft delete own posts<br /><em>Moderators, who have the approve posts permission, can restore soft deleted posts.</em>',
|
||||
'ACL_F_IGNOREFLOOD' => 'Can ignore flood limit',
|
||||
'ACL_F_POSTCOUNT' => 'Increment post counter<br /><em>Please note that this setting only affects new posts.</em>',
|
||||
'ACL_F_NOAPPROVE' => 'Can post without approval',
|
||||
|
||||
'acl_f_post' => array('lang' => 'Can start new topics', 'cat' => 'post'),
|
||||
'acl_f_sticky' => array('lang' => 'Can post stickies', 'cat' => 'post'),
|
||||
'acl_f_announce' => array('lang' => 'Can post announcements', 'cat' => 'post'),
|
||||
'acl_f_reply' => array('lang' => 'Can reply to topics', 'cat' => 'post'),
|
||||
'acl_f_edit' => array('lang' => 'Can edit own posts', 'cat' => 'post'),
|
||||
'acl_f_delete' => array('lang' => 'Can permanently delete own posts', 'cat' => 'post'),
|
||||
'acl_f_softdelete' => array('lang' => 'Can soft delete own posts<br /><em>Moderators, who have the approve posts permission, can restore soft deleted posts.</em>', 'cat' => 'post'),
|
||||
'acl_f_ignoreflood' => array('lang' => 'Can ignore flood limit', 'cat' => 'post'),
|
||||
'acl_f_postcount' => array('lang' => 'Increment post counter<br /><em>Please note that this setting only affects new posts.</em>', 'cat' => 'post'),
|
||||
'acl_f_noapprove' => array('lang' => 'Can post without approval', 'cat' => 'post'),
|
||||
'ACL_F_ATTACH' => 'Can attach files',
|
||||
'ACL_F_ICONS' => 'Can use topic/post icons',
|
||||
'ACL_F_BBCODE' => 'Can use BBCode',
|
||||
'ACL_F_FLASH' => 'Can use [flash] BBCode tag',
|
||||
'ACL_F_IMG' => 'Can use [img] BBCode tag',
|
||||
'ACL_F_SIGS' => 'Can use signatures',
|
||||
'ACL_F_SMILIES' => 'Can use smilies',
|
||||
|
||||
'acl_f_attach' => array('lang' => 'Can attach files', 'cat' => 'content'),
|
||||
'acl_f_icons' => array('lang' => 'Can use topic/post icons', 'cat' => 'content'),
|
||||
'acl_f_bbcode' => array('lang' => 'Can use BBCode', 'cat' => 'content'),
|
||||
'acl_f_flash' => array('lang' => 'Can use [flash] BBCode tag', 'cat' => 'content'),
|
||||
'acl_f_img' => array('lang' => 'Can use [img] BBCode tag', 'cat' => 'content'),
|
||||
'acl_f_sigs' => array('lang' => 'Can use signatures', 'cat' => 'content'),
|
||||
'acl_f_smilies' => array('lang' => 'Can use smilies', 'cat' => 'content'),
|
||||
|
||||
'acl_f_poll' => array('lang' => 'Can create polls', 'cat' => 'polls'),
|
||||
'acl_f_vote' => array('lang' => 'Can vote in polls', 'cat' => 'polls'),
|
||||
'acl_f_votechg' => array('lang' => 'Can change existing vote', 'cat' => 'polls'),
|
||||
'ACL_F_POLL' => 'Can create polls',
|
||||
'ACL_F_VOTE' => 'Can vote in polls',
|
||||
'ACL_F_VOTECHG' => 'Can change existing vote',
|
||||
));
|
||||
|
||||
// Moderator Permissions
|
||||
$lang = array_merge($lang, array(
|
||||
'acl_m_edit' => array('lang' => 'Can edit posts', 'cat' => 'post_actions'),
|
||||
'acl_m_delete' => array('lang' => 'Can permanently delete posts', 'cat' => 'post_actions'),
|
||||
'acl_m_softdelete' => array('lang' => 'Can soft delete posts<br /><em>Moderators, who have the approve posts permission, can restore soft deleted posts.</em>', 'cat' => 'post_actions'),
|
||||
'acl_m_approve' => array('lang' => 'Can approve and restore posts', 'cat' => 'post_actions'),
|
||||
'acl_m_report' => array('lang' => 'Can close and delete reports', 'cat' => 'post_actions'),
|
||||
'acl_m_chgposter' => array('lang' => 'Can change post author', 'cat' => 'post_actions'),
|
||||
'ACL_M_EDIT' => 'Can edit posts',
|
||||
'ACL_M_DELETE' => 'Can permanently delete posts',
|
||||
'ACL_M_SOFTDELETE' => 'Can soft delete posts<br /><em>Moderators, who have the approve posts permission, can restore soft deleted posts.</em>',
|
||||
'ACL_M_APPROVE' => 'Can approve posts',
|
||||
'ACL_M_REPORT' => 'Can close and delete reports',
|
||||
'ACL_M_CHGPOSTER' => 'Can change post author',
|
||||
|
||||
'acl_m_move' => array('lang' => 'Can move topics', 'cat' => 'topic_actions'),
|
||||
'acl_m_lock' => array('lang' => 'Can lock topics', 'cat' => 'topic_actions'),
|
||||
'acl_m_split' => array('lang' => 'Can split topics', 'cat' => 'topic_actions'),
|
||||
'acl_m_merge' => array('lang' => 'Can merge topics', 'cat' => 'topic_actions'),
|
||||
'ACL_M_MOVE' => 'Can move topics',
|
||||
'ACL_M_LOCK' => 'Can lock topics',
|
||||
'ACL_M_SPLIT' => 'Can split topics',
|
||||
'ACL_M_MERGE' => 'Can merge topics',
|
||||
|
||||
'acl_m_info' => array('lang' => 'Can view post details', 'cat' => 'misc'),
|
||||
'acl_m_warn' => array('lang' => 'Can issue warnings<br /><em>This setting is only assigned globally. It is not forum based.</em>', 'cat' => 'misc'), // This moderator setting is only global (and not local)
|
||||
'acl_m_ban' => array('lang' => 'Can manage bans<br /><em>This setting is only assigned globally. It is not forum based.</em>', 'cat' => 'misc'), // This moderator setting is only global (and not local)
|
||||
'ACL_M_INFO' => 'Can view post details',
|
||||
'ACL_M_WARN' => 'Can issue warnings<br /><em>This setting is only assigned globally. It is not forum based.</em>', // This moderator setting is only global (and not local)
|
||||
'ACL_M_BAN' => 'Can manage bans<br /><em>This setting is only assigned globally. It is not forum based.</em>', // This moderator setting is only global (and not local)
|
||||
));
|
||||
|
||||
// Admin Permissions
|
||||
$lang = array_merge($lang, array(
|
||||
'acl_a_board' => array('lang' => 'Can alter board settings/check for updates', 'cat' => 'settings'),
|
||||
'acl_a_server' => array('lang' => 'Can alter server/communication settings', 'cat' => 'settings'),
|
||||
'acl_a_jabber' => array('lang' => 'Can alter Jabber settings', 'cat' => 'settings'),
|
||||
'acl_a_phpinfo' => array('lang' => 'Can view php settings', 'cat' => 'settings'),
|
||||
'ACL_A_BOARD' => 'Can alter board settings/check for updates',
|
||||
'ACL_A_SERVER' => 'Can alter server/communication settings',
|
||||
'ACL_A_JABBER' => 'Can alter Jabber settings',
|
||||
'ACL_A_PHPINFO' => 'Can view php settings',
|
||||
|
||||
'acl_a_forum' => array('lang' => 'Can manage forums', 'cat' => 'forums'),
|
||||
'acl_a_forumadd' => array('lang' => 'Can add new forums', 'cat' => 'forums'),
|
||||
'acl_a_forumdel' => array('lang' => 'Can delete forums', 'cat' => 'forums'),
|
||||
'acl_a_prune' => array('lang' => 'Can prune forums', 'cat' => 'forums'),
|
||||
'ACL_A_FORUM' => 'Can manage forums',
|
||||
'ACL_A_FORUMADD' => 'Can add new forums',
|
||||
'ACL_A_FORUMDEL' => 'Can delete forums',
|
||||
'ACL_A_PRUNE' => 'Can prune forums',
|
||||
|
||||
'acl_a_icons' => array('lang' => 'Can alter topic/post icons and smilies', 'cat' => 'posting'),
|
||||
'acl_a_words' => array('lang' => 'Can alter word censors', 'cat' => 'posting'),
|
||||
'acl_a_bbcode' => array('lang' => 'Can define BBCode tags', 'cat' => 'posting'),
|
||||
'acl_a_attach' => array('lang' => 'Can alter attachment related settings', 'cat' => 'posting'),
|
||||
'ACL_A_ICONS' => 'Can alter topic/post icons and smilies',
|
||||
'ACL_A_WORDS' => 'Can alter word censors',
|
||||
'ACL_A_BBCODE' => 'Can define BBCode tags',
|
||||
'ACL_A_ATTACH' => 'Can alter attachment related settings',
|
||||
|
||||
'acl_a_user' => array('lang' => 'Can manage users<br /><em>This also includes seeing the users browser agent within the viewonline list.</em>', 'cat' => 'user_group'),
|
||||
'acl_a_userdel' => array('lang' => 'Can delete/prune users', 'cat' => 'user_group'),
|
||||
'acl_a_group' => array('lang' => 'Can manage groups', 'cat' => 'user_group'),
|
||||
'acl_a_groupadd' => array('lang' => 'Can add new groups', 'cat' => 'user_group'),
|
||||
'acl_a_groupdel' => array('lang' => 'Can delete groups', 'cat' => 'user_group'),
|
||||
'acl_a_ranks' => array('lang' => 'Can manage ranks', 'cat' => 'user_group'),
|
||||
'acl_a_profile' => array('lang' => 'Can manage custom profile fields', 'cat' => 'user_group'),
|
||||
'acl_a_names' => array('lang' => 'Can manage disallowed names', 'cat' => 'user_group'),
|
||||
'acl_a_ban' => array('lang' => 'Can manage bans', 'cat' => 'user_group'),
|
||||
'ACL_A_USER' => 'Can manage users<br /><em>This also includes seeing the users browser agent within the viewonline list.</em>',
|
||||
'ACL_A_USERDEL' => 'Can delete/prune users',
|
||||
'ACL_A_GROUP' => 'Can manage groups',
|
||||
'ACL_A_GROUPADD' => 'Can add new groups',
|
||||
'ACL_A_GROUPDEL' => 'Can delete groups',
|
||||
'ACL_A_RANKS' => 'Can manage ranks',
|
||||
'ACL_A_PROFILE' => 'Can manage custom profile fields',
|
||||
'ACL_A_NAMES' => 'Can manage disallowed names',
|
||||
'ACL_A_BAN' => 'Can manage bans',
|
||||
|
||||
'acl_a_viewauth' => array('lang' => 'Can view permission masks', 'cat' => 'permissions'),
|
||||
'acl_a_authgroups' => array('lang' => 'Can alter permissions for individual groups', 'cat' => 'permissions'),
|
||||
'acl_a_authusers' => array('lang' => 'Can alter permissions for individual users', 'cat' => 'permissions'),
|
||||
'acl_a_fauth' => array('lang' => 'Can alter forum permission class', 'cat' => 'permissions'),
|
||||
'acl_a_mauth' => array('lang' => 'Can alter moderator permission class', 'cat' => 'permissions'),
|
||||
'acl_a_aauth' => array('lang' => 'Can alter admin permission class', 'cat' => 'permissions'),
|
||||
'acl_a_uauth' => array('lang' => 'Can alter user permission class', 'cat' => 'permissions'),
|
||||
'acl_a_roles' => array('lang' => 'Can manage roles', 'cat' => 'permissions'),
|
||||
'acl_a_switchperm' => array('lang' => 'Can use others permissions', 'cat' => 'permissions'),
|
||||
'ACL_A_VIEWAUTH' => 'Can view permission masks',
|
||||
'ACL_A_AUTHGROUPS' => 'Can alter permissions for individual groups',
|
||||
'ACL_A_AUTHUSERS' => 'Can alter permissions for individual users',
|
||||
'ACL_A_FAUTH' => 'Can alter forum permission class',
|
||||
'ACL_A_MAUTH' => 'Can alter moderator permission class',
|
||||
'ACL_A_AAUTH' => 'Can alter admin permission class',
|
||||
'ACL_A_UAUTH' => 'Can alter user permission class',
|
||||
'ACL_A_ROLES' => 'Can manage roles',
|
||||
'ACL_A_SWITCHPERM' => 'Can use others permissions',
|
||||
|
||||
'acl_a_styles' => array('lang' => 'Can manage styles', 'cat' => 'misc'),
|
||||
'acl_a_extensions' => array('lang' => 'Can manage extensions', 'cat' => 'misc'),
|
||||
'acl_a_viewlogs' => array('lang' => 'Can view logs', 'cat' => 'misc'),
|
||||
'acl_a_clearlogs' => array('lang' => 'Can clear logs', 'cat' => 'misc'),
|
||||
'acl_a_modules' => array('lang' => 'Can manage modules', 'cat' => 'misc'),
|
||||
'acl_a_language' => array('lang' => 'Can manage language packs', 'cat' => 'misc'),
|
||||
'acl_a_email' => array('lang' => 'Can send mass email', 'cat' => 'misc'),
|
||||
'acl_a_bots' => array('lang' => 'Can manage bots', 'cat' => 'misc'),
|
||||
'acl_a_reasons' => array('lang' => 'Can manage report/denial reasons', 'cat' => 'misc'),
|
||||
'acl_a_backup' => array('lang' => 'Can backup/restore database', 'cat' => 'misc'),
|
||||
'acl_a_search' => array('lang' => 'Can manage search backends and settings', 'cat' => 'misc'),
|
||||
'ACL_A_STYLES' => 'Can manage styles',
|
||||
'ACL_A_EXTENSIONS' => 'Can manage extensions',
|
||||
'ACL_A_VIEWLOGS' => 'Can view logs',
|
||||
'ACL_A_CLEARLOGS' => 'Can clear logs',
|
||||
'ACL_A_MODULES' => 'Can manage modules',
|
||||
'ACL_A_LANGUAGE' => 'Can manage language packs',
|
||||
'ACL_A_EMAIL' => 'Can send mass email',
|
||||
'ACL_A_BOTS' => 'Can manage bots',
|
||||
'ACL_A_REASONS' => 'Can manage report/denial reasons',
|
||||
'ACL_A_BACKUP' => 'Can backup/restore database',
|
||||
'ACL_A_SEARCH' => 'Can manage search backends and settings',
|
||||
));
|
||||
|
340
phpBB/phpbb/permissions.php
Normal file
340
phpBB/phpbb/permissions.php
Normal file
@ -0,0 +1,340 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DO NOT CHANGE
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
class phpbb_permissions
|
||||
{
|
||||
/**
|
||||
* Event dispatcher object
|
||||
* @var phpbb_event_dispatcher
|
||||
*/
|
||||
protected $dispatcher;
|
||||
|
||||
/**
|
||||
* User object
|
||||
* @var phpbb_user
|
||||
*/
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param phpbb_event_dispatcher $phpbb_dispatcher Event dispatcher
|
||||
* @param phpbb_user $user User Object
|
||||
* @return null
|
||||
*/
|
||||
public function __construct(phpbb_event_dispatcher $phpbb_dispatcher, phpbb_user $user)
|
||||
{
|
||||
$this->dispatcher = $phpbb_dispatcher;
|
||||
$this->user = $user;
|
||||
|
||||
$categories = $this->categories;
|
||||
$types = $this->types;
|
||||
$permissions = $this->permissions;
|
||||
|
||||
/**
|
||||
* Allows to specify additional permission categories, types and permissions
|
||||
*
|
||||
* @event core.permissions
|
||||
* @var array types Array with permission types (a_, u_, m_, etc.)
|
||||
* @var array categories Array with permission categories (pm, post, settings, misc, etc.)
|
||||
* @var array permissions Array with permissions. Each Permission has the following layout:
|
||||
* '<type><permission>' => array(
|
||||
* 'lang' => 'Language Key with a Short description', // Optional, if not set,
|
||||
* // the permissions identifier '<type><permission>' is used with
|
||||
* // all uppercase.
|
||||
* 'cat' => 'Identifier of the category, the permission should be displayed in',
|
||||
* ),
|
||||
* Example:
|
||||
* 'u_viewprofile' => array(
|
||||
* 'lang' => 'ACL_U_VIEWPROFILE',
|
||||
* 'cat' => 'profile',
|
||||
* ),
|
||||
* @since 3.1-A1
|
||||
*/
|
||||
$vars = array('types', 'categories', 'permissions');
|
||||
extract($phpbb_dispatcher->trigger_event('core.permissions', compact($vars)));
|
||||
|
||||
$this->categories = $categories;
|
||||
$this->types = $types;
|
||||
$this->permissions = $permissions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array with all the permission categories (pm, post, settings, misc, etc.)
|
||||
*
|
||||
* @return array Layout: cat-identifier => Language key
|
||||
*/
|
||||
public function get_categories()
|
||||
{
|
||||
return $this->categories;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the language string of a permission category
|
||||
*
|
||||
* @param string $category Identifier of the category
|
||||
* @return string Language string
|
||||
*/
|
||||
public function get_category_lang($category)
|
||||
{
|
||||
return $this->user->lang($this->categories[$category]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array with all the permission types (a_, u_, m_, etc.)
|
||||
*
|
||||
* @return array Layout: type-identifier => Language key
|
||||
*/
|
||||
public function get_types()
|
||||
{
|
||||
return $this->types;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the language string of a permission type
|
||||
*
|
||||
* @param string $type Identifier of the type
|
||||
* @param mixed $scope Scope of the type (should be 'global', 'local' or false)
|
||||
* @return string Language string
|
||||
*/
|
||||
public function get_type_lang($type, $scope = false)
|
||||
{
|
||||
if ($scope && isset($this->types[$scope][$type]))
|
||||
{
|
||||
$lang_key = $this->types[$scope][$type];
|
||||
}
|
||||
else if (isset($this->types[$type]))
|
||||
{
|
||||
$lang_key = $this->types[$type];
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang_key = 'ACL_TYPE_' . strtoupper(($scope) ? $scope . '_' . $type : $type);
|
||||
}
|
||||
|
||||
return $this->user->lang($lang_key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array with all the permissions.
|
||||
* Each Permission has the following layout:
|
||||
* '<type><permission>' => array(
|
||||
* 'lang' => 'Language Key with a Short description', // Optional, if not set,
|
||||
* // the permissions identifier '<type><permission>' is used with
|
||||
* // all uppercase.
|
||||
* 'cat' => 'Identifier of the category, the permission should be displayed in',
|
||||
* ),
|
||||
* Example:
|
||||
* 'u_viewprofile' => array(
|
||||
* 'lang' => 'ACL_U_VIEWPROFILE',
|
||||
* 'cat' => 'profile',
|
||||
* ),
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function get_permissions()
|
||||
{
|
||||
return $this->permissions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the category of a permission
|
||||
*
|
||||
* @param string $permission Identifier of the permission
|
||||
* @return string Returns the category identifier of the permission
|
||||
*/
|
||||
public function get_permission_category($permission)
|
||||
{
|
||||
return (isset($this->permissions[$permission]['cat'])) ? $this->permissions[$permission]['cat'] : 'misc';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the language string of a permission
|
||||
*
|
||||
* @param string $permission Identifier of the permission
|
||||
* @return string Language string
|
||||
*/
|
||||
public function get_permission_lang($permission)
|
||||
{
|
||||
return (isset($this->permissions[$permission]['lang'])) ? $this->user->lang($this->permissions[$permission]['lang']) : $this->user->lang('ACL_' . strtoupper($permission));
|
||||
}
|
||||
|
||||
protected $types = array(
|
||||
'u_' => 'ACL_TYPE_U_',
|
||||
'a_' => 'ACL_TYPE_A_',
|
||||
'm_' => 'ACL_TYPE_M_',
|
||||
'f_' => 'ACL_TYPE_F_',
|
||||
'global' => array(
|
||||
'm_' => 'ACL_TYPE_GLOBAL_M_',
|
||||
),
|
||||
);
|
||||
|
||||
protected $categories = array(
|
||||
'actions' => 'ACL_CAT_ACTIONS',
|
||||
'content' => 'ACL_CAT_CONTENT',
|
||||
'forums' => 'ACL_CAT_FORUMS',
|
||||
'misc' => 'ACL_CAT_MISC',
|
||||
'permissions' => 'ACL_CAT_PERMISSIONS',
|
||||
'pm' => 'ACL_CAT_PM',
|
||||
'polls' => 'ACL_CAT_POLLS',
|
||||
'post' => 'ACL_CAT_POST',
|
||||
'post_actions' => 'ACL_CAT_POST_ACTIONS',
|
||||
'posting' => 'ACL_CAT_POSTING',
|
||||
'profile' => 'ACL_CAT_PROFILE',
|
||||
'settings' => 'ACL_CAT_SETTINGS',
|
||||
'topic_actions' => 'ACL_CAT_TOPIC_ACTIONS',
|
||||
'user_group' => 'ACL_CAT_USER_GROUP',
|
||||
);
|
||||
|
||||
protected $permissions = array(
|
||||
// User Permissions
|
||||
'u_viewprofile' => array('lang' => 'ACL_U_VIEWPROFILE', 'cat' => 'profile'),
|
||||
'u_chgname' => array('lang' => 'ACL_U_CHGNAME', 'cat' => 'profile'),
|
||||
'u_chgpasswd' => array('lang' => 'ACL_U_CHGPASSWD', 'cat' => 'profile'),
|
||||
'u_chgemail' => array('lang' => 'ACL_U_CHGEMAIL', 'cat' => 'profile'),
|
||||
'u_chgavatar' => array('lang' => 'ACL_U_CHGAVATAR', 'cat' => 'profile'),
|
||||
'u_chggrp' => array('lang' => 'ACL_U_CHGGRP', 'cat' => 'profile'),
|
||||
'u_chgprofileinfo' => array('lang' => 'ACL_U_CHGPROFILEINFO', 'cat' => 'profile'),
|
||||
|
||||
'u_attach' => array('lang' => 'ACL_U_ATTACH', 'cat' => 'post'),
|
||||
'u_download' => array('lang' => 'ACL_U_DOWNLOAD', 'cat' => 'post'),
|
||||
'u_savedrafts' => array('lang' => 'ACL_U_SAVEDRAFTS', 'cat' => 'post'),
|
||||
'u_chgcensors' => array('lang' => 'ACL_U_CHGCENSORS', 'cat' => 'post'),
|
||||
'u_sig' => array('lang' => 'ACL_U_SIG', 'cat' => 'post'),
|
||||
|
||||
'u_sendpm' => array('lang' => 'ACL_U_SENDPM', 'cat' => 'pm'),
|
||||
'u_masspm' => array('lang' => 'ACL_U_MASSPM', 'cat' => 'pm'),
|
||||
'u_masspm_group'=> array('lang' => 'ACL_U_MASSPM_GROUP', 'cat' => 'pm'),
|
||||
'u_readpm' => array('lang' => 'ACL_U_READPM', 'cat' => 'pm'),
|
||||
'u_pm_edit' => array('lang' => 'ACL_U_PM_EDIT', 'cat' => 'pm'),
|
||||
'u_pm_delete' => array('lang' => 'ACL_U_PM_DELETE', 'cat' => 'pm'),
|
||||
'u_pm_forward' => array('lang' => 'ACL_U_PM_FORWARD', 'cat' => 'pm'),
|
||||
'u_pm_emailpm' => array('lang' => 'ACL_U_PM_EMAILPM', 'cat' => 'pm'),
|
||||
'u_pm_printpm' => array('lang' => 'ACL_U_PM_PRINTPM', 'cat' => 'pm'),
|
||||
'u_pm_attach' => array('lang' => 'ACL_U_PM_ATTACH', 'cat' => 'pm'),
|
||||
'u_pm_download' => array('lang' => 'ACL_U_PM_DOWNLOAD', 'cat' => 'pm'),
|
||||
'u_pm_bbcode' => array('lang' => 'ACL_U_PM_BBCODE', 'cat' => 'pm'),
|
||||
'u_pm_smilies' => array('lang' => 'ACL_U_PM_SMILIES', 'cat' => 'pm'),
|
||||
'u_pm_img' => array('lang' => 'ACL_U_PM_IMG', 'cat' => 'pm'),
|
||||
'u_pm_flash' => array('lang' => 'ACL_U_PM_FLASH', 'cat' => 'pm'),
|
||||
|
||||
'u_sendemail' => array('lang' => 'ACL_U_SENDEMAIL', 'cat' => 'misc'),
|
||||
'u_sendim' => array('lang' => 'ACL_U_SENDIM', 'cat' => 'misc'),
|
||||
'u_ignoreflood' => array('lang' => 'ACL_U_IGNOREFLOOD', 'cat' => 'misc'),
|
||||
'u_hideonline' => array('lang' => 'ACL_U_HIDEONLINE', 'cat' => 'misc'),
|
||||
'u_viewonline' => array('lang' => 'ACL_U_VIEWONLINE', 'cat' => 'misc'),
|
||||
'u_search' => array('lang' => 'ACL_U_SEARCH', 'cat' => 'misc'),
|
||||
|
||||
// Forum Permissions
|
||||
'f_list' => array('lang' => 'ACL_F_LIST', 'cat' => 'actions'),
|
||||
'f_read' => array('lang' => 'ACL_F_READ', 'cat' => 'actions'),
|
||||
'f_search' => array('lang' => 'ACL_F_SEARCH', 'cat' => 'actions'),
|
||||
'f_subscribe' => array('lang' => 'ACL_F_SUBSCRIBE', 'cat' => 'actions'),
|
||||
'f_print' => array('lang' => 'ACL_F_PRINT', 'cat' => 'actions'),
|
||||
'f_email' => array('lang' => 'ACL_F_EMAIL', 'cat' => 'actions'),
|
||||
'f_bump' => array('lang' => 'ACL_F_BUMP', 'cat' => 'actions'),
|
||||
'f_user_lock' => array('lang' => 'ACL_F_USER_LOCK', 'cat' => 'actions'),
|
||||
'f_download' => array('lang' => 'ACL_F_DOWNLOAD', 'cat' => 'actions'),
|
||||
'f_report' => array('lang' => 'ACL_F_REPORT', 'cat' => 'actions'),
|
||||
|
||||
'f_post' => array('lang' => 'ACL_F_POST', 'cat' => 'post'),
|
||||
'f_sticky' => array('lang' => 'ACL_F_STICKY', 'cat' => 'post'),
|
||||
'f_announce' => array('lang' => 'ACL_F_ANNOUNCE', 'cat' => 'post'),
|
||||
'f_reply' => array('lang' => 'ACL_F_REPLY', 'cat' => 'post'),
|
||||
'f_edit' => array('lang' => 'ACL_F_EDIT', 'cat' => 'post'),
|
||||
'f_delete' => array('lang' => 'ACL_F_DELETE', 'cat' => 'post'),
|
||||
'f_ignoreflood' => array('lang' => 'ACL_F_IGNOREFLOOD', 'cat' => 'post'),
|
||||
'f_postcount' => array('lang' => 'ACL_F_POSTCOUNT', 'cat' => 'post'),
|
||||
'f_noapprove' => array('lang' => 'ACL_F_NOAPPROVE', 'cat' => 'post'),
|
||||
|
||||
'f_attach' => array('lang' => 'ACL_F_ATTACH', 'cat' => 'content'),
|
||||
'f_icons' => array('lang' => 'ACL_F_ICONS', 'cat' => 'content'),
|
||||
'f_bbcode' => array('lang' => 'ACL_F_BBCODE', 'cat' => 'content'),
|
||||
'f_flash' => array('lang' => 'ACL_F_FLASH', 'cat' => 'content'),
|
||||
'f_img' => array('lang' => 'ACL_F_IMG', 'cat' => 'content'),
|
||||
'f_sigs' => array('lang' => 'ACL_F_SIGS', 'cat' => 'content'),
|
||||
'f_smilies' => array('lang' => 'ACL_F_SMILIES', 'cat' => 'content'),
|
||||
|
||||
'f_poll' => array('lang' => 'ACL_F_POLL', 'cat' => 'polls'),
|
||||
'f_vote' => array('lang' => 'ACL_F_VOTE', 'cat' => 'polls'),
|
||||
'f_votechg' => array('lang' => 'ACL_F_VOTECHG', 'cat' => 'polls'),
|
||||
|
||||
// Moderator Permissions
|
||||
'm_edit' => array('lang' => 'ACL_M_EDIT', 'cat' => 'post_actions'),
|
||||
'm_delete' => array('lang' => 'ACL_M_DELETE', 'cat' => 'post_actions'),
|
||||
'm_approve' => array('lang' => 'ACL_M_APPROVE', 'cat' => 'post_actions'),
|
||||
'm_report' => array('lang' => 'ACL_M_REPORT', 'cat' => 'post_actions'),
|
||||
'm_chgposter' => array('lang' => 'ACL_M_CHGPOSTER', 'cat' => 'post_actions'),
|
||||
|
||||
'm_move' => array('lang' => 'ACL_M_MOVE', 'cat' => 'topic_actions'),
|
||||
'm_lock' => array('lang' => 'ACL_M_LOCK', 'cat' => 'topic_actions'),
|
||||
'm_split' => array('lang' => 'ACL_M_SPLIT', 'cat' => 'topic_actions'),
|
||||
'm_merge' => array('lang' => 'ACL_M_MERGE', 'cat' => 'topic_actions'),
|
||||
|
||||
'm_info' => array('lang' => 'ACL_M_INFO', 'cat' => 'misc'),
|
||||
'm_warn' => array('lang' => 'ACL_M_WARN', 'cat' => 'misc'),
|
||||
'm_ban' => array('lang' => 'ACL_M_BAN', 'cat' => 'misc'),
|
||||
|
||||
// Admin Permissions
|
||||
'a_board' => array('lang' => 'ACL_A_BOARD', 'cat' => 'settings'),
|
||||
'a_server' => array('lang' => 'ACL_A_SERVER', 'cat' => 'settings'),
|
||||
'a_jabber' => array('lang' => 'ACL_A_JABBER', 'cat' => 'settings'),
|
||||
'a_phpinfo' => array('lang' => 'ACL_A_PHPINFO', 'cat' => 'settings'),
|
||||
|
||||
'a_forum' => array('lang' => 'ACL_A_FORUM', 'cat' => 'forums'),
|
||||
'a_forumadd' => array('lang' => 'ACL_A_FORUMADD', 'cat' => 'forums'),
|
||||
'a_forumdel' => array('lang' => 'ACL_A_FORUMDEL', 'cat' => 'forums'),
|
||||
'a_prune' => array('lang' => 'ACL_A_PRUNE', 'cat' => 'forums'),
|
||||
|
||||
'a_icons' => array('lang' => 'ACL_A_ICONS', 'cat' => 'posting'),
|
||||
'a_words' => array('lang' => 'ACL_A_WORDS', 'cat' => 'posting'),
|
||||
'a_bbcode' => array('lang' => 'ACL_A_BBCODE', 'cat' => 'posting'),
|
||||
'a_attach' => array('lang' => 'ACL_A_ATTACH', 'cat' => 'posting'),
|
||||
|
||||
'a_user' => array('lang' => 'ACL_A_USER', 'cat' => 'user_group'),
|
||||
'a_userdel' => array('lang' => 'ACL_A_USERDEL', 'cat' => 'user_group'),
|
||||
'a_group' => array('lang' => 'ACL_A_GROUP', 'cat' => 'user_group'),
|
||||
'a_groupadd' => array('lang' => 'ACL_A_GROUPADD', 'cat' => 'user_group'),
|
||||
'a_groupdel' => array('lang' => 'ACL_A_GROUPDEL', 'cat' => 'user_group'),
|
||||
'a_ranks' => array('lang' => 'ACL_A_RANKS', 'cat' => 'user_group'),
|
||||
'a_profile' => array('lang' => 'ACL_A_PROFILE', 'cat' => 'user_group'),
|
||||
'a_names' => array('lang' => 'ACL_A_NAMES', 'cat' => 'user_group'),
|
||||
'a_ban' => array('lang' => 'ACL_A_BAN', 'cat' => 'user_group'),
|
||||
|
||||
'a_viewauth' => array('lang' => 'ACL_A_VIEWAUTH', 'cat' => 'permissions'),
|
||||
'a_authgroups' => array('lang' => 'ACL_A_AUTHGROUPS', 'cat' => 'permissions'),
|
||||
'a_authusers' => array('lang' => 'ACL_A_AUTHUSERS', 'cat' => 'permissions'),
|
||||
'a_fauth' => array('lang' => 'ACL_A_FAUTH', 'cat' => 'permissions'),
|
||||
'a_mauth' => array('lang' => 'ACL_A_MAUTH', 'cat' => 'permissions'),
|
||||
'a_aauth' => array('lang' => 'ACL_A_AAUTH', 'cat' => 'permissions'),
|
||||
'a_uauth' => array('lang' => 'ACL_A_UAUTH', 'cat' => 'permissions'),
|
||||
'a_roles' => array('lang' => 'ACL_A_ROLES', 'cat' => 'permissions'),
|
||||
'a_switchperm' => array('lang' => 'ACL_A_SWITCHPERM', 'cat' => 'permissions'),
|
||||
|
||||
'a_styles' => array('lang' => 'ACL_A_STYLES', 'cat' => 'misc'),
|
||||
'a_extensions' => array('lang' => 'ACL_A_EXTENSIONS', 'cat' => 'misc'),
|
||||
'a_viewlogs' => array('lang' => 'ACL_A_VIEWLOGS', 'cat' => 'misc'),
|
||||
'a_clearlogs' => array('lang' => 'ACL_A_CLEARLOGS', 'cat' => 'misc'),
|
||||
'a_modules' => array('lang' => 'ACL_A_MODULES', 'cat' => 'misc'),
|
||||
'a_language' => array('lang' => 'ACL_A_LANGUAGE', 'cat' => 'misc'),
|
||||
'a_email' => array('lang' => 'ACL_A_EMAIL', 'cat' => 'misc'),
|
||||
'a_bots' => array('lang' => 'ACL_A_BOTS', 'cat' => 'misc'),
|
||||
'a_reasons' => array('lang' => 'ACL_A_REASONS', 'cat' => 'misc'),
|
||||
'a_backup' => array('lang' => 'ACL_A_BACKUP', 'cat' => 'misc'),
|
||||
'a_search' => array('lang' => 'ACL_A_SEARCH', 'cat' => 'misc'),
|
||||
);
|
||||
}
|
@ -18,6 +18,7 @@ class phpbb_functional_extension_permission_lang_test extends phpbb_functional_t
|
||||
|
||||
static protected $fixtures = array(
|
||||
'foo/bar/language/en/',
|
||||
'foo/bar/event/',
|
||||
);
|
||||
|
||||
static public function setUpBeforeClass()
|
||||
@ -75,6 +76,6 @@ class phpbb_functional_extension_permission_lang_test extends phpbb_functional_t
|
||||
$this->assertContains('Can attach files', $crawler->filter('body')->text());
|
||||
|
||||
// language from ext/foo/bar/language/en/permissions_foo.php
|
||||
$this->assertContains('Can view foo', $crawler->filter('body')->text());
|
||||
$this->assertContains('Can view foobar', $crawler->filter('body')->text());
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event listener
|
||||
*/
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
|
||||
class phpbb_ext_foo_bar_event_permission_listener implements EventSubscriberInterface
|
||||
{
|
||||
static public function getSubscribedEvents()
|
||||
{
|
||||
return array(
|
||||
'core.permissions' => 'add_permissions',
|
||||
);
|
||||
}
|
||||
|
||||
public function add_permissions($event)
|
||||
{
|
||||
$permissions = $event['permissions'];
|
||||
$permissions['u_foo'] = array('lang' => 'ACL_U_FOOBAR', 'cat' => 'post');
|
||||
$event['permissions'] = $permissions;
|
||||
}
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
<?php
|
||||
|
||||
// Admin Permissions
|
||||
$lang = array_merge($lang, array(
|
||||
'acl_u_foo' => array('lang' => 'Can view foo', 'cat' => 'misc'),
|
||||
'ACL_U_FOOBAR' => 'Can view foobar with permission foo',
|
||||
));
|
||||
|
Loading…
x
Reference in New Issue
Block a user