Merge pull request #709 from dawnbreak/docu

Add some documentation for import functions.
This commit is contained in:
Klaus 2017-03-30 23:10:53 +02:00 committed by GitHub
commit dea4879938
5 changed files with 464 additions and 322 deletions

View File

@ -83,6 +83,7 @@ class Import extends \Zotlabs\Web\Controller {
$api_path .= 'channel/export/basic?f=&channel=' . $channelname; $api_path .= 'channel/export/basic?f=&channel=' . $channelname;
if($import_posts) if($import_posts)
$api_path .= '&posts=1'; $api_path .= '&posts=1';
$binary = false; $binary = false;
$redirects = 0; $redirects = 0;
$opts = array('http_auth' => $email . ':' . $password); $opts = array('http_auth' => $email . ':' . $password);
@ -248,7 +249,7 @@ class Import extends \Zotlabs\Web\Controller {
logger('import step 6'); logger('import step 6');
// import xchans
$xchans = $data['xchan']; $xchans = $data['xchan'];
if($xchans) { if($xchans) {
foreach($xchans as $xchan) { foreach($xchans as $xchan) {
@ -292,13 +293,11 @@ class Import extends \Zotlabs\Web\Controller {
dbesc($photodate), dbesc($photodate),
dbesc($xchan['xchan_hash']) dbesc($xchan['xchan_hash'])
); );
} }
logger('import step 7'); logger('import step 7');
} }
$friends = 0; $friends = 0;
$feeds = 0; $feeds = 0;
@ -367,6 +366,7 @@ class Import extends \Zotlabs\Web\Controller {
logger('import step 8'); logger('import step 8');
} }
// import groups
$groups = $data['group']; $groups = $data['group'];
if($groups) { if($groups) {
$saved = array(); $saved = array();
@ -391,7 +391,7 @@ class Import extends \Zotlabs\Web\Controller {
} }
} }
// import group members
$group_members = $data['group_member']; $group_members = $data['group_member'];
if($group_members) { if($group_members) {
foreach($group_members as $group_member) { foreach($group_members as $group_member) {
@ -450,7 +450,6 @@ class Import extends \Zotlabs\Web\Controller {
notifications_on($channel['channel_id'],$saved_notification_flags); notifications_on($channel['channel_id'],$saved_notification_flags);
if(array_key_exists('item_id',$data) && $data['item_id']) if(array_key_exists('item_id',$data) && $data['item_id'])
import_item_ids($channel,$data['item_id']); import_item_ids($channel,$data['item_id']);
@ -490,7 +489,7 @@ class Import extends \Zotlabs\Web\Controller {
function get() { function get() {
if(! get_account_id()) { if(! get_account_id()) {
notice( t('You must be logged in to use this feature.')); notice( t('You must be logged in to use this feature.') . EOL);
return ''; return '';
} }

View File

@ -3,7 +3,11 @@ namespace Zotlabs\Module;
require_once('include/import.php'); require_once('include/import.php');
/**
* @brief Module for importing items.
*
* Import existing posts and content from an export file.
*/
class Import_items extends \Zotlabs\Web\Controller { class Import_items extends \Zotlabs\Web\Controller {
function post() { function post() {
@ -38,7 +42,7 @@ class Import_items extends \Zotlabs\Web\Controller {
$old_address = ((x($_REQUEST,'old_address')) ? $_REQUEST['old_address'] : ''); $old_address = ((x($_REQUEST,'old_address')) ? $_REQUEST['old_address'] : '');
if(! $old_address) { if(! $old_address) {
logger('mod_import: nothing to import.'); logger('Nothing to import.');
notice( t('Nothing to import.') . EOL); notice( t('Nothing to import.') . EOL);
return; return;
} }
@ -64,11 +68,10 @@ class Import_items extends \Zotlabs\Web\Controller {
$data = $ret['body']; $data = $ret['body'];
else else
notice( t('Unable to download data from old server') . EOL); notice( t('Unable to download data from old server') . EOL);
} }
if(! $data) { if(! $data) {
logger('mod_import: empty file.'); logger('Empty file.');
notice( t('Imported file is empty.') . EOL); notice( t('Imported file is empty.') . EOL);
return; return;
} }
@ -86,13 +89,12 @@ class Import_items extends \Zotlabs\Web\Controller {
$v2 = substr(DB_UPDATE_VERSION,-4); $v2 = substr(DB_UPDATE_VERSION,-4);
if($v2 > $v1) { if($v2 > $v1) {
$t = sprintf( t('Warning: Database versions differ by %1$d updates.'), $v2 - $v1 ); $t = sprintf( t('Warning: Database versions differ by %1$d updates.'), $v2 - $v1 );
notice($t); notice($t . EOL);
} }
} }
$channel = \App::get_channel(); $channel = \App::get_channel();
if(array_key_exists('item',$data) && $data['item']) { if(array_key_exists('item',$data) && $data['item']) {
import_items($channel,$data['item'],false,((array_key_exists('relocate',$data)) ? $data['relocate'] : null)); import_items($channel,$data['item'],false,((array_key_exists('relocate',$data)) ? $data['relocate'] : null));
} }
@ -102,12 +104,14 @@ class Import_items extends \Zotlabs\Web\Controller {
} }
info( t('Import completed') . EOL); info( t('Import completed') . EOL);
return;
} }
/**
* @brief Generate item import page.
*
* @return string with parsed HTML.
*/
function get() { function get() {
if(! local_channel()) { if(! local_channel()) {
@ -123,9 +127,6 @@ class Import_items extends \Zotlabs\Web\Controller {
)); ));
return $o; return $o;
} }
} }

View File

@ -1,6 +1,17 @@
<?php /** @file */ <?php
/**
* @file include/hubloc.php
* @brief Hubloc related functions.
*/
/**
* @brief Create an array for hubloc table and insert record.
*
* Creates an assoziative array which will be inserted into the hubloc table.
*
* @param array $arr An assoziative array with hubloc values
* @return boolean|PDOStatement
*/
function hubloc_store_lowlevel($arr) { function hubloc_store_lowlevel($arr) {
$store = [ $store = [
@ -26,7 +37,6 @@ function hubloc_store_lowlevel($arr) {
]; ];
return create_table_from_array('hubloc', $store); return create_table_from_array('hubloc', $store);
} }
@ -45,7 +55,6 @@ function prune_hub_reinstalls() {
// see if this url has more than one sitekey, indicating it has been re-installed. // see if this url has more than one sitekey, indicating it has been re-installed.
if(count($x) > 1) { if(count($x) > 1) {
$d1 = datetime_convert('UTC', 'UTC', $x[0]['c']); $d1 = datetime_convert('UTC', 'UTC', $x[0]['c']);
$d2 = datetime_convert('UTC', 'UTC', 'now - 3 days'); $d2 = datetime_convert('UTC', 'UTC', 'now - 3 days');
@ -63,19 +72,23 @@ function prune_hub_reinstalls() {
} }
} }
/**
* @brief Remove obsolete hublocs.
*
* Get rid of any hublocs which are ours but aren't valid anymore -
* e.g. they point to a different and perhaps transient URL that we aren't using.
*
* I need to stress that this shouldn't happen. fix_system_urls() fixes hublocs
* when it discovers the URL has changed. So it's unclear how we could end up
* with URLs pointing to the old site name. But it happens. This may be an artifact
* of an old bug or maybe a regression in some newer code. In any event, they
* mess up communications and we have to take action if we find any.
*/
function remove_obsolete_hublocs() { function remove_obsolete_hublocs() {
logger('remove_obsolete_hublocs', LOGGER_DEBUG); logger('remove_obsolete_hublocs', LOGGER_DEBUG);
// Get rid of any hublocs which are ours but aren't valid anymore -
// e.g. they point to a different and perhaps transient URL that we aren't using.
// I need to stress that this shouldn't happen. fix_system_urls() fixes hublocs
// when it discovers the URL has changed. So it's unclear how we could end up
// with URLs pointing to the old site name. But it happens. This may be an artifact
// of an old bug or maybe a regression in some newer code. In any event, they
// mess up communications and we have to take action if we find any.
// First make sure we have any hublocs (at all) with this URL and sitekey. // First make sure we have any hublocs (at all) with this URL and sitekey.
// We don't want to perform this operation while somebody is in the process // We don't want to perform this operation while somebody is in the process
// of renaming their hub or installing certs. // of renaming their hub or installing certs.
@ -87,8 +100,6 @@ function remove_obsolete_hublocs() {
if((! $r) || (! count($r))) if((! $r) || (! count($r)))
return; return;
$channels = array();
// Good. We have at least one *valid* hubloc. // Good. We have at least one *valid* hubloc.
// Do we have any invalid ones? // Do we have any invalid ones?
@ -131,8 +142,15 @@ function remove_obsolete_hublocs() {
} }
// This actually changes other structures to match the given (presumably current) hubloc primary selection /**
* @brief Change primary hubloc.
*
* This actually changes other structures to match the given (presumably current)
* hubloc primary selection.
*
* @param array $hubloc
* @return boolean
*/
function hubloc_change_primary($hubloc) { function hubloc_change_primary($hubloc) {
if(! is_array($hubloc)) { if(! is_array($hubloc)) {
@ -193,12 +211,17 @@ function hubloc_change_primary($hubloc) {
logger('primary hubloc changed.' . print_r($hubloc, true), LOGGER_DEBUG); logger('primary hubloc changed.' . print_r($hubloc, true), LOGGER_DEBUG);
return true; return true;
} }
// We use the post url to distinguish between http and https hublocs.
// The https might be alive, and the http dead.
/**
* @brief Mark a hubloc as down.
*
* We use the post url to distinguish between http and https hublocs.
* The https might be alive, and the http dead.
*
* @param string $posturl Hubloc callback url which to disable
*/
function hubloc_mark_as_down($posturl) { function hubloc_mark_as_down($posturl) {
$r = q("update hubloc set hubloc_status = ( hubloc_status | %d ) where hubloc_callback = '%s'", $r = q("update hubloc set hubloc_status = ( hubloc_status | %d ) where hubloc_callback = '%s'",
intval(HUBLOC_OFFLINE), intval(HUBLOC_OFFLINE),
@ -208,7 +231,6 @@ function hubloc_mark_as_down($posturl) {
function ping_site($url) { function ping_site($url) {
$ret = array('success' => false); $ret = array('success' => false);

View File

@ -1,8 +1,19 @@
<?php <?php
use Zotlabs\Lib\IConfig;
require_once('include/menu.php'); require_once('include/menu.php');
require_once('include/perm_upgrade.php'); require_once('include/perm_upgrade.php');
/**
* @brief Import a channel.
*
* @param array $channel
* @param int $account_id
* @param int $seize
* @return boolean|array
*/
function import_channel($channel, $account_id, $seize) { function import_channel($channel, $account_id, $seize) {
if(! array_key_exists('channel_system',$channel)) { if(! array_key_exists('channel_system',$channel)) {
@ -108,23 +119,36 @@ function import_channel($channel, $account_id, $seize) {
set_default_login_identity($account_id,$channel['channel_id'],false); set_default_login_identity($account_id,$channel['channel_id'],false);
logger('import step 1'); logger('import step 1');
$_SESSION['import_step'] = 1; $_SESSION['import_step'] = 1;
return $channel;
return $channel;
} }
/**
* @brief Import pconfig for channel.
*
* @param array $channel
* @param array $configs
*/
function import_config($channel, $configs) { function import_config($channel, $configs) {
if($channel && $configs) { if($channel && $configs) {
foreach($configs as $config) { foreach($configs as $config) {
unset($config['id']); unset($config['id']);
$config['uid'] = $channel['channel_id']; $config['uid'] = $channel['channel_id'];
create_table_from_array('pconfig', $config); create_table_from_array('pconfig', $config);
} }
load_pconfig($channel['channel_id']); load_pconfig($channel['channel_id']);
} }
} }
/**
* @brief Import profiles.
*
* @param array $channel
* @param array $profiles
*/
function import_profiles($channel, $profiles) { function import_profiles($channel, $profiles) {
if($channel && $profiles) { if($channel && $profiles) {
@ -137,18 +161,28 @@ function import_profiles($channel,$profiles) {
convert_oldfields($profile,'with','partner'); convert_oldfields($profile,'with','partner');
convert_oldfields($profile,'work','employment'); convert_oldfields($profile,'work','employment');
/**
// we are going to reset all profile photos to the original * @TODO we are going to reset all profile photos to the original
// somebody will have to fix this later and put all the applicable photos into the export * somebody will have to fix this later and put all the applicable
* photos into the export.
*/
$profile['photo'] = z_root() . '/photo/profile/l/' . $channel['channel_id']; $profile['photo'] = z_root() . '/photo/profile/l/' . $channel['channel_id'];
$profile['thumb'] = z_root() . '/photo/profile/m/' . $channel['channel_id']; $profile['thumb'] = z_root() . '/photo/profile/m/' . $channel['channel_id'];
create_table_from_array('profile', $profile); create_table_from_array('profile', $profile);
} }
} }
} }
/**
* @brief Import hublocs.
*
* @param array $channel
* @param array $hublocs
* @param unknown $seize
* @param boolean $moving
*/
function import_hublocs($channel, $hublocs, $seize, $moving = false) { function import_hublocs($channel, $hublocs, $seize, $moving = false) {
if($channel && $hublocs) { if($channel && $hublocs) {
@ -191,14 +225,17 @@ function import_hublocs($channel,$hublocs,$seize,$moving = false) {
intval($hubloc['hubloc_deleted']), intval($hubloc['hubloc_deleted']),
intval($x['hubloc_id']) intval($x['hubloc_id'])
); );
} }
} }
} }
} }
/**
* @brief Import things.
*
* @param array $channel
* @param array $objs
*/
function import_objs($channel, $objs) { function import_objs($channel, $objs) {
if($channel && $objs) { if($channel && $objs) {
@ -228,6 +265,12 @@ function import_objs($channel,$objs) {
} }
} }
/**
* @brief Import things.
*
* @param array $channel
* @param array $objs
*/
function sync_objs($channel, $objs) { function sync_objs($channel, $objs) {
if($channel && $objs) { if($channel && $objs) {
@ -293,10 +336,12 @@ function sync_objs($channel,$objs) {
} }
} }
/**
* @brief Import apps.
*
* @param array $channel
* @param array $apps
*/
function import_apps($channel, $apps) { function import_apps($channel, $apps) {
if($channel && $apps) { if($channel && $apps) {
@ -328,19 +373,21 @@ function import_apps($channel,$apps) {
foreach($term as $t) { foreach($term as $t) {
if(array_key_exists('type',$t)) if(array_key_exists('type',$t))
$t['ttype'] = $t['type']; $t['ttype'] = $t['type'];
store_item_tag($channel['channel_id'],$x[0]['id'],TERM_OBJ_APP,$t['ttype'],escape_tags($t['term']),escape_tags($t['url'])); store_item_tag($channel['channel_id'],$x[0]['id'],TERM_OBJ_APP,$t['ttype'],escape_tags($t['term']),escape_tags($t['url']));
} }
} }
} }
} }
} }
} }
/**
* @brief Sync apps.
*
* @param array $channel
* @param array $apps
*/
function sync_apps($channel, $apps) { function sync_apps($channel, $apps) {
if($channel && $apps) { if($channel && $apps) {
@ -440,8 +487,12 @@ function sync_apps($channel,$apps) {
} }
} }
/**
* @brief Import chatrooms.
*
* @param array $channel
* @param array $chatrooms
*/
function import_chatrooms($channel, $chatrooms) { function import_chatrooms($channel, $chatrooms) {
if($channel && $chatrooms) { if($channel && $chatrooms) {
@ -462,8 +513,12 @@ function import_chatrooms($channel,$chatrooms) {
} }
} }
/**
* @brief Sync chatrooms.
*
* @param array $channel
* @param array $chatrooms
*/
function sync_chatrooms($channel, $chatrooms) { function sync_chatrooms($channel, $chatrooms) {
if($channel && $chatrooms) { if($channel && $chatrooms) {
@ -480,7 +535,6 @@ function sync_chatrooms($channel,$chatrooms) {
continue; continue;
} }
unset($chatroom['cr_id']); unset($chatroom['cr_id']);
unset($chatroom['cr_aid']); unset($chatroom['cr_aid']);
unset($chatroom['cr_uid']); unset($chatroom['cr_uid']);
@ -502,6 +556,7 @@ function sync_chatrooms($channel,$chatrooms) {
if($x) { if($x) {
if($x[0]['cr_edited'] >= $chatroom['cr_edited']) if($x[0]['cr_edited'] >= $chatroom['cr_edited'])
continue; continue;
$exists = true; $exists = true;
} }
$name = $chatroom['cr_name']; $name = $chatroom['cr_name'];
@ -524,7 +579,14 @@ function sync_chatrooms($channel,$chatrooms) {
} }
/**
* @brief Import items to channel.
*
* @param array $channel where to import to
* @param array $items
* @param boolean $sync
* @param array $relocate default null
*/
function import_items($channel, $items, $sync = false, $relocate = null) { function import_items($channel, $items, $sync = false, $relocate = null) {
if($channel && $items) { if($channel && $items) {
@ -578,7 +640,15 @@ function import_items($channel,$items,$sync = false,$relocate = null) {
} }
} }
/**
* @brief Sync items to channel.
*
* @see import_items
*
* @param array $channel where to import to
* @param array $items
* @param array $relocate default null
*/
function sync_items($channel, $items, $relocate = null) { function sync_items($channel, $items, $relocate = null) {
import_items($channel, $items, true, $relocate); import_items($channel, $items, true, $relocate);
} }
@ -601,12 +671,18 @@ function import_item_ids($channel,$itemids) {
intval($r[0]['id']) intval($r[0]['id'])
); );
if(! $z) { if(! $z) {
\Zotlabs\Lib\IConfig::Set($r[0]['id'],'system',$i['service'],$i['sid'],true); IConfig::Set($r[0]['id'],'system',$i['service'],$i['sid'],true);
} }
} }
} }
} }
/**
* @brief Import events.
*
* @param array $channel
* @param array $events
*/
function import_events($channel, $events) { function import_events($channel, $events) {
if($channel && $events) { if($channel && $events) {
@ -624,7 +700,12 @@ function import_events($channel,$events) {
} }
} }
/**
* @brief Sync events.
*
* @param array $channel
* @param array $events
*/
function sync_events($channel, $events) { function sync_events($channel, $events) {
if($channel && $events) { if($channel && $events) {
@ -650,7 +731,6 @@ function sync_events($channel,$events) {
convert_oldfields($event,'type','etype'); convert_oldfields($event,'type','etype');
convert_oldfields($event,'ignore','dismissed'); convert_oldfields($event,'ignore','dismissed');
$exists = false; $exists = false;
$x = q("select * from event where event_hash = '%s' and uid = %d limit 1", $x = q("select * from event where event_hash = '%s' and uid = %d limit 1",
@ -660,6 +740,7 @@ function sync_events($channel,$events) {
if($x) { if($x) {
if($x[0]['edited'] >= $event['edited']) if($x[0]['edited'] >= $event['edited'])
continue; continue;
$exists = true; $exists = true;
} }
@ -680,10 +761,14 @@ function sync_events($channel,$events) {
} }
} }
/**
* @brief Import menus.
*
* @param array $channel
* @param array $menus
*/
function import_menus($channel, $menus) { function import_menus($channel, $menus) {
if($channel && $menus) { if($channel && $menus) {
foreach($menus as $menu) { foreach($menus as $menu) {
$m = array(); $m = array();
@ -701,7 +786,6 @@ function import_menus($channel,$menus) {
$m['menu_flags'] |= MENU_BOOKMARK; $m['menu_flags'] |= MENU_BOOKMARK;
if(in_array('system',$menu['flags'])) if(in_array('system',$menu['flags']))
$m['menu_flags'] |= MENU_SYSTEM; $m['menu_flags'] |= MENU_SYSTEM;
} }
$menu_id = menu_create($m); $menu_id = menu_create($m);
@ -733,11 +817,14 @@ function import_menus($channel,$menus) {
} }
} }
} }
} }
/**
* @brief Sync menus.
*
* @param array $channel
* @param array $menus
*/
function sync_menus($channel, $menus) { function sync_menus($channel, $menus) {
if($channel && $menus) { if($channel && $menus) {
@ -795,7 +882,6 @@ function sync_menus($channel,$menus) {
foreach($menu['items'] as $it) { foreach($menu['items'] as $it) {
$mitem = array(); $mitem = array();
$mitem['mitem_link'] = str_replace('[channelurl]',z_root() . '/channel/' . $channel['channel_address'],$it['link']); $mitem['mitem_link'] = str_replace('[channelurl]',z_root() . '/channel/' . $channel['channel_address'],$it['link']);
$mitem['mitem_link'] = str_replace('[pageurl]',z_root() . '/page/' . $channel['channel_address'],$it['link']); $mitem['mitem_link'] = str_replace('[pageurl]',z_root() . '/page/' . $channel['channel_address'],$it['link']);
$mitem['mitem_link'] = str_replace('[cloudurl]',z_root() . '/cloud/' . $channel['channel_address'],$it['link']); $mitem['mitem_link'] = str_replace('[cloudurl]',z_root() . '/cloud/' . $channel['channel_address'],$it['link']);
@ -820,8 +906,12 @@ function sync_menus($channel,$menus) {
} }
} }
/**
* @brief Import likes.
*
* @param array $channel
* @param array $likes
*/
function import_likes($channel, $likes) { function import_likes($channel, $likes) {
if($channel && $likes) { if($channel && $likes) {
foreach($likes as $like) { foreach($likes as $like) {
@ -877,13 +967,18 @@ function import_conv($channel,$convs) {
); );
if($r) if($r)
continue; continue;
create_table_from_array('conv',$conv); create_table_from_array('conv',$conv);
} }
} }
} }
/**
* @brief Import mails.
*
* @param array $channel
* @param array $mails
*/
function import_mail($channel, $mails, $sync = false) { function import_mail($channel, $mails, $sync = false) {
if($channel && $mails) { if($channel && $mails) {
foreach($mails as $mail) { foreach($mails as $mail) {
@ -916,10 +1011,23 @@ function import_mail($channel,$mails,$sync = false) {
} }
} }
/**
* @brief Synchronise mails.
*
* @see import_mail
* @param array $channel
* @param array $mails
*/
function sync_mail($channel, $mails) { function sync_mail($channel, $mails) {
import_mail($channel, $mails, true); import_mail($channel, $mails, true);
} }
/**
* @brief Synchronise files.
*
* @param array $channel
* @param array $files
*/
function sync_files($channel, $files) { function sync_files($channel, $files) {
require_once('include/attach.php'); require_once('include/attach.php');
@ -964,7 +1072,6 @@ function sync_files($channel,$files) {
$att['aid'] = $channel['channel_account_id']; $att['aid'] = $channel['channel_account_id'];
$att['uid'] = $channel['channel_id']; $att['uid'] = $channel['channel_id'];
// check for duplicate folder names with the same parent. // check for duplicate folder names with the same parent.
// If we have a duplicate that doesn't match this hash value // If we have a duplicate that doesn't match this hash value
// change the name so that the contents won't be "covered over" // change the name so that the contents won't be "covered over"
@ -1009,7 +1116,7 @@ function sync_files($channel,$files) {
// end duplicate detection // end duplicate detection
// @fixme - update attachment structures if they are modified rather than created /// @FIXME update attachment structures if they are modified rather than created
$att['content'] = $newfname; $att['content'] = $newfname;
@ -1018,19 +1125,20 @@ function sync_files($channel,$files) {
// If the hash ever contains any escapable chars this could cause // If the hash ever contains any escapable chars this could cause
// problems. Currently it does not. // problems. Currently it does not.
// @TODO implement os_path /// @TODO implement os_path
if(!isset($att['os_path'])) if(!isset($att['os_path']))
$att['os_path'] = ''; $att['os_path'] = '';
if($attach_exists) { if($attach_exists) {
logger('sync_files attach exists: ' . print_r($att,true), LOGGER_DEBUG); logger('sync_files attach exists: ' . print_r($att,true), LOGGER_DEBUG);
if(! dbesc_array($att)) if(! dbesc_array($att))
continue; continue;
$str = ''; $str = '';
foreach($att as $k => $v) { foreach($att as $k => $v) {
if($str) if($str)
$str .= ","; $str .= ",";
$str .= " " . TQUOT . $k . TQUOT . " = '" . $v . "' "; $str .= " " . TQUOT . $k . TQUOT . " = '" . $v . "' ";
} }
$r = dbq("update attach set " . $str . " where id = " . intval($attach_id) ); $r = dbq("update attach set " . $str . " where id = " . intval($attach_id) );
@ -1040,7 +1148,6 @@ function sync_files($channel,$files) {
create_table_from_array('attach',$att); create_table_from_array('attach',$att);
} }
// is this a directory? // is this a directory?
if($att['filetype'] === 'multipart/mixed' && $att['is_dir']) { if($att['filetype'] === 'multipart/mixed' && $att['is_dir']) {
@ -1049,7 +1156,6 @@ function sync_files($channel,$files) {
continue; continue;
} }
else { else {
// it's a file // it's a file
// for the sync version of this algorithm (as opposed to 'offline import') // for the sync version of this algorithm (as opposed to 'offline import')
// we will fetch the actual file from the source server so it can be // we will fetch the actual file from the source server so it can be
@ -1084,7 +1190,7 @@ function sync_files($channel,$files) {
} }
} }
if(! $attachment_stored) { if(! $attachment_stored) {
// @TODO should we queue this and retry or delete everything or what? /// @TODO should we queue this and retry or delete everything or what?
logger('attachment store failed',LOGGER_NORMAL,LOG_ERR); logger('attachment store failed',LOGGER_NORMAL,LOG_ERR);
} }
if($f['photo']) { if($f['photo']) {
@ -1128,7 +1234,6 @@ function sync_files($channel,$files) {
else else
$p['content'] = base64_decode($p['content']); $p['content'] = base64_decode($p['content']);
if(!isset($p['display_path'])) if(!isset($p['display_path']))
$p['display_path'] = ''; $p['display_path'] = '';
@ -1138,14 +1243,15 @@ function sync_files($channel,$files) {
intval($channel['channel_id']) intval($channel['channel_id'])
); );
if($exists) { if($exists) {
if(! dbesc_array($p)) if(! dbesc_array($p))
continue; continue;
$str = ''; $str = '';
foreach($p as $k => $v) { foreach($p as $k => $v) {
if($str) if($str)
$str .= ","; $str .= ",";
$str .= " " . TQUOT . $k . TQUOT . " = '" . $v . "' "; $str .= " " . TQUOT . $k . TQUOT . " = '" . $v . "' ";
} }
$r = dbq("update photo set " . $str . " where id = " . intval($exists[0]['id']) ); $r = dbq("update photo set " . $str . " where id = " . intval($exists[0]['id']) );
@ -1164,7 +1270,15 @@ function sync_files($channel,$files) {
} }
} }
/**
* @brief Rename a key in an array.
*
* Replaces $old key with $new key in $arr.
*
* @param array[in,out] $arr The array where to work on
* @param string $old The old key in the array
* @param string $new The new key in the array
*/
function convert_oldfields(&$arr, $old, $new) { function convert_oldfields(&$arr, $old, $new) {
if(array_key_exists($old, $arr)) { if(array_key_exists($old, $arr)) {
$arr[$new] = $arr[$old]; $arr[$new] = $arr[$old];
@ -1240,6 +1354,7 @@ function scan_webpage_elements($path, $type, $cloud = false) {
} }
} }
} }
return $elements; return $elements;
} }
@ -1352,8 +1467,7 @@ function import_webpage_element($element, $channel, $type) {
intval(local_channel()) intval(local_channel())
); );
\Zotlabs\Lib\IConfig::Set($arr,'system',$namespace,(($name) ? $name : substr($arr['mid'],0,16)),true); IConfig::Set($arr,'system',$namespace,(($name) ? $name : substr($arr['mid'],0,16)),true);
if($i) { if($i) {
$arr['id'] = $i[0]['id']; $arr['id'] = $i[0]['id'];
@ -1374,7 +1488,7 @@ function import_webpage_element($element, $channel, $type) {
} }
if($x && $x['success']) { if($x && $x['success']) {
$item_id = $x['item_id']; //$item_id = $x['item_id'];
//update_remote_id($channel, $item_id, $arr['item_type'], $name, $namespace, $remote_id, $arr['mid']); //update_remote_id($channel, $item_id, $arr['item_type'], $name, $namespace, $remote_id, $arr['mid']);
$element['import_success'] = 1; $element['import_success'] = 1;
} }
@ -1399,7 +1513,6 @@ function get_webpage_elements($channel, $type = 'all') {
$sql_extra = item_permissions_sql($owner); $sql_extra = item_permissions_sql($owner);
$r = q("select * from iconfig left join item on iconfig.iid = item.id $r = q("select * from iconfig left join item on iconfig.iid = item.id
where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'WEBPAGE' and item_type = %d where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'WEBPAGE' and item_type = %d
$sql_extra order by item.created desc", $sql_extra order by item.created desc",
@ -1439,7 +1552,6 @@ function get_webpage_elements($channel, $type = 'all') {
); );
$elements['pages'][] = $element_arr; $elements['pages'][] = $element_arr;
} }
} }
if($type !== 'all') { if($type !== 'all') {
break; break;
@ -1451,7 +1563,6 @@ function get_webpage_elements($channel, $type = 'all') {
$sql_extra = item_permissions_sql($owner); $sql_extra = item_permissions_sql($owner);
$r = q("select * from iconfig left join item on iconfig.iid = item.id $r = q("select * from iconfig left join item on iconfig.iid = item.id
where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'PDL' and item_type = %d where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'PDL' and item_type = %d
$sql_extra order by item.created desc", $sql_extra order by item.created desc",
@ -1459,11 +1570,9 @@ function get_webpage_elements($channel, $type = 'all') {
intval(ITEM_TYPE_PDL) intval(ITEM_TYPE_PDL)
); );
$layouts = null;
if($r) { if($r) {
$elements['layouts'] = array(); $elements['layouts'] = array();
$layouts = array();
foreach($r as $rr) { foreach($r as $rr) {
unobscure($rr); unobscure($rr);
@ -1490,7 +1599,6 @@ function get_webpage_elements($channel, $type = 'all') {
$sql_extra = item_permissions_sql($owner); $sql_extra = item_permissions_sql($owner);
$r = q("select iconfig.iid, iconfig.k, iconfig.v, mid, title, body, mimetype, created, edited from iconfig $r = q("select iconfig.iid, iconfig.k, iconfig.v, mid, title, body, mimetype, created, edited from iconfig
left join item on iconfig.iid = item.id left join item on iconfig.iid = item.id
where uid = %d and iconfig.cat = 'system' and iconfig.k = 'BUILDBLOCK' where uid = %d and iconfig.cat = 'system' and iconfig.k = 'BUILDBLOCK'
@ -1499,11 +1607,9 @@ function get_webpage_elements($channel, $type = 'all') {
intval(ITEM_TYPE_BLOCK) intval(ITEM_TYPE_BLOCK)
); );
$blocks = null;
if($r) { if($r) {
$elements['blocks'] = array(); $elements['blocks'] = array();
$blocks = array();
foreach($r as $rr) { foreach($r as $rr) {
unobscure($rr); unobscure($rr);
@ -1518,7 +1624,6 @@ function get_webpage_elements($channel, $type = 'all') {
'mid' => $rr['mid'] 'mid' => $rr['mid']
); );
} }
} }
if($type !== 'all') { if($type !== 'all') {
@ -1528,11 +1633,18 @@ function get_webpage_elements($channel, $type = 'all') {
default: default:
break; break;
} }
return $elements; return $elements;
} }
/* creates a compressed zip file */ /**
* @brief Create a compressed zip file.
*
* @param array $files List of files to put in zip file
* @param string $destination
* @param boolean $overwrite
* @return boolean Success status
*/
function create_zip_file($files = array(), $destination = '', $overwrite = false) { function create_zip_file($files = array(), $destination = '', $overwrite = false) {
// if the zip file already exists and overwrite is false, return false // if the zip file already exists and overwrite is false, return false
if(file_exists($destination) && !$overwrite) { if(file_exists($destination) && !$overwrite) {
@ -1555,7 +1667,7 @@ function create_zip_file($files = array(), $destination = '', $overwrite = false
if(count($valid_files)) { if(count($valid_files)) {
//create the archive //create the archive
$zip = new ZipArchive(); $zip = new ZipArchive();
if($zip->open($destination, $overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) { if($zip->open($destination, $overwrite ? ZipArchive::OVERWRITE : ZipArchive::CREATE) !== true) {
return false; return false;
} }
// add the files // add the files

View File

@ -3050,7 +3050,15 @@ function array2XML($obj, $array) {
} }
} }
/**
* @brief Inserts an array into $table.
*
* @TODO Why is this function in include/text.php?
*
* @param string $table
* @param array $arr
* @return boolean|PDOStatement
*/
function create_table_from_array($table, $arr) { function create_table_from_array($table, $arr) {
if(! ($arr && $table)) if(! ($arr && $table))