export/import channel permissions

This commit is contained in:
redmatrix
2016-07-17 22:40:39 -07:00
parent f7833411a1
commit 10fa5c20e7
2 changed files with 39 additions and 9 deletions

View File

@@ -61,15 +61,35 @@ function import_channel($channel, $account_id, $seize) {
if(! is_site_admin())
$channel['channel_pageflags'] = $channel['channel_pageflags'] ^ PAGE_ALLOWCODE;
}
dbesc_array($channel);
$r = dbq("INSERT INTO channel (`"
. implode("`, `", array_keys($channel))
. "`) VALUES ('"
. implode("', '", array_values($channel))
. "')"
);
// remove all the permissions related settings, we will import/upgrade them after the channel
// is created.
$disallowed = [
'channel_id', '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', 'perm_limits'
];
$clean = array();
foreach($channel as $k => $v) {
if(in_array($k,$disallowed))
continue;
$clean[$k] = $v;
}
if($clean) {
dbesc_array($clean);
$r = dbq("INSERT INTO channel (`"
. implode("`, `", array_keys($clean))
. "`) VALUES ('"
. implode("', '", array_values($clean))
. "')"
);
}
if(! $r) {
logger('mod_import: channel clone failed. ', print_r($channel,true));
@@ -86,6 +106,14 @@ function import_channel($channel, $account_id, $seize) {
notice( t('Cloned channel not found. Import failed.') . EOL);
return false;
}
// extract the permissions from the original imported array and use our new channel_id to set them
// These could be in the old channel permission stule or the new pconfig. We have a function to
// translate and store them no matter which they throw at us.
$channel['channel_id'] = $r[0]['channel_id'];
translate_channel_perms_inbound($channel);
// reset
$channel = $r[0];