diff options
Diffstat (limited to 'mod/import.php')
-rw-r--r-- | mod/import.php | 86 |
1 files changed, 80 insertions, 6 deletions
diff --git a/mod/import.php b/mod/import.php index f35ca149b..4c878f5c6 100644 --- a/mod/import.php +++ b/mod/import.php @@ -4,10 +4,14 @@ // connection to original server. require_once('include/Contact.php'); - +require_once('include/zot.php'); +require_once('include/identity.php'); function import_post(&$a) { + if(! get_account_id()) { + return; + } $data = null; $seize = ((x($_REQUEST,'make_primary')) ? intval($_REQUEST['make_primary']) : 0); @@ -22,6 +26,7 @@ function import_post(&$a) { if($filesize) { $data = @file_get_contents($src); } + unlink($src); } if(! $src) { @@ -39,7 +44,7 @@ function import_post(&$a) { $servername = substr($old_address,strpos($old_address,'@')+1); $scheme = 'https://'; - $api_path = '/api/export/basic?f=&channel=' . $channelname; + $api_path = '/api/red/channel/export/basic?f=&channel=' . $channelname; $binary = false; $redirects = 0; $opts = array('http_auth' => $email . ':' . $password); @@ -60,6 +65,7 @@ function import_post(&$a) { return; } + $data = json_decode($data,true); // logger('import: data: ' . print_r($data,true)); @@ -113,9 +119,11 @@ function import_post(&$a) { // reset $channel = $r[0]; + set_default_login_identity(get_account_id(),$channel['channel_id'],false); + if($data['photo']) { - require_once('include/Photo.php'); - import_channel_photo(base64url_decode($data['photo']['data']),$data['photo']['type'],get_account_id,$channel['channel_id']); + require_once('include/photo/photo_driver.php'); + import_channel_photo(base64url_decode($data['photo']['data']),$data['photo']['type'],get_account_id(),$channel['channel_id']); } $profiles = $data['profile']; @@ -217,7 +225,7 @@ function import_post(&$a) { . "')" ); - require_once("Photo.php"); + require_once('include/photo/photo_driver.php'); $photos = import_profile_photo($xchan['xchan_photo_l'],$xchan['xchan_hash']); $r = q("update xchan set xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s' limit 1", @@ -250,6 +258,63 @@ function import_post(&$a) { } } + + $configs = $data['config']; + if($configs) { + foreach($configs as $config) { + unset($config['id']); + $config['uid'] = $channel['channel_id']; + dbesc_array($config); + $r = dbq("INSERT INTO pconfig (`" + . implode("`, `", array_keys($config)) + . "`) VALUES ('" + . implode("', '", array_values($config)) + . "')" ); + } + } + + $groups = $data['group']; + if($groups) { + $saved = array(); + foreach($groups as $group) { + $saved[$group['hash']] = array('old' => $group['id']); + unset($group['id']); + $group['uid'] = $channel['channel_id']; + dbesc_array($group); + $r = dbq("INSERT INTO group (`" + . implode("`, `", array_keys($group)) + . "`) VALUES ('" + . implode("', '", array_values($group)) + . "')" ); + } + $r = q("select * from `group` where uid = %d", + intval($channel['channel_id']) + ); + if($r) { + foreach($r as $rr) { + $saved[$rr['hash']]['new'] = $rr['id']; + } + } + } + + $group_members = $data['group_member']; + if($groups_members) { + foreach($group_members as $group_member) { + unset($group_member['id']); + $group_member['uid'] = $channel['channel_id']; + foreach($saved as $x) { + if($x['old'] == $group_member['gid']) + $group_member['gid'] = $x['new']; + } + dbesc_array($group_member); + $r = dbq("INSERT INTO group_member (`" + . implode("`, `", array_keys($group_member)) + . "`) VALUES ('" + . implode("', '", array_values($group_member)) + . "')" ); + } + } + // FIXME - ensure we have a self entry if somebody is trying to pull a fast one if($seize) { @@ -261,11 +326,20 @@ function import_post(&$a) { notice( t('Import completed.') . EOL); + change_channel($channel['channel_id']); + + goaway(z_root() . '/network' ); + + } function import_content(&$a) { + if(! get_account_id()) { + notice( t('You must be logged in to use this feature.')); + return ''; + } $o = replace_macros(get_markup_template('channel_import.tpl'),array( '$title' => t('Import Channel'), @@ -284,4 +358,4 @@ function import_content(&$a) { return $o; -}
\ No newline at end of file +} |