channel move stuff (disabled currently because not yet complete)

This commit is contained in:
zotlabs 2017-01-09 14:37:56 -08:00
parent 91e0733e8e
commit a6272fcf76
5 changed files with 34 additions and 8 deletions

View file

@ -118,7 +118,7 @@ class Import extends \Zotlabs\Web\Controller {
return;
}
$moving = false;
$moving = intval($_REQUEST['moving']);
if(array_key_exists('compatibility',$data) && array_key_exists('database',$data['compatibility'])) {
$v1 = substr($data['compatibility']['database'],-4);
@ -196,8 +196,8 @@ class Import extends \Zotlabs\Web\Controller {
if($completed < 4) {
if(is_array($data['hubloc']) && (! $moving)) {
import_hublocs($channel,$data['hubloc'],$seize);
if(is_array($data['hubloc'])) {
import_hublocs($channel,$data['hubloc'],$seize,$moving);
}
logger('import step 4');
@ -536,6 +536,9 @@ class Import extends \Zotlabs\Web\Controller {
'$label_old_pass' => t('Your old login password'),
'$common' => t('For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media.'),
'$label_import_primary' => t('Make this hub my primary location'),
'$allow_move' => 0,
'$label_import_moving' => t('Move this channel (disable all previous locations)'),
'$label_import_posts' => t('Import existing posts if possible (experimental - limited by available memory'),
'$pleasewait' => t('This process may take several minutes to complete. Please submit the form only once and leave this page open until finished.'),
'$email' => '',

View file

@ -20,4 +20,8 @@ Wishlist:
- issues manager
- wiki cloning
- wiki cloning
- provide easy channel move (as opposed to channel copy or clone), which is currently supported only by the basic server role.
- provide RSA keychange operation; which cannot affect the primary identity (which is based on the channel keys), so add a secondary dynamic key pair which will be used for all other operations and can be upgraded or revoked at any time.

View file

@ -155,7 +155,7 @@ function import_profiles($channel,$profiles) {
}
function import_hublocs($channel,$hublocs,$seize) {
function import_hublocs($channel,$hublocs,$seize,$moving = false) {
if($channel && $hublocs) {
foreach($hublocs as $hubloc) {
@ -173,19 +173,32 @@ function import_hublocs($channel,$hublocs,$seize) {
$hubloc['hubloc_deleted'] = (($hubloc['hubloc_flags'] & 0x1000) ? 1 : 0);
}
if($moving && $hubloc['hubloc_hash'] === $channel['channel_hash'] && $hubloc['hubloc_url'] !== z_root()) {
$hubloc['hubloc_deleted'] = 1;
}
$arr = array(
'guid' => $hubloc['hubloc_guid'],
'guid_sig' => $hubloc['hubloc_guid_sig'],
'url' => $hubloc['hubloc_url'],
'url_sig' => $hubloc['hubloc_url_sig']
'url_sig' => $hubloc['hubloc_url_sig'],
'sitekey' => ((array_key_exists('hubloc_sitekey',$hubloc)) ? $hubloc['hubloc_sitekey'] : '')
);
if(($hubloc['hubloc_hash'] === $channel['channel_hash']) && intval($hubloc['hubloc_primary']) && ($seize))
$hubloc['hubloc_primary'] = 0;
if(! zot_gethub($arr)) {
if(($x = zot_gethub($arr,false)) === false) {
unset($hubloc['hubloc_id']);
create_table_from_array('hubloc',$hubloc);
}
else {
q("UPDATE hubloc set hubloc_primary = %d, hubloc_deleted = %d where hubloc_id = %d",
intval($hubloc['hubloc_primary']),
intval($hubloc['hubloc_deleted']),
intval($x['hubloc_id'])
);
}
}
}
}

View file

@ -568,7 +568,7 @@ function zot_gethub($arr, $multiple = false) {
}
logger('zot_gethub: not found: ' . print_r($arr,true), LOGGER_DEBUG);
return null;
return false;
}
/**

View file

@ -33,6 +33,12 @@
<label for="import-make-primary" id="label-import-make-primary">{{$label_import_primary}}</label>
<div id="import-make-primary-end" class="import-field-end"></div>
{{if $allow_move}}
<input type="checkbox" name="moving" id="import-moving" value="1" />
<label for="import-moving" id="label-import-moving">{{$label_import_moving}}</label>
<div id="import-moving-end" class="import-field-end"></div>
{{/if}}
<input type="submit" name="submit" id="import-submit-button" value="{{$submit}}" />
<div id="import-submit-end" class="import-field-end"></div>