aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-07-25 21:59:52 -0700
committerredmatrix <git@macgirvin.com>2016-07-25 21:59:52 -0700
commit70dae328b5174543363163f8ca1c88c3c0af3cd8 (patch)
tree3fa43a2a23fffce85dac45343a4e9f8c24e0a1a3
parent5d4245ff01fd2445843cd9e99bae5f44d160d5fa (diff)
downloadvolse-hubzilla-70dae328b5174543363163f8ca1c88c3c0af3cd8.tar.gz
volse-hubzilla-70dae328b5174543363163f8ca1c88c3c0af3cd8.tar.bz2
volse-hubzilla-70dae328b5174543363163f8ca1c88c3c0af3cd8.zip
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.
-rwxr-xr-xboot.php64
1 files changed, 64 insertions, 0 deletions
diff --git a/boot.php b/boot.php
index 0ff598b45..a6cc23c9f 100755
--- a/boot.php
+++ b/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.
*/