check for new permissions and update channels and connections with defaults if any are found and if there are defaults for any channel roles which are being used on this site.
This commit is contained in:
parent
5d4245ff01
commit
70dae328b5
64
boot.php
64
boot.php
@ -1551,6 +1551,9 @@ function check_config(&$a) {
|
||||
|
||||
load_hooks();
|
||||
|
||||
|
||||
check_for_new_perms();
|
||||
|
||||
check_cron_broken();
|
||||
|
||||
}
|
||||
@ -2440,6 +2443,67 @@ function cert_bad_email() {
|
||||
}
|
||||
|
||||
|
||||
function check_for_new_perms() {
|
||||
|
||||
$pregistered = get_config('system','perms');
|
||||
$pcurrent = array_keys(\Zotlabs\Access\Permissions::Perms());
|
||||
|
||||
if(! $pregistered) {
|
||||
set_config('system','perms',$pcurrent);
|
||||
return;
|
||||
}
|
||||
|
||||
$found_new_perm = false;
|
||||
|
||||
foreach($pcurrent as $p) {
|
||||
if(! in_array($p,$pregistered)) {
|
||||
$found_new_perm = true;
|
||||
// for all channels
|
||||
$c = q("select channel_id from channel where true");
|
||||
if($c) {
|
||||
foreach($c as $cc) {
|
||||
// get the permission role
|
||||
$r = q("select v from pconfig where uid = %d and cat = 'system' and k = 'permissions_role'",
|
||||
intval($cc['uid'])
|
||||
);
|
||||
if($r) {
|
||||
// get a list of connections
|
||||
$x = q("select abook_xchan from abook where abook_channel = %d and abook_self = 0",
|
||||
intval($cc['uid'])
|
||||
);
|
||||
// get the permissions role details
|
||||
$rp = \Zotlabs\Access\PermissionRoles::role_perms($r[0]['v']);
|
||||
if($rp) {
|
||||
// set the channel limits if appropriate or 0
|
||||
if(array_key_exists('limits',$rp) && array_key_exists($p,$rp['limits'])) {
|
||||
\Zotlabs\Access\PermissionLimits::Set($cc['uid'],$p,$rp['limits'][$p]);
|
||||
}
|
||||
else {
|
||||
\Zotlabs\Access\PermissionLimits::Set($cc['uid'],$p,0);
|
||||
}
|
||||
|
||||
$set = ((array_key_exists('perms_connect',$rp) && array_key_exists($p,$rp['perms_connect'])) ? true : false);
|
||||
// foreach connection set to the perms_connect value
|
||||
if($x) {
|
||||
foreach($x as $xx) {
|
||||
set_abconfig($cc['uid'],$xx['abook_xchan'],'my_perms',$p,intval($set));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We should probably call perms_refresh here, but this should get pushed in 24 hours and there is no urgency
|
||||
if($found_new_perm)
|
||||
set_config('system','perms',$pcurrent);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Send warnings every 3-5 days if cron is not running.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user