diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/Import/import_diaspora.php | 148 | ||||
-rw-r--r-- | include/RedDAV/RedBrowser.php | 7 |
2 files changed, 150 insertions, 5 deletions
diff --git a/include/Import/import_diaspora.php b/include/Import/import_diaspora.php new file mode 100644 index 000000000..f755c39e2 --- /dev/null +++ b/include/Import/import_diaspora.php @@ -0,0 +1,148 @@ +<?php + +require_once('include/bb2diaspora.php'); +require_once('include/group.php'); +require_once('include/follow.php'); +require_once('include/photo/photo_driver.php'); + +function import_diaspora($data) { + $a = get_app(); + + $account = $a->get_account(); + if(! $account) + return false; + + $address = escape_tags($data['user']['username']); + if(! $address) { + notice( t('No username found in import file.') . EOL); + return false; + } + + $r = q("select * from channel where channel_address = '%s' limit 1", + dbesc($address) + ); + if($r) { + // try at most ten times to generate a unique address. + $x = 0; + $found_unique = false; + do { + $tmp = $address . mt_rand(1000,9999); + $r = q("select * from channel where channel_address = '%s' limit 1", + dbesc($tmp) + ); + if(! $r) { + $address = $tmp; + $found_unique = true; + break; + } + $x ++; + } while ($x < 10); + if(! $found_unique) { + logger('import_diaspora: duplicate channel address. randomisation failed.'); + notice( t('Unable to create a unique channel address. Import failed.') . EOL); + return; + } + } + + + $c = create_identity(array( + 'name' => escape_tags($data['user']['name']), + 'nickname' => $address, + 'account_id' => $account['account_id'], + 'permissions_role' => 'social' + )); + + + if(! $c['success']) + return; + + $channel_id = $c['channel']['channel_id']; + + // todo - add auto follow settings, (and strip exif in hubzilla) + + $location = escape_tags($data['user']['profile']['location']); + if(! $location) + $location = ''; + + + q("update channel set channel_location = '%s' where channel_id = %d", + dbesc($location), + intval($channel_id) + ); + + if($data['user']['profile']['nsfw']) { + // fixme for hubzilla which doesn't use pageflags any more + q("update channel set channel_pageflags = (channel_pageflags | %d) where channel_id = %d", + intval(PAGE_ADULT), + intval($channel_id) + ); + } + + if($data['user']['profile']['image_url']) { + $p = z_fetch_url($data['user']['profile']['image_url'],true); + if($p['success']) { + $rawbytes = $p['body']; + $type = guess_image_type('dummyfile',$p['header']); + import_channel_photo($rawbytes,$type,$c['channel']['channel_account_id'],$channel_id); + } + } + + $gender = escape_tags($data['user']['profile']['gender']); + $about = diaspora2bb($data['user']['profile']['bio']); + $publish = intval($data['user']['profile']['searchable']); + if($data['user']['profile']['birthday']) + $dob = datetime_convert('UTC','UTC',$data['user']['profile']['birthday'],'Y-m-d'); + else + $dob = '0000-00-00'; + + // we're relying on the fact that this channel was just created and will only + // have the default profile currently + + $r = q("update profile set gender = '%s', about = '%s', dob = '%s', publish = %d where uid = %d", + dbesc($gender), + dbesc($about), + dbesc($dob), + dbesc($publish), + intval($channel_id) + ); + + if($data['aspects']) { + foreach($data['aspects'] as $aspect) { + group_add($channel_id,escape_tags($aspect['name']),intval($aspect['contacts_visible'])); + } + } + + // now add connections and send friend requests + + + if($data['contacts']) { + foreach($data['contacts'] as $contact) { + $result = new_contact($channel_id, $contact['person_diaspora_handle'], $c['channel']); + if($result['success']) { + if($contact['aspects']) { + foreach($contact['aspects'] as $aspect) { + group_add_member($channel_id,$aspect['name'],$result['abook']['xchan_hash']); + } + } + } + } + } + + + // Then add items - note this can't be done until Diaspora adds guids to exported + // items and comments + + + proc_run('php','include/notifier.php','location',$channel_id); + + // This will indirectly perform a refresh_all *and* update the directory + + proc_run('php', 'include/directory.php', $channel_id); + + notice( t('Import completed.') . EOL); + + change_channel($channel_id); + + goaway(z_root() . '/network' ); + +}
\ No newline at end of file diff --git a/include/RedDAV/RedBrowser.php b/include/RedDAV/RedBrowser.php index a0330d7cc..d74bba220 100644 --- a/include/RedDAV/RedBrowser.php +++ b/include/RedDAV/RedBrowser.php @@ -247,7 +247,7 @@ class RedBrowser extends DAV\Browser\Plugin { $this->server->broadcastEvent('onHTMLActionsPanel', array($parent, &$output)); } - $html .= replace_macros(get_markup_template('cloud_header.tpl'), array( + $html .= replace_macros(get_markup_template('cloud.tpl'), array( '$header' => t('Files') . ": " . $this->escapeHTML($path) . "/", '$quota' => $quota, '$total' => t('Total'), @@ -255,10 +255,7 @@ class RedBrowser extends DAV\Browser\Plugin { '$shared' => t('Shared'), '$create' => t('Create'), '$upload' => t('Upload'), - '$is_owner' => $is_owner - )); - - $html .= replace_macros(get_markup_template('cloud_directory.tpl'), array( + '$is_owner' => $is_owner, '$parentpath' => $parentpath, '$entries' => $f, '$name' => t('Name'), |