From bdfe575365366690fe6a3934e793c67db1a2d623 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Fri, 27 Dec 2019 20:48:47 -0500 Subject: [PATCH 1/6] [various] Remove redundant profile_uid field from profile query --- forumdirectory/forumdirectory.php | 2 +- widgets/widget_friendheader.php | 2 +- widgets/widget_friends.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/forumdirectory/forumdirectory.php b/forumdirectory/forumdirectory.php index 2d07c829..5baad462 100644 --- a/forumdirectory/forumdirectory.php +++ b/forumdirectory/forumdirectory.php @@ -105,7 +105,7 @@ function forumdirectory_content(App $a) $limit = $pager->getStart()."," . $pager->getItemsPerPage(); - $r = DBA::p("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` , `user`.`page-flags`, + $r = DBA::p("SELECT `profile`.*, `user`.`nickname`, `user`.`timezone` , `user`.`page-flags`, `contact`.`addr`, `contact`.`url` AS `profile_url` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` LEFT JOIN `contact` ON `contact`.`uid` = `user`.`uid` diff --git a/widgets/widget_friendheader.php b/widgets/widget_friendheader.php index f47b1b57..c4031290 100644 --- a/widgets/widget_friendheader.php +++ b/widgets/widget_friendheader.php @@ -25,7 +25,7 @@ function friendheader_widget_size() function friendheader_widget_content(&$a, $conf) { - $r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.* FROM `profile` + $r = q("SELECT `profile`.* , `user`.* FROM `profile` LEFT JOIN `user` ON `profile`.`uid` = `user`.`uid` WHERE `user`.`uid` = %s LIMIT 1", intval($conf['uid']) diff --git a/widgets/widget_friends.php b/widgets/widget_friends.php index a3951cdc..08b7415c 100644 --- a/widgets/widget_friends.php +++ b/widgets/widget_friends.php @@ -27,7 +27,7 @@ function friends_widget_size() function friends_widget_content(&$a, $conf) { - $r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.* FROM `profile` + $r = q("SELECT `profile`.* , `user`.* FROM `profile` LEFT JOIN `user` ON `profile`.`uid` = `user`.`uid` WHERE `user`.`uid` = %s LIMIT 1", intval($conf['uid']) -- 2.43.0 From 7509ce88b934a321369f5eeb5eb2b371b222878d Mon Sep 17 00:00:00 2001 From: Andy Date: Sun, 23 Feb 2020 05:06:03 +0000 Subject: [PATCH 2/6] modified: public_server/public_server.php --- public_server/public_server.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public_server/public_server.php b/public_server/public_server.php index a02c8672..f908b9fd 100644 --- a/public_server/public_server.php +++ b/public_server/public_server.php @@ -1,7 +1,7 @@ */ -- 2.43.0 From 47571328407c59b78c1b2af95524da45c2603ec3 Mon Sep 17 00:00:00 2001 From: Andy Date: Sun, 23 Feb 2020 05:13:30 +0000 Subject: [PATCH 3/6] Changes to be committed: --- public_server/public_server.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public_server/public_server.php b/public_server/public_server.php index f908b9fd..41c62832 100644 --- a/public_server/public_server.php +++ b/public_server/public_server.php @@ -1,7 +1,7 @@ */ -- 2.43.0 From 7eb7706a2420f5ee2c2d8d84d1693b101fd80c1e Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 24 Feb 2020 20:08:43 -0500 Subject: [PATCH 4/6] [various] Add rel="noopener noreferrer" to all target="_blank" links See https://mathiasbynens.github.io/rel-noopener/ --- .../doc/advancedcontentfilter.md | 34 +++++++++---------- buglink/buglink.php | 2 +- irc/irc.php | 2 +- openstreetmap/openstreetmap.php | 4 +-- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/advancedcontentfilter/doc/advancedcontentfilter.md b/advancedcontentfilter/doc/advancedcontentfilter.md index 41320fa3..55e52ef4 100644 --- a/advancedcontentfilter/doc/advancedcontentfilter.md +++ b/advancedcontentfilter/doc/advancedcontentfilter.md @@ -322,7 +322,7 @@ You can also retrieve the variables of a specific post by pasting its URL below rendered_html string - Over-compensation #<a href="https://friendica.mrpetovan.com/search?tag=Street" class="tag" title="Street">Street</a> #<a href="https://friendica.mrpetovan.com/search?tag=Night" class="tag" title="Night">Night</a> #<a href="https://friendica.mrpetovan.com/search?tag=CarLights" class="tag" title="CarLights">CarLights</a> #<a href="https://friendica.mrpetovan.com/search?tag=Jeep" class="tag" title="Jeep">Jeep</a> #<a href="https://friendica.mrpetovan.com/search?tag=NoPeople" class="tag" title="NoPeople">NoPeople</a> #<a href="https://friendica.mrpetovan.com/search?tag=Close" class="tag" title="Close">Close</a>-up <div class="type-link"><a href="https://www.eyeem.com/p/120800309" target="_blank"><img src="https://friendica.mrpetovan.com/proxy/bb/aHR0cHM6Ly9jZG4uZXllZW0uY29tL3RodW1iL2IyZjAxOTczOGNiZWVmMDZlMmY4Yzk1MTdjNjI4NmE4YWRjZDNhMDAtMTUyMjE4NDgyMDY0MS82NDAvNDgw" alt="" title="Over-compensation Street Night Car Lights Jeep No | EyeEm" class="attachment-image"></a><br><h4><a href="https://www.eyeem.com/p/120800309">Over-compensation Street Night Car Lights Jeep No | EyeEm</a></h4><blockquote>Photo by @<a href="https://twitter.com/MrPetovan" class="userinfo mention" title="MrPetovan">MrPetovan</a></blockquote><sup><a href="https://www.eyeem.com/p/120800309">www.eyeem.com</a></sup></div> + Over-compensation #<a href="https://friendica.mrpetovan.com/search?tag=Street" class="tag" title="Street">Street</a> #<a href="https://friendica.mrpetovan.com/search?tag=Night" class="tag" title="Night">Night</a> #<a href="https://friendica.mrpetovan.com/search?tag=CarLights" class="tag" title="CarLights">CarLights</a> #<a href="https://friendica.mrpetovan.com/search?tag=Jeep" class="tag" title="Jeep">Jeep</a> #<a href="https://friendica.mrpetovan.com/search?tag=NoPeople" class="tag" title="NoPeople">NoPeople</a> #<a href="https://friendica.mrpetovan.com/search?tag=Close" class="tag" title="Close">Close</a>-up <div class="type-link"><a href="https://www.eyeem.com/p/120800309" target="_blank" rel="noopener noreferrer"><img src="https://friendica.mrpetovan.com/proxy/bb/aHR0cHM6Ly9jZG4uZXllZW0uY29tL3RodW1iL2IyZjAxOTczOGNiZWVmMDZlMmY4Yzk1MTdjNjI4NmE4YWRjZDNhMDAtMTUyMjE4NDgyMDY0MS82NDAvNDgw" alt="" title="Over-compensation Street Night Car Lights Jeep No | EyeEm" class="attachment-image"></a><br><h4><a href="https://www.eyeem.com/p/120800309">Over-compensation Street Night Car Lights Jeep No | EyeEm</a></h4><blockquote>Photo by @<a href="https://twitter.com/MrPetovan" class="userinfo mention" title="MrPetovan">MrPetovan</a></blockquote><sup><a href="https://www.eyeem.com/p/120800309">www.eyeem.com</a></sup></div> @@ -470,14 +470,14 @@ You can also retrieve the variables of a specific post by pasting its URL below list
    -
  1. #<a href="https://friendica.mrpetovan.com/search?tag=Street" target="_blank">street</a>
  2. -
  3. #<a href="https://friendica.mrpetovan.com/search?tag=Night" target="_blank">night</a>
  4. -
  5. #<a href="https://friendica.mrpetovan.com/search?tag=CarLights" target="_blank">carlights</a>
  6. -
  7. #<a href="https://friendica.mrpetovan.com/search?tag=Jeep" target="_blank">jeep</a>
  8. -
  9. #<a href="https://friendica.mrpetovan.com/search?tag=NoPeople" target="_blank">nopeople</a>
  10. -
  11. #<a href="https://friendica.mrpetovan.com/search?tag=Close" target="_blank">close</a>
  12. -
  13. @<a href="https://twitter.com/MrPetovan" target="_blank">mrpetovan</a>
  14. -
  15. #<a href="https://friendica.mrpetovan.com/search?tag=Close-up" target="_blank">close-up</a>
  16. +
  17. #<a href="https://friendica.mrpetovan.com/search?tag=Street" target="_blank" rel="noopener noreferrer">street</a>
  18. +
  19. #<a href="https://friendica.mrpetovan.com/search?tag=Night" target="_blank" rel="noopener noreferrer">night</a>
  20. +
  21. #<a href="https://friendica.mrpetovan.com/search?tag=CarLights" target="_blank" rel="noopener noreferrer">carlights</a>
  22. +
  23. #<a href="https://friendica.mrpetovan.com/search?tag=Jeep" target="_blank" rel="noopener noreferrer">jeep</a>
  24. +
  25. #<a href="https://friendica.mrpetovan.com/search?tag=NoPeople" target="_blank" rel="noopener noreferrer">nopeople</a>
  26. +
  27. #<a href="https://friendica.mrpetovan.com/search?tag=Close" target="_blank" rel="noopener noreferrer">close</a>
  28. +
  29. @<a href="https://twitter.com/MrPetovan" target="_blank" rel="noopener noreferrer">mrpetovan</a>
  30. +
  31. #<a href="https://friendica.mrpetovan.com/search?tag=Close-up" target="_blank" rel="noopener noreferrer">close-up</a>
@@ -486,13 +486,13 @@ You can also retrieve the variables of a specific post by pasting its URL below list
    -
  1. #<a href="https://friendica.mrpetovan.com/search?tag=Street" target="_blank">street</a>
  2. -
  3. #<a href="https://friendica.mrpetovan.com/search?tag=Night" target="_blank">night</a>
  4. -
  5. #<a href="https://friendica.mrpetovan.com/search?tag=CarLights" target="_blank">carlights</a>
  6. -
  7. #<a href="https://friendica.mrpetovan.com/search?tag=Jeep" target="_blank">jeep</a>
  8. -
  9. #<a href="https://friendica.mrpetovan.com/search?tag=NoPeople" target="_blank">nopeople</a>
  10. -
  11. #<a href="https://friendica.mrpetovan.com/search?tag=Close" target="_blank">close</a>
  12. -
  13. #<a href="https://friendica.mrpetovan.com/search?tag=Close-up" target="_blank">close-up</a>
  14. +
  15. #<a href="https://friendica.mrpetovan.com/search?tag=Street" target="_blank" rel="noopener noreferrer">street</a>
  16. +
  17. #<a href="https://friendica.mrpetovan.com/search?tag=Night" target="_blank" rel="noopener noreferrer">night</a>
  18. +
  19. #<a href="https://friendica.mrpetovan.com/search?tag=CarLights" target="_blank" rel="noopener noreferrer">carlights</a>
  20. +
  21. #<a href="https://friendica.mrpetovan.com/search?tag=Jeep" target="_blank" rel="noopener noreferrer">jeep</a>
  22. +
  23. #<a href="https://friendica.mrpetovan.com/search?tag=NoPeople" target="_blank" rel="noopener noreferrer">nopeople</a>
  24. +
  25. #<a href="https://friendica.mrpetovan.com/search?tag=Close" target="_blank" rel="noopener noreferrer">close</a>
  26. +
  27. #<a href="https://friendica.mrpetovan.com/search?tag=Close-up" target="_blank" rel="noopener noreferrer">close-up</a>
@@ -501,7 +501,7 @@ You can also retrieve the variables of a specific post by pasting its URL below string
    -
  1. @<a href="https://twitter.com/MrPetovan" target="_blank">mrpetovan</a>
  2. +
  3. @<a href="https://twitter.com/MrPetovan" target="_blank" rel="noopener noreferrer">mrpetovan</a>
diff --git a/buglink/buglink.php b/buglink/buglink.php index 5d354109..2414a3a3 100644 --- a/buglink/buglink.php +++ b/buglink/buglink.php @@ -22,5 +22,5 @@ function buglink_uninstall() function buglink_active(App $a, &$b) { - $b .= ''; + $b .= ''; } diff --git a/irc/irc.php b/irc/irc.php index 52778e55..2c969d4b 100644 --- a/irc/irc.php +++ b/irc/irc.php @@ -117,7 +117,7 @@ function irc_content(&$a) { /* add the chatroom frame and some html */ $o .= <<< EOT

IRC chat

-

A beginner's guide to using IRC. [en]

+

A beginner's guide to using IRC. [en]

EOT; diff --git a/openstreetmap/openstreetmap.php b/openstreetmap/openstreetmap.php index 61fe1efd..5df1c7d7 100644 --- a/openstreetmap/openstreetmap.php +++ b/openstreetmap/openstreetmap.php @@ -205,8 +205,8 @@ function openstreetmap_addon_admin(&$a, &$o) $o = Renderer::replaceMacros($t, [ '$submit' => DI::l10n()->t('Submit'), - '$tmsserver' => ['tmsserver', DI::l10n()->t('Tile Server URL'), $tmsserver, DI::l10n()->t('A list of public tile servers')], - '$nomserver' => ['nomserver', DI::l10n()->t('Nominatim (reverse geocoding) Server URL'), $nomserver, DI::l10n()->t('A list of Nominatim servers')], + '$tmsserver' => ['tmsserver', DI::l10n()->t('Tile Server URL'), $tmsserver, DI::l10n()->t('A list of public tile servers')], + '$nomserver' => ['nomserver', DI::l10n()->t('Nominatim (reverse geocoding) Server URL'), $nomserver, DI::l10n()->t('A list of Nominatim servers')], '$zoom' => ['zoom', DI::l10n()->t('Default zoom'), $zoom, DI::l10n()->t('The default zoom level. (1:world, 18:highest, also depends on tile server)')], '$marker' => ['marker', DI::l10n()->t('Include marker on map'), $marker, DI::l10n()->t('Include a marker on the map.')], ]); -- 2.43.0 From d80aaf904592a2a3fa414918bd5b71737112e4ad Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 25 Feb 2020 07:46:08 -0500 Subject: [PATCH 5/6] [widget_like] Add support for system.hide_dislike user config key --- widgets/templates/widget_like.tpl | 4 +++- widgets/widget_like.php | 20 ++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/widgets/templates/widget_like.tpl b/widgets/templates/widget_like.tpl index ad529575..b99dbda4 100644 --- a/widgets/templates/widget_like.tpl +++ b/widgets/templates/widget_like.tpl @@ -1,3 +1,5 @@ -{{$like}} like +{{$like}} like +{{if $dislike}} {{$dislike}} dislike +{{/if}} diff --git a/widgets/widget_like.php b/widgets/widget_like.php index 464e6101..8dd6b8a7 100644 --- a/widgets/widget_like.php +++ b/widgets/widget_like.php @@ -43,14 +43,18 @@ function like_widget_content(&$a, $conf){ DBA::escape($args[0]) ); $likes = $r[0]['c']; - $iid = $r[0]['id']; - // count dislikes - $r = q( $baseq . "AND `item`.`verb` = 'http://purl.org/macgirvin/dfrn/1.0/dislike'", - intval($conf['uid']), - DBA::escape($args[0]) - ); - $dislikes = $r[0]['c']; + $dislikes = 0; + $strdislike = ''; + if (!DI::pConfig()->get(local_user(), 'system', 'hide_dislike')) { + // count dislikes + $r = q( $baseq . "AND `item`.`verb` = 'http://purl.org/macgirvin/dfrn/1.0/dislike'", + intval($conf['uid']), + DBA::escape($args[0]) + ); + $dislikes = $r[0]['c']; + $strdislike = DI::l10n()->tt("%d person doesn't like this", "%d people don't like this", $dislikes); + } $o = ""; @@ -62,7 +66,7 @@ function like_widget_content(&$a, $conf){ '$strlike' => DI::l10n()->tt("%d person likes this", "%d people like this", $likes), '$dislike' => $dislikes, - '$strdislike'=> DI::l10n()->tt("%d person doesn't like this", "%d people don't like this", $dislikes), + '$strdislike'=> $strdislike, ]); return $o; -- 2.43.0 From 09bb49eef5acf3b12ab6fae4687f7eec06c40eee Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 6 Mar 2020 05:52:40 +0000 Subject: [PATCH 6/6] Twitter: Fetch the contact relation --- twitter/twitter.php | 85 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 75 insertions(+), 10 deletions(-) diff --git a/twitter/twitter.php b/twitter/twitter.php index 673b3b75..5bd0206f 100644 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -1016,6 +1016,48 @@ function twitter_fix_avatar($avatar) return $new_avatar; } +function twitter_get_relation($uid, $target, $contact = []) +{ + if (isset($contact['rel'])) { + $relation = $contact['rel']; + } else { + $relation = 0; + } + + $ckey = DI::config()->get('twitter', 'consumerkey'); + $csecret = DI::config()->get('twitter', 'consumersecret'); + $otoken = DI::pConfig()->get($uid, 'twitter', 'oauthtoken'); + $osecret = DI::pConfig()->get($uid, 'twitter', 'oauthsecret'); + $own_id = DI::pConfig()->get($uid, 'twitter', 'own_id'); + + $connection = new TwitterOAuth($ckey, $csecret, $otoken, $osecret); + $parameters = ['source_id' => $own_id, 'target_screen_name' => $target]; + + try { + $status = $connection->get('friendships/show', $parameters); + } catch (TwitterOAuthException $e) { + Logger::info('Error fetching friendship status', ['user' => $uid, 'target' => $target, 'message' => $e->getMessage()]); + return $relation; + } + + $following = $status->relationship->source->following; + $followed = $status->relationship->source->followed_by; + + if ($following && !$followed) { + $relation = Contact::SHARING; + } elseif (!$following && $followed) { + $relation = Contact::FOLLOWER; + } elseif ($following && $followed) { + $relation = Contact::FRIEND; + } elseif (!$following && !$followed) { + $relation = 0; + } + + Logger::info('Fetched friendship relation', ['user' => $uid, 'target' => $target, 'relation' => $relation]); + + return $relation; +} + function twitter_fetch_contact($uid, $data, $create_user) { if (empty($data->id_str)) { @@ -1027,10 +1069,18 @@ function twitter_fetch_contact($uid, $data, $create_user) $addr = $data->screen_name . "@twitter.com"; $fields = ['url' => $url, 'network' => Protocol::TWITTER, + 'alias' => 'twitter::' . $data->id_str, 'name' => $data->name, 'nick' => $data->screen_name, 'addr' => $addr, 'location' => $data->location, 'about' => $data->description]; - $cid = Contact::getIdForURL($url, 0, true, $fields); + // Update the public contact + $pcontact = DBA::selectFirst('contact', ['id'], ['uid' => 0, 'alias' => "twitter::" . $data->id_str]); + if (DBA::isResult($pcontact)) { + $cid = $pcontact['id']; + } else { + $cid = Contact::getIdForURL($url, 0, true, $fields); + } + if (!empty($cid)) { DBA::update('contact', $fields, ['id' => $cid]); Contact::updateAvatar($avatar, 0, $cid); @@ -1043,13 +1093,14 @@ function twitter_fetch_contact($uid, $data, $create_user) } if (!DBA::isResult($contact)) { + $relation = twitter_get_relation($uid, $data->screen_name); + // create contact record $fields['uid'] = $uid; $fields['created'] = DateTimeFormat::utcNow(); $fields['nurl'] = Strings::normaliseLink($url); - $fields['alias'] = 'twitter::' . $data->id_str; $fields['poll'] = 'twitter::' . $data->id_str; - $fields['rel'] = Contact::FRIEND; + $fields['rel'] = $relation; $fields['priority'] = 1; $fields['writable'] = true; $fields['blocked'] = false; @@ -1072,20 +1123,34 @@ function twitter_fetch_contact($uid, $data, $create_user) } $contact_id = $contact['id']; + $update = false; - // update profile photos once every twelve hours as we have no notification of when they change. - $update_photo = ($contact['avatar-date'] < DateTimeFormat::utc('now -12 hours')); + // Update the contact relation once per day + if ($contact['updated'] < DateTimeFormat::utc('now -24 hours')) { + $fields['rel'] = twitter_get_relation($uid, $data->screen_name, $contact); + $update = true; + } - // check that we have all the photos, this has been known to fail on occasion - if (empty($contact['photo']) || empty($contact['thumb']) || empty($contact['micro']) || $update_photo) { - Logger::log("twitter_fetch_contact: Updating contact " . $data->screen_name, Logger::DEBUG); + Contact::updateAvatar($avatar, $uid, $contact['id']); - Contact::updateAvatar($avatar, $uid, $contact['id']); + if ($contact['name'] != $data->name) { + $fields['name-date'] = $fields['uri-date'] = DateTimeFormat::utcNow(); + $update = true; + } - $fields['name-date'] = DateTimeFormat::utcNow(); + if ($contact['nick'] != $data->screen_name) { $fields['uri-date'] = DateTimeFormat::utcNow(); + $update = true; + } + if (($contact['location'] != $data->location) || ($contact['about'] != $data->description)) { + $update = true; + } + + if ($update) { + $fields['updated'] = DateTimeFormat::utcNow(); DBA::update('contact', $fields, ['id' => $contact['id']]); + Logger::info('Updated contact', ['id' => $contact['id'], 'nick' => $data->screen_name]); } } -- 2.43.0