From bced63e8237329ddaa6a5271589cbba50bd31448 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 19 Sep 2017 13:25:34 -0700 Subject: [PATCH 1/8] call the follow_accept hook when desired --- Zotlabs/Daemon/Notifier.php | 2 +- Zotlabs/Module/Connedit.php | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php index 54d609ad1..5f8490b06 100644 --- a/Zotlabs/Daemon/Notifier.php +++ b/Zotlabs/Daemon/Notifier.php @@ -161,7 +161,7 @@ class Notifier { $packet_type = 'keychange'; $normal_mode = false; } - elseif($cmd == 'permission_update' || $cmd == 'permission_reject' || $cmd == 'permission_accept' || $cmd == 'permission_create') { + elseif(in_array($cmd, [ 'permission_update', 'permission_reject', 'permission_accept', 'permission_create' ])) { // Get the (single) recipient $r = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_id = %d and abook_self = 0", intval($item_id) diff --git a/Zotlabs/Module/Connedit.php b/Zotlabs/Module/Connedit.php index 0f18b432d..23c5282e3 100644 --- a/Zotlabs/Module/Connedit.php +++ b/Zotlabs/Module/Connedit.php @@ -248,6 +248,10 @@ class Connedit extends \Zotlabs\Web\Controller { notice( t('Failed to update connection record.') . EOL); if(! intval(\App::$poi['abook_self'])) { + if($new_friend) { + \Zotlabs\Daemon\Master::Summon( [ 'Notifier', 'permission_accept', $contact_id ] ); + } + \Zotlabs\Daemon\Master::Summon( [ 'Notifier', (($new_friend) ? 'permission_create' : 'permission_update'), From 72a19a14aff7a13a8c1fb10e773784643f68d234 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 19 Sep 2017 17:35:57 -0700 Subject: [PATCH 2/8] turn common friends into a widget --- Zotlabs/Module/Channel.php | 2 +- Zotlabs/Widget/Common_friends.php | 19 +++++++++++++++ include/contact_widgets.php | 19 ++++++++------- view/pdl/mod_channel.pdl | 3 +++ view/tpl/common_friends.tpl | 2 +- view/tpl/remote_friends_common.tpl | 39 ++++++++++++++++++------------ 6 files changed, 57 insertions(+), 27 deletions(-) create mode 100644 Zotlabs/Widget/Common_friends.php diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php index 4ffc9ffc6..8550c69cd 100644 --- a/Zotlabs/Module/Channel.php +++ b/Zotlabs/Module/Channel.php @@ -123,7 +123,7 @@ class Channel extends \Zotlabs\Web\Controller { //$o .= profile_tabs($a, $is_owner, \App::$profile['channel_address']); - $o .= common_friends_visitor_widget(\App::$profile['profile_uid']); + // $o .= common_friends_visitor_widget(\App::$profile['profile_uid']); if($channel && $is_owner) { $channel_acl = array( diff --git a/Zotlabs/Widget/Common_friends.php b/Zotlabs/Widget/Common_friends.php new file mode 100644 index 000000000..a67b9312c --- /dev/null +++ b/Zotlabs/Widget/Common_friends.php @@ -0,0 +1,19 @@ + sprintf( tt("%d connection in common", "%d connections in common", $t), $t), - '$base' => z_root(), - '$uid' => $profile_uid, - '$cid' => $observer, - '$linkmore' => (($t > 5) ? 'true' : ''), - '$more' => t('show more'), - '$items' => $r + '$desc' => sprintf( t('Common connections: %d'), $t), + '$base' => z_root(), + '$uid' => $profile_uid, + '$cid' => $observer, + '$linkmore' => (($t > $cnt) ? 'true' : ''), + '$more' => t('show more'), + '$items' => $r )); }; diff --git a/view/pdl/mod_channel.pdl b/view/pdl/mod_channel.pdl index 98dc71915..54c2fb489 100644 --- a/view/pdl/mod_channel.pdl +++ b/view/pdl/mod_channel.pdl @@ -7,4 +7,7 @@ [widget=categories][/widget] [widget=tagcloud_wall][var=limit]24[/var][/widget] [/region] +[region=content] +[widget=common_friends][/widget] +[/region] diff --git a/view/tpl/common_friends.tpl b/view/tpl/common_friends.tpl index 489717e78..fa2cf5a13 100755 --- a/view/tpl/common_friends.tpl +++ b/view/tpl/common_friends.tpl @@ -1,4 +1,4 @@ -
+
{{$name}} diff --git a/view/tpl/remote_friends_common.tpl b/view/tpl/remote_friends_common.tpl index d6d2fd211..7ec1a2e6b 100755 --- a/view/tpl/remote_friends_common.tpl +++ b/view/tpl/remote_friends_common.tpl @@ -1,21 +1,28 @@ -
- - {{if $items}} - {{foreach $items as $item}} -
-
- - {{$item.xchan_name}} - +
+
+ -
-
- {{$item.xchan_name}} +
+ {{if $items}} + {{foreach $items as $item}} +
+
+ + {{$item.xchan_name}} + +
+
+ +
+
+ {{/foreach}} + {{/if}} +
+ {{if $linkmore}}{{/if}}
-
- {{/foreach}} - {{/if}} -
From b0cdec0c35136db8cbb0cf13135a1f5cc8d1bc05 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 19 Sep 2017 19:15:15 -0700 Subject: [PATCH 3/8] perform caching of jsonld schemas --- Zotlabs/Lib/LDSignatures.php | 2 ++ include/network.php | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/Zotlabs/Lib/LDSignatures.php b/Zotlabs/Lib/LDSignatures.php index fa2758044..77e2ef332 100644 --- a/Zotlabs/Lib/LDSignatures.php +++ b/Zotlabs/Lib/LDSignatures.php @@ -82,6 +82,8 @@ class LDSignatures { if(! is_object($data)) return ''; + jsonld_set_document_loader('jsonld_document_loader'); + return jsonld_normalize($data,[ 'algorithm' => 'URDNA2015', 'format' => 'application/nquads' ]); } diff --git a/include/network.php b/include/network.php index da1afc3ac..7e2dbf4cf 100644 --- a/include/network.php +++ b/include/network.php @@ -1943,4 +1943,35 @@ function getBestSupportedMimeType($mimeTypes = null, $acceptedTypes = false) { } // no mime-type found return null; +} + + +function jsonld_document_loader($url) { + + // perform caching for jsonld normaliser + + require_once('library/jsonld/jsonld.php'); + + $cachepath = 'store/[data]/ldcache'; + if(! is_dir($cachepath)) + os_mkdir($cachepath,STORAGE_DEFAULT_PERMISSIONS,true); + + $filename = $cachepath . '/' . urlencode($url); + if(file_exists($filename) && filemtime($filename) > time() - (12 * 60 * 60)) { + return json_decode(file_get_contents($filename)); + } + + $r = jsonld_default_document_loader($url); + if($r) { + file_put_contents($filename,json_encode($r)); + return $r; + } + + logger('not found'); + if(file_exists($filename)) { + return json_decode(file_get_contents($filename)); + } + + return []; + } \ No newline at end of file From 00fe4e747f9884ab11fe94621f645fc351285964 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 19 Sep 2017 21:40:38 -0700 Subject: [PATCH 4/8] use frozen jsonld contexts --- Zotlabs/Lib/ActivityStreams.php | 10 +++++----- Zotlabs/Lib/LDSignatures.php | 4 +++- boot.php | 2 ++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Zotlabs/Lib/ActivityStreams.php b/Zotlabs/Lib/ActivityStreams.php index d9735881a..1b9f82ddf 100644 --- a/Zotlabs/Lib/ActivityStreams.php +++ b/Zotlabs/Lib/ActivityStreams.php @@ -58,7 +58,7 @@ class ActivityStreams { $this->saved_recips = $arr; } - function collect_recips($base = '',$namespace = 'https://www.w3.org/ns/activitystreams') { + function collect_recips($base = '',$namespace = ACTIVITYSTREAMS_JSONLD_REV) { $x = []; $fields = [ 'to','cc','bto','bcc','audience']; foreach($fields as $f) { @@ -75,7 +75,7 @@ class ActivityStreams { return $x; } - function expand($arr,$base = '',$namespace = 'https://www.w3.org/ns/activitystreams') { + function expand($arr,$base = '',$namespace = ACTIVITYSTREAMS_JSONLD_REV) { $ret = []; // right now use a hardwired recursion depth of 5 @@ -135,7 +135,7 @@ class ActivityStreams { } - function get_property_obj($property,$base = '',$namespace = 'https://www.w3.org/ns/activitystreams') { + function get_property_obj($property,$base = '',$namespace = ACTIVITYSTREAMS_JSONLD_REV ) { $prefix = $this->get_namespace($base,$namespace); if($prefix === null) return null; @@ -158,7 +158,7 @@ class ActivityStreams { return null; } - function get_compound_property($property,$base = '',$namespace = 'https://www.w3.org/ns/activitystreams') { + function get_compound_property($property,$base = '',$namespace = ACTIVITYSTREAMS_JSONLD_REV) { $x = $this->get_property_obj($property,$base,$namespace); if($this->is_url($x)) { $x = $this->fetch_property($x); @@ -173,7 +173,7 @@ class ActivityStreams { return false; } - function get_primary_type($base = '',$namespace = 'https://www.w3.org/ns/activitystreams') { + function get_primary_type($base = '',$namespace = ACTIVITYSTREAMS_JSONLD_REV) { if(! $base) $base = $this->data; $x = $this->get_property_obj('type',$base,$namespace); diff --git a/Zotlabs/Lib/LDSignatures.php b/Zotlabs/Lib/LDSignatures.php index 77e2ef332..31ffd71f1 100644 --- a/Zotlabs/Lib/LDSignatures.php +++ b/Zotlabs/Lib/LDSignatures.php @@ -35,7 +35,9 @@ class LDSignatures { $options['signatureValue'] = base64_encode(rsa_sign($ohash . $dhash,$channel['channel_prvkey'])); $signed = array_merge([ - '@context' => [ 'https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1' ], + '@context' => [ + ACTIVITYSTREAMS_JSONLD_REV, + 'https://w3id.org/security/v1' ], ],$options); return $signed; diff --git a/boot.php b/boot.php index e4738bd34..b6a33b808 100755 --- a/boot.php +++ b/boot.php @@ -456,6 +456,8 @@ define ( 'NAMESPACE_STATUSNET', 'http://status.net/schema/api/1/' ); define ( 'NAMESPACE_ATOM1', 'http://www.w3.org/2005/Atom' ); define ( 'NAMESPACE_YMEDIA', 'http://search.yahoo.com/mrss/' ); +define ( 'ACTIVITYSTREAMS_JSONLD_REV', 'https://www.w3.org/ns/activitystreams-history/v1.8.jsonld' ); +define ( 'ZOT_APSCHEMA_REV', '/apschema/v1.2' ); /** * activity stream defines */ From 61d9b34929adc831eb780fd3410660eb98c114a9 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 19 Sep 2017 23:30:52 -0700 Subject: [PATCH 5/8] use mimetype text description rather than technical name in dropdown choices, found bug in mimetype selection option code --- Zotlabs/Widget/Wiki_pages.php | 3 ++- include/text.php | 16 ++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Zotlabs/Widget/Wiki_pages.php b/Zotlabs/Widget/Wiki_pages.php index f98081da0..b4928ede5 100644 --- a/Zotlabs/Widget/Wiki_pages.php +++ b/Zotlabs/Widget/Wiki_pages.php @@ -53,7 +53,8 @@ class Wiki_pages { '$addnew' => t('Add new page'), '$typelock' => $typelock, '$lockedtype' => $w['mimeType'], - '$mimetype' => mimetype_select(0,$w['mimeType'], [ 'text/markdown','text/bbcode', 'text/plain' ]), + '$mimetype' => mimetype_select(0,$w['mimeType'], + [ 'text/markdown' => t('Markdown'), 'text/bbcode' => t('BBcode'), 'text/plain' => t('Text') ]), '$pageName' => array('pageName', t('Page name')), '$refresh' => $arr['refresh'] )); diff --git a/include/text.php b/include/text.php index c4d441e85..49cc2d6c5 100644 --- a/include/text.php +++ b/include/text.php @@ -1789,21 +1789,21 @@ function layout_select($channel_id, $current = '') { function mimetype_select($channel_id, $current = 'text/bbcode', $choices = null, $element = 'mimetype') { $x = (($choices) ? $choices : [ - 'text/bbcode', - 'text/html', - 'text/markdown', - 'text/plain', - 'application/x-pdl' + 'text/bbcode' => t('BBcode'), + 'text/html' => t('HTML'), + 'text/markdown' => t('Markdown'), + 'text/plain' => t('Text'), + 'application/x-pdl' => t('Comanche Layout') ]); if((App::$is_sys) || (channel_codeallowed($channel_id) && $channel_id == local_channel())){ - $x[] = 'application/x-php'; + $x['application/x-php'] = t('PHP'); } - foreach($x as $y) { + foreach($x as $y => $z) { $selected = (($y == $current) ? ' selected="selected" ' : ''); - $options .= ''; + $options .= ''; } $o = replace_macros(get_markup_template('field_select_raw.tpl'), array( From 9e46472ca26f2bd38d2e71c221a9fbf5618b5822 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Wed, 20 Sep 2017 00:00:26 -0700 Subject: [PATCH 6/8] provide default photo mimetype --- include/channel.php | 5 ++++- include/perm_upgrade.php | 3 +++ include/photo/photo_driver.php | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/include/channel.php b/include/channel.php index 7072bb4ce..fef933ba7 100644 --- a/include/channel.php +++ b/include/channel.php @@ -278,11 +278,13 @@ function create_identity($arr) { intval($arr['account_id']) ); + $photo_type = null; + $z = [ 'account' => $a[0], 'channel' => $r[0], 'photo_url' => '' ]; call_hooks('create_channel_photo',$z); if($z['photo_url']) { - import_channel_photo_from_url($z['photo_url'],$arr['account_id'],$r[0]['channel_id']); + $photo_type = import_channel_photo_from_url($z['photo_url'],$arr['account_id'],$r[0]['channel_id']); } if($role_permissions && array_key_exists('limits',$role_permissions)) @@ -330,6 +332,7 @@ function create_identity($arr) { 'xchan_guid' => $guid, 'xchan_guid_sig' => $sig, 'xchan_pubkey' => $key['pubkey'], + 'xchan_photo_mimetype' => (($photo_type) ? $photo_type : 'image/png'), 'xchan_photo_l' => z_root() . "/photo/profile/l/{$newuid}", 'xchan_photo_m' => z_root() . "/photo/profile/m/{$newuid}", 'xchan_photo_s' => z_root() . "/photo/profile/s/{$newuid}", diff --git a/include/perm_upgrade.php b/include/perm_upgrade.php index 5be1ffbb2..9eb1efba2 100644 --- a/include/perm_upgrade.php +++ b/include/perm_upgrade.php @@ -135,6 +135,9 @@ function translate_abook_perms_outbound(&$abook) { $my_perms = 0; $their_perms = 0; + if(! $abook) + return; + if(array_key_exists('abconfig',$abook) && is_array($abook['abconfig']) && $abook['abconfig']) { foreach($abook['abconfig'] as $p) { if($p['cat'] === 'their_perms') { diff --git a/include/photo/photo_driver.php b/include/photo/photo_driver.php index c6c023147..17ca81419 100644 --- a/include/photo/photo_driver.php +++ b/include/photo/photo_driver.php @@ -666,6 +666,7 @@ function import_channel_photo_from_url($photo,$aid,$uid) { import_channel_photo($img_str,$type,$aid,$uid); + return $type; } From 6f2dd5d32546c8f812e04bf098d61c7ec6ba73ac Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Wed, 20 Sep 2017 11:08:01 +0200 Subject: [PATCH 7/8] wiki: translateable strings and move page mimetype selector to options submenu --- Zotlabs/Module/Wiki.php | 3 ++- Zotlabs/Widget/Wiki_pages.php | 4 +++- view/tpl/wiki_page_list.tpl | 13 +++++++++---- view/tpl/wikilist.tpl | 2 +- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php index 2668229ee..fe2bfbdfb 100644 --- a/Zotlabs/Module/Wiki.php +++ b/Zotlabs/Module/Wiki.php @@ -216,7 +216,8 @@ class Wiki extends \Zotlabs\Web\Controller { '$deny_cid' => $x['deny_cid'], '$deny_gid' => $x['deny_gid'], '$typelock' => array('typelock', t('Lock content type'), '', '', array(t('No'), t('Yes'))), - '$notify' => array('postVisible', t('Create a status post for this wiki'), '', '', array(t('No'), t('Yes'))) + '$notify' => array('postVisible', t('Create a status post for this wiki'), '', '', array(t('No'), t('Yes'))), + '$edit_wiki_name' => t('Edit Wiki Name') )); return $o; diff --git a/Zotlabs/Widget/Wiki_pages.php b/Zotlabs/Widget/Wiki_pages.php index b4928ede5..ac44b8d88 100644 --- a/Zotlabs/Widget/Wiki_pages.php +++ b/Zotlabs/Widget/Wiki_pages.php @@ -56,7 +56,9 @@ class Wiki_pages { '$mimetype' => mimetype_select(0,$w['mimeType'], [ 'text/markdown' => t('Markdown'), 'text/bbcode' => t('BBcode'), 'text/plain' => t('Text') ]), '$pageName' => array('pageName', t('Page name')), - '$refresh' => $arr['refresh'] + '$refresh' => $arr['refresh'], + '$options' => t('Options'), + '$submit' => t('Submit') )); } } diff --git a/view/tpl/wiki_page_list.tpl b/view/tpl/wiki_page_list.tpl index a7e6ebdaf..d75f22f64 100644 --- a/view/tpl/wiki_page_list.tpl +++ b/view/tpl/wiki_page_list.tpl @@ -17,16 +17,21 @@ {{/if}} {{if $canadd}} -