From 17f1d39fcf973ac35f14a36faa2b92867fbb11e9 Mon Sep 17 00:00:00 2001 From: Hubzilla Date: Sun, 22 Jan 2017 18:48:45 -0800 Subject: basic support for clone syncing of wikis and wiki pages --- Zotlabs/Lib/NativeWiki.php | 16 ++++++++++++++-- Zotlabs/Lib/NativeWikiPage.php | 25 ++++++++++++++----------- Zotlabs/Module/Import.php | 3 +++ Zotlabs/Module/Wiki.php | 13 ++++++++++--- 4 files changed, 41 insertions(+), 16 deletions(-) (limited to 'Zotlabs') diff --git a/Zotlabs/Lib/NativeWiki.php b/Zotlabs/Lib/NativeWiki.php index c3380939a..f4089d8a2 100644 --- a/Zotlabs/Lib/NativeWiki.php +++ b/Zotlabs/Lib/NativeWiki.php @@ -93,13 +93,25 @@ class NativeWiki { if($item_id) { \Zotlabs\Daemon\Master::Summon(array('Notifier', 'activity', $item_id)); - return array('item' => $post['item'], 'success' => true); + return array('item' => $post['item'], 'item_id' => $item_id, 'success' => true); } else { return array('item' => null, 'success' => false); } } + static public function sync_a_wiki_item($uid,$id) { + $r = q("select * from item where id = %d and uid = %d", + intval($id), + intval($uid) + ); + if($r) { + xchan_query($r); + $sync_item = fetch_post_tags($r); + build_sync_packet($uid,array('wiki' => array(encode_item($sync_item[0],true)))); + } + } + function delete_wiki($channel_id,$observer_hash,$resource_id) { $w = self::get_wiki($channel_id,$observer_hash,$resource_id); @@ -113,7 +125,7 @@ class NativeWiki { info( t('Wiki files deleted successfully')); - return array('item' => $item, 'success' => (($drop === 1) ? true : false)); + return array('item' => $item, 'item_id' => $item['id'], 'success' => (($drop === 1) ? true : false)); } diff --git a/Zotlabs/Lib/NativeWikiPage.php b/Zotlabs/Lib/NativeWikiPage.php index 0c3698519..f0b8b76a1 100644 --- a/Zotlabs/Lib/NativeWikiPage.php +++ b/Zotlabs/Lib/NativeWikiPage.php @@ -61,16 +61,19 @@ class NativeWikiPage { set_iconfig($arr,'nwikipage','pagetitle',urlencode(($name) ? $name : t('(No Title)')),true); - post_activity_item($arr, false, false); + $p = post_activity_item($arr, false, false); - $page = [ - 'rawName' => $name, - 'htmlName' => escape_tags($name), - 'urlName' => urlencode(escape_tags($name)), - 'fileName' => urlencode(escape_tags($name)) . Zlib\NativeWikiPage::get_file_ext($w) - ]; + if($p['success']) { + $page = [ + 'rawName' => $name, + 'htmlName' => escape_tags($name), + 'urlName' => urlencode(escape_tags($name)), + 'fileName' => urlencode(escape_tags($name)) . Zlib\NativeWikiPage::get_file_ext($w) + ]; - return array('page' => $page, 'wiki' => $w, 'message' => '', 'success' => true); + return array('page' => $page, 'item_id' => $p['post_id'], 'wiki' => $w, 'message' => '', 'success' => true); + } + return [ 'success' => false, 'message' => t('Wiki page create failed.') ]; } static public function rename_page($arr) { @@ -119,7 +122,7 @@ class NativeWikiPage { return [ 'success' => true, 'page' => $page ]; } - return [ 'success' => false, 'message' => t('Page not found') ]; + return [ 'success' => false, 'item_id' => $c['item_id'], 'message' => t('Page not found') ]; } @@ -358,7 +361,7 @@ class NativeWikiPage { $ret = item_store($item, false, false); if($ret['item_id']) - return array('message' => '', 'filename' => $filename, 'success' => true); + return array('message' => '', 'item_id' => $ret['item_id'], 'filename' => $filename, 'success' => true); else return array('message' => t('Page update failed.'), 'success' => false); } @@ -490,7 +493,7 @@ class NativeWikiPage { if($page) { set_iconfig($page['id'],'nwikipage','commit_msg',escape_tags($commit_msg),true); - return [ 'success' => true, 'page' => $page ]; + return [ 'success' => true, 'item_id' => $page['id'], 'page' => $page ]; } return [ 'success' => false, 'message' => t('Page not found.') ]; diff --git a/Zotlabs/Module/Import.php b/Zotlabs/Module/Import.php index aa79fa8bf..b69daa2ff 100644 --- a/Zotlabs/Module/Import.php +++ b/Zotlabs/Module/Import.php @@ -472,6 +472,9 @@ class Import extends \Zotlabs\Web\Controller { if(is_array($data['menu'])) import_menus($channel,$data['menu']); + + if(is_array($data['wiki'])) + import_items($channel,$data['wiki'],false,$relocate); $addon = array('channel' => $channel,'data' => $data); call_hooks('import_channel',$addon); diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php index 746ad9b4f..2ab7379c4 100644 --- a/Zotlabs/Module/Wiki.php +++ b/Zotlabs/Module/Wiki.php @@ -104,7 +104,7 @@ class Wiki extends \Zotlabs\Web\Controller { $o = profile_tabs($a, $is_owner, \App::$profile['channel_address']); // Download a wiki - +/* if((argc() > 3) && (argv(2) === 'download') && (argv(3) === 'wiki')) { $resource_id = argv(4); @@ -144,7 +144,7 @@ class Wiki extends \Zotlabs\Web\Controller { killme(); } - +*/ switch(argc()) { case 2: $wikis = Zlib\NativeWiki::listwikis($owner, get_observer_hash()); @@ -361,6 +361,7 @@ class Wiki extends \Zotlabs\Web\Controller { $acl->set_from_array($_POST); $r = Zlib\NativeWiki::create_wiki($owner, $observer_hash, $wiki, $acl); if($r['success']) { + Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$r['item_id']); $homePage = Zlib\NativeWikiPage::create_page($owner['channel_id'],$observer_hash,'Home', $r['item']['resource_id']); if(! $homePage['success']) { notice( t('Wiki created, but error creating Home page.')); @@ -386,6 +387,7 @@ class Wiki extends \Zotlabs\Web\Controller { $resource_id = $_POST['resource_id']; $deleted = Zlib\NativeWiki::delete_wiki($owner['channel_id'],$observer_hash,$resource_id); if ($deleted['success']) { + Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$deleted['item_id']); json_return_and_die(array('message' => '', 'success' => true)); } else { @@ -425,11 +427,14 @@ class Wiki extends \Zotlabs\Web\Controller { )); if($commit['success']) { + Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$commit['item_id']); json_return_and_die(array('url' => '/' . argv(0) . '/' . argv(1) . '/' . $page['wiki']['urlName'] . '/' . $page['page']['urlName'], 'success' => true)); } else { json_return_and_die(array('message' => 'Error making git commit','url' => '/' . argv(0) . '/' . argv(1) . '/' . $page['wiki']['urlName'] . '/' . urlencode($page['page']['urlName']),'success' => false)); } + + } else { logger('Error creating page'); @@ -487,6 +492,7 @@ class Wiki extends \Zotlabs\Web\Controller { )); if($commit['success']) { + Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$commit['item_id']); json_return_and_die(array('message' => 'Wiki git repo commit made', 'success' => true)); } else { @@ -549,6 +555,7 @@ class Wiki extends \Zotlabs\Web\Controller { 'files' => null )); if($commit['success']) { + Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$commit['item_id']); json_return_and_die(array('message' => 'Wiki git repo commit made', 'success' => true)); } else { @@ -563,7 +570,6 @@ class Wiki extends \Zotlabs\Web\Controller { // Revert a page if ((argc() === 4) && (argv(2) === 'revert') && (argv(3) === 'page')) { -logger('revert was called: ' . print_r($_POST,true)); $resource_id = $_POST['resource_id']; $pageUrlName = $_POST['name']; $commitHash = $_POST['commitHash']; @@ -637,6 +643,7 @@ logger('revert was called: ' . print_r($_POST,true)); )); if($commit['success']) { + Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$commit['item_id']); json_return_and_die(array('name' => $renamed['page'], 'message' => 'Wiki git repo commit made', 'success' => true)); } else { -- cgit v1.2.3