diff --git a/Zotlabs/Lib/Permcat.php b/Zotlabs/Lib/Permcat.php index 525e55091..032257be6 100644 --- a/Zotlabs/Lib/Permcat.php +++ b/Zotlabs/Lib/Permcat.php @@ -90,7 +90,8 @@ class Permcat { ); if($x) { foreach($x as $xv) { - $permcats[] = [ $xv['k'], $xv['k'], $xv['v'] ]; + $value = ((preg_match('|^a:[0-9]+:{.*}$|s', $xv['v'])) ? unserialize($xv['v']) : $xv['v']); + $permcats[] = [ $xv['k'], $xv['k'], $value ]; } } } diff --git a/Zotlabs/Module/Settings/Permcats.php b/Zotlabs/Module/Settings/Permcats.php new file mode 100644 index 000000000..82ee45bf7 --- /dev/null +++ b/Zotlabs/Module/Settings/Permcats.php @@ -0,0 +1,111 @@ + $desc) { + if(array_key_exists('perms_' . $perm, $_POST)) { + $pcarr[] = $perm; + } + } + } + + \Zotlabs\Lib\Permcat::update(local_channel(),$name,$pcarr); + + build_sync_packet(); + + info( t('Permission category saved.') . EOL); + + return; + } + + + function get() { + + if(! local_channel()) + return; + + $channel = \App::get_channel(); + + + if(argc() > 2) + $name = argv(2); + + + $desc = t('Use this form to create permission rules for various classes of people or connections.'); + + $global_perms = \Zotlabs\Access\Permissions::Perms(); + + $their_perms = []; + + $existing = get_all_perms(local_channel(),(($atoken_xchan) ? $atoken_xchan : '')); + + if($atoken_xchan) { + $theirs = q("select * from abconfig where chan = %d and xchan = '%s' and cat = 'their_perms'", + intval(local_channel()), + dbesc($atoken_xchan) + ); + if($theirs) { + foreach($theirs as $t) { + $their_perms[$t['k']] = $t['v']; + } + } + } + foreach($global_perms as $k => $v) { + $thisperm = get_abconfig(local_channel(),$contact['abook_xchan'],'my_perms',$k); +//fixme + + $checkinherited = \Zotlabs\Access\PermissionLimits::Get(local_channel(),$k); + + if($existing[$k]) + $thisperm = "1"; + + $perms[] = array('perms_' . $k, $v, ((array_key_exists($k,$their_perms)) ? intval($their_perms[$k]) : ''),$thisperm, 1, (($checkinherited & PERMS_SPECIFIC) ? '' : '1'), '', $checkinherited); + } + + + + $tpl = get_markup_template("settings_permcats.tpl"); + $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_permcats"), + '$title' => t('Permission Categories'), + '$desc' => $desc, + '$desc2' => $desc2, + '$tokens' => $t, + '$atoken' => $atoken, + '$url1' => z_root() . '/channel/' . $channel['channel_address'], + '$url2' => z_root() . '/photos/' . $channel['channel_address'], + '$name' => array('name', t('Permission Name') . ' *', (($name) ? $name : ''), ''), + '$me' => t('My Settings'), + '$perms' => $perms, + '$inherited' => t('inherited'), + '$notself' => 0, + '$self' => 1, + '$permlbl' => t('Individual Permissions'), + '$permnote' => t('Some permissions may be inherited from your channel\'s privacy settings, which have higher priority than individual settings. You can not change those settings here.'), + '$submit' => t('Submit') + )); + return $o; + } + +} \ No newline at end of file diff --git a/view/tpl/settings_permcats.tpl b/view/tpl/settings_permcats.tpl new file mode 100644 index 000000000..46a289ac2 --- /dev/null +++ b/view/tpl/settings_permcats.tpl @@ -0,0 +1,51 @@ +
+
+

{{$title}}

+
+
+
+ + +
+ + {{include file="field_input.tpl" field=$name}} + +
+ +
+
+ +
+ +
+
+
+ {{$permnote}} +
+ + + + + + {{foreach $perms as $prm}} + {{include file="field_acheckbox.tpl" field=$prm}} + {{/foreach}} +
{{$me}}
+ +
+ +
+
+
+
+ + +