From e99be61d4995bece3c7af703b22ebe1be149a7fd Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Sat, 29 Apr 2017 12:56:25 -0400 Subject: Reformatted Webpages.php to clean up whitespace, where there was a mixture of spaces and tabs for indentation. No other changes made. --- Zotlabs/Module/Webpages.php | 987 ++++++++++++++++++++++---------------------- 1 file changed, 483 insertions(+), 504 deletions(-) diff --git a/Zotlabs/Module/Webpages.php b/Zotlabs/Module/Webpages.php index effe92614..e2ad7753b 100644 --- a/Zotlabs/Module/Webpages.php +++ b/Zotlabs/Module/Webpages.php @@ -1,156 +1,152 @@ 1 && argv(1) === 'sys' && is_site_admin()) { + + if (argc() > 1 && argv(1) === 'sys' && is_site_admin()) { $sys = get_sys_channel(); - if($sys && intval($sys['channel_id'])) { + if ($sys && intval($sys['channel_id'])) { \App::$is_sys = true; } } - - if(argc() > 1) + + if (argc() > 1) $which = argv(1); else return; - + profile_load($which); - } - - + function get() { - - if(! \App::$profile) { - notice( t('Requested profile is not available.') . EOL ); + + if (!\App::$profile) { + notice(t('Requested profile is not available.') . EOL); \App::$error = 404; return; } - + $which = argv(1); - + $_SESSION['return_url'] = \App::$query_string; - + $uid = local_channel(); $owner = 0; $observer = \App::get_observer(); - + $channel = \App::get_channel(); switch ($_SESSION['action']) { - case 'import': - $_SESSION['action'] = null; - $o .= replace_macros(get_markup_template('webpage_import.tpl'), array( - '$title' => t('Import Webpage Elements'), - '$importbtn' => t('Import selected'), - '$action' => 'import', - '$pages' => $_SESSION['pages'], - '$layouts' => $_SESSION['layouts'], - '$blocks' => $_SESSION['blocks'], - )); - return $o; - - case 'importselected': - $_SESSION['action'] = null; - break; - case 'export_select_list': - $_SESSION['action'] = null; - if(!$uid) { - $_SESSION['export'] = null; - break; - } - require_once('include/import.php'); - - $pages = get_webpage_elements($channel, 'pages'); - $layouts = get_webpage_elements($channel, 'layouts'); - $blocks = get_webpage_elements($channel, 'blocks'); - $o .= replace_macros(get_markup_template('webpage_export_list.tpl'), array( - '$title' => t('Export Webpage Elements'), - '$exportbtn' => t('Export selected'), - '$action' => $_SESSION['export'], // value should be 'zipfile' or 'cloud' - '$pages' => $pages['pages'], - '$layouts' => $layouts['layouts'], - '$blocks' => $blocks['blocks'], - )); - $_SESSION['export'] = null; - return $o; - - default : - $_SESSION['action'] = null; - break; + case 'import': + $_SESSION['action'] = null; + $o .= replace_macros(get_markup_template('webpage_import.tpl'), array( + '$title' => t('Import Webpage Elements'), + '$importbtn' => t('Import selected'), + '$action' => 'import', + '$pages' => $_SESSION['pages'], + '$layouts' => $_SESSION['layouts'], + '$blocks' => $_SESSION['blocks'], + )); + return $o; + + case 'importselected': + $_SESSION['action'] = null; + break; + case 'export_select_list': + $_SESSION['action'] = null; + if (!$uid) { + $_SESSION['export'] = null; + break; + } + require_once('include/import.php'); + + $pages = get_webpage_elements($channel, 'pages'); + $layouts = get_webpage_elements($channel, 'layouts'); + $blocks = get_webpage_elements($channel, 'blocks'); + $o .= replace_macros(get_markup_template('webpage_export_list.tpl'), array( + '$title' => t('Export Webpage Elements'), + '$exportbtn' => t('Export selected'), + '$action' => $_SESSION['export'], // value should be 'zipfile' or 'cloud' + '$pages' => $pages['pages'], + '$layouts' => $layouts['layouts'], + '$blocks' => $blocks['blocks'], + )); + $_SESSION['export'] = null; + return $o; + + default : + $_SESSION['action'] = null; + break; } - - - if(\App::$is_sys && is_site_admin()) { + + + if (\App::$is_sys && is_site_admin()) { $sys = get_sys_channel(); - if($sys && intval($sys['channel_id'])) { + if ($sys && intval($sys['channel_id'])) { $uid = $owner = intval($sys['channel_id']); $channel = $sys; $observer = $sys; } } - - if(! $owner) { + + if (!$owner) { // Figure out who the page owner is. - $r = q("select channel_id from channel where channel_address = '%s'", - dbesc($which) + $r = q("select channel_id from channel where channel_address = '%s'", dbesc($which) ); - if($r) { + if ($r) { $owner = intval($r[0]['channel_id']); } } - + $ob_hash = (($observer) ? $observer['xchan_hash'] : ''); - - $perms = get_all_perms($owner,$ob_hash); - - if(! $perms['write_pages']) { - notice( t('Permission denied.') . EOL); + + $perms = get_all_perms($owner, $ob_hash); + + if (!$perms['write_pages']) { + notice(t('Permission denied.') . EOL); return; } - - $mimetype = (($_REQUEST['mimetype']) ? $_REQUEST['mimetype'] : get_pconfig($owner,'system','page_mimetype')); - - $layout = (($_REQUEST['layout']) ? $_REQUEST['layout'] : get_pconfig($owner,'system','page_layout')); - + + $mimetype = (($_REQUEST['mimetype']) ? $_REQUEST['mimetype'] : get_pconfig($owner, 'system', 'page_mimetype')); + + $layout = (($_REQUEST['layout']) ? $_REQUEST['layout'] : get_pconfig($owner, 'system', 'page_layout')); + // Create a status editor (for now - we'll need a WYSIWYG eventually) to create pages // Nickname is set to the observers xchan, and profile_uid to the owner's. // This lets you post pages at other people's channels. - - if((! $channel) && ($uid) && ($uid == \App::$profile_uid)) { + + if ((!$channel) && ($uid) && ($uid == \App::$profile_uid)) { $channel = \App::get_channel(); } - if($channel) { + if ($channel) { $channel_acl = array( 'allow_cid' => $channel['channel_allow_cid'], 'allow_gid' => $channel['channel_allow_gid'], - 'deny_cid' => $channel['channel_deny_cid'], - 'deny_gid' => $channel['channel_deny_gid'] + 'deny_cid' => $channel['channel_deny_cid'], + 'deny_gid' => $channel['channel_deny_gid'] ); + } else { + $channel_acl = ['allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '']; } - else { - $channel_acl = [ 'allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '' ]; - } - + $is_owner = ($uid && $uid == $owner); //$o = profile_tabs($a, $is_owner, \App::$profile['channel_address']); $o = ''; - + $x = array( 'webpage' => ITEM_TYPE_WEBPAGE, 'is_owner' => true, 'nickname' => \App::$profile['channel_address'], 'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'), - 'acl' => (($is_owner) ? populate_acl($channel_acl,false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_pages')) : ''), + 'acl' => (($is_owner) ? populate_acl($channel_acl, false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_pages')) : ''), 'permissions' => $channel_acl, 'showacl' => (($is_owner) ? true : false), 'visitor' => true, @@ -162,33 +158,30 @@ class Webpages extends \Zotlabs\Web\Controller { 'layout' => $layout, 'layoutselect' => true, 'expanded' => true, - 'novoting'=> true, + 'novoting' => true, 'bbco_autocomplete' => 'bbcode', 'bbcode' => true ); - - if($_REQUEST['title']) + + if ($_REQUEST['title']) $x['title'] = $_REQUEST['title']; - if($_REQUEST['body']) + if ($_REQUEST['body']) $x['body'] = $_REQUEST['body']; - if($_REQUEST['pagetitle']) + if ($_REQUEST['pagetitle']) $x['pagetitle'] = $_REQUEST['pagetitle']; - - + + // Get a list of webpages. We can't display all them because endless scroll makes that unusable, // so just list titles and an edit link. - - + + /** @TODO - this should be replaced with pagelist_widget */ - $sql_extra = item_permissions_sql($owner); - + $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 - $sql_extra order by item.created desc", - intval($owner), - intval(ITEM_TYPE_WEBPAGE) + $sql_extra order by item.created desc", intval($owner), intval(ITEM_TYPE_WEBPAGE) ); // $r = q("select * from item_id left join item on item_id.iid = item.id @@ -196,81 +189,81 @@ class Webpages extends \Zotlabs\Web\Controller { // intval($owner), // intval(ITEM_TYPE_WEBPAGE) // ); - - if(! $r) + + if (!$r) $x['pagetitle'] = 'home'; - $editor = status_editor($a,$x); + $editor = status_editor($a, $x); $pages = null; - - if($r) { + + if ($r) { $pages = array(); - foreach($r as $rr) { + foreach ($r as $rr) { unobscure($rr); - + $lockstate = (($rr['allow_cid'] || $rr['allow_gid'] || $rr['deny_cid'] || $rr['deny_gid']) ? 'lock' : 'unlock'); - + $element_arr = array( - 'type' => 'webpage', - 'title' => $rr['title'], - 'body' => $rr['body'], - 'created' => $rr['created'], - 'edited' => $rr['edited'], - 'mimetype' => $rr['mimetype'], - 'pagetitle' => $rr['v'], - 'mid' => $rr['mid'], - 'layout_mid' => $rr['layout_mid'] + 'type' => 'webpage', + 'title' => $rr['title'], + 'body' => $rr['body'], + 'created' => $rr['created'], + 'edited' => $rr['edited'], + 'mimetype' => $rr['mimetype'], + 'pagetitle' => $rr['v'], + 'mid' => $rr['mid'], + 'layout_mid' => $rr['layout_mid'] ); $pages[$rr['iid']][] = array( - 'url' => $rr['iid'], - 'pagetitle' => $rr['v'], - 'title' => $rr['title'], - 'created' => datetime_convert('UTC',date_default_timezone_get(),$rr['created']), - 'edited' => datetime_convert('UTC',date_default_timezone_get(),$rr['edited']), - 'bb_element' => '[element]' . base64url_encode(json_encode($element_arr)) . '[/element]', - 'lockstate' => $lockstate + 'url' => $rr['iid'], + 'pagetitle' => $rr['v'], + 'title' => $rr['title'], + 'created' => datetime_convert('UTC', date_default_timezone_get(), $rr['created']), + 'edited' => datetime_convert('UTC', date_default_timezone_get(), $rr['edited']), + 'bb_element' => '[element]' . base64url_encode(json_encode($element_arr)) . '[/element]', + 'lockstate' => $lockstate ); } } - - + + //Build the base URL for edit links $url = z_root() . '/editwebpage/' . $which; - + $o .= replace_macros(get_markup_template('webpagelist.tpl'), array( - '$listtitle' => t('Webpages'), - '$baseurl' => $url, - '$create' => t('Create'), - '$edit' => t('Edit'), - '$share' => t('Share'), - '$delete' => t('Delete'), - '$pages' => $pages, - '$channel' => $which, - '$editor' => $editor, - '$view' => t('View'), - '$preview' => t('Preview'), - '$actions_txt' => t('Actions'), + '$listtitle' => t('Webpages'), + '$baseurl' => $url, + '$create' => t('Create'), + '$edit' => t('Edit'), + '$share' => t('Share'), + '$delete' => t('Delete'), + '$pages' => $pages, + '$channel' => $which, + '$editor' => $editor, + '$view' => t('View'), + '$preview' => t('Preview'), + '$actions_txt' => t('Actions'), '$pagelink_txt' => t('Page Link'), - '$title_txt' => t('Page Title'), - '$created_txt' => t('Created'), - '$edited_txt' => t('Edited') + '$title_txt' => t('Page Title'), + '$created_txt' => t('Created'), + '$edited_txt' => t('Edited') )); - + return $o; } - + function post() { - $action = $_REQUEST['action']; - if( $action ){ + $action = $_REQUEST['action']; + if ($action) { switch ($action) { - case 'scan': - + case 'scan': + // the state of this variable tracks whether website files have been scanned (null, true, false) - $cloud = null; - + $cloud = null; + // Website files are to be imported from an uploaded zip file - if(($_FILES) && array_key_exists('zip_file',$_FILES) && isset($_POST['w_upload'])) { + if (($_FILES) && array_key_exists('zip_file', $_FILES) && isset($_POST['w_upload'])) { $source = $_FILES["zip_file"]["tmp_name"]; $type = $_FILES["zip_file"]["type"]; $okay = false; @@ -281,8 +274,8 @@ class Webpages extends \Zotlabs\Web\Controller { break; } } - if(!$okay) { - notice( t('Invalid file type.') . EOL); + if (!$okay) { + notice(t('Invalid file type.') . EOL); return; } $zip = new \ZipArchive(); @@ -291,36 +284,35 @@ class Webpages extends \Zotlabs\Web\Controller { $website = dirname($source) . '/' . $tmp_folder_name; $zip->extractTo($website); // change this to the correct site path $zip->close(); - @unlink($source); // delete the compressed file now that the content has been extracted + @unlink($source); // delete the compressed file now that the content has been extracted $cloud = false; } else { - notice( t('Error opening zip file') . EOL); + notice(t('Error opening zip file') . EOL); return null; - } - } + } + } // Website files are to be imported from the channel cloud files - if (($_POST) && array_key_exists('path',$_POST) && isset($_POST['cloudsubmit'])) { + if (($_POST) && array_key_exists('path', $_POST) && isset($_POST['cloudsubmit'])) { $channel = \App::get_channel(); $dirpath = get_dirpath_by_cloudpath($channel, $_POST['path']); - if(!$dirpath) { - notice( t('Invalid folder path.') . EOL); + if (!$dirpath) { + notice(t('Invalid folder path.') . EOL); return null; } $cloud = true; - } - + // If the website files were uploaded or specified in the cloud files, then $cloud // should be either true or false if ($cloud !== null) { require_once('include/import.php'); $elements = []; - if($cloud) { - $path = $_POST['path']; + if ($cloud) { + $path = $_POST['path']; } else { - $path = $website; + $path = $website; } $elements['pages'] = scan_webpage_elements($path, 'page', $cloud); $elements['layouts'] = scan_webpage_elements($path, 'layout', $cloud); @@ -328,380 +320,367 @@ class Webpages extends \Zotlabs\Web\Controller { $_SESSION['blocks'] = $elements['blocks']; $_SESSION['layouts'] = $elements['layouts']; $_SESSION['pages'] = $elements['pages']; - if(!(empty($elements['pages']) && empty($elements['blocks']) && empty($elements['layouts']))) { + if (!(empty($elements['pages']) && empty($elements['blocks']) && empty($elements['layouts']))) { //info( t('Webpages elements detected.') . EOL); $_SESSION['action'] = 'import'; } else { - notice( t('No webpage elements detected.') . EOL); + notice(t('No webpage elements detected.') . EOL); $_SESSION['action'] = null; } - } - + // If the website elements were imported from a zip file, delete the temporary decompressed files if ($cloud === false && $website && $elements) { $_SESSION['tempimportpath'] = $website; //rrmdir($website); // Delete the temporary decompressed files } - + break; - + case 'importselected': - require_once('include/import.php'); - $channel = \App::get_channel(); - - // Import layout first so that pages that reference new layouts will find - // the mid of layout items in the database - - // Obtain the user-selected layouts to import and import them - $checkedlayouts = $_POST['layout']; - $layouts = []; - if (!empty($checkedlayouts)) { - foreach ($checkedlayouts as $name) { - foreach ($_SESSION['layouts'] as &$layout) { - if ($layout['name'] === $name) { - $layout['import'] = 1; - $layoutstoimport[] = $layout; - } - } - } - foreach ($layoutstoimport as $elementtoimport) { - $layouts[] = import_webpage_element($elementtoimport, $channel, 'layout'); + require_once('include/import.php'); + $channel = \App::get_channel(); + + // Import layout first so that pages that reference new layouts will find + // the mid of layout items in the database + // Obtain the user-selected layouts to import and import them + $checkedlayouts = $_POST['layout']; + $layouts = []; + if (!empty($checkedlayouts)) { + foreach ($checkedlayouts as $name) { + foreach ($_SESSION['layouts'] as &$layout) { + if ($layout['name'] === $name) { + $layout['import'] = 1; + $layoutstoimport[] = $layout; } - } - $_SESSION['import_layouts'] = $layouts; - - // Obtain the user-selected blocks to import and import them - $checkedblocks = $_POST['block']; - $blocks = []; - if (!empty($checkedblocks)) { - foreach ($checkedblocks as $name) { - foreach ($_SESSION['blocks'] as &$block) { - if ($block['name'] === $name) { - $block['import'] = 1; - $blockstoimport[] = $block; - } - } - } - foreach ($blockstoimport as $elementtoimport) { - $blocks[] = import_webpage_element($elementtoimport, $channel, 'block'); + } + } + foreach ($layoutstoimport as $elementtoimport) { + $layouts[] = import_webpage_element($elementtoimport, $channel, 'layout'); + } + } + $_SESSION['import_layouts'] = $layouts; + + // Obtain the user-selected blocks to import and import them + $checkedblocks = $_POST['block']; + $blocks = []; + if (!empty($checkedblocks)) { + foreach ($checkedblocks as $name) { + foreach ($_SESSION['blocks'] as &$block) { + if ($block['name'] === $name) { + $block['import'] = 1; + $blockstoimport[] = $block; } - } - $_SESSION['import_blocks'] = $blocks; - - // Obtain the user-selected pages to import and import them - $checkedpages = $_POST['page']; - $pages = []; - if (!empty($checkedpages)) { - foreach ($checkedpages as $pagelink) { - foreach ($_SESSION['pages'] as &$page) { - if ($page['pagelink'] === $pagelink) { - $page['import'] = 1; - $pagestoimport[] = $page; - } - } - } - foreach ($pagestoimport as $elementtoimport) { - $pages[] = import_webpage_element($elementtoimport, $channel, 'page'); + } + } + foreach ($blockstoimport as $elementtoimport) { + $blocks[] = import_webpage_element($elementtoimport, $channel, 'block'); + } + } + $_SESSION['import_blocks'] = $blocks; + + // Obtain the user-selected pages to import and import them + $checkedpages = $_POST['page']; + $pages = []; + if (!empty($checkedpages)) { + foreach ($checkedpages as $pagelink) { + foreach ($_SESSION['pages'] as &$page) { + if ($page['pagelink'] === $pagelink) { + $page['import'] = 1; + $pagestoimport[] = $page; } - } - $_SESSION['import_pages'] = $pages; - if(!(empty($_SESSION['import_pages']) && empty($_SESSION['import_blocks']) && empty($_SESSION['import_layouts']))) { - info( t('Import complete.') . EOL); + } } - if(isset($_SESSION['tempimportpath'])) { - rrmdir($_SESSION['tempimportpath']); // Delete the temporary decompressed files - unset($_SESSION['tempimportpath']); + foreach ($pagestoimport as $elementtoimport) { + $pages[] = import_webpage_element($elementtoimport, $channel, 'page'); } - break; - + } + $_SESSION['import_pages'] = $pages; + if (!(empty($_SESSION['import_pages']) && empty($_SESSION['import_blocks']) && empty($_SESSION['import_layouts']))) { + info(t('Import complete.') . EOL); + } + if (isset($_SESSION['tempimportpath'])) { + rrmdir($_SESSION['tempimportpath']); // Delete the temporary decompressed files + unset($_SESSION['tempimportpath']); + } + break; + case 'exportzipfile': - - if(isset($_POST['w_download'])) { - $_SESSION['action'] = 'export_select_list'; - $_SESSION['export'] = 'zipfile'; - if(isset($_POST['zipfilename']) && $_POST['zipfilename'] !== '') { - $filename = filter_var($_POST['zipfilename'], FILTER_SANITIZE_ENCODED); - } else { - $filename = 'website.zip'; - } - $_SESSION['zipfilename'] = $filename; - + + if (isset($_POST['w_download'])) { + $_SESSION['action'] = 'export_select_list'; + $_SESSION['export'] = 'zipfile'; + if (isset($_POST['zipfilename']) && $_POST['zipfilename'] !== '') { + $filename = filter_var($_POST['zipfilename'], FILTER_SANITIZE_ENCODED); + } else { + $filename = 'website.zip'; } - - break; - + $_SESSION['zipfilename'] = $filename; + } + + break; + case 'exportcloud': - if(isset($_POST['exportcloudpath']) && $_POST['exportcloudpath'] !== '') { - $_SESSION['action'] = 'export_select_list'; - $_SESSION['export'] = 'cloud'; - $_SESSION['exportcloudpath'] = filter_var($_POST['exportcloudpath'], FILTER_SANITIZE_ENCODED); - } - - break; - + if (isset($_POST['exportcloudpath']) && $_POST['exportcloudpath'] !== '') { + $_SESSION['action'] = 'export_select_list'; + $_SESSION['export'] = 'cloud'; + $_SESSION['exportcloudpath'] = filter_var($_POST['exportcloudpath'], FILTER_SANITIZE_ENCODED); + } + + break; + case 'cloud': case 'zipfile': - - $channel = \App::get_channel(); - - $tmp_folder_name = random_string(10); - $zip_folder_name = random_string(10); - $zip_filename = $_SESSION['zipfilename']; - $tmp_folderpath = '/tmp/' . $tmp_folder_name; - $zip_folderpath = '/tmp/' . $zip_folder_name; - if (!mkdir($zip_folderpath, 0770, false)) { - logger('Error creating zip file export folder: ' . $zip_folderpath, LOGGER_NORMAL); - json_return_and_die(array('message' => 'Error creating zip file export folder')); - } - $zip_filepath = '/tmp/' . $zip_folder_name . '/' . $zip_filename; - - $checkedblocks = $_POST['block']; - $blocks = []; - if (!empty($checkedblocks)) { - foreach ($checkedblocks as $mid) { - $b = q("select iconfig.v, iconfig.k, mimetype, title, body from iconfig + + $channel = \App::get_channel(); + + $tmp_folder_name = random_string(10); + $zip_folder_name = random_string(10); + $zip_filename = $_SESSION['zipfilename']; + $tmp_folderpath = '/tmp/' . $tmp_folder_name; + $zip_folderpath = '/tmp/' . $zip_folder_name; + if (!mkdir($zip_folderpath, 0770, false)) { + logger('Error creating zip file export folder: ' . $zip_folderpath, LOGGER_NORMAL); + json_return_and_die(array('message' => 'Error creating zip file export folder')); + } + $zip_filepath = '/tmp/' . $zip_folder_name . '/' . $zip_filename; + + $checkedblocks = $_POST['block']; + $blocks = []; + if (!empty($checkedblocks)) { + foreach ($checkedblocks as $mid) { + $b = q("select iconfig.v, iconfig.k, mimetype, title, body from iconfig left join item on item.id = iconfig.iid - where mid = '%s' and item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'BUILDBLOCK' order by iconfig.v asc limit 1", - dbesc($mid), - intval($channel['channel_id']) - ); - if($b) { - $b = $b[0]; - $blockinfo = array( - 'body' => $b['body'], - 'mimetype' => $b['mimetype'], - 'title' => $b['title'], - 'name' => $b['v'], - 'json' => array( - 'title' => $b['title'], - 'name' => $b['v'], - 'mimetype' => $b['mimetype'], - ) - ); - switch ($blockinfo['mimetype']) { - case 'text/html': - $block_ext = 'html'; - break; - case 'text/bbcode': - $block_ext = 'bbcode'; - break; - case 'text/markdown': - $block_ext = 'md'; - break; - case 'application/x-pdl': - $block_ext = 'pdl'; - break; - case 'application/x-php': - $block_ext = 'php'; - break; - default: - $block_ext = 'bbcode'; - break; - } - $block_filename = $blockinfo['name'] . '.' . $block_ext; - $tmp_blockfolder = $tmp_folderpath . '/blocks/' . $blockinfo['name']; - $block_filepath = $tmp_blockfolder . '/' . $block_filename; - $blockinfo['json']['contentfile'] = $block_filename; - $block_jsonpath = $tmp_blockfolder . '/block.json'; - if (!is_dir($tmp_blockfolder) && !mkdir($tmp_blockfolder, 0770, true)) { - logger('Error creating temp export folder: ' . $tmp_blockfolder, LOGGER_NORMAL); - json_return_and_die(array('message' => 'Error creating temp export folder')); - } - file_put_contents($block_filepath, $blockinfo['body']); - file_put_contents($block_jsonpath, json_encode($blockinfo['json'], JSON_UNESCAPED_SLASHES)); - } + where mid = '%s' and item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'BUILDBLOCK' order by iconfig.v asc limit 1", dbesc($mid), intval($channel['channel_id']) + ); + if ($b) { + $b = $b[0]; + $blockinfo = array( + 'body' => $b['body'], + 'mimetype' => $b['mimetype'], + 'title' => $b['title'], + 'name' => $b['v'], + 'json' => array( + 'title' => $b['title'], + 'name' => $b['v'], + 'mimetype' => $b['mimetype'], + ) + ); + switch ($blockinfo['mimetype']) { + case 'text/html': + $block_ext = 'html'; + break; + case 'text/bbcode': + $block_ext = 'bbcode'; + break; + case 'text/markdown': + $block_ext = 'md'; + break; + case 'application/x-pdl': + $block_ext = 'pdl'; + break; + case 'application/x-php': + $block_ext = 'php'; + break; + default: + $block_ext = 'bbcode'; + break; + } + $block_filename = $blockinfo['name'] . '.' . $block_ext; + $tmp_blockfolder = $tmp_folderpath . '/blocks/' . $blockinfo['name']; + $block_filepath = $tmp_blockfolder . '/' . $block_filename; + $blockinfo['json']['contentfile'] = $block_filename; + $block_jsonpath = $tmp_blockfolder . '/block.json'; + if (!is_dir($tmp_blockfolder) && !mkdir($tmp_blockfolder, 0770, true)) { + logger('Error creating temp export folder: ' . $tmp_blockfolder, LOGGER_NORMAL); + json_return_and_die(array('message' => 'Error creating temp export folder')); } + file_put_contents($block_filepath, $blockinfo['body']); + file_put_contents($block_jsonpath, json_encode($blockinfo['json'], JSON_UNESCAPED_SLASHES)); + } } - - $checkedlayouts = $_POST['layout']; - $layouts = []; - if (!empty($checkedlayouts)) { - foreach ($checkedlayouts as $mid) { - $l = q("select iconfig.v, iconfig.k, mimetype, title, body from iconfig + } + + $checkedlayouts = $_POST['layout']; + $layouts = []; + if (!empty($checkedlayouts)) { + foreach ($checkedlayouts as $mid) { + $l = q("select iconfig.v, iconfig.k, mimetype, title, body from iconfig left join item on item.id = iconfig.iid - where mid = '%s' and item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'PDL' order by iconfig.v asc limit 1", - dbesc($mid), - intval($channel['channel_id']) - ); - if($l) { - $l = $l[0]; - $layoutinfo = array( - 'body' => $l['body'], - 'mimetype' => $l['mimetype'], - 'description' => $l['title'], - 'name' => $l['v'], - 'json' => array( - 'description' => $l['title'], - 'name' => $l['v'], - 'mimetype' => $l['mimetype'], - ) - ); - switch ($layoutinfo['mimetype']) { - case 'text/bbcode': - default: - $layout_ext = 'bbcode'; - break; - } - $layout_filename = $layoutinfo['name'] . '.' . $layout_ext; - $tmp_layoutfolder = $tmp_folderpath . '/layouts/' . $layoutinfo['name']; - $layout_filepath = $tmp_layoutfolder . '/' . $layout_filename; - $layoutinfo['json']['contentfile'] = $layout_filename; - $layout_jsonpath = $tmp_layoutfolder . '/layout.json'; - if (!is_dir($tmp_layoutfolder) && !mkdir($tmp_layoutfolder, 0770, true)) { - logger('Error creating temp export folder: ' . $tmp_layoutfolder, LOGGER_NORMAL); - json_return_and_die(array('message' => 'Error creating temp export folder')); - } - file_put_contents($layout_filepath, $layoutinfo['body']); - file_put_contents($layout_jsonpath, json_encode($layoutinfo['json'], JSON_UNESCAPED_SLASHES)); - } + where mid = '%s' and item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'PDL' order by iconfig.v asc limit 1", dbesc($mid), intval($channel['channel_id']) + ); + if ($l) { + $l = $l[0]; + $layoutinfo = array( + 'body' => $l['body'], + 'mimetype' => $l['mimetype'], + 'description' => $l['title'], + 'name' => $l['v'], + 'json' => array( + 'description' => $l['title'], + 'name' => $l['v'], + 'mimetype' => $l['mimetype'], + ) + ); + switch ($layoutinfo['mimetype']) { + case 'text/bbcode': + default: + $layout_ext = 'bbcode'; + break; } + $layout_filename = $layoutinfo['name'] . '.' . $layout_ext; + $tmp_layoutfolder = $tmp_folderpath . '/layouts/' . $layoutinfo['name']; + $layout_filepath = $tmp_layoutfolder . '/' . $layout_filename; + $layoutinfo['json']['contentfile'] = $layout_filename; + $layout_jsonpath = $tmp_layoutfolder . '/layout.json'; + if (!is_dir($tmp_layoutfolder) && !mkdir($tmp_layoutfolder, 0770, true)) { + logger('Error creating temp export folder: ' . $tmp_layoutfolder, LOGGER_NORMAL); + json_return_and_die(array('message' => 'Error creating temp export folder')); + } + file_put_contents($layout_filepath, $layoutinfo['body']); + file_put_contents($layout_jsonpath, json_encode($layoutinfo['json'], JSON_UNESCAPED_SLASHES)); + } } - - $checkedpages = $_POST['page']; - $pages = []; - if (!empty($checkedpages)) { - foreach ($checkedpages as $mid) { - - $p = q("select * from iconfig left join item on iconfig.iid = item.id - where item.uid = %d and item.mid = '%s' and iconfig.cat = 'system' and iconfig.k = 'WEBPAGE' and item_type = %d", - intval($channel['channel_id']), - dbesc($mid), - intval(ITEM_TYPE_WEBPAGE) - ); - - if($p) { - foreach ($p as $pp) { - // Get the associated layout - $layoutinfo = array(); - if($pp['layout_mid']) { - $l = q("select iconfig.v, iconfig.k, mimetype, title, body from iconfig + } + + $checkedpages = $_POST['page']; + $pages = []; + if (!empty($checkedpages)) { + foreach ($checkedpages as $mid) { + + $p = q("select * from iconfig left join item on iconfig.iid = item.id + where item.uid = %d and item.mid = '%s' and iconfig.cat = 'system' and iconfig.k = 'WEBPAGE' and item_type = %d", intval($channel['channel_id']), dbesc($mid), intval(ITEM_TYPE_WEBPAGE) + ); + + if ($p) { + foreach ($p as $pp) { + // Get the associated layout + $layoutinfo = array(); + if ($pp['layout_mid']) { + $l = q("select iconfig.v, iconfig.k, mimetype, title, body from iconfig left join item on item.id = iconfig.iid - where mid = '%s' and item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'PDL' order by iconfig.v asc limit 1", - dbesc($pp['layout_mid']), - intval($channel['channel_id']) - ); - if($l) { - $l = $l[0]; - $layoutinfo = array( - 'body' => $l['body'], - 'mimetype' => $l['mimetype'], - 'description' => $l['title'], - 'name' => $l['v'], - 'json' => array( - 'description' => $l['title'], - 'name' => $l['v'], - ) - ); - switch ($layoutinfo['mimetype']) { - case 'text/bbcode': - default: - $layout_ext = 'bbcode'; - break; - } - $layout_filename = $layoutinfo['name'] . '.' . $layout_ext; - $tmp_layoutfolder = $tmp_folderpath . '/layouts/' . $layoutinfo['name']; - $layout_filepath = $tmp_layoutfolder . '/' . $layout_filename; - $layoutinfo['json']['contentfile'] = $layout_filename; - $layout_jsonpath = $tmp_layoutfolder . '/layout.json'; - if (!is_dir($tmp_layoutfolder) && !mkdir($tmp_layoutfolder, 0770, true)) { - logger('Error creating temp export folder: ' . $tmp_layoutfolder, LOGGER_NORMAL); - json_return_and_die(array('message' => 'Error creating temp export folder')); - } - file_put_contents($layout_filepath, $layoutinfo['body']); - file_put_contents($layout_jsonpath, json_encode($layoutinfo['json'], JSON_UNESCAPED_SLASHES)); - } - } - switch ($pp['mimetype']) { - case 'text/html': - $page_ext = 'html'; - break; - case 'text/bbcode': - $page_ext = 'bbcode'; - break; - case 'text/markdown': - $page_ext = 'md'; - break; - case 'application/x-pdl': - $page_ext = 'pdl'; - break; - case 'application/x-php': - $page_ext = 'php'; - break; - default: - break; - } - $pageinfo = array( - 'title' => $pp['title'], - 'body' => $pp['body'], - 'pagelink' => $pp['v'], - 'mimetype' => $pp['mimetype'], - 'contentfile' => $pp['v'] . '.' . $page_ext, - 'layout' => ((x($layoutinfo,'name')) ? $layoutinfo['name'] : ''), - 'json' => array( - 'title' => $pp['title'], - 'pagelink' => $pp['v'], - 'mimetype' => $pp['mimetype'], - 'layout' => ((x($layoutinfo,'name')) ? $layoutinfo['name'] : ''), - ) - ); - $page_filename = $pageinfo['pagelink'] . '.' . $page_ext; - $tmp_pagefolder = $tmp_folderpath . '/pages/' . $pageinfo['pagelink']; - $page_filepath = $tmp_pagefolder . '/' . $page_filename; - $page_jsonpath = $tmp_pagefolder . '/page.json'; - $pageinfo['json']['contentfile'] = $page_filename; - if (!is_dir($tmp_pagefolder) && !mkdir($tmp_pagefolder, 0770, true)) { - logger('Error creating temp export folder: ' . $tmp_pagefolder, LOGGER_NORMAL); - json_return_and_die(array('message' => 'Error creating temp export folder')); - } - file_put_contents($page_filepath, $pageinfo['body']); - file_put_contents($page_jsonpath, json_encode($pageinfo['json'], JSON_UNESCAPED_SLASHES)); - } - } - } - } - if($action === 'zipfile') { - // Generate the zip file - \Zotlabs\Lib\ExtendedZip::zipTree($tmp_folderpath, $zip_filepath, \ZipArchive::CREATE); - // Output the file for download - header('Content-disposition: attachment; filename="' . $zip_filename . '"'); - header("Content-Type: application/zip"); - $success = readfile($zip_filepath); - } elseif ($action === 'cloud') { // Only zipfile or cloud should be possible values for $action here - if(isset($_SESSION['exportcloudpath'])) { - require_once('include/attach.php'); - $cloudpath = urldecode($_SESSION['exportcloudpath']); - $channel = \App::get_channel(); - $dirpath = get_dirpath_by_cloudpath($channel, $cloudpath); - if(!$dirpath) { - $x = attach_mkdirp($channel, $channel['channel_hash'], array('pathname' => $cloudpath)); - $folder_hash = (($x['success']) ? $x['data']['hash'] : ''); - - if (!$x['success']) { - logger('Failed to create cloud file folder', LOGGER_NORMAL); - } - $dirpath = get_dirpath_by_cloudpath($channel, $cloudpath); - if (!is_dir($dirpath)) { - logger('Failed to create cloud file folder', LOGGER_NORMAL); - } + where mid = '%s' and item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'PDL' order by iconfig.v asc limit 1", dbesc($pp['layout_mid']), intval($channel['channel_id']) + ); + if ($l) { + $l = $l[0]; + $layoutinfo = array( + 'body' => $l['body'], + 'mimetype' => $l['mimetype'], + 'description' => $l['title'], + 'name' => $l['v'], + 'json' => array( + 'description' => $l['title'], + 'name' => $l['v'], + ) + ); + switch ($layoutinfo['mimetype']) { + case 'text/bbcode': + default: + $layout_ext = 'bbcode'; + break; + } + $layout_filename = $layoutinfo['name'] . '.' . $layout_ext; + $tmp_layoutfolder = $tmp_folderpath . '/layouts/' . $layoutinfo['name']; + $layout_filepath = $tmp_layoutfolder . '/' . $layout_filename; + $layoutinfo['json']['contentfile'] = $layout_filename; + $layout_jsonpath = $tmp_layoutfolder . '/layout.json'; + if (!is_dir($tmp_layoutfolder) && !mkdir($tmp_layoutfolder, 0770, true)) { + logger('Error creating temp export folder: ' . $tmp_layoutfolder, LOGGER_NORMAL); + json_return_and_die(array('message' => 'Error creating temp export folder')); + } + file_put_contents($layout_filepath, $layoutinfo['body']); + file_put_contents($layout_jsonpath, json_encode($layoutinfo['json'], JSON_UNESCAPED_SLASHES)); } - - $success = copy_folder_to_cloudfiles($channel, $channel['channel_hash'], $tmp_folderpath, $cloudpath); + } + switch ($pp['mimetype']) { + case 'text/html': + $page_ext = 'html'; + break; + case 'text/bbcode': + $page_ext = 'bbcode'; + break; + case 'text/markdown': + $page_ext = 'md'; + break; + case 'application/x-pdl': + $page_ext = 'pdl'; + break; + case 'application/x-php': + $page_ext = 'php'; + break; + default: + break; + } + $pageinfo = array( + 'title' => $pp['title'], + 'body' => $pp['body'], + 'pagelink' => $pp['v'], + 'mimetype' => $pp['mimetype'], + 'contentfile' => $pp['v'] . '.' . $page_ext, + 'layout' => ((x($layoutinfo, 'name')) ? $layoutinfo['name'] : ''), + 'json' => array( + 'title' => $pp['title'], + 'pagelink' => $pp['v'], + 'mimetype' => $pp['mimetype'], + 'layout' => ((x($layoutinfo, 'name')) ? $layoutinfo['name'] : ''), + ) + ); + $page_filename = $pageinfo['pagelink'] . '.' . $page_ext; + $tmp_pagefolder = $tmp_folderpath . '/pages/' . $pageinfo['pagelink']; + $page_filepath = $tmp_pagefolder . '/' . $page_filename; + $page_jsonpath = $tmp_pagefolder . '/page.json'; + $pageinfo['json']['contentfile'] = $page_filename; + if (!is_dir($tmp_pagefolder) && !mkdir($tmp_pagefolder, 0770, true)) { + logger('Error creating temp export folder: ' . $tmp_pagefolder, LOGGER_NORMAL); + json_return_and_die(array('message' => 'Error creating temp export folder')); + } + file_put_contents($page_filepath, $pageinfo['body']); + file_put_contents($page_jsonpath, json_encode($pageinfo['json'], JSON_UNESCAPED_SLASHES)); } + } } - if(!$success) { - logger('Error exporting webpage elements', LOGGER_NORMAL); + } + if ($action === 'zipfile') { + // Generate the zip file + \Zotlabs\Lib\ExtendedZip::zipTree($tmp_folderpath, $zip_filepath, \ZipArchive::CREATE); + // Output the file for download + header('Content-disposition: attachment; filename="' . $zip_filename . '"'); + header("Content-Type: application/zip"); + $success = readfile($zip_filepath); + } elseif ($action === 'cloud') { // Only zipfile or cloud should be possible values for $action here + if (isset($_SESSION['exportcloudpath'])) { + require_once('include/attach.php'); + $cloudpath = urldecode($_SESSION['exportcloudpath']); + $channel = \App::get_channel(); + $dirpath = get_dirpath_by_cloudpath($channel, $cloudpath); + if (!$dirpath) { + $x = attach_mkdirp($channel, $channel['channel_hash'], array('pathname' => $cloudpath)); + $folder_hash = (($x['success']) ? $x['data']['hash'] : ''); + + if (!$x['success']) { + logger('Failed to create cloud file folder', LOGGER_NORMAL); + } + $dirpath = get_dirpath_by_cloudpath($channel, $cloudpath); + if (!is_dir($dirpath)) { + logger('Failed to create cloud file folder', LOGGER_NORMAL); + } + } + + $success = copy_folder_to_cloudfiles($channel, $channel['channel_hash'], $tmp_folderpath, $cloudpath); } - - rrmdir($zip_folderpath); rrmdir($tmp_folderpath); // delete temporary files - - break; + } + if (!$success) { + logger('Error exporting webpage elements', LOGGER_NORMAL); + } + + rrmdir($zip_folderpath); + rrmdir($tmp_folderpath); // delete temporary files + + break; default : break; } - } - } - + } -- cgit v1.2.3 From d2058ee151fcf0876ebea948a14d36912768ecb6 Mon Sep 17 00:00:00 2001 From: Klaus Weidenbach Date: Thu, 4 May 2017 00:58:02 +0200 Subject: :arrow_up: Update SimplePie library to 1.5. There is a new stable release, so upgrade from the dev branch to the new 1.5 release. --- composer.json | 2 +- composer.lock | 15 +++-- vendor/composer/autoload_classmap.php | 1 + vendor/composer/autoload_static.php | 1 + vendor/composer/installed.json | 14 ++--- vendor/simplepie/simplepie/library/SimplePie.php | 8 +-- .../simplepie/library/SimplePie/Category.php | 65 ++++++++++++---------- .../simplepie/simplepie/library/SimplePie/Item.php | 34 +++++++---- 8 files changed, 80 insertions(+), 60 deletions(-) diff --git a/composer.json b/composer.json index 9ae0d2150..44606ff2b 100644 --- a/composer.json +++ b/composer.json @@ -33,7 +33,7 @@ "pixel418/markdownify": "^2.2", "bshaffer/oauth2-server-php": "^1.9", "ezyang/htmlpurifier": "^4.9", - "simplepie/simplepie": ">=1.4.4 || dev-master" + "simplepie/simplepie": "~1.5" }, "require-dev" : { "php" : ">=7.0", diff --git a/composer.lock b/composer.lock index bfab14cd5..bd902f197 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "62261cde663585403a8dd8fda5b85a95", + "content-hash": "21511c39f481ecdc20210f885d840787", "packages": [ { "name": "bshaffer/oauth2-server-php", @@ -671,16 +671,16 @@ }, { "name": "simplepie/simplepie", - "version": "dev-master", + "version": "1.5", "source": { "type": "git", "url": "https://github.com/simplepie/simplepie.git", - "reference": "59e7204610d3a8989822eba1c0cbf1d1680bd10d" + "reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplepie/simplepie/zipball/59e7204610d3a8989822eba1c0cbf1d1680bd10d", - "reference": "59e7204610d3a8989822eba1c0cbf1d1680bd10d", + "url": "https://api.github.com/repos/simplepie/simplepie/zipball/5de5551953f95feef12cf355a7a26a70f94aa3ab", + "reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab", "shasum": "" }, "require": { @@ -727,10 +727,10 @@ "rss" ], "support": { - "source": "https://github.com/simplepie/simplepie/tree/master", + "source": "https://github.com/simplepie/simplepie/tree/1.5", "issues": "https://github.com/simplepie/simplepie/issues" }, - "time": "2017-04-06 03:36:48" + "time": "2017-04-17T07:29:31+00:00" } ], "packages-dev": [ @@ -3675,7 +3675,6 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "simplepie/simplepie": 20, "behat/behat": 0, "behat/mink-extension": 0, "behat/mink-goutte-driver": 0 diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index cc1cd6bca..5899fb9ed 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -840,6 +840,7 @@ return array( 'Zotlabs\\Module\\Oembed' => $baseDir . '/Zotlabs/Module/Oembed.php', 'Zotlabs\\Module\\Oep' => $baseDir . '/Zotlabs/Module/Oep.php', 'Zotlabs\\Module\\Oexchange' => $baseDir . '/Zotlabs/Module/Oexchange.php', + 'Zotlabs\\Module\\Ofeed' => $baseDir . '/Zotlabs/Module/Ofeed.php', 'Zotlabs\\Module\\Online' => $baseDir . '/Zotlabs/Module/Online.php', 'Zotlabs\\Module\\Page' => $baseDir . '/Zotlabs/Module/Page.php', 'Zotlabs\\Module\\Pconfig' => $baseDir . '/Zotlabs/Module/Pconfig.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 6c000a27b..53b9b20c3 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -977,6 +977,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Module\\Oembed' => __DIR__ . '/../..' . '/Zotlabs/Module/Oembed.php', 'Zotlabs\\Module\\Oep' => __DIR__ . '/../..' . '/Zotlabs/Module/Oep.php', 'Zotlabs\\Module\\Oexchange' => __DIR__ . '/../..' . '/Zotlabs/Module/Oexchange.php', + 'Zotlabs\\Module\\Ofeed' => __DIR__ . '/../..' . '/Zotlabs/Module/Ofeed.php', 'Zotlabs\\Module\\Online' => __DIR__ . '/../..' . '/Zotlabs/Module/Online.php', 'Zotlabs\\Module\\Page' => __DIR__ . '/../..' . '/Zotlabs/Module/Page.php', 'Zotlabs\\Module\\Pconfig' => __DIR__ . '/../..' . '/Zotlabs/Module/Pconfig.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 2cb89e187..7e4f0bb29 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -686,17 +686,17 @@ }, { "name": "simplepie/simplepie", - "version": "dev-master", - "version_normalized": "9999999-dev", + "version": "1.5", + "version_normalized": "1.5.0.0", "source": { "type": "git", "url": "https://github.com/simplepie/simplepie.git", - "reference": "59e7204610d3a8989822eba1c0cbf1d1680bd10d" + "reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplepie/simplepie/zipball/59e7204610d3a8989822eba1c0cbf1d1680bd10d", - "reference": "59e7204610d3a8989822eba1c0cbf1d1680bd10d", + "url": "https://api.github.com/repos/simplepie/simplepie/zipball/5de5551953f95feef12cf355a7a26a70f94aa3ab", + "reference": "5de5551953f95feef12cf355a7a26a70f94aa3ab", "shasum": "" }, "require": { @@ -708,7 +708,7 @@ "suggest": { "mf2/mf2": "Microformat module that allows for parsing HTML for microformats" }, - "time": "2017-04-06T03:36:48+00:00", + "time": "2017-04-17T07:29:31+00:00", "type": "library", "installation-source": "source", "autoload": { @@ -745,7 +745,7 @@ "rss" ], "support": { - "source": "https://github.com/simplepie/simplepie/tree/master", + "source": "https://github.com/simplepie/simplepie/tree/1.5", "issues": "https://github.com/simplepie/simplepie/issues" } } diff --git a/vendor/simplepie/simplepie/library/SimplePie.php b/vendor/simplepie/simplepie/library/SimplePie.php index 890497204..428bfc068 100755 --- a/vendor/simplepie/simplepie/library/SimplePie.php +++ b/vendor/simplepie/simplepie/library/SimplePie.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2017, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,8 +33,8 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @version 1.4.3 - * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @version 1.5 + * @copyright 2004-2017 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman * @author Geoffrey Sneddon * @author Ryan McCue @@ -50,7 +50,7 @@ define('SIMPLEPIE_NAME', 'SimplePie'); /** * SimplePie Version */ -define('SIMPLEPIE_VERSION', '1.4.3'); +define('SIMPLEPIE_VERSION', '1.5'); /** * SimplePie Build diff --git a/vendor/simplepie/simplepie/library/SimplePie/Category.php b/vendor/simplepie/simplepie/library/SimplePie/Category.php index 92d511e1a..df0f13f9a 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Category.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Category.php @@ -56,7 +56,7 @@ class SimplePie_Category /** * Category identifier * - * @var string + * @var string|null * @see get_term */ var $term; @@ -64,7 +64,7 @@ class SimplePie_Category /** * Categorization scheme identifier * - * @var string + * @var string|null * @see get_scheme() */ var $scheme; @@ -72,23 +72,36 @@ class SimplePie_Category /** * Human readable label * - * @var string + * @var string|null * @see get_label() */ var $label; + /** + * Category type + * + * category for + * subject for + * + * @var string|null + * @see get_type() + */ + var $type; + /** * Constructor, used to input the data * - * @param string $term - * @param string $scheme - * @param string $label + * @param string|null $term + * @param string|null $scheme + * @param string|null $label + * @param string|null $type */ - public function __construct($term = null, $scheme = null, $label = null) + public function __construct($term = null, $scheme = null, $label = null, $type = null) { $this->term = $term; $this->scheme = $scheme; $this->label = $label; + $this->type = $type; } /** @@ -109,14 +122,7 @@ class SimplePie_Category */ public function get_term() { - if ($this->term !== null) - { - return $this->term; - } - else - { - return null; - } + return $this->term; } /** @@ -126,31 +132,32 @@ class SimplePie_Category */ public function get_scheme() { - if ($this->scheme !== null) - { - return $this->scheme; - } - else - { - return null; - } + return $this->scheme; } /** * Get the human readable label * + * @param bool $strict * @return string|null */ - public function get_label() + public function get_label($strict = false) { - if ($this->label !== null) - { - return $this->label; - } - else + if ($this->label === null && $strict !== true) { return $this->get_term(); } + return $this->label; + } + + /** + * Get the category type + * + * @return string|null + */ + public function get_type() + { + return $this->type; } } diff --git a/vendor/simplepie/simplepie/library/SimplePie/Item.php b/vendor/simplepie/simplepie/library/SimplePie/Item.php index 89d4bacb6..00f4179bf 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Item.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Item.php @@ -206,9 +206,10 @@ class SimplePie_Item * * @since Beta 2 * @param boolean $hash Should we force using a hash instead of the supplied ID? - * @return string + * @param string|false $fn User-supplied function to generate an hash + * @return string|null */ - public function get_id($hash = false, $fn = '') + public function get_id($hash = false, $fn = 'md5') { if (!$hash) { @@ -237,7 +238,15 @@ class SimplePie_Item return $this->sanitize($this->data['attribs'][SIMPLEPIE_NAMESPACE_RDF]['about'], SIMPLEPIE_CONSTRUCT_TEXT); } } - if ($fn === '' || !is_callable($fn)) $fn = 'md5'; + if ($fn === false) + { + return null; + } + elseif (!is_callable($fn)) + { + trigger_error('User-supplied function $fn must be callable', E_USER_WARNING); + $fn = 'md5'; + } return call_user_func($fn, $this->get_permalink().$this->get_title().$this->get_content()); } @@ -460,7 +469,8 @@ class SimplePie_Item { $categories = array(); - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category) + $type = 'category'; + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, $type) as $category) { $term = null; $scheme = null; @@ -477,9 +487,9 @@ class SimplePie_Item { $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_HTML); } - $categories[] = $this->registry->create('Category', array($term, $scheme, $label)); + $categories[] = $this->registry->create('Category', array($term, $scheme, $label, $type)); } - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category) + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, $type) as $category) { // This is really the label, but keep this as the term also for BC. // Label will also work on retrieving because that falls back to term. @@ -492,15 +502,17 @@ class SimplePie_Item { $scheme = null; } - $categories[] = $this->registry->create('Category', array($term, $scheme, null)); + $categories[] = $this->registry->create('Category', array($term, $scheme, null, $type)); } - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category) + + $type = 'subject'; + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, $type) as $category) { - $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null)); + $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null, $type)); } - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category) + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, $type) as $category) { - $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null)); + $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null, $type)); } if (!empty($categories)) -- cgit v1.2.3 From 394352d882064ce1b6d36a725eb6051a777566e2 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Wed, 3 May 2017 20:45:34 -0400 Subject: German translations for demohub --- Zotlabs/Module/Webpages.php | 987 ++++++++++++++++++++++---------------------- view/de/hmessages.po | 16 + 2 files changed, 520 insertions(+), 483 deletions(-) diff --git a/Zotlabs/Module/Webpages.php b/Zotlabs/Module/Webpages.php index e2ad7753b..effe92614 100644 --- a/Zotlabs/Module/Webpages.php +++ b/Zotlabs/Module/Webpages.php @@ -1,152 +1,156 @@ 1 && argv(1) === 'sys' && is_site_admin()) { + + if(argc() > 1 && argv(1) === 'sys' && is_site_admin()) { $sys = get_sys_channel(); - if ($sys && intval($sys['channel_id'])) { + if($sys && intval($sys['channel_id'])) { \App::$is_sys = true; } } - - if (argc() > 1) + + if(argc() > 1) $which = argv(1); else return; - + profile_load($which); + } - + + function get() { - - if (!\App::$profile) { - notice(t('Requested profile is not available.') . EOL); + + if(! \App::$profile) { + notice( t('Requested profile is not available.') . EOL ); \App::$error = 404; return; } - + $which = argv(1); - + $_SESSION['return_url'] = \App::$query_string; - + $uid = local_channel(); $owner = 0; $observer = \App::get_observer(); - + $channel = \App::get_channel(); switch ($_SESSION['action']) { - case 'import': - $_SESSION['action'] = null; - $o .= replace_macros(get_markup_template('webpage_import.tpl'), array( - '$title' => t('Import Webpage Elements'), - '$importbtn' => t('Import selected'), - '$action' => 'import', - '$pages' => $_SESSION['pages'], - '$layouts' => $_SESSION['layouts'], - '$blocks' => $_SESSION['blocks'], - )); - return $o; - - case 'importselected': - $_SESSION['action'] = null; - break; - case 'export_select_list': - $_SESSION['action'] = null; - if (!$uid) { - $_SESSION['export'] = null; - break; - } - require_once('include/import.php'); - - $pages = get_webpage_elements($channel, 'pages'); - $layouts = get_webpage_elements($channel, 'layouts'); - $blocks = get_webpage_elements($channel, 'blocks'); - $o .= replace_macros(get_markup_template('webpage_export_list.tpl'), array( - '$title' => t('Export Webpage Elements'), - '$exportbtn' => t('Export selected'), - '$action' => $_SESSION['export'], // value should be 'zipfile' or 'cloud' - '$pages' => $pages['pages'], - '$layouts' => $layouts['layouts'], - '$blocks' => $blocks['blocks'], - )); - $_SESSION['export'] = null; - return $o; - - default : - $_SESSION['action'] = null; - break; + case 'import': + $_SESSION['action'] = null; + $o .= replace_macros(get_markup_template('webpage_import.tpl'), array( + '$title' => t('Import Webpage Elements'), + '$importbtn' => t('Import selected'), + '$action' => 'import', + '$pages' => $_SESSION['pages'], + '$layouts' => $_SESSION['layouts'], + '$blocks' => $_SESSION['blocks'], + )); + return $o; + + case 'importselected': + $_SESSION['action'] = null; + break; + case 'export_select_list': + $_SESSION['action'] = null; + if(!$uid) { + $_SESSION['export'] = null; + break; + } + require_once('include/import.php'); + + $pages = get_webpage_elements($channel, 'pages'); + $layouts = get_webpage_elements($channel, 'layouts'); + $blocks = get_webpage_elements($channel, 'blocks'); + $o .= replace_macros(get_markup_template('webpage_export_list.tpl'), array( + '$title' => t('Export Webpage Elements'), + '$exportbtn' => t('Export selected'), + '$action' => $_SESSION['export'], // value should be 'zipfile' or 'cloud' + '$pages' => $pages['pages'], + '$layouts' => $layouts['layouts'], + '$blocks' => $blocks['blocks'], + )); + $_SESSION['export'] = null; + return $o; + + default : + $_SESSION['action'] = null; + break; } - - - if (\App::$is_sys && is_site_admin()) { + + + if(\App::$is_sys && is_site_admin()) { $sys = get_sys_channel(); - if ($sys && intval($sys['channel_id'])) { + if($sys && intval($sys['channel_id'])) { $uid = $owner = intval($sys['channel_id']); $channel = $sys; $observer = $sys; } } - - if (!$owner) { + + if(! $owner) { // Figure out who the page owner is. - $r = q("select channel_id from channel where channel_address = '%s'", dbesc($which) + $r = q("select channel_id from channel where channel_address = '%s'", + dbesc($which) ); - if ($r) { + if($r) { $owner = intval($r[0]['channel_id']); } } - + $ob_hash = (($observer) ? $observer['xchan_hash'] : ''); - - $perms = get_all_perms($owner, $ob_hash); - - if (!$perms['write_pages']) { - notice(t('Permission denied.') . EOL); + + $perms = get_all_perms($owner,$ob_hash); + + if(! $perms['write_pages']) { + notice( t('Permission denied.') . EOL); return; } - - $mimetype = (($_REQUEST['mimetype']) ? $_REQUEST['mimetype'] : get_pconfig($owner, 'system', 'page_mimetype')); - - $layout = (($_REQUEST['layout']) ? $_REQUEST['layout'] : get_pconfig($owner, 'system', 'page_layout')); - + + $mimetype = (($_REQUEST['mimetype']) ? $_REQUEST['mimetype'] : get_pconfig($owner,'system','page_mimetype')); + + $layout = (($_REQUEST['layout']) ? $_REQUEST['layout'] : get_pconfig($owner,'system','page_layout')); + // Create a status editor (for now - we'll need a WYSIWYG eventually) to create pages // Nickname is set to the observers xchan, and profile_uid to the owner's. // This lets you post pages at other people's channels. - - if ((!$channel) && ($uid) && ($uid == \App::$profile_uid)) { + + if((! $channel) && ($uid) && ($uid == \App::$profile_uid)) { $channel = \App::get_channel(); } - if ($channel) { + if($channel) { $channel_acl = array( 'allow_cid' => $channel['channel_allow_cid'], 'allow_gid' => $channel['channel_allow_gid'], - 'deny_cid' => $channel['channel_deny_cid'], - 'deny_gid' => $channel['channel_deny_gid'] + 'deny_cid' => $channel['channel_deny_cid'], + 'deny_gid' => $channel['channel_deny_gid'] ); - } else { - $channel_acl = ['allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '']; } - + else { + $channel_acl = [ 'allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '' ]; + } + $is_owner = ($uid && $uid == $owner); //$o = profile_tabs($a, $is_owner, \App::$profile['channel_address']); $o = ''; - + $x = array( 'webpage' => ITEM_TYPE_WEBPAGE, 'is_owner' => true, 'nickname' => \App::$profile['channel_address'], 'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'), - 'acl' => (($is_owner) ? populate_acl($channel_acl, false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_pages')) : ''), + 'acl' => (($is_owner) ? populate_acl($channel_acl,false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_pages')) : ''), 'permissions' => $channel_acl, 'showacl' => (($is_owner) ? true : false), 'visitor' => true, @@ -158,30 +162,33 @@ class Webpages extends \Zotlabs\Web\Controller { 'layout' => $layout, 'layoutselect' => true, 'expanded' => true, - 'novoting' => true, + 'novoting'=> true, 'bbco_autocomplete' => 'bbcode', 'bbcode' => true ); - - if ($_REQUEST['title']) + + if($_REQUEST['title']) $x['title'] = $_REQUEST['title']; - if ($_REQUEST['body']) + if($_REQUEST['body']) $x['body'] = $_REQUEST['body']; - if ($_REQUEST['pagetitle']) + if($_REQUEST['pagetitle']) $x['pagetitle'] = $_REQUEST['pagetitle']; - - + + // Get a list of webpages. We can't display all them because endless scroll makes that unusable, // so just list titles and an edit link. - - + + /** @TODO - this should be replaced with pagelist_widget */ + $sql_extra = item_permissions_sql($owner); - + $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 - $sql_extra order by item.created desc", intval($owner), intval(ITEM_TYPE_WEBPAGE) + $sql_extra order by item.created desc", + intval($owner), + intval(ITEM_TYPE_WEBPAGE) ); // $r = q("select * from item_id left join item on item_id.iid = item.id @@ -189,81 +196,81 @@ class Webpages extends \Zotlabs\Web\Controller { // intval($owner), // intval(ITEM_TYPE_WEBPAGE) // ); - - if (!$r) + + if(! $r) $x['pagetitle'] = 'home'; - $editor = status_editor($a, $x); + $editor = status_editor($a,$x); $pages = null; - - if ($r) { + + if($r) { $pages = array(); - foreach ($r as $rr) { + foreach($r as $rr) { unobscure($rr); - + $lockstate = (($rr['allow_cid'] || $rr['allow_gid'] || $rr['deny_cid'] || $rr['deny_gid']) ? 'lock' : 'unlock'); - + $element_arr = array( - 'type' => 'webpage', - 'title' => $rr['title'], - 'body' => $rr['body'], - 'created' => $rr['created'], - 'edited' => $rr['edited'], - 'mimetype' => $rr['mimetype'], - 'pagetitle' => $rr['v'], - 'mid' => $rr['mid'], - 'layout_mid' => $rr['layout_mid'] + 'type' => 'webpage', + 'title' => $rr['title'], + 'body' => $rr['body'], + 'created' => $rr['created'], + 'edited' => $rr['edited'], + 'mimetype' => $rr['mimetype'], + 'pagetitle' => $rr['v'], + 'mid' => $rr['mid'], + 'layout_mid' => $rr['layout_mid'] ); $pages[$rr['iid']][] = array( - 'url' => $rr['iid'], - 'pagetitle' => $rr['v'], - 'title' => $rr['title'], - 'created' => datetime_convert('UTC', date_default_timezone_get(), $rr['created']), - 'edited' => datetime_convert('UTC', date_default_timezone_get(), $rr['edited']), - 'bb_element' => '[element]' . base64url_encode(json_encode($element_arr)) . '[/element]', - 'lockstate' => $lockstate + 'url' => $rr['iid'], + 'pagetitle' => $rr['v'], + 'title' => $rr['title'], + 'created' => datetime_convert('UTC',date_default_timezone_get(),$rr['created']), + 'edited' => datetime_convert('UTC',date_default_timezone_get(),$rr['edited']), + 'bb_element' => '[element]' . base64url_encode(json_encode($element_arr)) . '[/element]', + 'lockstate' => $lockstate ); } } - - + + //Build the base URL for edit links $url = z_root() . '/editwebpage/' . $which; - + $o .= replace_macros(get_markup_template('webpagelist.tpl'), array( - '$listtitle' => t('Webpages'), - '$baseurl' => $url, - '$create' => t('Create'), - '$edit' => t('Edit'), - '$share' => t('Share'), - '$delete' => t('Delete'), - '$pages' => $pages, - '$channel' => $which, - '$editor' => $editor, - '$view' => t('View'), - '$preview' => t('Preview'), - '$actions_txt' => t('Actions'), + '$listtitle' => t('Webpages'), + '$baseurl' => $url, + '$create' => t('Create'), + '$edit' => t('Edit'), + '$share' => t('Share'), + '$delete' => t('Delete'), + '$pages' => $pages, + '$channel' => $which, + '$editor' => $editor, + '$view' => t('View'), + '$preview' => t('Preview'), + '$actions_txt' => t('Actions'), '$pagelink_txt' => t('Page Link'), - '$title_txt' => t('Page Title'), - '$created_txt' => t('Created'), - '$edited_txt' => t('Edited') + '$title_txt' => t('Page Title'), + '$created_txt' => t('Created'), + '$edited_txt' => t('Edited') )); - + return $o; } - + function post() { - $action = $_REQUEST['action']; - if ($action) { + $action = $_REQUEST['action']; + if( $action ){ switch ($action) { - case 'scan': - + case 'scan': + // the state of this variable tracks whether website files have been scanned (null, true, false) - $cloud = null; - + $cloud = null; + // Website files are to be imported from an uploaded zip file - if (($_FILES) && array_key_exists('zip_file', $_FILES) && isset($_POST['w_upload'])) { + if(($_FILES) && array_key_exists('zip_file',$_FILES) && isset($_POST['w_upload'])) { $source = $_FILES["zip_file"]["tmp_name"]; $type = $_FILES["zip_file"]["type"]; $okay = false; @@ -274,8 +281,8 @@ class Webpages extends \Zotlabs\Web\Controller { break; } } - if (!$okay) { - notice(t('Invalid file type.') . EOL); + if(!$okay) { + notice( t('Invalid file type.') . EOL); return; } $zip = new \ZipArchive(); @@ -284,35 +291,36 @@ class Webpages extends \Zotlabs\Web\Controller { $website = dirname($source) . '/' . $tmp_folder_name; $zip->extractTo($website); // change this to the correct site path $zip->close(); - @unlink($source); // delete the compressed file now that the content has been extracted + @unlink($source); // delete the compressed file now that the content has been extracted $cloud = false; } else { - notice(t('Error opening zip file') . EOL); + notice( t('Error opening zip file') . EOL); return null; - } - } + } + } // Website files are to be imported from the channel cloud files - if (($_POST) && array_key_exists('path', $_POST) && isset($_POST['cloudsubmit'])) { + if (($_POST) && array_key_exists('path',$_POST) && isset($_POST['cloudsubmit'])) { $channel = \App::get_channel(); $dirpath = get_dirpath_by_cloudpath($channel, $_POST['path']); - if (!$dirpath) { - notice(t('Invalid folder path.') . EOL); + if(!$dirpath) { + notice( t('Invalid folder path.') . EOL); return null; } $cloud = true; - } + } + // If the website files were uploaded or specified in the cloud files, then $cloud // should be either true or false if ($cloud !== null) { require_once('include/import.php'); $elements = []; - if ($cloud) { - $path = $_POST['path']; + if($cloud) { + $path = $_POST['path']; } else { - $path = $website; + $path = $website; } $elements['pages'] = scan_webpage_elements($path, 'page', $cloud); $elements['layouts'] = scan_webpage_elements($path, 'layout', $cloud); @@ -320,367 +328,380 @@ class Webpages extends \Zotlabs\Web\Controller { $_SESSION['blocks'] = $elements['blocks']; $_SESSION['layouts'] = $elements['layouts']; $_SESSION['pages'] = $elements['pages']; - if (!(empty($elements['pages']) && empty($elements['blocks']) && empty($elements['layouts']))) { + if(!(empty($elements['pages']) && empty($elements['blocks']) && empty($elements['layouts']))) { //info( t('Webpages elements detected.') . EOL); $_SESSION['action'] = 'import'; } else { - notice(t('No webpage elements detected.') . EOL); + notice( t('No webpage elements detected.') . EOL); $_SESSION['action'] = null; } + } - + // If the website elements were imported from a zip file, delete the temporary decompressed files if ($cloud === false && $website && $elements) { $_SESSION['tempimportpath'] = $website; //rrmdir($website); // Delete the temporary decompressed files } - + break; - + case 'importselected': - require_once('include/import.php'); - $channel = \App::get_channel(); - - // Import layout first so that pages that reference new layouts will find - // the mid of layout items in the database - // Obtain the user-selected layouts to import and import them - $checkedlayouts = $_POST['layout']; - $layouts = []; - if (!empty($checkedlayouts)) { - foreach ($checkedlayouts as $name) { - foreach ($_SESSION['layouts'] as &$layout) { - if ($layout['name'] === $name) { - $layout['import'] = 1; - $layoutstoimport[] = $layout; + require_once('include/import.php'); + $channel = \App::get_channel(); + + // Import layout first so that pages that reference new layouts will find + // the mid of layout items in the database + + // Obtain the user-selected layouts to import and import them + $checkedlayouts = $_POST['layout']; + $layouts = []; + if (!empty($checkedlayouts)) { + foreach ($checkedlayouts as $name) { + foreach ($_SESSION['layouts'] as &$layout) { + if ($layout['name'] === $name) { + $layout['import'] = 1; + $layoutstoimport[] = $layout; + } + } + } + foreach ($layoutstoimport as $elementtoimport) { + $layouts[] = import_webpage_element($elementtoimport, $channel, 'layout'); } - } - } - foreach ($layoutstoimport as $elementtoimport) { - $layouts[] = import_webpage_element($elementtoimport, $channel, 'layout'); - } - } - $_SESSION['import_layouts'] = $layouts; - - // Obtain the user-selected blocks to import and import them - $checkedblocks = $_POST['block']; - $blocks = []; - if (!empty($checkedblocks)) { - foreach ($checkedblocks as $name) { - foreach ($_SESSION['blocks'] as &$block) { - if ($block['name'] === $name) { - $block['import'] = 1; - $blockstoimport[] = $block; + } + $_SESSION['import_layouts'] = $layouts; + + // Obtain the user-selected blocks to import and import them + $checkedblocks = $_POST['block']; + $blocks = []; + if (!empty($checkedblocks)) { + foreach ($checkedblocks as $name) { + foreach ($_SESSION['blocks'] as &$block) { + if ($block['name'] === $name) { + $block['import'] = 1; + $blockstoimport[] = $block; + } + } + } + foreach ($blockstoimport as $elementtoimport) { + $blocks[] = import_webpage_element($elementtoimport, $channel, 'block'); } - } - } - foreach ($blockstoimport as $elementtoimport) { - $blocks[] = import_webpage_element($elementtoimport, $channel, 'block'); - } - } - $_SESSION['import_blocks'] = $blocks; - - // Obtain the user-selected pages to import and import them - $checkedpages = $_POST['page']; - $pages = []; - if (!empty($checkedpages)) { - foreach ($checkedpages as $pagelink) { - foreach ($_SESSION['pages'] as &$page) { - if ($page['pagelink'] === $pagelink) { - $page['import'] = 1; - $pagestoimport[] = $page; + } + $_SESSION['import_blocks'] = $blocks; + + // Obtain the user-selected pages to import and import them + $checkedpages = $_POST['page']; + $pages = []; + if (!empty($checkedpages)) { + foreach ($checkedpages as $pagelink) { + foreach ($_SESSION['pages'] as &$page) { + if ($page['pagelink'] === $pagelink) { + $page['import'] = 1; + $pagestoimport[] = $page; + } + } + } + foreach ($pagestoimport as $elementtoimport) { + $pages[] = import_webpage_element($elementtoimport, $channel, 'page'); } - } + } + $_SESSION['import_pages'] = $pages; + if(!(empty($_SESSION['import_pages']) && empty($_SESSION['import_blocks']) && empty($_SESSION['import_layouts']))) { + info( t('Import complete.') . EOL); } - foreach ($pagestoimport as $elementtoimport) { - $pages[] = import_webpage_element($elementtoimport, $channel, 'page'); + if(isset($_SESSION['tempimportpath'])) { + rrmdir($_SESSION['tempimportpath']); // Delete the temporary decompressed files + unset($_SESSION['tempimportpath']); } - } - $_SESSION['import_pages'] = $pages; - if (!(empty($_SESSION['import_pages']) && empty($_SESSION['import_blocks']) && empty($_SESSION['import_layouts']))) { - info(t('Import complete.') . EOL); - } - if (isset($_SESSION['tempimportpath'])) { - rrmdir($_SESSION['tempimportpath']); // Delete the temporary decompressed files - unset($_SESSION['tempimportpath']); - } - break; - + break; + case 'exportzipfile': - - if (isset($_POST['w_download'])) { - $_SESSION['action'] = 'export_select_list'; - $_SESSION['export'] = 'zipfile'; - if (isset($_POST['zipfilename']) && $_POST['zipfilename'] !== '') { - $filename = filter_var($_POST['zipfilename'], FILTER_SANITIZE_ENCODED); - } else { - $filename = 'website.zip'; + + if(isset($_POST['w_download'])) { + $_SESSION['action'] = 'export_select_list'; + $_SESSION['export'] = 'zipfile'; + if(isset($_POST['zipfilename']) && $_POST['zipfilename'] !== '') { + $filename = filter_var($_POST['zipfilename'], FILTER_SANITIZE_ENCODED); + } else { + $filename = 'website.zip'; + } + $_SESSION['zipfilename'] = $filename; + } - $_SESSION['zipfilename'] = $filename; - } - - break; - + + break; + case 'exportcloud': - if (isset($_POST['exportcloudpath']) && $_POST['exportcloudpath'] !== '') { - $_SESSION['action'] = 'export_select_list'; - $_SESSION['export'] = 'cloud'; - $_SESSION['exportcloudpath'] = filter_var($_POST['exportcloudpath'], FILTER_SANITIZE_ENCODED); - } - - break; - + if(isset($_POST['exportcloudpath']) && $_POST['exportcloudpath'] !== '') { + $_SESSION['action'] = 'export_select_list'; + $_SESSION['export'] = 'cloud'; + $_SESSION['exportcloudpath'] = filter_var($_POST['exportcloudpath'], FILTER_SANITIZE_ENCODED); + } + + break; + case 'cloud': case 'zipfile': - - $channel = \App::get_channel(); - - $tmp_folder_name = random_string(10); - $zip_folder_name = random_string(10); - $zip_filename = $_SESSION['zipfilename']; - $tmp_folderpath = '/tmp/' . $tmp_folder_name; - $zip_folderpath = '/tmp/' . $zip_folder_name; - if (!mkdir($zip_folderpath, 0770, false)) { - logger('Error creating zip file export folder: ' . $zip_folderpath, LOGGER_NORMAL); - json_return_and_die(array('message' => 'Error creating zip file export folder')); - } - $zip_filepath = '/tmp/' . $zip_folder_name . '/' . $zip_filename; - - $checkedblocks = $_POST['block']; - $blocks = []; - if (!empty($checkedblocks)) { - foreach ($checkedblocks as $mid) { - $b = q("select iconfig.v, iconfig.k, mimetype, title, body from iconfig - left join item on item.id = iconfig.iid - where mid = '%s' and item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'BUILDBLOCK' order by iconfig.v asc limit 1", dbesc($mid), intval($channel['channel_id']) - ); - if ($b) { - $b = $b[0]; - $blockinfo = array( - 'body' => $b['body'], - 'mimetype' => $b['mimetype'], - 'title' => $b['title'], - 'name' => $b['v'], - 'json' => array( - 'title' => $b['title'], - 'name' => $b['v'], - 'mimetype' => $b['mimetype'], - ) - ); - switch ($blockinfo['mimetype']) { - case 'text/html': - $block_ext = 'html'; - break; - case 'text/bbcode': - $block_ext = 'bbcode'; - break; - case 'text/markdown': - $block_ext = 'md'; - break; - case 'application/x-pdl': - $block_ext = 'pdl'; - break; - case 'application/x-php': - $block_ext = 'php'; - break; - default: - $block_ext = 'bbcode'; - break; - } - $block_filename = $blockinfo['name'] . '.' . $block_ext; - $tmp_blockfolder = $tmp_folderpath . '/blocks/' . $blockinfo['name']; - $block_filepath = $tmp_blockfolder . '/' . $block_filename; - $blockinfo['json']['contentfile'] = $block_filename; - $block_jsonpath = $tmp_blockfolder . '/block.json'; - if (!is_dir($tmp_blockfolder) && !mkdir($tmp_blockfolder, 0770, true)) { - logger('Error creating temp export folder: ' . $tmp_blockfolder, LOGGER_NORMAL); - json_return_and_die(array('message' => 'Error creating temp export folder')); - } - file_put_contents($block_filepath, $blockinfo['body']); - file_put_contents($block_jsonpath, json_encode($blockinfo['json'], JSON_UNESCAPED_SLASHES)); - } + + $channel = \App::get_channel(); + + $tmp_folder_name = random_string(10); + $zip_folder_name = random_string(10); + $zip_filename = $_SESSION['zipfilename']; + $tmp_folderpath = '/tmp/' . $tmp_folder_name; + $zip_folderpath = '/tmp/' . $zip_folder_name; + if (!mkdir($zip_folderpath, 0770, false)) { + logger('Error creating zip file export folder: ' . $zip_folderpath, LOGGER_NORMAL); + json_return_and_die(array('message' => 'Error creating zip file export folder')); } - } - - $checkedlayouts = $_POST['layout']; - $layouts = []; - if (!empty($checkedlayouts)) { - foreach ($checkedlayouts as $mid) { - $l = q("select iconfig.v, iconfig.k, mimetype, title, body from iconfig + $zip_filepath = '/tmp/' . $zip_folder_name . '/' . $zip_filename; + + $checkedblocks = $_POST['block']; + $blocks = []; + if (!empty($checkedblocks)) { + foreach ($checkedblocks as $mid) { + $b = q("select iconfig.v, iconfig.k, mimetype, title, body from iconfig left join item on item.id = iconfig.iid - where mid = '%s' and item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'PDL' order by iconfig.v asc limit 1", dbesc($mid), intval($channel['channel_id']) - ); - if ($l) { - $l = $l[0]; - $layoutinfo = array( - 'body' => $l['body'], - 'mimetype' => $l['mimetype'], - 'description' => $l['title'], - 'name' => $l['v'], - 'json' => array( - 'description' => $l['title'], - 'name' => $l['v'], - 'mimetype' => $l['mimetype'], - ) - ); - switch ($layoutinfo['mimetype']) { - case 'text/bbcode': - default: - $layout_ext = 'bbcode'; - break; - } - $layout_filename = $layoutinfo['name'] . '.' . $layout_ext; - $tmp_layoutfolder = $tmp_folderpath . '/layouts/' . $layoutinfo['name']; - $layout_filepath = $tmp_layoutfolder . '/' . $layout_filename; - $layoutinfo['json']['contentfile'] = $layout_filename; - $layout_jsonpath = $tmp_layoutfolder . '/layout.json'; - if (!is_dir($tmp_layoutfolder) && !mkdir($tmp_layoutfolder, 0770, true)) { - logger('Error creating temp export folder: ' . $tmp_layoutfolder, LOGGER_NORMAL); - json_return_and_die(array('message' => 'Error creating temp export folder')); + where mid = '%s' and item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'BUILDBLOCK' order by iconfig.v asc limit 1", + dbesc($mid), + intval($channel['channel_id']) + ); + if($b) { + $b = $b[0]; + $blockinfo = array( + 'body' => $b['body'], + 'mimetype' => $b['mimetype'], + 'title' => $b['title'], + 'name' => $b['v'], + 'json' => array( + 'title' => $b['title'], + 'name' => $b['v'], + 'mimetype' => $b['mimetype'], + ) + ); + switch ($blockinfo['mimetype']) { + case 'text/html': + $block_ext = 'html'; + break; + case 'text/bbcode': + $block_ext = 'bbcode'; + break; + case 'text/markdown': + $block_ext = 'md'; + break; + case 'application/x-pdl': + $block_ext = 'pdl'; + break; + case 'application/x-php': + $block_ext = 'php'; + break; + default: + $block_ext = 'bbcode'; + break; + } + $block_filename = $blockinfo['name'] . '.' . $block_ext; + $tmp_blockfolder = $tmp_folderpath . '/blocks/' . $blockinfo['name']; + $block_filepath = $tmp_blockfolder . '/' . $block_filename; + $blockinfo['json']['contentfile'] = $block_filename; + $block_jsonpath = $tmp_blockfolder . '/block.json'; + if (!is_dir($tmp_blockfolder) && !mkdir($tmp_blockfolder, 0770, true)) { + logger('Error creating temp export folder: ' . $tmp_blockfolder, LOGGER_NORMAL); + json_return_and_die(array('message' => 'Error creating temp export folder')); + } + file_put_contents($block_filepath, $blockinfo['body']); + file_put_contents($block_jsonpath, json_encode($blockinfo['json'], JSON_UNESCAPED_SLASHES)); + } } - file_put_contents($layout_filepath, $layoutinfo['body']); - file_put_contents($layout_jsonpath, json_encode($layoutinfo['json'], JSON_UNESCAPED_SLASHES)); - } } - } - - $checkedpages = $_POST['page']; - $pages = []; - if (!empty($checkedpages)) { - foreach ($checkedpages as $mid) { - - $p = q("select * from iconfig left join item on iconfig.iid = item.id - where item.uid = %d and item.mid = '%s' and iconfig.cat = 'system' and iconfig.k = 'WEBPAGE' and item_type = %d", intval($channel['channel_id']), dbesc($mid), intval(ITEM_TYPE_WEBPAGE) - ); - - if ($p) { - foreach ($p as $pp) { - // Get the associated layout - $layoutinfo = array(); - if ($pp['layout_mid']) { + + $checkedlayouts = $_POST['layout']; + $layouts = []; + if (!empty($checkedlayouts)) { + foreach ($checkedlayouts as $mid) { $l = q("select iconfig.v, iconfig.k, mimetype, title, body from iconfig - left join item on item.id = iconfig.iid - where mid = '%s' and item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'PDL' order by iconfig.v asc limit 1", dbesc($pp['layout_mid']), intval($channel['channel_id']) + left join item on item.id = iconfig.iid + where mid = '%s' and item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'PDL' order by iconfig.v asc limit 1", + dbesc($mid), + intval($channel['channel_id']) ); - if ($l) { - $l = $l[0]; - $layoutinfo = array( - 'body' => $l['body'], - 'mimetype' => $l['mimetype'], - 'description' => $l['title'], - 'name' => $l['v'], - 'json' => array( - 'description' => $l['title'], - 'name' => $l['v'], - ) - ); - switch ($layoutinfo['mimetype']) { - case 'text/bbcode': - default: - $layout_ext = 'bbcode'; - break; - } - $layout_filename = $layoutinfo['name'] . '.' . $layout_ext; - $tmp_layoutfolder = $tmp_folderpath . '/layouts/' . $layoutinfo['name']; - $layout_filepath = $tmp_layoutfolder . '/' . $layout_filename; - $layoutinfo['json']['contentfile'] = $layout_filename; - $layout_jsonpath = $tmp_layoutfolder . '/layout.json'; - if (!is_dir($tmp_layoutfolder) && !mkdir($tmp_layoutfolder, 0770, true)) { - logger('Error creating temp export folder: ' . $tmp_layoutfolder, LOGGER_NORMAL); - json_return_and_die(array('message' => 'Error creating temp export folder')); - } - file_put_contents($layout_filepath, $layoutinfo['body']); - file_put_contents($layout_jsonpath, json_encode($layoutinfo['json'], JSON_UNESCAPED_SLASHES)); + if($l) { + $l = $l[0]; + $layoutinfo = array( + 'body' => $l['body'], + 'mimetype' => $l['mimetype'], + 'description' => $l['title'], + 'name' => $l['v'], + 'json' => array( + 'description' => $l['title'], + 'name' => $l['v'], + 'mimetype' => $l['mimetype'], + ) + ); + switch ($layoutinfo['mimetype']) { + case 'text/bbcode': + default: + $layout_ext = 'bbcode'; + break; + } + $layout_filename = $layoutinfo['name'] . '.' . $layout_ext; + $tmp_layoutfolder = $tmp_folderpath . '/layouts/' . $layoutinfo['name']; + $layout_filepath = $tmp_layoutfolder . '/' . $layout_filename; + $layoutinfo['json']['contentfile'] = $layout_filename; + $layout_jsonpath = $tmp_layoutfolder . '/layout.json'; + if (!is_dir($tmp_layoutfolder) && !mkdir($tmp_layoutfolder, 0770, true)) { + logger('Error creating temp export folder: ' . $tmp_layoutfolder, LOGGER_NORMAL); + json_return_and_die(array('message' => 'Error creating temp export folder')); + } + file_put_contents($layout_filepath, $layoutinfo['body']); + file_put_contents($layout_jsonpath, json_encode($layoutinfo['json'], JSON_UNESCAPED_SLASHES)); } - } - switch ($pp['mimetype']) { - case 'text/html': - $page_ext = 'html'; - break; - case 'text/bbcode': - $page_ext = 'bbcode'; - break; - case 'text/markdown': - $page_ext = 'md'; - break; - case 'application/x-pdl': - $page_ext = 'pdl'; - break; - case 'application/x-php': - $page_ext = 'php'; - break; - default: - break; - } - $pageinfo = array( - 'title' => $pp['title'], - 'body' => $pp['body'], - 'pagelink' => $pp['v'], - 'mimetype' => $pp['mimetype'], - 'contentfile' => $pp['v'] . '.' . $page_ext, - 'layout' => ((x($layoutinfo, 'name')) ? $layoutinfo['name'] : ''), - 'json' => array( - 'title' => $pp['title'], - 'pagelink' => $pp['v'], - 'mimetype' => $pp['mimetype'], - 'layout' => ((x($layoutinfo, 'name')) ? $layoutinfo['name'] : ''), - ) - ); - $page_filename = $pageinfo['pagelink'] . '.' . $page_ext; - $tmp_pagefolder = $tmp_folderpath . '/pages/' . $pageinfo['pagelink']; - $page_filepath = $tmp_pagefolder . '/' . $page_filename; - $page_jsonpath = $tmp_pagefolder . '/page.json'; - $pageinfo['json']['contentfile'] = $page_filename; - if (!is_dir($tmp_pagefolder) && !mkdir($tmp_pagefolder, 0770, true)) { - logger('Error creating temp export folder: ' . $tmp_pagefolder, LOGGER_NORMAL); - json_return_and_die(array('message' => 'Error creating temp export folder')); - } - file_put_contents($page_filepath, $pageinfo['body']); - file_put_contents($page_jsonpath, json_encode($pageinfo['json'], JSON_UNESCAPED_SLASHES)); } - } } - } - if ($action === 'zipfile') { - // Generate the zip file - \Zotlabs\Lib\ExtendedZip::zipTree($tmp_folderpath, $zip_filepath, \ZipArchive::CREATE); - // Output the file for download - header('Content-disposition: attachment; filename="' . $zip_filename . '"'); - header("Content-Type: application/zip"); - $success = readfile($zip_filepath); - } elseif ($action === 'cloud') { // Only zipfile or cloud should be possible values for $action here - if (isset($_SESSION['exportcloudpath'])) { - require_once('include/attach.php'); - $cloudpath = urldecode($_SESSION['exportcloudpath']); - $channel = \App::get_channel(); - $dirpath = get_dirpath_by_cloudpath($channel, $cloudpath); - if (!$dirpath) { - $x = attach_mkdirp($channel, $channel['channel_hash'], array('pathname' => $cloudpath)); - $folder_hash = (($x['success']) ? $x['data']['hash'] : ''); - - if (!$x['success']) { - logger('Failed to create cloud file folder', LOGGER_NORMAL); - } - $dirpath = get_dirpath_by_cloudpath($channel, $cloudpath); - if (!is_dir($dirpath)) { - logger('Failed to create cloud file folder', LOGGER_NORMAL); + + $checkedpages = $_POST['page']; + $pages = []; + if (!empty($checkedpages)) { + foreach ($checkedpages as $mid) { + + $p = q("select * from iconfig left join item on iconfig.iid = item.id + where item.uid = %d and item.mid = '%s' and iconfig.cat = 'system' and iconfig.k = 'WEBPAGE' and item_type = %d", + intval($channel['channel_id']), + dbesc($mid), + intval(ITEM_TYPE_WEBPAGE) + ); + + if($p) { + foreach ($p as $pp) { + // Get the associated layout + $layoutinfo = array(); + if($pp['layout_mid']) { + $l = q("select iconfig.v, iconfig.k, mimetype, title, body from iconfig + left join item on item.id = iconfig.iid + where mid = '%s' and item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'PDL' order by iconfig.v asc limit 1", + dbesc($pp['layout_mid']), + intval($channel['channel_id']) + ); + if($l) { + $l = $l[0]; + $layoutinfo = array( + 'body' => $l['body'], + 'mimetype' => $l['mimetype'], + 'description' => $l['title'], + 'name' => $l['v'], + 'json' => array( + 'description' => $l['title'], + 'name' => $l['v'], + ) + ); + switch ($layoutinfo['mimetype']) { + case 'text/bbcode': + default: + $layout_ext = 'bbcode'; + break; + } + $layout_filename = $layoutinfo['name'] . '.' . $layout_ext; + $tmp_layoutfolder = $tmp_folderpath . '/layouts/' . $layoutinfo['name']; + $layout_filepath = $tmp_layoutfolder . '/' . $layout_filename; + $layoutinfo['json']['contentfile'] = $layout_filename; + $layout_jsonpath = $tmp_layoutfolder . '/layout.json'; + if (!is_dir($tmp_layoutfolder) && !mkdir($tmp_layoutfolder, 0770, true)) { + logger('Error creating temp export folder: ' . $tmp_layoutfolder, LOGGER_NORMAL); + json_return_and_die(array('message' => 'Error creating temp export folder')); + } + file_put_contents($layout_filepath, $layoutinfo['body']); + file_put_contents($layout_jsonpath, json_encode($layoutinfo['json'], JSON_UNESCAPED_SLASHES)); + } + } + switch ($pp['mimetype']) { + case 'text/html': + $page_ext = 'html'; + break; + case 'text/bbcode': + $page_ext = 'bbcode'; + break; + case 'text/markdown': + $page_ext = 'md'; + break; + case 'application/x-pdl': + $page_ext = 'pdl'; + break; + case 'application/x-php': + $page_ext = 'php'; + break; + default: + break; + } + $pageinfo = array( + 'title' => $pp['title'], + 'body' => $pp['body'], + 'pagelink' => $pp['v'], + 'mimetype' => $pp['mimetype'], + 'contentfile' => $pp['v'] . '.' . $page_ext, + 'layout' => ((x($layoutinfo,'name')) ? $layoutinfo['name'] : ''), + 'json' => array( + 'title' => $pp['title'], + 'pagelink' => $pp['v'], + 'mimetype' => $pp['mimetype'], + 'layout' => ((x($layoutinfo,'name')) ? $layoutinfo['name'] : ''), + ) + ); + $page_filename = $pageinfo['pagelink'] . '.' . $page_ext; + $tmp_pagefolder = $tmp_folderpath . '/pages/' . $pageinfo['pagelink']; + $page_filepath = $tmp_pagefolder . '/' . $page_filename; + $page_jsonpath = $tmp_pagefolder . '/page.json'; + $pageinfo['json']['contentfile'] = $page_filename; + if (!is_dir($tmp_pagefolder) && !mkdir($tmp_pagefolder, 0770, true)) { + logger('Error creating temp export folder: ' . $tmp_pagefolder, LOGGER_NORMAL); + json_return_and_die(array('message' => 'Error creating temp export folder')); + } + file_put_contents($page_filepath, $pageinfo['body']); + file_put_contents($page_jsonpath, json_encode($pageinfo['json'], JSON_UNESCAPED_SLASHES)); + } + } + } + } + if($action === 'zipfile') { + // Generate the zip file + \Zotlabs\Lib\ExtendedZip::zipTree($tmp_folderpath, $zip_filepath, \ZipArchive::CREATE); + // Output the file for download + header('Content-disposition: attachment; filename="' . $zip_filename . '"'); + header("Content-Type: application/zip"); + $success = readfile($zip_filepath); + } elseif ($action === 'cloud') { // Only zipfile or cloud should be possible values for $action here + if(isset($_SESSION['exportcloudpath'])) { + require_once('include/attach.php'); + $cloudpath = urldecode($_SESSION['exportcloudpath']); + $channel = \App::get_channel(); + $dirpath = get_dirpath_by_cloudpath($channel, $cloudpath); + if(!$dirpath) { + $x = attach_mkdirp($channel, $channel['channel_hash'], array('pathname' => $cloudpath)); + $folder_hash = (($x['success']) ? $x['data']['hash'] : ''); + + if (!$x['success']) { + logger('Failed to create cloud file folder', LOGGER_NORMAL); + } + $dirpath = get_dirpath_by_cloudpath($channel, $cloudpath); + if (!is_dir($dirpath)) { + logger('Failed to create cloud file folder', LOGGER_NORMAL); + } + } + + $success = copy_folder_to_cloudfiles($channel, $channel['channel_hash'], $tmp_folderpath, $cloudpath); } - } - - $success = copy_folder_to_cloudfiles($channel, $channel['channel_hash'], $tmp_folderpath, $cloudpath); } - } - if (!$success) { - logger('Error exporting webpage elements', LOGGER_NORMAL); - } - - rrmdir($zip_folderpath); - rrmdir($tmp_folderpath); // delete temporary files - - break; + if(!$success) { + logger('Error exporting webpage elements', LOGGER_NORMAL); + } + + rrmdir($zip_folderpath); rrmdir($tmp_folderpath); // delete temporary files + + break; default : break; } + } + } - + } diff --git a/view/de/hmessages.po b/view/de/hmessages.po index 62f7fe602..e8c16faaa 100644 --- a/view/de/hmessages.po +++ b/view/de/hmessages.po @@ -13751,3 +13751,19 @@ msgstr "Cron-Aufgaben laufen nicht." #, php-format msgid "[hubzilla] Cron tasks not running on %s" msgstr "[hubzilla] Cron-Aufgaben für %s laufen nicht" + +#: ../../addon/demohub/demohub.php:41 +msgid "Welcome to the Hubzilla demo hub!" +msgstr "Willkommen auf dem Hubzilla demo Hub!" + +#: ../../addon/demohub/demohub.php:42 +msgid "This demo hub is designed to give you a chance to explore some of the features offered by the Hubzilla platform. The activities of the fictional characters illustrate only a few of the ways communities can use Hubzilla to collaborate and connect." +msgstr "Dieser demo Hub (Hubzilla-Knoten) ist konzipiert, um Ihnen eine Chance zu geben, einige Features der Hubzilla-Platform kennenzulernen. Die fiktive Aktivitäten illustrieren nur einige von vielen Möglichkeiten, die den Communities für die Kommunikation und Zusammenarbeit im Hubzilla-Netzwerk zur Verfügung stehen." + +#: ../../addon/demohub/demohub.php:45 +msgid "To really grasp what Hubzilla is offering in terms of nomadic identity and decentralized access control, you have to try it for yourself. Run your own hub or register on an open hub. You can always clone your channels and migrate to another hub later. With Hubzilla, you not only own your data, but your identity as well!

The demo resets every ten minutes, which may interrupt your session. Simply reload the page as necessary. You can return to this dialog using the blue info button in the navbar." +msgstr "Sie können selbst in der Praxis testen, welche Möglichkeiten Ihnen im Hubzilla-Netzwerk mit Nomadic Identity und mit dem dezentralen Zugang. Richten Sie einen eigenen Hubzilla-Knoten ein oder registrieren Sie sich auf einem offenen Hub. Sie können dann Ihren Kanal klonen oder mit diesem Kanal auf einen anderen Hub umziehen. Mit Hubzilla kontrollieren Sie Ihre Daten, aber auch Ihre Identität!

Die Demoinstanz wird im 10-Minuten-Takt zurückgesetzt, wobei Ihre Hubzilla-Sitzung evtl. unterbrochen wird. Laden Sie die Website #^https://demo.hubzilla.org/ einfach neu, um fortzufahren. Sie können dieses Dialog-Fenster mit einem Klick auf das blaue [i]-Symbol rechts oben in der Navigationsleiste." + +#: ../../addon/demohub/demohub.php:52 +msgid "Explore" +msgstr "Erforschen" \ No newline at end of file -- cgit v1.2.3 From 8d5e028b5be6297f94be5ce834954b1ff8b8dbaf Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Wed, 3 May 2017 20:56:55 -0400 Subject: Add contributor to credits --- doc/about/hubzilla_project.bb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/about/hubzilla_project.bb b/doc/about/hubzilla_project.bb index 7a584687d..f9bc920f8 100644 --- a/doc/about/hubzilla_project.bb +++ b/doc/about/hubzilla_project.bb @@ -182,4 +182,5 @@ even if we have had our occasional disagreements. [li]Simó Albert i Beltran[/li] [li]Manuel Reva[/li] [li]Manuel Jiménez Friaza[/li] -[/list] \ No newline at end of file +[li]Gustav Wall aka "neue medienordnung plus"[/li] +[/list] -- cgit v1.2.3 From 519aef7ff52013170b08eb89c0a95072fe8047e1 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Wed, 3 May 2017 18:50:32 -0700 Subject: abook_not_here flag created to indicate singleton connections which are connected to this channel but not on this hub. abook_instance enumerates which hubs the connections is valid, but we ultimately need something more efficiently searchable to decide what operations are supported w/r/t this connection in the context of this hub. This flag is ignored during sync to clones although the code to set it correctly during channel creation, import, and sync has not yet been implemented. --- Zotlabs/Module/Import.php | 3 ++- boot.php | 2 +- include/zot.php | 4 +--- install/schema_mysql.sql | 2 ++ install/schema_postgres.sql | 2 ++ install/update.php | 11 ++++++++++- 6 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Zotlabs/Module/Import.php b/Zotlabs/Module/Import.php index 54bc7de81..ce3fd469a 100644 --- a/Zotlabs/Module/Import.php +++ b/Zotlabs/Module/Import.php @@ -318,6 +318,7 @@ class Import extends \Zotlabs\Web\Controller { unset($abook['abconfig']); unset($abook['abook_their_perms']); unset($abook['abook_my_perms']); + unset($abook['abook_not_here']); $abook['abook_account'] = $account_id; $abook['abook_channel'] = $channel['channel_id']; @@ -347,7 +348,7 @@ class Import extends \Zotlabs\Web\Controller { continue; } - create_table_from_array('abook',$abook); + abook_store_lowlevel($abook); $friends ++; if(intval($abook['abook_feed'])) diff --git a/boot.php b/boot.php index 12510bbd3..60a453c77 100755 --- a/boot.php +++ b/boot.php @@ -52,7 +52,7 @@ define ( 'PLATFORM_NAME', 'hubzilla' ); define ( 'STD_VERSION', '2.3.5' ); define ( 'ZOT_REVISION', '1.2' ); -define ( 'DB_UPDATE_VERSION', 1190 ); +define ( 'DB_UPDATE_VERSION', 1191 ); define ( 'PROJECT_BASE', __DIR__ ); diff --git a/include/zot.php b/include/zot.php index 20a25ce3b..a168dff1b 100644 --- a/include/zot.php +++ b/include/zot.php @@ -3226,12 +3226,10 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) { } - $disallowed = array('abook_id','abook_account','abook_channel','abook_rating','abook_rating_text'); + $disallowed = array('abook_id','abook_account','abook_channel','abook_rating','abook_rating_text','abook_not_here'); foreach($arr['abook'] as $abook) { - - $abconfig = null; if(array_key_exists('abconfig',$abook) && is_array($abook['abconfig']) && count($abook['abconfig'])) diff --git a/install/schema_mysql.sql b/install/schema_mysql.sql index b64c1ae61..602f7ac2f 100644 --- a/install/schema_mysql.sql +++ b/install/schema_mysql.sql @@ -34,6 +34,7 @@ CREATE TABLE IF NOT EXISTS `abook` ( `abook_unconnected` tinyint(4) NOT NULL DEFAULT '0', `abook_self` tinyint(4) NOT NULL DEFAULT '0', `abook_feed` tinyint(4) NOT NULL DEFAULT '0', + `abook_not_here` tinyint(4) NOT NULL DEFAULT '0', `abook_profile` char(64) NOT NULL DEFAULT '', `abook_incl` TEXT NOT NULL DEFAULT '', `abook_excl` TEXT NOT NULL DEFAULT '', @@ -58,6 +59,7 @@ CREATE TABLE IF NOT EXISTS `abook` ( KEY `abook_pending` (`abook_pending`), KEY `abook_unconnected` (`abook_unconnected`), KEY `abook_self` (`abook_self`), + KEY `abook_not_here` (`abook_not_here`), KEY `abook_feed` (`abook_feed`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/install/schema_postgres.sql b/install/schema_postgres.sql index 0328040f4..774f355aa 100644 --- a/install/schema_postgres.sql +++ b/install/schema_postgres.sql @@ -32,6 +32,7 @@ CREATE TABLE "abook" ( "abook_unconnected" smallint NOT NULL DEFAULT '0', "abook_self" smallint NOT NULL DEFAULT '0', "abook_feed" smallint NOT NULL DEFAULT '0', + "abook_not_here" smallint NOT NULL DEFAULT '0', "abook_profile" char(64) NOT NULL DEFAULT '', "abook_incl" TEXT NOT NULL DEFAULT '', "abook_excl" TEXT NOT NULL DEFAULT '', @@ -55,6 +56,7 @@ CREATE TABLE "abook" ( create index "abook_unconnected" on abook ("abook_unconnected"); create index "abook_self" on abook ("abook_self"); create index "abook_feed" on abook ("abook_feed"); + create index "abook_not_here" on abook ("abook_not_here"); create index "abook_profile" on abook ("abook_profile"); create index "abook_dob" on abook ("abook_dob"); create index "abook_connected" on abook ("abook_connected"); diff --git a/install/update.php b/install/update.php index ce65d1db9..65506a2f7 100644 --- a/install/update.php +++ b/install/update.php @@ -1,6 +1,6 @@ Date: Wed, 3 May 2017 19:02:20 -0700 Subject: one file hadn't yet been saved when doing pull request --- include/connections.php | 1 + 1 file changed, 1 insertion(+) diff --git a/include/connections.php b/include/connections.php index a8d7d8483..8f4f84e1a 100644 --- a/include/connections.php +++ b/include/connections.php @@ -23,6 +23,7 @@ function abook_store_lowlevel($arr) { 'abook_unconnected' => ((array_key_exists('abook_unconnected',$arr)) ? $arr['abook_unconnected'] : 0), 'abook_self' => ((array_key_exists('abook_self',$arr)) ? $arr['abook_self'] : 0), 'abook_feed' => ((array_key_exists('abook_feed',$arr)) ? $arr['abook_feed'] : 0), + 'abook_not_here' => ((array_key_exists('abook_not_here',$arr)) ? $arr['abook_not_here'] : 0), 'abook_profile' => ((array_key_exists('abook_profile',$arr)) ? $arr['abook_profile'] : ''), 'abook_incl' => ((array_key_exists('abook_incl',$arr)) ? $arr['abook_incl'] : ''), 'abook_excl' => ((array_key_exists('abook_excl',$arr)) ? $arr['abook_excl'] : ''), -- cgit v1.2.3