2017-02-08 04:29:03 +00:00
< ? php
namespace Zotlabs\Module\Settings ;
2018-06-05 01:40:11 +00:00
use Zotlabs\Lib\Libsync ;
2017-02-08 04:29:03 +00:00
class Permcats {
function post () {
if ( ! local_channel ())
return ;
$channel = \App :: get_channel ();
check_form_security_token_redirectOnErr ( '/settings/permcats' , 'settings_permcats' );
$all_perms = \Zotlabs\Access\Permissions :: Perms ();
$name = escape_tags ( trim ( $_POST [ 'name' ]));
2018-04-17 01:09:14 +00:00
if ( ! $name ) {
notice ( t ( 'Permission Name is required.' ) . EOL );
return ;
}
2017-02-08 04:29:03 +00:00
$pcarr = [];
if ( $all_perms ) {
foreach ( $all_perms as $perm => $desc ) {
if ( array_key_exists ( 'perms_' . $perm , $_POST )) {
$pcarr [] = $perm ;
}
}
}
\Zotlabs\Lib\Permcat :: update ( local_channel (), $name , $pcarr );
2018-06-05 01:40:11 +00:00
Libsync :: build_sync_packet ();
2017-02-08 04:29:03 +00:00
info ( t ( 'Permission category saved.' ) . EOL );
return ;
}
function get () {
if ( ! local_channel ())
return ;
$channel = \App :: get_channel ();
if ( argc () > 2 )
2018-01-23 00:49:45 +00:00
$name = hex2bin ( argv ( 2 ));
2017-02-08 04:29:03 +00:00
2017-02-09 01:21:32 +00:00
if ( argc () > 3 && argv ( 3 ) === 'drop' ) {
\Zotlabs\Lib\Permcat :: delete ( local_channel (), $name );
2018-06-05 01:40:11 +00:00
Libsync :: build_sync_packet ();
2017-02-09 01:21:32 +00:00
json_return_and_die ([ 'success' => true ]);
}
2017-02-08 04:29:03 +00:00
2017-02-09 01:21:32 +00:00
$desc = t ( 'Use this form to create permission rules for various classes of people or connections.' );
2017-02-08 04:29:03 +00:00
2017-02-09 01:21:32 +00:00
$existing = [];
$pcat = new \Zotlabs\Lib\Permcat ( local_channel ());
$pcatlist = $pcat -> listing ();
$permcats = [];
if ( $pcatlist ) {
foreach ( $pcatlist as $pc ) {
if (( $pc [ 'name' ]) && ( $name ) && ( $pc [ 'name' ] == $name ))
$existing = $pc [ 'perms' ];
if ( ! $pc [ 'system' ])
2018-01-23 00:49:45 +00:00
$permcats [ bin2hex ( $pc [ 'name' ])] = $pc [ 'localname' ];
2017-02-08 04:29:03 +00:00
}
}
2017-02-09 01:21:32 +00:00
$global_perms = \Zotlabs\Access\Permissions :: Perms ();
foreach ( $global_perms as $k => $v ) {
$thisperm = \Zotlabs\Lib\Permcat :: find_permcat ( $existing , $k );
2017-02-08 04:29:03 +00:00
$checkinherited = \Zotlabs\Access\PermissionLimits :: Get ( local_channel (), $k );
if ( $existing [ $k ])
$thisperm = " 1 " ;
2017-03-19 12:33:02 +00:00
$perms [] = array ( 'perms_' . $k , $v , '' , $thisperm , 1 , (( $checkinherited & PERMS_SPECIFIC ) ? '' : '1' ), '' , $checkinherited );
2017-02-08 04:29:03 +00:00
}
$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 ,
2017-02-09 01:21:32 +00:00
'$permcats' => $permcats ,
2017-02-08 04:29:03 +00:00
'$atoken' => $atoken ,
'$url1' => z_root () . '/channel/' . $channel [ 'channel_address' ],
'$url2' => z_root () . '/photos/' . $channel [ 'channel_address' ],
'$name' => array ( 'name' , t ( 'Permission Name' ) . ' <span class="required">*</span>' , (( $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 <a href="settings"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here.' ),
'$submit' => t ( 'Submit' )
));
return $o ;
}
2017-03-19 12:33:02 +00:00
}