From 66bf55710ea4fc13c3b2c35cce2c5e095b695388 Mon Sep 17 00:00:00 2001 From: Max Kostikov Date: Mon, 10 Sep 2018 15:13:28 +0200 Subject: [PATCH 01/16] Update network.php --- include/network.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/network.php b/include/network.php index d4f4f27c6..5ae02deff 100644 --- a/include/network.php +++ b/include/network.php @@ -157,7 +157,7 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) { if($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307 || $http_code == 308) { $matches = array(); - preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches); + preg_match('/(Location:|URI:)(.*?)\n/i', $header, $matches); $newurl = trim(array_pop($matches)); if(strpos($newurl,'/') === 0) $newurl = $url . $newurl; From 28e4977c33e11e4bb65c85977c82f3523f685bac Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Tue, 11 Sep 2018 11:16:58 +0200 Subject: [PATCH 02/16] include item.title in /network and /channel search --- Zotlabs/Module/Channel.php | 3 ++- Zotlabs/Module/Network.php | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php index 8941faf56..74fdc1cb4 100644 --- a/Zotlabs/Module/Channel.php +++ b/Zotlabs/Module/Channel.php @@ -197,7 +197,8 @@ class Channel extends Controller { $sql_extra .= term_query('item',substr($search,1),TERM_HASHTAG,TERM_COMMUNITYTAG); } else { - $sql_extra .= sprintf(" AND item.body like '%s' ", + $sql_extra .= sprintf(" AND (item.body like '%s' OR item.title like '%s') ", + dbesc(protect_sprintf('%' . $search . '%')), dbesc(protect_sprintf('%' . $search . '%')) ); } diff --git a/Zotlabs/Module/Network.php b/Zotlabs/Module/Network.php index ca0ec7844..c3db15ef2 100644 --- a/Zotlabs/Module/Network.php +++ b/Zotlabs/Module/Network.php @@ -382,7 +382,8 @@ class Network extends \Zotlabs\Web\Controller { $sql_extra .= term_query('item',substr($search,1),TERM_HASHTAG,TERM_COMMUNITYTAG); } else { - $sql_extra .= sprintf(" AND item.body like '%s' ", + $sql_extra .= sprintf(" AND (item.body like '%s' OR item.title like '%s') ", + dbesc(protect_sprintf('%' . $search . '%')), dbesc(protect_sprintf('%' . $search . '%')) ); } From 2651eae663869e78aa0166bd33ac80a44b26b5ea Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Wed, 12 Sep 2018 11:08:53 +0200 Subject: [PATCH 03/16] mpre feature to app transition --- Zotlabs/Module/Articles.php | 38 +++++++---- Zotlabs/Module/Cards.php | 7 +- Zotlabs/Module/Webpages.php | 55 +++++++++------ Zotlabs/Module/Wiki.php | 131 +++++++++++++++++++----------------- Zotlabs/Widget/Appstore.php | 6 +- include/features.php | 27 -------- 6 files changed, 137 insertions(+), 127 deletions(-) diff --git a/Zotlabs/Module/Articles.php b/Zotlabs/Module/Articles.php index e1f0b4ab0..d622b221a 100644 --- a/Zotlabs/Module/Articles.php +++ b/Zotlabs/Module/Articles.php @@ -1,12 +1,17 @@ Articles App (Not Installed):
'; + $o .= t('Create interactive articles'); + return $o; } nav_set_selected(t('Articles')); @@ -40,7 +50,7 @@ class Articles extends \Zotlabs\Web\Controller { head_add_link([ 'rel' => 'alternate', 'type' => 'application/json+oembed', - 'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string), + 'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . App::$query_string), 'title' => 'oembed' ]); @@ -48,7 +58,7 @@ class Articles extends \Zotlabs\Web\Controller { $category = (($_REQUEST['cat']) ? escape_tags(trim($_REQUEST['cat'])) : ''); if($category) { - $sql_extra2 .= protect_sprintf(term_item_parent_query(\App::$profile['profile_uid'],'item', $category, TERM_CATEGORY)); + $sql_extra2 .= protect_sprintf(term_item_parent_query(App::$profile['profile_uid'],'item', $category, TERM_CATEGORY)); } $datequery = ((x($_GET,'dend') && is_a_date_arg($_GET['dend'])) ? notags($_GET['dend']) : ''); @@ -58,11 +68,11 @@ class Articles extends \Zotlabs\Web\Controller { $selected_card = ((argc() > 2) ? argv(2) : ''); - $_SESSION['return_url'] = \App::$query_string; + $_SESSION['return_url'] = App::$query_string; $uid = local_channel(); - $owner = \App::$profile_uid; - $observer = \App::get_observer(); + $owner = App::$profile_uid; + $observer = App::get_observer(); $ob_hash = (($observer) ? $observer['xchan_hash'] : ''); @@ -100,7 +110,7 @@ class Articles extends \Zotlabs\Web\Controller { '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')) : ''), + PermissionDescription::fromGlobalPermission('view_pages')) : ''), 'permissions' => $channel_acl, 'showacl' => (($is_owner) ? true : false), 'visitor' => true, @@ -130,8 +140,8 @@ class Articles extends \Zotlabs\Web\Controller { } $itemspage = get_pconfig(local_channel(),'system','itemspage'); - \App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20)); - $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']), intval(\App::$pager['start'])); + App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20)); + $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(App::$pager['itemspage']), intval(App::$pager['start'])); $sql_extra = item_permissions_sql($owner); @@ -179,7 +189,7 @@ class Articles extends \Zotlabs\Web\Controller { WHERE item.uid = %d $item_normal AND item.parent IN ( %s ) $sql_extra $sql_extra2 ", - intval(\App::$profile['profile_uid']), + intval(App::$profile['profile_uid']), dbesc($parents_str) ); if($items) { diff --git a/Zotlabs/Module/Cards.php b/Zotlabs/Module/Cards.php index f81d9324f..78cbad5fd 100644 --- a/Zotlabs/Module/Cards.php +++ b/Zotlabs/Module/Cards.php @@ -40,8 +40,11 @@ class Cards extends Controller { } if(! Apps::system_app_installed(App::$profile_uid, 'Cards')) { - $o = 'Cards App - Not Installed:
'; - $o .= 'Create personal planning cards'; + //Do not display any associated widgets at this point + App::$pdl = ''; + + $o = 'Cards App (Not Installed):
'; + $o .= t('Create personal planning cards'); return $o; } diff --git a/Zotlabs/Module/Webpages.php b/Zotlabs/Module/Webpages.php index 97ec55ba3..991c5ee71 100644 --- a/Zotlabs/Module/Webpages.php +++ b/Zotlabs/Module/Webpages.php @@ -1,19 +1,25 @@ 1 && argv(1) === 'sys' && is_site_admin()) { $sys = get_sys_channel(); if($sys && intval($sys['channel_id'])) { - \App::$is_sys = true; + App::$is_sys = true; } } @@ -29,23 +35,32 @@ class Webpages extends \Zotlabs\Web\Controller { function get() { - if(! \App::$profile) { + if(! App::$profile) { notice( t('Requested profile is not available.') . EOL ); - \App::$error = 404; + App::$error = 404; return; } + if(! Apps::system_app_installed(App::$profile_uid, 'Webpages')) { + //Do not display any associated widgets at this point + App::$pdl = ''; + + $o = 'Webpages App (Not Installed):
'; + $o .= t('Provide managed web pages on your channel'); + return $o; + } + nav_set_selected('Webpages'); $which = argv(1); - $_SESSION['return_url'] = \App::$query_string; + $_SESSION['return_url'] = App::$query_string; $uid = local_channel(); $owner = 0; - $observer = \App::get_observer(); + $observer = App::get_observer(); - $channel = \App::get_channel(); + $channel = App::get_channel(); switch ($_SESSION['action']) { case 'import': @@ -91,7 +106,7 @@ class Webpages extends \Zotlabs\Web\Controller { } - if(\App::$is_sys && is_site_admin()) { + if(App::$is_sys && is_site_admin()) { $sys = get_sys_channel(); if($sys && intval($sys['channel_id'])) { $uid = $owner = intval($sys['channel_id']); @@ -127,8 +142,8 @@ class Webpages extends \Zotlabs\Web\Controller { // 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)) { - $channel = \App::get_channel(); + if((! $channel) && ($uid) && ($uid == App::$profile_uid)) { + $channel = App::get_channel(); } if($channel) { $channel_acl = array( @@ -144,15 +159,15 @@ class Webpages extends \Zotlabs\Web\Controller { $is_owner = ($uid && $uid == $owner); - //$o = profile_tabs($a, $is_owner, \App::$profile['channel_address']); + //$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'], + '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, PermissionDescription::fromGlobalPermission('view_pages')) : ''), 'permissions' => $channel_acl, 'showacl' => (($is_owner) ? true : false), 'visitor' => true, @@ -280,7 +295,7 @@ class Webpages extends \Zotlabs\Web\Controller { notice( t('Invalid file type.') . EOL); return; } - $zip = new \ZipArchive(); + $zip = new ZipArchive(); if ($zip->open($source) === true) { $tmp_folder_name = random_string(5); $website = dirname($source) . '/' . $tmp_folder_name; @@ -297,7 +312,7 @@ class Webpages extends \Zotlabs\Web\Controller { // Website files are to be imported from the channel cloud files if (($_POST) && array_key_exists('path',$_POST) && isset($_POST['cloudsubmit'])) { - $channel = \App::get_channel(); + $channel = App::get_channel(); $dirpath = get_dirpath_by_cloudpath($channel, $_POST['path']); if(!$dirpath) { notice( t('Invalid folder path.') . EOL); @@ -343,7 +358,7 @@ class Webpages extends \Zotlabs\Web\Controller { case 'importselected': require_once('include/import.php'); - $channel = \App::get_channel(); + $channel = App::get_channel(); // Import layout first so that pages that reference new layouts will find // the mid of layout items in the database @@ -438,7 +453,7 @@ class Webpages extends \Zotlabs\Web\Controller { case 'cloud': case 'zipfile': - $channel = \App::get_channel(); + $channel = App::get_channel(); $tmp_folder_name = random_string(10); $zip_folder_name = random_string(10); @@ -657,7 +672,7 @@ class Webpages extends \Zotlabs\Web\Controller { } if($action === 'zipfile') { // Generate the zip file - \Zotlabs\Lib\ExtendedZip::zipTree($tmp_folderpath, $zip_filepath, \ZipArchive::CREATE); + 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"); @@ -666,7 +681,7 @@ class Webpages extends \Zotlabs\Web\Controller { if(isset($_SESSION['exportcloudpath'])) { require_once('include/attach.php'); $cloudpath = urldecode($_SESSION['exportcloudpath']); - $channel = \App::get_channel(); + $channel = App::get_channel(); $dirpath = get_dirpath_by_cloudpath($channel, $cloudpath); if(!$dirpath) { $x = attach_mkdirp($channel, $channel['channel_hash'], array('pathname' => $cloudpath)); diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php index 25ecb6a6a..828af8f83 100644 --- a/Zotlabs/Module/Wiki.php +++ b/Zotlabs/Module/Wiki.php @@ -2,15 +2,20 @@ namespace Zotlabs\Module; -use \Zotlabs\Lib as Zlib; -use \Michelf\MarkdownExtra; +use App; +use Zotlabs\Web\Controller; +use Zotlabs\Lib\Apps; +use Zotlabs\Lib\PermissionDescription; +use Zotlabs\Lib\NativeWiki; +use Zotlabs\Lib\NativeWikiPage; +use Zotlabs\Lib\MarkdownSoap; +use Michelf\MarkdownExtra; require_once('include/acl_selectors.php'); require_once('include/conversation.php'); require_once('include/bbcode.php'); - -class Wiki extends \Zotlabs\Web\Controller { +class Wiki extends Controller { private $wiki = null; @@ -40,10 +45,14 @@ class Wiki extends \Zotlabs\Web\Controller { return login(); } - if(! feature_enabled(\App::$profile_uid,'wiki')) { - notice( t('Not found') . EOL); - return; - } + if(! Apps::system_app_installed(App::$profile_uid, 'Wiki')) { + //Do not display any associated widgets at this point + App::$pdl = ''; + + $o = 'Wiki App (Not Installed):
'; + $o .= t('Provide a wiki for your channel'); + return $o; + } if(! perm_is_allowed(\App::$profile_uid,get_observer_hash(),'view_wiki')) { @@ -95,7 +104,7 @@ class Wiki extends \Zotlabs\Web\Controller { $owner['channel_deny_gid']) ? 'lock' : 'unlock' ), - 'acl' => populate_acl($owner_acl, false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_wiki')), + 'acl' => populate_acl($owner_acl, false, PermissionDescription::fromGlobalPermission('view_wiki')), 'allow_cid' => acl2json($owner_acl['allow_cid']), 'allow_gid' => acl2json($owner_acl['allow_gid']), 'deny_cid' => acl2json($owner_acl['deny_cid']), @@ -117,9 +126,9 @@ class Wiki extends \Zotlabs\Web\Controller { if((argc() > 3) && (argv(2) === 'download') && (argv(3) === 'wiki')) { $resource_id = argv(4); - $w = Zlib\NativeWiki::get_wiki($owner['channel_id'],$observer_hash,$resource_id); + $w = NativeWiki::get_wiki($owner['channel_id'],$observer_hash,$resource_id); -// $w = Zlib\NativeWiki::get_wiki($owner,$observer_hash,$resource_id); +// $w = NativeWiki::get_wiki($owner,$observer_hash,$resource_id); if(! $w['htmlName']) { notice(t('Error retrieving wiki') . EOL); } @@ -157,9 +166,9 @@ class Wiki extends \Zotlabs\Web\Controller { $content = html_entity_decode($iv['body'],ENT_COMPAT,'UTF-8'); } elseif($iv['mimetype'] === 'text/markdown') { - $content = html_entity_decode(Zlib\MarkdownSoap::unescape($iv['body']),ENT_COMPAT,'UTF-8'); + $content = html_entity_decode(MarkdownSoap::unescape($iv['body']),ENT_COMPAT,'UTF-8'); } - $fname = get_iconfig($iv['id'],'nwikipage','pagetitle') . Zlib\NativeWikiPage::get_file_ext($iv); + $fname = get_iconfig($iv['id'],'nwikipage','pagetitle') . NativeWikiPage::get_file_ext($iv); $zip->addFromString($fname,$content); $pages[] = $iv['mid']; } @@ -190,7 +199,7 @@ class Wiki extends \Zotlabs\Web\Controller { switch(argc()) { case 2: - $wikis = Zlib\NativeWiki::listwikis($owner, get_observer_hash()); + $wikis = NativeWiki::listwikis($owner, get_observer_hash()); if($wikis) { $o .= replace_macros(get_markup_template('wikilist.tpl'), array( @@ -256,7 +265,7 @@ class Wiki extends \Zotlabs\Web\Controller { $pageUrlName = urldecode($page_name); $langPageUrlName = urldecode(\App::$language . '/' . $page_name); - $w = Zlib\NativeWiki::exists_by_name($owner['channel_id'], $wikiUrlName); + $w = NativeWiki::exists_by_name($owner['channel_id'], $wikiUrlName); if(! $w['resource_id']) { notice(t('Wiki not found') . EOL); @@ -268,7 +277,7 @@ class Wiki extends \Zotlabs\Web\Controller { if(! $wiki_owner) { // Check for observer permissions $observer_hash = get_observer_hash(); - $perms = Zlib\NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); + $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); if(! $perms['read']) { notice(t('Permission denied.') . EOL); goaway(z_root() . '/' . argv(0) . '/' . argv(1)); @@ -289,10 +298,10 @@ class Wiki extends \Zotlabs\Web\Controller { $p = []; if(! $ignore_language) { - $p = Zlib\NativeWikiPage::get_page_content(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'resource_id' => $resource_id, 'pageUrlName' => $langPageUrlName)); + $p = NativeWikiPage::get_page_content(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'resource_id' => $resource_id, 'pageUrlName' => $langPageUrlName)); } if(! ($p && $p['success'])) { - $p = Zlib\NativeWikiPage::get_page_content(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName)); + $p = NativeWikiPage::get_page_content(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName)); } if(! ($p && $p['success'])) { $x = new \Zotlabs\Widget\Wiki_pages(); @@ -306,7 +315,7 @@ class Wiki extends \Zotlabs\Web\Controller { //json_return_and_die(array('pages' => $page_list_html, 'message' => '', 'success' => true)); notice( t('Error retrieving page content') . EOL); //goaway(z_root() . '/' . argv(0) . '/' . argv(1) ); - $renderedContent = Zlib\NativeWikiPage::convert_links($html, argv(0) . '/' . argv(1) . '/' . $wikiUrlName); + $renderedContent = NativeWikiPage::convert_links($html, argv(0) . '/' . argv(1) . '/' . $wikiUrlName); $showPageControls = $wiki_editor; } else { @@ -320,15 +329,15 @@ class Wiki extends \Zotlabs\Web\Controller { // Render the Markdown-formatted page content in HTML if($mimeType == 'text/bbcode') { - $renderedContent = Zlib\NativeWikiPage::convert_links(zidify_links(smilies(bbcode($content))), argv(0) . '/' . argv(1) . '/' . $wikiUrlName); + $renderedContent = NativeWikiPage::convert_links(zidify_links(smilies(bbcode($content))), argv(0) . '/' . argv(1) . '/' . $wikiUrlName); } elseif($mimeType === 'text/plain') { $renderedContent = str_replace(["\n",' ',"\t"],[EOL,' ','    '],htmlentities($content,ENT_COMPAT,'UTF-8',false)); } elseif($mimeType === 'text/markdown') { - $content = Zlib\MarkdownSoap::unescape($content); - $html = Zlib\NativeWikiPage::generate_toc(zidify_text(MarkdownExtra::defaultTransform(Zlib\NativeWikiPage::bbcode($content)))); - $renderedContent = Zlib\NativeWikiPage::convert_links($html, argv(0) . '/' . argv(1) . '/' . $wikiUrlName); + $content = MarkdownSoap::unescape($content); + $html = NativeWikiPage::generate_toc(zidify_text(MarkdownExtra::defaultTransform(NativeWikiPage::bbcode($content)))); + $renderedContent = NativeWikiPage::convert_links($html, argv(0) . '/' . argv(1) . '/' . $wikiUrlName); } $showPageControls = $wiki_editor; } @@ -413,23 +422,23 @@ class Wiki extends \Zotlabs\Web\Controller { $content = $_POST['content']; $resource_id = $_POST['resource_id']; - $w = Zlib\NativeWiki::get_wiki($owner['channel_id'],$observer_hash,$resource_id); + $w = NativeWiki::get_wiki($owner['channel_id'],$observer_hash,$resource_id); $wikiURL = argv(0) . '/' . argv(1) . '/' . $w['urlName']; $mimeType = $_POST['mimetype']; if($mimeType === 'text/bbcode') { - $html = Zlib\NativeWikiPage::convert_links(zidify_links(smilies(bbcode($content))),$wikiURL); + $html = NativeWikiPage::convert_links(zidify_links(smilies(bbcode($content))),$wikiURL); } elseif($mimeType === 'text/markdown') { - $bb = Zlib\NativeWikiPage::bbcode($content); - $x = new ZLib\MarkdownSoap($bb); + $bb = NativeWikiPage::bbcode($content); + $x = new MarkdownSoap($bb); $md = $x->clean(); - $md = ZLib\MarkdownSoap::unescape($md); + $md = MarkdownSoap::unescape($md); $html = MarkdownExtra::defaultTransform($md); - $html = Zlib\NativeWikiPage::generate_toc(zidify_text($html)); - $html = Zlib\NativeWikiPage::convert_links($html,$wikiURL); + $html = NativeWikiPage::generate_toc(zidify_text($html)); + $html = NativeWikiPage::convert_links($html,$wikiURL); } elseif($mimeType === 'text/plain') { $html = str_replace(["\n",' ',"\t"],[EOL,' ','    '],htmlentities($content,ENT_COMPAT,'UTF-8',false)); @@ -466,7 +475,7 @@ class Wiki extends \Zotlabs\Web\Controller { return; //not reached } - $exists = Zlib\NativeWiki::exists_by_name($owner['channel_id'], $wiki['urlName']); + $exists = NativeWiki::exists_by_name($owner['channel_id'], $wiki['urlName']); if($exists['id']) { notice( t('A wiki with this name already exists.') . EOL); goaway('/wiki'); @@ -476,15 +485,15 @@ class Wiki extends \Zotlabs\Web\Controller { // Get ACL for permissions $acl = new \Zotlabs\Access\AccessList($owner); $acl->set_from_array($_POST); - $r = Zlib\NativeWiki::create_wiki($owner, $observer_hash, $wiki, $acl); + $r = NativeWiki::create_wiki($owner, $observer_hash, $wiki, $acl); if($r['success']) { - Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$r['item_id'],$r['item']['resource_id']); - $homePage = Zlib\NativeWikiPage::create_page($owner['channel_id'],$observer_hash,'Home', $r['item']['resource_id'], $wiki['mimeType']); + NativeWiki::sync_a_wiki_item($owner['channel_id'],$r['item_id'],$r['item']['resource_id']); + $homePage = NativeWikiPage::create_page($owner['channel_id'],$observer_hash,'Home', $r['item']['resource_id'], $wiki['mimeType']); if(! $homePage['success']) { notice( t('Wiki created, but error creating Home page.')); goaway(z_root() . '/wiki/' . $nick . '/' . $wiki['urlName']); } - Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$homePage['item_id'],$r['item']['resource_id']); + NativeWiki::sync_a_wiki_item($owner['channel_id'],$homePage['item_id'],$r['item']['resource_id']); goaway(z_root() . '/wiki/' . $nick . '/' . $wiki['urlName'] . '/' . $homePage['page']['urlName']); } else { @@ -516,7 +525,7 @@ class Wiki extends \Zotlabs\Web\Controller { return; //not reached } - $wiki = Zlib\NativeWiki::exists_by_name($owner['channel_id'], urldecode($arr['urlName'])); + $wiki = NativeWiki::exists_by_name($owner['channel_id'], urldecode($arr['urlName'])); if($wiki['resource_id']) { @@ -525,9 +534,9 @@ class Wiki extends \Zotlabs\Web\Controller { $acl = new \Zotlabs\Access\AccessList($owner); $acl->set_from_array($_POST); - $r = Zlib\NativeWiki::update_wiki($owner['channel_id'], $observer_hash, $arr, $acl); + $r = NativeWiki::update_wiki($owner['channel_id'], $observer_hash, $arr, $acl); if($r['success']) { - Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$r['item_id'],$r['item']['resource_id']); + NativeWiki::sync_a_wiki_item($owner['channel_id'],$r['item_id'],$r['item']['resource_id']); goaway(z_root() . '/wiki/' . $nick); } else { @@ -549,9 +558,9 @@ class Wiki extends \Zotlabs\Web\Controller { json_return_and_die(array('message' => t('Wiki delete permission denied.'), 'success' => false)); } $resource_id = $_POST['resource_id']; - $deleted = Zlib\NativeWiki::delete_wiki($owner['channel_id'],$observer_hash,$resource_id); + $deleted = 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'],$resource_id); + NativeWiki::sync_a_wiki_item($owner['channel_id'],$deleted['item_id'],$resource_id); json_return_and_die(array('message' => '', 'success' => true)); } else { @@ -570,7 +579,7 @@ class Wiki extends \Zotlabs\Web\Controller { // Determine if observer has permission to create a page - $perms = Zlib\NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash, $mimetype); + $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash, $mimetype); if(! $perms['write']) { logger('Wiki write permission denied. ' . EOL); json_return_and_die(array('success' => false)); @@ -585,10 +594,10 @@ class Wiki extends \Zotlabs\Web\Controller { json_return_and_die(array('message' => 'Error creating page. Invalid name (' . print_r($_POST,true) . ').', 'success' => false)); } - $page = Zlib\NativeWikiPage::create_page($owner['channel_id'],$observer_hash, $name, $resource_id, $mimetype); + $page = NativeWikiPage::create_page($owner['channel_id'],$observer_hash, $name, $resource_id, $mimetype); if($page['item_id']) { - $commit = Zlib\NativeWikiPage::commit(array( + $commit = NativeWikiPage::commit(array( 'commit_msg' => t('New page created'), 'resource_id' => $resource_id, 'channel_id' => $owner['channel_id'], @@ -597,7 +606,7 @@ class Wiki extends \Zotlabs\Web\Controller { )); if($commit['success']) { - Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$commit['item_id'],$resource_id); + NativeWiki::sync_a_wiki_item($owner['channel_id'],$commit['item_id'],$resource_id); json_return_and_die(array('url' => '/' . argv(0) . '/' . argv(1) . '/' . urlencode($page['wiki']['urlName']) . '/' . urlencode($page['page']['urlName']), 'success' => true)); } else { @@ -616,7 +625,7 @@ class Wiki extends \Zotlabs\Web\Controller { if((argc() === 5) && (argv(2) === 'get') && (argv(3) === 'page') && (argv(4) === 'list')) { $resource_id = $_POST['resource_id']; // resource_id for wiki in db - $perms = Zlib\NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); + $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); if(!$perms['read']) { logger('Wiki read permission denied.' . EOL); json_return_and_die(array('pages' => null, 'message' => 'Permission denied.', 'success' => false)); @@ -648,16 +657,16 @@ class Wiki extends \Zotlabs\Web\Controller { } // Determine if observer has permission to save content - $perms = Zlib\NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); + $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); if(! $perms['write']) { logger('Wiki write permission denied. ' . EOL); json_return_and_die(array('success' => false)); } - $saved = Zlib\NativeWikiPage::save_page(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName, 'content' => $content)); + $saved = NativeWikiPage::save_page(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName, 'content' => $content)); if($saved['success']) { - $commit = Zlib\NativeWikiPage::commit(array( + $commit = NativeWikiPage::commit(array( 'commit_msg' => $commitMsg, 'pageUrlName' => $pageUrlName, 'resource_id' => $resource_id, @@ -667,7 +676,7 @@ class Wiki extends \Zotlabs\Web\Controller { )); if($commit['success']) { - Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$commit['item_id'],$resource_id); + NativeWiki::sync_a_wiki_item($owner['channel_id'],$commit['item_id'],$resource_id); json_return_and_die(array('message' => 'Wiki git repo commit made', 'success' => true)); } else { @@ -688,7 +697,7 @@ class Wiki extends \Zotlabs\Web\Controller { // Determine if observer has permission to read content - $perms = Zlib\NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); + $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); if(! $perms['read']) { logger('Wiki read permission denied.' . EOL); json_return_and_die(array('historyHTML' => '', 'message' => 'Permission denied.', 'success' => false)); @@ -720,15 +729,15 @@ class Wiki extends \Zotlabs\Web\Controller { json_return_and_die(array('success' => false)); } - $perms = Zlib\NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); + $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); if(! $perms['write']) { logger('Wiki write permission denied. ' . EOL); json_return_and_die(array('success' => false)); } - $deleted = Zlib\NativeWikiPage::delete_page(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName)); + $deleted = NativeWikiPage::delete_page(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName)); if($deleted['success']) { - Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$commit['item_id'],$resource_id); + NativeWiki::sync_a_wiki_item($owner['channel_id'],$commit['item_id'],$resource_id); json_return_and_die(array('message' => 'Wiki git repo commit made', 'success' => true)); } else { @@ -744,13 +753,13 @@ class Wiki extends \Zotlabs\Web\Controller { $commitHash = $_POST['commitHash']; // Determine if observer has permission to revert pages - $perms = Zlib\NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); + $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); if(! $perms['write']) { logger('Wiki write permission denied.' . EOL); json_return_and_die(array('success' => false)); } - $reverted = Zlib\NativeWikiPage::revert_page(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'commitHash' => $commitHash, 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName)); + $reverted = NativeWikiPage::revert_page(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'commitHash' => $commitHash, 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName)); if($reverted['success']) { json_return_and_die(array('content' => $reverted['content'], 'message' => '', 'success' => true)); } else { @@ -766,13 +775,13 @@ class Wiki extends \Zotlabs\Web\Controller { $currentCommit = $_POST['currentCommit']; // Determine if observer has permission to revert pages - $perms = Zlib\NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); + $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); if(!$perms['read']) { logger('Wiki read permission denied.' . EOL); json_return_and_die(array('success' => false)); } - $compare = Zlib\NativeWikiPage::compare_page(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'currentCommit' => $currentCommit, 'compareCommit' => $compareCommit, 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName)); + $compare = NativeWikiPage::compare_page(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'currentCommit' => $currentCommit, 'compareCommit' => $compareCommit, 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName)); if($compare['success']) { $diffHTML = '
' . t('Current Revision') . '' . t('Selected Revision') . '
' . $compare['diff']; json_return_and_die(array('diff' => $diffHTML, 'message' => '', 'success' => true)); @@ -794,16 +803,16 @@ class Wiki extends \Zotlabs\Web\Controller { } // Determine if observer has permission to rename pages - $perms = Zlib\NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); + $perms = NativeWiki::get_permissions($resource_id, intval($owner['channel_id']), $observer_hash); if(! $perms['write']) { logger('Wiki write permission denied. ' . EOL); json_return_and_die(array('success' => false)); } - $renamed = Zlib\NativeWikiPage::rename_page(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName, 'pageNewName' => $pageNewName)); + $renamed = NativeWikiPage::rename_page(array('channel_id' => $owner['channel_id'], 'observer_hash' => $observer_hash, 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName, 'pageNewName' => $pageNewName)); if($renamed['success']) { - $commit = Zlib\NativeWikiPage::commit(array( + $commit = NativeWikiPage::commit(array( 'channel_id' => $owner['channel_id'], 'commit_msg' => 'Renamed ' . urldecode($pageUrlName) . ' to ' . $renamed['page']['htmlName'], 'resource_id' => $resource_id, @@ -811,7 +820,7 @@ class Wiki extends \Zotlabs\Web\Controller { 'pageUrlName' => $pageNewName )); if($commit['success']) { - Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$commit['item_id'],$resource_id); + NativeWiki::sync_a_wiki_item($owner['channel_id'],$commit['item_id'],$resource_id); json_return_and_die(array('name' => $renamed['page'], 'message' => 'Wiki git repo commit made', 'success' => true)); } else { diff --git a/Zotlabs/Widget/Appstore.php b/Zotlabs/Widget/Appstore.php index 237707733..6a00ac06a 100644 --- a/Zotlabs/Widget/Appstore.php +++ b/Zotlabs/Widget/Appstore.php @@ -10,9 +10,9 @@ class Appstore { return replace_macros(get_markup_template('appstore.tpl'), [ '$title' => t('App Collections'), '$options' => [ - [ z_root() . '/apps/available', t('Available Apps'), $store ], - [ z_root() . '/apps', t('Installed apps'), 1 - $store ] + [ z_root() . '/apps', t('Installed apps'), 1 - $store ], + [ z_root() . '/apps/available', t('Available Apps'), $store ] ] ]); } -} \ No newline at end of file +} diff --git a/include/features.php b/include/features.php index 7e2c9a3ac..b7e1878c3 100644 --- a/include/features.php +++ b/include/features.php @@ -81,24 +81,6 @@ function get_features($filtered = true, $level = (-1)) { get_config('feature_lock','profile_export'), feature_level('profile_export',3), ], - - [ - 'webpages', - t('Web Pages'), - t('Provide managed web pages on your channel'), - false, - get_config('feature_lock','webpages'), - feature_level('webpages',3), - ], - - [ - 'wiki', - t('Wiki'), - t('Provide a wiki for your channel'), - false, - get_config('feature_lock','wiki'), - feature_level('wiki',2), - ], /* [ 'hide_rating', @@ -118,15 +100,6 @@ function get_features($filtered = true, $level = (-1)) { feature_level('private_notes',1), ], - [ - 'articles', - t('Articles'), - t('Create interactive articles'), - false, - get_config('feature_lock','articles'), - feature_level('articles',1), - ], - [ 'nav_channel_select', t('Navigation Channel Select'), From 184928204a264b231814b46ef294ef185dc0cdae Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Wed, 12 Sep 2018 11:14:49 +0200 Subject: [PATCH 04/16] Fix PHP Warning: DOMDocument::loadHTML(): htmlParseEntityRef: no name in Entity --- include/markdown.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/markdown.php b/include/markdown.php index e5f5b9369..0d810764f 100644 --- a/include/markdown.php +++ b/include/markdown.php @@ -295,6 +295,8 @@ function bb_to_markdown($Text, $options = []) { */ function html2markdown($html,$options = []) { $markdown = ''; + + $html = htmlspecialchars($html); $environment = Environment::createDefaultEnvironment($options); $environment->addConverter(new TableConverter()); From 57e3ee47ee02002239bab1cde5b68f741e6f0c08 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Wed, 12 Sep 2018 20:52:55 +0200 Subject: [PATCH 05/16] more feature to app transition --- app/articles.apd | 4 ++-- app/webpages.apd | 4 ++-- app/wiki.apd | 4 ++-- include/nav.php | 56 ++++++++++++++++++++++-------------------------- 4 files changed, 32 insertions(+), 36 deletions(-) diff --git a/app/articles.apd b/app/articles.apd index 5a9f17e0f..00b3c4a3c 100644 --- a/app/articles.apd +++ b/app/articles.apd @@ -1,6 +1,6 @@ -version: 1.2 +version: 1.3 url: $baseurl/articles/$nick name: Articles -requires: local_channel, articles +requires: local_channel photo: icon:file-text-o categories: nav_featured_app, Productivity diff --git a/app/webpages.apd b/app/webpages.apd index 46c6cdb5d..e98cc0794 100644 --- a/app/webpages.apd +++ b/app/webpages.apd @@ -1,6 +1,6 @@ -version: 1 +version: 1.1 url: $baseurl/webpages/$nick -requires: local_channel, webpages +requires: local_channel name: Webpages photo: icon:newspaper-o categories: nav_featured_app, Productivity diff --git a/app/wiki.apd b/app/wiki.apd index 48fcbe0c1..56edfde20 100644 --- a/app/wiki.apd +++ b/app/wiki.apd @@ -1,6 +1,6 @@ -version: 1 +version: 1.1 url: $baseurl/wiki/$nick -requires: local_channel, wiki +requires: local_channel name: Wiki photo: icon:pencil-square-o categories: nav_featured_app, Productivity diff --git a/include/nav.php b/include/nav.php index 56fe9b901..7520fd782 100644 --- a/include/nav.php +++ b/include/nav.php @@ -1,11 +1,11 @@ $item]; - Zlib\Apps::translate_system_apps($item); + Apps::translate_system_apps($item); App::$nav_sel['name'] = $item['name']; } - - function channel_apps($is_owner = false, $nickname = null) { // Don't provide any channel apps if we're running as the sys channel @@ -420,7 +418,7 @@ function channel_apps($is_owner = false, $nickname = null) { if ($p['chat'] && feature_enabled($uid,'ajaxchat')) { - $has_chats = ZLib\Chatroom::list_count($uid); + $has_chats = Chatroom::list_count($uid); if ($has_chats) { $tabs[] = [ 'label' => t('Chatrooms'), @@ -445,7 +443,7 @@ function channel_apps($is_owner = false, $nickname = null) { ]; } - if($p['view_pages'] && feature_enabled($uid,'cards')) { + if($p['view_pages'] && Apps::system_app_installed($uid, 'Cards')) { $tabs[] = [ 'label' => t('Cards'), 'url' => z_root() . '/cards/' . $nickname , @@ -456,7 +454,7 @@ function channel_apps($is_owner = false, $nickname = null) { ]; } - if($p['view_pages'] && feature_enabled($uid,'articles')) { + if($p['view_pages'] && Apps::system_app_installed($uid, 'Articles')) { $tabs[] = [ 'label' => t('Articles'), 'url' => z_root() . '/articles/' . $nickname , @@ -468,7 +466,7 @@ function channel_apps($is_owner = false, $nickname = null) { } - if($has_webpages && feature_enabled($uid,'webpages')) { + if($has_webpages && Apps::system_app_installed($uid, 'Webpages')) { $tabs[] = [ 'label' => t('Webpages'), 'url' => z_root() . '/page/' . $nickname . '/home', @@ -480,17 +478,15 @@ function channel_apps($is_owner = false, $nickname = null) { } - if ($p['view_wiki']) { - if(feature_enabled($uid,'wiki') && (get_account_techlevel($account_id) > 3)) { - $tabs[] = [ - 'label' => t('Wikis'), - 'url' => z_root() . '/wiki/' . $nickname, - 'sel' => ((argv(0) == 'wiki') ? 'active' : ''), - 'title' => t('Wiki'), - 'id' => 'wiki-tab', - 'icon' => 'pencil-square-o' - ]; - } + if ($p['view_wiki'] && Apps::system_app_installed($uid, 'Wiki')) { + $tabs[] = [ + 'label' => t('Wikis'), + 'url' => z_root() . '/wiki/' . $nickname, + 'sel' => ((argv(0) == 'wiki') ? 'active' : ''), + 'title' => t('Wiki'), + 'id' => 'wiki-tab', + 'icon' => 'pencil-square-o' + ]; } $arr = array('is_owner' => $is_owner, 'nickname' => $nickname, 'tab' => (($tab) ? $tab : false), 'tabs' => $tabs); From a1d5ce3716d09b7ccd81e252309ca9fd5e841b26 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Thu, 13 Sep 2018 10:59:37 +0200 Subject: [PATCH 06/16] remove profile_tabs() which has been deprecated and replaced by channel_apps() --- Zotlabs/Module/Bookmarks.php | 1 - Zotlabs/Module/Cal.php | 6 +- Zotlabs/Module/Chat.php | 1 - Zotlabs/Module/Photos.php | 3 - Zotlabs/Module/Sharedwithme.php | 1 - Zotlabs/Module/Webpages.php | 2 +- Zotlabs/Module/Wiki.php | 2 +- doc/hook/profile_tabs.bb | 1 - doc/hooklist.bb | 3 - doc/hooks.html | 2 +- include/conversation.php | 200 -------------------------------- include/nav.php | 2 +- 12 files changed, 5 insertions(+), 219 deletions(-) delete mode 100644 doc/hook/profile_tabs.bb diff --git a/Zotlabs/Module/Bookmarks.php b/Zotlabs/Module/Bookmarks.php index e147ffe6c..cea0d9759 100644 --- a/Zotlabs/Module/Bookmarks.php +++ b/Zotlabs/Module/Bookmarks.php @@ -71,7 +71,6 @@ class Bookmarks extends \Zotlabs\Web\Controller { $channel = \App::get_channel(); - //$o = profile_tabs($a,true,$channel['channel_address']); $o = ''; $o .= '
'; diff --git a/Zotlabs/Module/Cal.php b/Zotlabs/Module/Cal.php index c8403e979..87c13ef4e 100644 --- a/Zotlabs/Module/Cal.php +++ b/Zotlabs/Module/Cal.php @@ -88,9 +88,6 @@ class Cal extends \Zotlabs\Web\Controller { $o = ''; - //$tabs = profile_tabs($a, True, $channel['channel_address']); - $tabs = ''; - $mode = 'view'; $y = 0; $m = 0; @@ -347,8 +344,7 @@ class Cal extends \Zotlabs\Web\Controller { '$next' => t('Next'), '$today' => t('Today'), '$form' => $form, - '$expandform' => ((x($_GET,'expandform')) ? true : false), - '$tabs' => $tabs + '$expandform' => ((x($_GET,'expandform')) ? true : false) )); if (x($_GET,'id')){ echo $o; killme(); } diff --git a/Zotlabs/Module/Chat.php b/Zotlabs/Module/Chat.php index 378c9f4dd..71138e8d8 100644 --- a/Zotlabs/Module/Chat.php +++ b/Zotlabs/Module/Chat.php @@ -212,7 +212,6 @@ class Chat extends \Zotlabs\Web\Controller { require_once('include/conversation.php'); - //$o = profile_tabs($a,((local_channel() && local_channel() == \App::$profile['profile_uid']) ? true : false),\App::$profile['channel_address']); $o = ''; if(! feature_enabled(\App::$profile['profile_uid'],'ajaxchat')) { diff --git a/Zotlabs/Module/Photos.php b/Zotlabs/Module/Photos.php index 489bffc4a..f97f31ff7 100644 --- a/Zotlabs/Module/Photos.php +++ b/Zotlabs/Module/Photos.php @@ -620,10 +620,7 @@ class Photos extends \Zotlabs\Web\Controller { $o .= "\r\n"; - // tabs - $_is_owner = (local_channel() && (local_channel() == $owner_uid)); - //$o .= profile_tabs($a,$_is_owner, \App::$data['channel']['channel_address']); /** * Display upload form diff --git a/Zotlabs/Module/Sharedwithme.php b/Zotlabs/Module/Sharedwithme.php index 2c97e9726..c986f6695 100644 --- a/Zotlabs/Module/Sharedwithme.php +++ b/Zotlabs/Module/Sharedwithme.php @@ -97,7 +97,6 @@ class Sharedwithme extends \Zotlabs\Web\Controller { } - //$o = profile_tabs($a, $is_owner, $channel['channel_address']); $o = ''; $o .= replace_macros(get_markup_template('sharedwithme.tpl'), array( diff --git a/Zotlabs/Module/Webpages.php b/Zotlabs/Module/Webpages.php index 991c5ee71..c6599db3b 100644 --- a/Zotlabs/Module/Webpages.php +++ b/Zotlabs/Module/Webpages.php @@ -159,7 +159,7 @@ class Webpages extends Controller { $is_owner = ($uid && $uid == $owner); - //$o = profile_tabs($a, $is_owner, App::$profile['channel_address']); + $o = ''; $x = array( diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php index 828af8f83..0fb5a4605 100644 --- a/Zotlabs/Module/Wiki.php +++ b/Zotlabs/Module/Wiki.php @@ -118,7 +118,7 @@ class Wiki extends Controller { } $is_owner = ((local_channel()) && (local_channel() == \App::$profile['profile_uid']) ? true : false); - //$o = profile_tabs($a, $is_owner, \App::$profile['channel_address']); + $o = ''; // Download a wiki diff --git a/doc/hook/profile_tabs.bb b/doc/hook/profile_tabs.bb deleted file mode 100644 index 5b3e9e707..000000000 --- a/doc/hook/profile_tabs.bb +++ /dev/null @@ -1 +0,0 @@ -[h2]profile_tabs[/h2] diff --git a/doc/hooklist.bb b/doc/hooklist.bb index 34e19660e..1de9c330a 100644 --- a/doc/hooklist.bb +++ b/doc/hooklist.bb @@ -535,9 +535,6 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/profile_sidebar_enter]profile_sidebar_enter[/zrl] Called before generating the 'channel sidebar' or mini-profile -[zrl=[baseurl]/help/hook/profile_tabs]profile_tabs[/zrl] - Called when generating the tabs for channel related pages (channel,profile,files,etc.) - [zrl=[baseurl]/help/hook/queue_deliver]queue_deliver[/zrl] Called when delivering a queued message diff --git a/doc/hooks.html b/doc/hooks.html index 6009127f6..a7ee314e7 100644 --- a/doc/hooks.html +++ b/doc/hooks.html @@ -1 +1 @@ -

Hooks

FunctionSource FileArg
$a->module . _mod_aftercontentindex.php$arr
$a->module . _mod_contentindex.php$arr
$a->module . _mod_initindex.php$placeholder
$a->module . _mod_postindex.php$_POST
$a->module . _post_ . $selnameinclude/acl_selectors.php$o
$a->module . _post_ . $selnameinclude/acl_selectors.php$o
$a->module . _post_ . $selnameinclude/acl_selectors.php$o
$a->module . _pre_ . $selnameinclude/acl_selectors.php$arr
$a->module . _pre_ . $selnameinclude/acl_selectors.php$arr
$a->module . _pre_ . $selnameinclude/acl_selectors.php$arr
$nameinclude/plugin.php&$data = null
about_hookmod/siteinfo.php$o
accept_followmod/connedit.php$arr
account_downgradeinclude/account.php$ret
account_downgradeinclude/account.php$ret
account_settingsmod/settings.php$account_settings
activity_receivedinclude/zot.php$parr
affinity_labelsinclude/widgets.php$labels
affinity_labelsmod/connedit.php$labels
api_perm_is_allowedinclude/permissions.php$arr
app_menuindex.php$arr
atom_authorinclude/items.php$o
atom_entryinclude/items.php$o
atom_feedinclude/items.php$atom
atom_feed_endinclude/items.php$atom
attach_upload_fileinclude/attach.php$f
authenticateinclude/auth.php$addon_auth
avatar_lookupinclude/network.php$avatar
bb2diasporainclude/markdown.php$Text
bbcodeinclude/bbcode.php$Text
channel_removeinclude/Contact.php$r[0]
chat_messageinclude/chat.php$arr
chat_postmod/chatsvc.php$arr
check_account_emailinclude/account.php$arr
check_account_inviteinclude/account.php$arr
check_account_passwordinclude/account.php$arr
connect_premiummod/connect.php$arr
connector_settingsmod/settings.php$settings_connectors
construct_pageboot.php$arr
contact_block_endinclude/text.php$arr
contact_editmod/connedit.php$arr
contact_edit_postmod/connedit.php$_POST
contact_select_optionsinclude/acl_selectors.php$x
conversation_startinclude/conversation.php$cb
create_identityinclude/channel.php$newuid
croninclude/cronhooks.php$d
cron_dailyinclude/poller.phpdatetime_convert()
cron_weeklyinclude/poller.phpdatetime_convert()
directory_itemmod/directory.php$arr
discover_by_webbieinclude/network.php$arr
display_iteminclude/ItemObject.php$arr
display_iteminclude/conversation.php$arr
display_settingsmod/settings.php$o
display_settings_postmod/settings.php$_POST
donate_contributorsextend/addon/matrix/donate/donate.php$contributors
donate_pluginextend/addon/matrix/donate/donate.php$o
donate_sponsorsextend/addon/matrix/donate/donate.php$sponsors
dreport_is_storableinclude/zot.php$dr
drop_iteminclude/items.php$arr
enotifyinclude/enotify.php$h
enotify_mailinclude/enotify.php$datarray
enotify_storeinclude/enotify.php$datarray
event_createdinclude/event.php$event[id]
event_updatedinclude/event.php$event[id]
externals_url_selectinclude/externals.php$arr
feature_enabledinclude/features.php$arr
feature_settingsmod/settings.php$settings_addons
feature_settings_postmod/settings.php$_POST
followinclude/follow.php$arr
followinclude/follow.php$arr
follow_allowinclude/follow.php$x
gender_selectorinclude/profile_selectors.php$select
gender_selector_mininclude/profile_selectors.php$select
generate_mapinclude/text.php$arr
generate_named_mapinclude/text.php$arr
get_all_api_permsinclude/permissions.php$arr
get_all_permsinclude/permissions.php$arr
get_featuresinclude/features.php$arr
get_role_permsinclude/permissions.php$ret
get_widgetsboot.php$arr
get_widgetsboot.php$arr
global_permissionsinclude/permissions.php$ret
home_contentmod/home.php$o
home_initmod/home.php$ret
hostxrdmod/hostxrd.php$arr
html2bbcodeinclude/html2bbcode.php$message
identity_basic_exportinclude/channel.php$addon
import_author_xchaninclude/items.php$arr
import_channelmod/import.php$addon
import_directory_profileinclude/zot.php$d
import_xchaninclude/zot.php$arr
item_photo_menuinclude/conversation.php$args
item_storeinclude/items.php$d
item_storeinclude/items.php$arr
item_store_updateinclude/items.php$d
item_translateinclude/items.php$translate
item_translateinclude/items.php$translate
jot_networksinclude/acl_selectors.php$jotnets
jot_networksinclude/conversation.php$jotnets
jot_networksmod/editblock.php$jotnets
jot_networksmod/editpost.php$jotnets
jot_networksmod/editwebpage.php$jotnets
jot_networksmod/editlayout.php$jotnets
jot_toolinclude/conversation.php$jotplugins
jot_toolmod/editblock.php$jotplugins
jot_toolmod/editpost.php$jotplugins
jot_toolmod/editwebpage.php$jotplugins
jot_toolmod/editlayout.php$jotplugins
load_pdlboot.php$arr
local_dir_updateinclude/dir_fns.php$arr
logged_ininclude/oauth.php$a->user
logged_ininclude/api.php$a->user
logged_ininclude/security.php$a->account
logged_ininclude/security.php$user_record
logging_outinclude/auth.php$args
login_hookboot.php$o
magic_authmod/magic.php$arr
magic_auth_openid_successmod/openid.php$arr
magic_auth_openid_successmod/openid.php$arr
magic_auth_successmod/post.php$arr
main_sliderinclude/widgets.php$arr
marital_selectorinclude/profile_selectors.php$select
marital_selector_mininclude/profile_selectors.php$select
module_loadedindex.php$x
mood_verbsinclude/text.php$arr
navinclude/nav.php$x
network_content_initmod/network.php$arr
network_pingmod/ping.php$arr
network_tabsinclude/conversation.php$arr
network_to_nameinclude/contact_selectors.php$nets
notifier_endinclude/notifier.php$target_item
notifier_hubinclude/notifier.php$narr
notifier_normalinclude/deliver_hooks.php$r[0]
obj_verbsinclude/taxonomy.php$arr
oembed_probeinclude/oembed.php$x
page_content_topindex.php$a->page[content]
page_endindex.php$a->page[content]
page_headerinclude/nav.php$a->page[nav]
parse_atominclude/items.php$arr
parse_linkmod/linkinfo.php$arr
pdl_selectorinclude/comanche.php$arr
perm_is_allowedinclude/permissions.php$arr
permissions_createinclude/notifier.php$perm_update
permissions_updateinclude/notifier.php$perm_update
personal_xrdmod/xrd.php$arr
photo_post_endinclude/photos.php$ret
photo_post_endinclude/photos.php$ret
photo_upload_begininclude/attach.php$arr
photo_upload_begininclude/photos.php$args
photo_upload_endinclude/attach.php$ret
photo_upload_endinclude/attach.php$ret
photo_upload_endinclude/attach.php$ret
photo_upload_endinclude/attach.php$ret
photo_upload_endinclude/attach.php$ret
photo_upload_endinclude/photos.php$ret
photo_upload_endinclude/photos.php$ret
photo_upload_endinclude/photos.php$ret
photo_upload_endinclude/photos.php$ret
photo_upload_fileinclude/attach.php$f
photo_upload_fileinclude/photos.php$f
photo_upload_formmod/photos.php$ret
poke_verbsinclude/text.php$arr
post_localinclude/zot.php$arr
post_localinclude/items.php$arr
post_localmod/item.php$datarray
post_local_endinclude/items.php$arr
post_local_endinclude/attach.php$arr
post_local_endinclude/attach.php$arr
post_local_endextend/addon/matrix/randpost/randpost.php$x
post_local_endextend/addon/matrix/randpost/randpost.php$x
post_local_endmod/mood.php$arr
post_local_endmod/like.php$arr
post_local_endmod/item.php$datarray
post_local_endmod/subthread.php$arr
post_local_startmod/item.php$_REQUEST
post_mailinclude/items.php$arr
post_mail_endinclude/items.php$arr
post_remoteinclude/items.php$arr
post_remote_endinclude/items.php$arr
post_remote_updateinclude/items.php$arr
post_remote_update_endinclude/items.php$arr
prepare_bodyinclude/text.php$prep_arr
prepare_body_finalinclude/text.php$prep_arr
prepare_body_initinclude/text.php$item
probe_well_knowninclude/probe.php$ret
proc_runboot.php$arr
process_channel_sync_deliveryinclude/zot.php$addon
profile_advancedmod/profile.php$o
profile_editmod/profiles.php$arr
profile_photo_content_endmod/profile_photo.php$o
profile_postmod/profiles.php$_POST
profile_sidebarinclude/channel.php$arr
profile_sidebar_enterinclude/channel.php$profile
profile_tabsinclude/conversation.php$arr
register_accountinclude/account.php$result
render_locationinclude/conversation.php$locate
replace_macrosinclude/text.php$arr
reverse_magic_authmod/rmagic.php$arr
settings_accountmod/settings.php$_POST
settings_formmod/settings.php$o
settings_postmod/settings.php$_POST
sexpref_selectorinclude/profile_selectors.php$select
sexpref_selector_mininclude/profile_selectors.php$select
smilieinclude/text.php$params
smilieextend/addon/matrix/smileybutton/smileybutton.php$params
taggedinclude/items.php$arr
validate_channelnameinclude/channel.php$arr
webfingermod/wfinger.php$arr
well_knownmod/_well_known.php$arr
zidinclude/channel.php$arr
zid_initinclude/channel.php$arr
zot_fingerinclude/zot.php$ret

Generated Tue Nov 03 21:19:02 PST 2015

\ No newline at end of file +

Hooks

FunctionSource FileArg
$a->module . _mod_aftercontentindex.php$arr
$a->module . _mod_contentindex.php$arr
$a->module . _mod_initindex.php$placeholder
$a->module . _mod_postindex.php$_POST
$a->module . _post_ . $selnameinclude/acl_selectors.php$o
$a->module . _post_ . $selnameinclude/acl_selectors.php$o
$a->module . _post_ . $selnameinclude/acl_selectors.php$o
$a->module . _pre_ . $selnameinclude/acl_selectors.php$arr
$a->module . _pre_ . $selnameinclude/acl_selectors.php$arr
$a->module . _pre_ . $selnameinclude/acl_selectors.php$arr
$nameinclude/plugin.php&$data = null
about_hookmod/siteinfo.php$o
accept_followmod/connedit.php$arr
account_downgradeinclude/account.php$ret
account_downgradeinclude/account.php$ret
account_settingsmod/settings.php$account_settings
activity_receivedinclude/zot.php$parr
affinity_labelsinclude/widgets.php$labels
affinity_labelsmod/connedit.php$labels
api_perm_is_allowedinclude/permissions.php$arr
app_menuindex.php$arr
atom_authorinclude/items.php$o
atom_entryinclude/items.php$o
atom_feedinclude/items.php$atom
atom_feed_endinclude/items.php$atom
attach_upload_fileinclude/attach.php$f
authenticateinclude/auth.php$addon_auth
avatar_lookupinclude/network.php$avatar
bb2diasporainclude/markdown.php$Text
bbcodeinclude/bbcode.php$Text
channel_removeinclude/Contact.php$r[0]
chat_messageinclude/chat.php$arr
chat_postmod/chatsvc.php$arr
check_account_emailinclude/account.php$arr
check_account_inviteinclude/account.php$arr
check_account_passwordinclude/account.php$arr
connect_premiummod/connect.php$arr
connector_settingsmod/settings.php$settings_connectors
construct_pageboot.php$arr
contact_block_endinclude/text.php$arr
contact_editmod/connedit.php$arr
contact_edit_postmod/connedit.php$_POST
contact_select_optionsinclude/acl_selectors.php$x
conversation_startinclude/conversation.php$cb
create_identityinclude/channel.php$newuid
croninclude/cronhooks.php$d
cron_dailyinclude/poller.phpdatetime_convert()
cron_weeklyinclude/poller.phpdatetime_convert()
directory_itemmod/directory.php$arr
discover_by_webbieinclude/network.php$arr
display_iteminclude/ItemObject.php$arr
display_iteminclude/conversation.php$arr
display_settingsmod/settings.php$o
display_settings_postmod/settings.php$_POST
donate_contributorsextend/addon/matrix/donate/donate.php$contributors
donate_pluginextend/addon/matrix/donate/donate.php$o
donate_sponsorsextend/addon/matrix/donate/donate.php$sponsors
dreport_is_storableinclude/zot.php$dr
drop_iteminclude/items.php$arr
enotifyinclude/enotify.php$h
enotify_mailinclude/enotify.php$datarray
enotify_storeinclude/enotify.php$datarray
event_createdinclude/event.php$event[id]
event_updatedinclude/event.php$event[id]
externals_url_selectinclude/externals.php$arr
feature_enabledinclude/features.php$arr
feature_settingsmod/settings.php$settings_addons
feature_settings_postmod/settings.php$_POST
followinclude/follow.php$arr
followinclude/follow.php$arr
follow_allowinclude/follow.php$x
gender_selectorinclude/profile_selectors.php$select
gender_selector_mininclude/profile_selectors.php$select
generate_mapinclude/text.php$arr
generate_named_mapinclude/text.php$arr
get_all_api_permsinclude/permissions.php$arr
get_all_permsinclude/permissions.php$arr
get_featuresinclude/features.php$arr
get_role_permsinclude/permissions.php$ret
get_widgetsboot.php$arr
get_widgetsboot.php$arr
global_permissionsinclude/permissions.php$ret
home_contentmod/home.php$o
home_initmod/home.php$ret
hostxrdmod/hostxrd.php$arr
html2bbcodeinclude/html2bbcode.php$message
identity_basic_exportinclude/channel.php$addon
import_author_xchaninclude/items.php$arr
import_channelmod/import.php$addon
import_directory_profileinclude/zot.php$d
import_xchaninclude/zot.php$arr
item_photo_menuinclude/conversation.php$args
item_storeinclude/items.php$d
item_storeinclude/items.php$arr
item_store_updateinclude/items.php$d
item_translateinclude/items.php$translate
item_translateinclude/items.php$translate
jot_networksinclude/acl_selectors.php$jotnets
jot_networksinclude/conversation.php$jotnets
jot_networksmod/editblock.php$jotnets
jot_networksmod/editpost.php$jotnets
jot_networksmod/editwebpage.php$jotnets
jot_networksmod/editlayout.php$jotnets
jot_toolinclude/conversation.php$jotplugins
jot_toolmod/editblock.php$jotplugins
jot_toolmod/editpost.php$jotplugins
jot_toolmod/editwebpage.php$jotplugins
jot_toolmod/editlayout.php$jotplugins
load_pdlboot.php$arr
local_dir_updateinclude/dir_fns.php$arr
logged_ininclude/oauth.php$a->user
logged_ininclude/api.php$a->user
logged_ininclude/security.php$a->account
logged_ininclude/security.php$user_record
logging_outinclude/auth.php$args
login_hookboot.php$o
magic_authmod/magic.php$arr
magic_auth_openid_successmod/openid.php$arr
magic_auth_openid_successmod/openid.php$arr
magic_auth_successmod/post.php$arr
main_sliderinclude/widgets.php$arr
marital_selectorinclude/profile_selectors.php$select
marital_selector_mininclude/profile_selectors.php$select
module_loadedindex.php$x
mood_verbsinclude/text.php$arr
navinclude/nav.php$x
network_content_initmod/network.php$arr
network_pingmod/ping.php$arr
network_tabsinclude/conversation.php$arr
network_to_nameinclude/contact_selectors.php$nets
notifier_endinclude/notifier.php$target_item
notifier_hubinclude/notifier.php$narr
notifier_normalinclude/deliver_hooks.php$r[0]
obj_verbsinclude/taxonomy.php$arr
oembed_probeinclude/oembed.php$x
page_content_topindex.php$a->page[content]
page_endindex.php$a->page[content]
page_headerinclude/nav.php$a->page[nav]
parse_atominclude/items.php$arr
parse_linkmod/linkinfo.php$arr
pdl_selectorinclude/comanche.php$arr
perm_is_allowedinclude/permissions.php$arr
permissions_createinclude/notifier.php$perm_update
permissions_updateinclude/notifier.php$perm_update
personal_xrdmod/xrd.php$arr
photo_post_endinclude/photos.php$ret
photo_post_endinclude/photos.php$ret
photo_upload_begininclude/attach.php$arr
photo_upload_begininclude/photos.php$args
photo_upload_endinclude/attach.php$ret
photo_upload_endinclude/attach.php$ret
photo_upload_endinclude/attach.php$ret
photo_upload_endinclude/attach.php$ret
photo_upload_endinclude/attach.php$ret
photo_upload_endinclude/photos.php$ret
photo_upload_endinclude/photos.php$ret
photo_upload_endinclude/photos.php$ret
photo_upload_endinclude/photos.php$ret
photo_upload_fileinclude/attach.php$f
photo_upload_fileinclude/photos.php$f
photo_upload_formmod/photos.php$ret
poke_verbsinclude/text.php$arr
post_localinclude/zot.php$arr
post_localinclude/items.php$arr
post_localmod/item.php$datarray
post_local_endinclude/items.php$arr
post_local_endinclude/attach.php$arr
post_local_endinclude/attach.php$arr
post_local_endextend/addon/matrix/randpost/randpost.php$x
post_local_endextend/addon/matrix/randpost/randpost.php$x
post_local_endmod/mood.php$arr
post_local_endmod/like.php$arr
post_local_endmod/item.php$datarray
post_local_endmod/subthread.php$arr
post_local_startmod/item.php$_REQUEST
post_mailinclude/items.php$arr
post_mail_endinclude/items.php$arr
post_remoteinclude/items.php$arr
post_remote_endinclude/items.php$arr
post_remote_updateinclude/items.php$arr
post_remote_update_endinclude/items.php$arr
prepare_bodyinclude/text.php$prep_arr
prepare_body_finalinclude/text.php$prep_arr
prepare_body_initinclude/text.php$item
probe_well_knowninclude/probe.php$ret
proc_runboot.php$arr
process_channel_sync_deliveryinclude/zot.php$addon
profile_advancedmod/profile.php$o
profile_editmod/profiles.php$arr
profile_photo_content_endmod/profile_photo.php$o
profile_postmod/profiles.php$_POST
profile_sidebarinclude/channel.php$arr
profile_sidebar_enterinclude/channel.php$profile
register_accountinclude/account.php$result
render_locationinclude/conversation.php$locate
replace_macrosinclude/text.php$arr
reverse_magic_authmod/rmagic.php$arr
settings_accountmod/settings.php$_POST
settings_formmod/settings.php$o
settings_postmod/settings.php$_POST
sexpref_selectorinclude/profile_selectors.php$select
sexpref_selector_mininclude/profile_selectors.php$select
smilieinclude/text.php$params
smilieextend/addon/matrix/smileybutton/smileybutton.php$params
taggedinclude/items.php$arr
validate_channelnameinclude/channel.php$arr
webfingermod/wfinger.php$arr
well_knownmod/_well_known.php$arr
zidinclude/channel.php$arr
zid_initinclude/channel.php$arr
zot_fingerinclude/zot.php$ret

Generated Tue Nov 03 21:19:02 PST 2015

\ No newline at end of file diff --git a/include/conversation.php b/include/conversation.php index 4997bc2b7..1df46bd16 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -1757,206 +1757,6 @@ function network_tabs() { return replace_macros($tpl, array('$tabs' => $arr['tabs'])); } -/** - * @brief - * - * @param App $a - * @param boolean $is_owner default false - * @param string $nickname default null - * @return void|string - */ -function profile_tabs($a, $is_owner = false, $nickname = null){ - - // Don't provide any profile tabs if we're running as the sys channel - - if (App::$is_sys) - return; - - if (get_pconfig($uid, 'system', 'noprofiletabs')) - return; - - $channel = App::get_channel(); - - if (is_null($nickname)) - $nickname = $channel['channel_address']; - - - $uid = ((App::$profile['profile_uid']) ? App::$profile['profile_uid'] : local_channel()); - $account_id = ((App::$profile['profile_uid']) ? App::$profile['channel_account_id'] : App::$channel['channel_account_id']); - - if ($uid == local_channel()) - return; - - if($uid == local_channel()) { - $cal_link = ''; - } - else { - $cal_link = '/cal/' . $nickname; - } - - require_once('include/security.php'); - $sql_options = item_permissions_sql($uid); - - $r = q("select item.* from item left join iconfig on item.id = iconfig.iid - where item.uid = %d and iconfig.cat = 'system' and iconfig.v = '%s' - and item.item_delayed = 0 and item.item_deleted = 0 - and ( iconfig.k = 'WEBPAGE' and item_type = %d ) - $sql_options limit 1", - intval($uid), - dbesc('home'), - intval(ITEM_TYPE_WEBPAGE) - ); - - $has_webpages = (($r) ? true : false); - - if (x($_GET, 'tab')) - $tab = notags(trim($_GET['tab'])); - - $url = z_root() . '/channel/' . $nickname; - $pr = z_root() . '/profile/' . $nickname; - - $tabs = array( - array( - 'label' => t('Channel'), - 'url' => $url, - 'sel' => ((argv(0) == 'channel') ? 'active' : ''), - 'title' => t('Status Messages and Posts'), - 'id' => 'status-tab', - 'icon' => 'home' - ), - ); - - $p = get_all_perms($uid,get_observer_hash()); - - if ($p['view_profile']) { - $tabs[] = array( - 'label' => t('About'), - 'url' => $pr, - 'sel' => ((argv(0) == 'profile') ? 'active' : ''), - 'title' => t('Profile Details'), - 'id' => 'profile-tab', - 'icon' => 'user' - ); - } - if ($p['view_storage']) { - $tabs[] = array( - 'label' => t('Photos'), - 'url' => z_root() . '/photos/' . $nickname, - 'sel' => ((argv(0) == 'photos') ? 'active' : ''), - 'title' => t('Photo Albums'), - 'id' => 'photo-tab', - 'icon' => 'photo' - ); - $tabs[] = array( - 'label' => t('Files'), - 'url' => z_root() . '/cloud/' . $nickname, - 'sel' => ((argv(0) == 'cloud' || argv(0) == 'sharedwithme') ? 'active' : ''), - 'title' => t('Files and Storage'), - 'id' => 'files-tab', - 'icon' => 'folder-open' - ); - } - - if($p['view_stream'] && $cal_link) { - $tabs[] = array( - 'label' => t('Events'), - 'url' => z_root() . $cal_link, - 'sel' => ((argv(0) == 'cal' || argv(0) == 'events') ? 'active' : ''), - 'title' => t('Events'), - 'id' => 'event-tab', - 'icon' => 'calendar' - ); - } - - - if ($p['chat'] && feature_enabled($uid,'ajaxchat')) { - $has_chats = Zotlabs\Lib\Chatroom::list_count($uid); - if ($has_chats) { - $tabs[] = array( - 'label' => t('Chatrooms'), - 'url' => z_root() . '/chat/' . $nickname, - 'sel' => ((argv(0) == 'chat') ? 'active' : '' ), - 'title' => t('Chatrooms'), - 'id' => 'chat-tab', - 'icon' => 'comments-o' - ); - } - } - - require_once('include/menu.php'); - $has_bookmarks = menu_list_count(local_channel(),'',MENU_BOOKMARK) + menu_list_count(local_channel(),'',MENU_SYSTEM|MENU_BOOKMARK); - - if($is_owner && $has_bookmarks) { - $tabs[] = array( - 'label' => t('Bookmarks'), - 'url' => z_root() . '/bookmarks', - 'sel' => ((argv(0) == 'bookmarks') ? 'active' : ''), - 'title' => t('Saved Bookmarks'), - 'id' => 'bookmarks-tab', - 'icon' => 'bookmark' - ); - } - - if(feature_enabled($uid,'cards')) { - $tabs[] = array( - 'label' => t('Cards'), - 'url' => z_root() . '/cards/' . $nickname, - 'sel' => ((argv(0) == 'cards') ? 'active' : ''), - 'title' => t('View Cards'), - 'id' => 'cards-tab', - 'icon' => 'list' - ); - } - - if(feature_enabled($uid,'articles')) { - $tabs[] = array( - 'label' => t('articles'), - 'url' => z_root() . '/articles/' . $nickname, - 'sel' => ((argv(0) == 'articles') ? 'active' : ''), - 'title' => t('View Articles'), - 'id' => 'articles-tab', - 'icon' => 'file-text-o' - ); - } - - if($has_webpages && feature_enabled($uid,'webpages')) { - $tabs[] = array( - 'label' => t('Webpages'), - 'url' => z_root() . '/page/' . $nickname . '/home', - 'sel' => ((argv(0) == 'webpages') ? 'active' : ''), - 'title' => t('View Webpages'), - 'id' => 'webpages-tab', - 'icon' => 'newspaper-o' - ); - } - - - if ($p['view_wiki']) { - if(feature_enabled($uid,'wiki') && (get_account_techlevel($account_id) > 3)) { - $tabs[] = array( - 'label' => t('Wikis'), - 'url' => z_root() . '/wiki/' . $nickname, - 'sel' => ((argv(0) == 'wiki') ? 'active' : ''), - 'title' => t('Wiki'), - 'id' => 'wiki-tab', - 'icon' => 'pencil-square-o' - ); - } - } - - $arr = array('is_owner' => $is_owner, 'nickname' => $nickname, 'tab' => (($tab) ? $tab : false), 'tabs' => $tabs); - call_hooks('profile_tabs', $arr); - - $tpl = get_markup_template('profile_tabs.tpl'); - - return replace_macros($tpl, array( - '$tabs' => $arr['tabs'], - '$name' => App::$profile['channel_name'], - '$thumb' => App::$profile['thumb'] - )); -} - - function get_responses($conv_responses,$response_verbs,$ob,$item) { $ret = array(); diff --git a/include/nav.php b/include/nav.php index 7520fd782..15060a033 100644 --- a/include/nav.php +++ b/include/nav.php @@ -490,7 +490,7 @@ function channel_apps($is_owner = false, $nickname = null) { } $arr = array('is_owner' => $is_owner, 'nickname' => $nickname, 'tab' => (($tab) ? $tab : false), 'tabs' => $tabs); - call_hooks('profile_tabs', $arr); + call_hooks('channel_apps', $arr); return replace_macros(get_markup_template('profile_tabs.tpl'), From 56f88f2e30ef75fa7e41cbcbbc6344abc6b7d37d Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Thu, 13 Sep 2018 11:32:43 +0200 Subject: [PATCH 07/16] move chat from feature to apps --- Zotlabs/Lib/Apps.php | 2 +- Zotlabs/Module/Apps.php | 4 +-- Zotlabs/Module/Chat.php | 69 +++++++++++++++++++++++------------------ app/chat.apd | 6 ++-- include/features.php | 10 ------ include/nav.php | 2 +- 6 files changed, 46 insertions(+), 47 deletions(-) diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php index 860a799ef..6b87ac6cb 100644 --- a/Zotlabs/Lib/Apps.php +++ b/Zotlabs/Lib/Apps.php @@ -303,7 +303,7 @@ class Apps { 'Admin' => t('Site Admin'), 'Report Bug' => t('Report Bug'), 'View Bookmarks' => t('View Bookmarks'), - 'My Chatrooms' => t('My Chatrooms'), + 'Chatrooms' => t('Chatrooms'), 'Connections' => t('Connections'), 'Remote Diagnostics' => t('Remote Diagnostics'), 'Suggest Channels' => t('Suggest Channels'), diff --git a/Zotlabs/Module/Apps.php b/Zotlabs/Module/Apps.php index 11025ce6e..05b4495fc 100644 --- a/Zotlabs/Module/Apps.php +++ b/Zotlabs/Module/Apps.php @@ -50,8 +50,8 @@ class Apps extends \Zotlabs\Web\Controller { '$title' => (($available) ? t('Available Apps') : t('Installed Apps')), '$apps' => $apps, '$authed' => ((local_channel()) ? true : false), - '$manage' => (($available) ? '' : t('Manage apps')), - '$create' => (($mode == 'edit') ? t('Create new app') : '') + '$manage' => (($available) ? '' : t('Manage Apps')), + '$create' => (($mode == 'edit') ? t('Create Custom App') : '') )); } diff --git a/Zotlabs/Module/Chat.php b/Zotlabs/Module/Chat.php index 71138e8d8..551dc5e2a 100644 --- a/Zotlabs/Module/Chat.php +++ b/Zotlabs/Module/Chat.php @@ -1,13 +1,19 @@ 2) && (argv(2) === 'view')) { $which = $channel['channel_address']; @@ -49,16 +55,16 @@ class Chat extends \Zotlabs\Web\Controller { if((! $room) || (! local_channel())) return; - $channel = \App::get_channel(); + $channel = App::get_channel(); if($_POST['action'] === 'drop') { logger('delete chatroom'); - Zlib\Chatroom::destroy($channel,array('cr_name' => $room)); + Chatroom::destroy($channel,array('cr_name' => $room)); goaway(z_root() . '/chat/' . $channel['channel_address']); } - $acl = new \Zotlabs\Access\AccessList($channel); + $acl = new AccessList($channel); $acl->set_from_array($_REQUEST); $arr = $acl->get(); @@ -67,7 +73,7 @@ class Chat extends \Zotlabs\Web\Controller { if(intval($arr['expire']) < 0) $arr['expire'] = 0; - Zlib\Chatroom::create($channel,$arr); + Chatroom::create($channel,$arr); $x = q("select * from chatroom where cr_name = '%s' and cr_uid = %d limit 1", dbesc($room), @@ -88,26 +94,35 @@ class Chat extends \Zotlabs\Web\Controller { function get() { + + if(! Apps::system_app_installed(App::$profile_uid, 'Chatrooms')) { + //Do not display any associated widgets at this point + App::$pdl = ''; + + $o = 'Chatrooms App (Not Installed):
'; + $o .= t('Access Controlled Chatrooms'); + return $o; + } if(local_channel()) { - $channel = \App::get_channel(); - nav_set_selected('My Chatrooms'); + $channel = App::get_channel(); + nav_set_selected('Chatrooms'); } - $ob = \App::get_observer(); + $ob = App::get_observer(); $observer = get_observer_hash(); if(! $observer) { notice( t('Permission denied.') . EOL); return; } - if(! perm_is_allowed(\App::$profile['profile_uid'],$observer,'chat')) { + if(! perm_is_allowed(App::$profile['profile_uid'],$observer,'chat')) { notice( t('Permission denied.') . EOL); return; } if((argc() > 3) && intval(argv(2)) && (argv(3) === 'leave')) { - Zlib\Chatroom::leave($observer,argv(2),$_SERVER['REMOTE_ADDR']); + Chatroom::leave($observer,argv(2),$_SERVER['REMOTE_ADDR']); goaway(z_root() . '/channel/' . argv(1)); } @@ -160,16 +175,16 @@ class Chat extends \Zotlabs\Web\Controller { $room_id = intval(argv(2)); $bookmark_link = get_bookmark_link($ob); - $x = Zlib\Chatroom::enter($observer,$room_id,'online',$_SERVER['REMOTE_ADDR']); + $x = Chatroom::enter($observer,$room_id,'online',$_SERVER['REMOTE_ADDR']); if(! $x) return; $x = q("select * from chatroom where cr_id = %d and cr_uid = %d $sql_extra limit 1", intval($room_id), - intval(\App::$profile['profile_uid']) + intval(App::$profile['profile_uid']) ); if($x) { - $acl = new \Zotlabs\Access\AccessList(false); + $acl = new AccessList(false); $acl->set($x[0]); $private = $acl->is_private(); @@ -208,18 +223,12 @@ class Chat extends \Zotlabs\Web\Controller { )); return $o; } - - + require_once('include/conversation.php'); $o = ''; - - if(! feature_enabled(\App::$profile['profile_uid'],'ajaxchat')) { - notice( t('Feature disabled.') . EOL); - return $o; - } - $acl = new \Zotlabs\Access\AccessList($channel); + $acl = new AccessList($channel); $channel_acl = $acl->get(); $lockstate = (($channel_acl['allow_cid'] || $channel_acl['allow_gid'] || $channel_acl['deny_cid'] || $channel_acl['deny_gid']) ? 'lock' : 'unlock'); @@ -243,17 +252,17 @@ class Chat extends \Zotlabs\Web\Controller { )); } - $rooms = Zlib\Chatroom::roomlist(\App::$profile['profile_uid']); + $rooms = Chatroom::roomlist(App::$profile['profile_uid']); $o .= replace_macros(get_markup_template('chatrooms.tpl'), array( - '$header' => sprintf( t('%1$s\'s Chatrooms'), \App::$profile['fullname']), + '$header' => sprintf( t('%1$s\'s Chatrooms'), App::$profile['fullname']), '$name' => t('Name'), '$baseurl' => z_root(), - '$nickname' => \App::$profile['channel_address'], + '$nickname' => App::$profile['channel_address'], '$rooms' => $rooms, '$norooms' => t('No chatrooms available'), '$newroom' => t('Create New'), - '$is_owner' => ((local_channel() && local_channel() == \App::$profile['profile_uid']) ? 1 : 0), + '$is_owner' => ((local_channel() && local_channel() == App::$profile['profile_uid']) ? 1 : 0), '$chatroom_new' => $chatroom_new, '$expire' => t('Expiration'), '$expire_unit' => t('min') //minutes diff --git a/app/chat.apd b/app/chat.apd index b59d846a6..524c13bfd 100644 --- a/app/chat.apd +++ b/app/chat.apd @@ -1,6 +1,6 @@ -version: 1 +version: 1.1 url: $baseurl/chat/$nick -requires: local_channel, ajaxchat -name: My Chatrooms +requires: local_channel +name: Chatrooms photo: icon:comments-o categories: Productivity diff --git a/include/features.php b/include/features.php index b7e1878c3..5479be122 100644 --- a/include/features.php +++ b/include/features.php @@ -118,16 +118,6 @@ function get_features($filtered = true, $level = (-1)) { feature_level('photo_location',2), ], - [ - 'ajaxchat', - t('Access Controlled Chatrooms'), - t('Provide chatrooms and chat services with access control.'), - true, - get_config('feature_lock','ajaxchat'), - feature_level('ajaxchat',1), - ], - - [ 'smart_birthdays', t('Smart Birthdays'), diff --git a/include/nav.php b/include/nav.php index 15060a033..9afba7945 100644 --- a/include/nav.php +++ b/include/nav.php @@ -417,7 +417,7 @@ function channel_apps($is_owner = false, $nickname = null) { } - if ($p['chat'] && feature_enabled($uid,'ajaxchat')) { + if ($p['chat'] && Apps::system_app_installed($uid,'Chatrooms')) { $has_chats = Chatroom::list_count($uid); if ($has_chats) { $tabs[] = [ From 869534fafa543a76e58c32d5aa8f674217682162 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Thu, 13 Sep 2018 11:53:59 +0200 Subject: [PATCH 08/16] remove network_tabs() which has been deprecated and replaced by activity_{order, filters} widgets --- Zotlabs/Module/Network.php | 12 +-- Zotlabs/Widget/Activity_filter.php | 2 +- Zotlabs/Widget/Activity_order.php | 2 +- doc/hook/network_tabs.bb | 1 - doc/hooklist.bb | 9 ++- include/conversation.php | 113 ----------------------------- 6 files changed, 12 insertions(+), 127 deletions(-) delete mode 100644 doc/hook/network_tabs.bb diff --git a/Zotlabs/Module/Network.php b/Zotlabs/Module/Network.php index c3db15ef2..ffe605538 100644 --- a/Zotlabs/Module/Network.php +++ b/Zotlabs/Module/Network.php @@ -167,8 +167,6 @@ class Network extends \Zotlabs\Web\Controller { } if(! $update) { - $tabs = ''; //network_tabs(); - $o .= $tabs; // search terms header if($search) { @@ -256,8 +254,7 @@ class Network extends \Zotlabs\Web\Controller { )); } - $o = $tabs; - $o .= $title; + $o = $title; $o .= $status_editor; } @@ -283,8 +280,7 @@ class Network extends \Zotlabs\Web\Controller { '$title' => '' . urlencode($cid_r[0]['xchan_name']) . ' ' . $cid_r[0]['xchan_name'] . '' )); - $o = $tabs; - $o .= $title; + $o = $title; $o .= $status_editor; } elseif($xchan) { @@ -297,8 +293,8 @@ class Network extends \Zotlabs\Web\Controller { $title = replace_macros(get_markup_template("section_title.tpl"),array( '$title' => '' . urlencode($r[0]['xchan_name']) . ' ' . $r[0]['xchan_name'] . '' )); - $o = $tabs; - $o .= $title; + + $o = $title; $o .= $status_editor; } diff --git a/Zotlabs/Widget/Activity_filter.php b/Zotlabs/Widget/Activity_filter.php index fadf39144..d725f8b55 100644 --- a/Zotlabs/Widget/Activity_filter.php +++ b/Zotlabs/Widget/Activity_filter.php @@ -180,7 +180,7 @@ class Activity_filter { $arr = ['tabs' => $tabs]; - call_hooks('network_tabs', $arr); + call_hooks('activity_filter', $arr); $o = ''; diff --git a/Zotlabs/Widget/Activity_order.php b/Zotlabs/Widget/Activity_order.php index 27d1a971a..2dceee70e 100644 --- a/Zotlabs/Widget/Activity_order.php +++ b/Zotlabs/Widget/Activity_order.php @@ -110,7 +110,7 @@ class Activity_order { $arr = ['tabs' => $tabs]; - call_hooks('network_tabs', $arr); + call_hooks('activity_order', $arr); $o = ''; diff --git a/doc/hook/network_tabs.bb b/doc/hook/network_tabs.bb deleted file mode 100644 index 677d7f2b9..000000000 --- a/doc/hook/network_tabs.bb +++ /dev/null @@ -1 +0,0 @@ -[h2]network_tabs[/h2] diff --git a/doc/hooklist.bb b/doc/hooklist.bb index 1de9c330a..4b36fa3e0 100644 --- a/doc/hooklist.bb +++ b/doc/hooklist.bb @@ -31,6 +31,12 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/account_settings_post]account_settings_post[/zrl] Called when posting from the account settings form +[zrl=[baseurl]/help/hook/activity_filter]activity_filter[/zrl] + Called when generating the list of filters for the network page + +[zrl=[baseurl]/help/hook/activity_order]activity_order[/zrl] + Called when generating the list of order options for the network page + [zrl=[baseurl]/help/hook/activity_received]activity_received[/zrl] Called when an activity (post, comment, like, etc.) has been received from a zot source @@ -394,9 +400,6 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/network_ping]network_ping[/zrl] Called during a ping request -[zrl=[baseurl]/help/hook/network_tabs]network_tabs[/zrl] - Called when generating the list of tabs for the network page - [zrl=[baseurl]/help/hook/network_to_name]network_to_name[/zrl] Deprecated diff --git a/include/conversation.php b/include/conversation.php index 1df46bd16..28a339479 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -1644,119 +1644,6 @@ function prepare_page($item) { )); } - -function network_tabs() { - - $no_active=''; - $starred_active = ''; - $new_active = ''; - $all_active = ''; - $search_active = ''; - $conv_active = ''; - $spam_active = ''; - $postord_active = ''; - - if(x($_GET,'new')) { - $new_active = 'active'; - } - - if(x($_GET,'search')) { - $search_active = 'active'; - } - - if(x($_GET,'star')) { - $starred_active = 'active'; - } - - if(x($_GET,'conv')) { - $conv_active = 'active'; - } - - if(x($_GET,'spam')) { - $spam_active = 'active'; - } - - if (($new_active == '') - && ($starred_active == '') - && ($conv_active == '') - && ($search_active == '') - && ($spam_active == '')) { - $no_active = 'active'; - } - - if ($no_active=='active' && x($_GET,'order')) { - switch($_GET['order']){ - case 'post': $postord_active = 'active'; $no_active=''; break; - case 'comment' : $all_active = 'active'; $no_active=''; break; - } - } - - if ($no_active=='active') $all_active='active'; - - $cmd = App::$cmd; - - // tabs - $tabs = array(); - - $tabs[] = array( - 'label' => t('Commented Order'), - 'url'=>z_root() . '/' . $cmd . '?f=&order=comment' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . ((x($_GET,'gid')) ? '&gid=' . $_GET['gid'] : ''), - 'sel'=>$all_active, - 'title'=> t('Sort by Comment Date'), - ); - - $tabs[] = array( - 'label' => t('Posted Order'), - 'url'=>z_root() . '/' . $cmd . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . ((x($_GET,'gid')) ? '&gid=' . $_GET['gid'] : ''), - 'sel'=>$postord_active, - 'title' => t('Sort by Post Date'), - ); - - if(feature_enabled(local_channel(),'personal_tab')) { - $tabs[] = array( - 'label' => t('Personal'), - 'url' => z_root() . '/' . $cmd . '?f=' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . '&conv=1', - 'sel' => $conv_active, - 'title' => t('Posts that mention or involve you'), - ); - } - - if(feature_enabled(local_channel(),'new_tab')) { - $tabs[] = array( - 'label' => t('New'), - 'url' => z_root() . '/' . $cmd . '?f=' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . '&new=1' . ((x($_GET,'gid')) ? '&gid=' . $_GET['gid'] : ''), - 'sel' => $new_active, - 'title' => t('Activity Stream - by date'), - ); - } - - if(feature_enabled(local_channel(),'star_posts')) { - $tabs[] = array( - 'label' => t('Starred'), - 'url'=>z_root() . '/' . $cmd . '/?f=' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . '&star=1', - 'sel'=>$starred_active, - 'title' => t('Favourite Posts'), - ); - } - // Not yet implemented - - if(feature_enabled(local_channel(),'spam_filter')) { - $tabs[] = array( - 'label' => t('Spam'), - 'url'=> z_root() . '/network?f=&spam=1', - 'sel'=> $spam_active, - 'title' => t('Posts flagged as SPAM'), - ); - } - - $arr = array('tabs' => $tabs); - call_hooks('network_tabs', $arr); - - $tpl = get_markup_template('common_tabs.tpl'); - - return replace_macros($tpl, array('$tabs' => $arr['tabs'])); -} - function get_responses($conv_responses,$response_verbs,$ob,$item) { $ret = array(); From c2f6f87caead4fdd917ab350ad1707fe2226ad8b Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Thu, 13 Sep 2018 11:55:37 +0200 Subject: [PATCH 09/16] add activity_filter and activity_order .bb files --- doc/hook/activity_filter.bb | 1 + doc/hook/activity_order.bb | 1 + 2 files changed, 2 insertions(+) create mode 100644 doc/hook/activity_filter.bb create mode 100644 doc/hook/activity_order.bb diff --git a/doc/hook/activity_filter.bb b/doc/hook/activity_filter.bb new file mode 100644 index 000000000..9d0768577 --- /dev/null +++ b/doc/hook/activity_filter.bb @@ -0,0 +1 @@ +[h2]activity_filter[/h2] diff --git a/doc/hook/activity_order.bb b/doc/hook/activity_order.bb new file mode 100644 index 000000000..4a4670d03 --- /dev/null +++ b/doc/hook/activity_order.bb @@ -0,0 +1 @@ +[h2]activity_order[/h2] From f9d43479f29d350b8d0aaf19a0773e372ff3e542 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Thu, 13 Sep 2018 15:14:46 +0200 Subject: [PATCH 10/16] css issues --- view/tpl/follow.tpl | 2 +- view/tpl/peoplefind.tpl | 2 +- view/tpl/searchbox.tpl | 2 +- view/tpl/wiki.tpl | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/view/tpl/follow.tpl b/view/tpl/follow.tpl index 2fb753784..bccb25068 100755 --- a/view/tpl/follow.tpl +++ b/view/tpl/follow.tpl @@ -2,7 +2,7 @@

{{$connect}}

- +
diff --git a/view/tpl/peoplefind.tpl b/view/tpl/peoplefind.tpl index b4d9ef19f..206be694e 100755 --- a/view/tpl/peoplefind.tpl +++ b/view/tpl/peoplefind.tpl @@ -2,7 +2,7 @@

{{$findpeople}}

- +
diff --git a/view/tpl/searchbox.tpl b/view/tpl/searchbox.tpl index abcdb8933..2fcf3e374 100644 --- a/view/tpl/searchbox.tpl +++ b/view/tpl/searchbox.tpl @@ -1,7 +1,7 @@
- +
{{if $savedsearch}} diff --git a/view/tpl/wiki.tpl b/view/tpl/wiki.tpl index 0f725749f..2aabc7b5f 100644 --- a/view/tpl/wiki.tpl +++ b/view/tpl/wiki.tpl @@ -66,7 +66,7 @@ {{if $showPageControls}}