clone channel perms
This commit is contained in:
parent
de4f9d68bd
commit
f7833411a1
@ -62,3 +62,60 @@ function perm_abook_upgrade($abook) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function translate_channel_perms_outbound(&$channel) {
|
||||||
|
$r = q("select * from pconfig where uid = %d and cat = 'perm_limits' ",
|
||||||
|
intval($channel['channel_id'])
|
||||||
|
);
|
||||||
|
|
||||||
|
if($r) {
|
||||||
|
foreach($r as $rr) {
|
||||||
|
if($rr['k'] === 'view_stream')
|
||||||
|
$channel['channel_r_stream'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'view_profile')
|
||||||
|
$channel['channel_r_profile'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'view_contacts')
|
||||||
|
$channel['channel_r_abook'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'view_storage')
|
||||||
|
$channel['channel_r_storage'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'view_pages')
|
||||||
|
$channel['channel_r_pages'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'send_stream')
|
||||||
|
$channel['channel_w_stream'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'post_wall')
|
||||||
|
$channel['channel_w_wall'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'post_comments')
|
||||||
|
$channel['channel_w_comment'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'post_mail')
|
||||||
|
$channel['channel_w_mail'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'post_like')
|
||||||
|
$channel['channel_w_like'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'tag_deliver')
|
||||||
|
$channel['channel_w_tagwall'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'chat')
|
||||||
|
$channel['channel_w_chat'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'write_storage')
|
||||||
|
$channel['channel_w_storage'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'write_pages')
|
||||||
|
$channel['channel_w_pages'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'republish')
|
||||||
|
$channel['channel_a_republish'] = $rr['v'];
|
||||||
|
if($rr['k'] === 'delegate')
|
||||||
|
$channel['channel_a_delegate'] = $rr['v'];
|
||||||
|
|
||||||
|
}
|
||||||
|
$channel['perm_limits'] = $r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function translate_channel_perms_inbound($channel) {
|
||||||
|
|
||||||
|
if($channel['perm_limits']) {
|
||||||
|
foreach($channel['perm_limits'] as $p) {
|
||||||
|
set_pconfig($channel['channel_id'],'perm_limits',$p['k'],$p['v']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
perm_limits_upgrade($channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -12,6 +12,7 @@ require_once('include/crypto.php');
|
|||||||
require_once('include/items.php');
|
require_once('include/items.php');
|
||||||
require_once('include/hubloc.php');
|
require_once('include/hubloc.php');
|
||||||
require_once('include/queue_fn.php');
|
require_once('include/queue_fn.php');
|
||||||
|
require_once('include/perm_upgrade.php');
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2936,6 +2937,8 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) {
|
|||||||
|
|
||||||
$channel = $r[0];
|
$channel = $r[0];
|
||||||
|
|
||||||
|
translate_channel_perms_outbound($channel);
|
||||||
|
|
||||||
if(intval($channel['channel_removed']))
|
if(intval($channel['channel_removed']))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -3132,6 +3135,8 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
|
|||||||
|
|
||||||
if(array_key_exists('channel',$arr) && is_array($arr['channel']) && count($arr['channel'])) {
|
if(array_key_exists('channel',$arr) && is_array($arr['channel']) && count($arr['channel'])) {
|
||||||
|
|
||||||
|
translate_channel_perms_inbound($arr['channel']);
|
||||||
|
|
||||||
if(array_key_exists('channel_pageflags',$arr['channel']) && intval($arr['channel']['channel_pageflags'])) {
|
if(array_key_exists('channel_pageflags',$arr['channel']) && intval($arr['channel']['channel_pageflags'])) {
|
||||||
// These flags cannot be sync'd.
|
// These flags cannot be sync'd.
|
||||||
// remove the bits from the incoming flags.
|
// remove the bits from the incoming flags.
|
||||||
@ -3145,7 +3150,15 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$disallowed = array('channel_id','channel_account_id','channel_primary','channel_prvkey', 'channel_address', 'channel_notifyflags', 'channel_removed', 'channel_deleted', 'channel_system');
|
$disallowed = [
|
||||||
|
'channel_id', 'channel_account_id', 'channel_primary', 'channel_prvkey',
|
||||||
|
'channel_address', 'channel_notifyflags', 'channel_removed', 'channel_deleted',
|
||||||
|
'channel_system', 'channel_r_stream', 'channel_r_profile', 'channel_r_abook',
|
||||||
|
'channel_r_storage', 'channel_r_pages', 'channel_w_stream', 'channel_w_wall',
|
||||||
|
'channel_w_comment', 'channel_w_mail', 'channel_w_like', 'channel_w_tagwall',
|
||||||
|
'channel_w_chat', 'channel_w_storage', 'channel_w_pages', 'channel_a_republish',
|
||||||
|
'channel_a_delegate'
|
||||||
|
];
|
||||||
|
|
||||||
$clean = array();
|
$clean = array();
|
||||||
foreach($arr['channel'] as $k => $v) {
|
foreach($arr['channel'] as $k => $v) {
|
||||||
|
Reference in New Issue
Block a user