aboutsummaryrefslogtreecommitdiffstats
path: root/include/import.php
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-07-17 22:40:39 -0700
committerredmatrix <git@macgirvin.com>2016-07-17 22:40:39 -0700
commit10fa5c20e76dfd6ab85a7cda03a96b56a4b6870a (patch)
tree5a3442b5d33cd126924e135175a71ab9254592f8 /include/import.php
parentf7833411a10d79ce86ec9d47ce05e2c7fcf1968a (diff)
downloadvolse-hubzilla-10fa5c20e76dfd6ab85a7cda03a96b56a4b6870a.tar.gz
volse-hubzilla-10fa5c20e76dfd6ab85a7cda03a96b56a4b6870a.tar.bz2
volse-hubzilla-10fa5c20e76dfd6ab85a7cda03a96b56a4b6870a.zip
export/import channel permissions
Diffstat (limited to 'include/import.php')
-rw-r--r--include/import.php44
1 files changed, 36 insertions, 8 deletions
diff --git a/include/import.php b/include/import.php
index 00ecef07d..7a19ab68f 100644
--- a/include/import.php
+++ b/include/import.php
@@ -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];