diff options
-rw-r--r-- | Zotlabs/Lib/NativeWiki.php | 16 | ||||
-rw-r--r-- | Zotlabs/Lib/NativeWikiPage.php | 25 | ||||
-rw-r--r-- | Zotlabs/Module/Import.php | 3 | ||||
-rw-r--r-- | Zotlabs/Module/Wiki.php | 13 | ||||
-rw-r--r-- | include/channel.php | 11 | ||||
-rwxr-xr-x | include/items.php | 1 | ||||
-rw-r--r-- | include/zot.php | 7 |
7 files changed, 58 insertions, 18 deletions
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 { diff --git a/include/channel.php b/include/channel.php index 83f48f361..247d3d358 100644 --- a/include/channel.php +++ b/include/channel.php @@ -671,6 +671,17 @@ function identity_basic_export($channel_id, $items = false) { $ret['mail'] = $m; } + $r = q("select * from item where resource_type like 'nwiki%%' and uid = %d order by created", + intval($channel_id) + ); + if($r) { + $ret['wiki'] = array(); + xchan_query($r); + $r = fetch_post_tags($r,true); + foreach($r as $rv) { + $ret['wiki'][] = encode_item($rv,true); + } + } /** @warning this may run into memory limits on smaller systems */ diff --git a/include/items.php b/include/items.php index e4ead28c8..3b7307239 100755 --- a/include/items.php +++ b/include/items.php @@ -391,6 +391,7 @@ function post_activity_item($arr,$allow_code = false,$deliver = true) { call_hooks('post_local_end', $arr); Zotlabs\Daemon\Master::Summon(array('Notifier','activity',$post_id)); $ret['success'] = true; + $ret['item_id'] = $post_id; $ret['activity'] = $post['item']; } diff --git a/include/zot.php b/include/zot.php index c6d52816a..06996f47f 100644 --- a/include/zot.php +++ b/include/zot.php @@ -3174,8 +3174,11 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) { if(array_key_exists('menu',$arr) && $arr['menu']) sync_menus($channel,$arr['menu']); - if(array_key_exists('file',$arr) && $arr['file']) - sync_files($channel,$arr['file']); + if(array_key_exists('menu',$arr) && $arr['menu']) + sync_menus($channel,$arr['menu']); + + if(array_key_exists('wiki',$arr) && $arr['wiki']) + sync_items($channel,$arr['wiki']); if(array_key_exists('channel',$arr) && is_array($arr['channel']) && count($arr['channel'])) { |