streams/Code/Access/PermissionRoles.php

156 lines
4.8 KiB
PHP
Raw Normal View History

2016-06-27 11:44:10 +00:00
<?php
2022-02-16 04:08:28 +00:00
namespace Code\Access;
2016-06-27 11:44:10 +00:00
2022-02-16 04:08:28 +00:00
use Code\Extend\Hook;
/**
* @brief PermissionRoles class.
*
* @see Permissions
*/
2021-12-02 23:02:31 +00:00
class PermissionRoles
{
/**
* @brief PermissionRoles version.
*
* This must match the version in Permissions.php before permission updates can run.
*
2022-08-15 10:33:19 +00:00
* @return int
2021-12-02 23:02:31 +00:00
*/
2022-08-27 22:54:42 +00:00
public static function version(): int
2021-12-02 23:02:31 +00:00
{
return 3;
}
public static function role_perms($role)
{
$ret = [];
$ret['role'] = $role;
switch ($role) {
case 'social':
$ret['perms_auto'] = false;
$ret['default_collection'] = false;
$ret['directory_publish'] = true;
$ret['online'] = true;
$ret['perms_connect'] = [
2023-01-21 19:09:53 +00:00
'view_stream', 'search_stream', 'deliver_stream', 'view_profile', 'view_contacts', 'view_storage',
2021-12-02 23:02:31 +00:00
'view_pages', 'send_stream', 'post_mail', 'post_wall', 'post_comments'
];
$ret['limits'] = PermissionLimits::Std_Limits();
break;
case 'social_restricted':
$ret['perms_auto'] = false;
$ret['default_collection'] = true;
$ret['directory_publish'] = true;
$ret['online'] = false;
$ret['perms_connect'] = [
2022-02-18 22:14:22 +00:00
'view_stream', 'deliver_stream', 'view_profile', 'view_storage',
2021-12-02 23:02:31 +00:00
'view_pages', 'send_stream', 'post_mail', 'post_wall', 'post_comments'
];
$ret['limits'] = PermissionLimits::Std_Limits();
$ret['limits']['view_contacts'] = PERMS_SPECIFIC;
break;
case 'forum':
$ret['perms_auto'] = true;
$ret['default_collection'] = false;
$ret['directory_publish'] = true;
$ret['online'] = false;
$ret['perms_connect'] = [
2023-01-21 19:09:53 +00:00
'view_stream', 'search_stream', 'deliver_stream', 'view_profile', 'view_contacts', 'view_storage', 'write_storage',
2021-12-02 23:02:31 +00:00
'view_pages', 'post_mail', 'post_wall', 'post_comments'
];
$ret['limits'] = PermissionLimits::Std_Limits();
$ret['channel_type'] = 'group';
break;
case 'forum_moderated':
$ret['perms_auto'] = true;
$ret['default_collection'] = false;
$ret['directory_publish'] = true;
$ret['online'] = false;
$ret['perms_connect'] = [
2023-01-21 19:09:53 +00:00
'view_stream', 'search_stream', 'deliver_stream', 'view_profile', 'view_contacts', 'view_storage',
2021-12-02 23:02:31 +00:00
'view_pages', 'post_mail', 'post_wall', 'post_comments', 'moderated'
];
$ret['limits'] = PermissionLimits::Std_Limits();
$ret['channel_type'] = 'group';
break;
case 'forum_restricted':
$ret['perms_auto'] = false;
$ret['default_collection'] = true;
$ret['directory_publish'] = true;
$ret['online'] = false;
$ret['perms_connect'] = [
2022-02-18 22:14:22 +00:00
'view_stream', 'deliver_stream', 'view_profile', 'view_contacts', 'view_storage', 'write_storage',
2021-12-02 23:02:31 +00:00
'view_pages', 'post_mail', 'post_wall', 'post_comments'
];
$ret['limits'] = PermissionLimits::Std_Limits();
$ret['limits']['view_contacts'] = PERMS_SPECIFIC;
$ret['channel_type'] = 'group';
break;
default:
break;
}
$x = get_config('system', 'role_perms');
// let system settings over-ride any or all
if ($x && is_array($x) && array_key_exists($role, $x)) {
$ret = array_merge($ret, $x[$role]);
}
/**
* @hooks get_role_perms
* * \e array
*/
$x = ['role' => $role, 'result' => $ret];
Hook::call('get_role_perms', $x);
2021-12-02 23:02:31 +00:00
return $x['result'];
}
/**
* @brief Array with translated role names and grouping.
*
* Return an associative array with grouped role names that can be used
* to create select groups like in \e field_select_grouped.tpl.
*
* @return array
*/
2022-08-27 22:54:42 +00:00
public static function roles(): array
2021-12-02 23:02:31 +00:00
{
$roles = [
t('Social Networking') => [
'social' => t('Social - Normal'),
'social_restricted' => t('Social - Restricted')
],
t('Community Group') => [
'forum' => t('Group - Normal'),
'forum_restricted' => t('Group - Restricted'),
'forum_moderated' => t('Group - Moderated')
],
];
Hook::call('list_permission_roles', $roles);
2021-12-02 23:02:31 +00:00
return $roles;
}
2016-07-06 03:21:47 +00:00
2019-07-12 15:13:42 +00:00
}