diff --git a/advancedcontentfilter/doc/advancedcontentfilter.md b/advancedcontentfilter/doc/advancedcontentfilter.md
index 55e52ef4..41320fa3 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" 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>
+ 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>
|
@@ -470,14 +470,14 @@ You can also retrieve the variables of a specific post by pasting its URL below
list |
- - #<a href="https://friendica.mrpetovan.com/search?tag=Street" target="_blank" rel="noopener noreferrer">street</a>
- - #<a href="https://friendica.mrpetovan.com/search?tag=Night" target="_blank" rel="noopener noreferrer">night</a>
- - #<a href="https://friendica.mrpetovan.com/search?tag=CarLights" target="_blank" rel="noopener noreferrer">carlights</a>
- - #<a href="https://friendica.mrpetovan.com/search?tag=Jeep" target="_blank" rel="noopener noreferrer">jeep</a>
- - #<a href="https://friendica.mrpetovan.com/search?tag=NoPeople" target="_blank" rel="noopener noreferrer">nopeople</a>
- - #<a href="https://friendica.mrpetovan.com/search?tag=Close" target="_blank" rel="noopener noreferrer">close</a>
- - @<a href="https://twitter.com/MrPetovan" target="_blank" rel="noopener noreferrer">mrpetovan</a>
- - #<a href="https://friendica.mrpetovan.com/search?tag=Close-up" target="_blank" rel="noopener noreferrer">close-up</a>
+ - #<a href="https://friendica.mrpetovan.com/search?tag=Street" target="_blank">street</a>
+ - #<a href="https://friendica.mrpetovan.com/search?tag=Night" target="_blank">night</a>
+ - #<a href="https://friendica.mrpetovan.com/search?tag=CarLights" target="_blank">carlights</a>
+ - #<a href="https://friendica.mrpetovan.com/search?tag=Jeep" target="_blank">jeep</a>
+ - #<a href="https://friendica.mrpetovan.com/search?tag=NoPeople" target="_blank">nopeople</a>
+ - #<a href="https://friendica.mrpetovan.com/search?tag=Close" target="_blank">close</a>
+ - @<a href="https://twitter.com/MrPetovan" target="_blank">mrpetovan</a>
+ - #<a href="https://friendica.mrpetovan.com/search?tag=Close-up" target="_blank">close-up</a>
|
@@ -486,13 +486,13 @@ You can also retrieve the variables of a specific post by pasting its URL below
list |
- - #<a href="https://friendica.mrpetovan.com/search?tag=Street" target="_blank" rel="noopener noreferrer">street</a>
- - #<a href="https://friendica.mrpetovan.com/search?tag=Night" target="_blank" rel="noopener noreferrer">night</a>
- - #<a href="https://friendica.mrpetovan.com/search?tag=CarLights" target="_blank" rel="noopener noreferrer">carlights</a>
- - #<a href="https://friendica.mrpetovan.com/search?tag=Jeep" target="_blank" rel="noopener noreferrer">jeep</a>
- - #<a href="https://friendica.mrpetovan.com/search?tag=NoPeople" target="_blank" rel="noopener noreferrer">nopeople</a>
- - #<a href="https://friendica.mrpetovan.com/search?tag=Close" target="_blank" rel="noopener noreferrer">close</a>
- - #<a href="https://friendica.mrpetovan.com/search?tag=Close-up" target="_blank" rel="noopener noreferrer">close-up</a>
+ - #<a href="https://friendica.mrpetovan.com/search?tag=Street" target="_blank">street</a>
+ - #<a href="https://friendica.mrpetovan.com/search?tag=Night" target="_blank">night</a>
+ - #<a href="https://friendica.mrpetovan.com/search?tag=CarLights" target="_blank">carlights</a>
+ - #<a href="https://friendica.mrpetovan.com/search?tag=Jeep" target="_blank">jeep</a>
+ - #<a href="https://friendica.mrpetovan.com/search?tag=NoPeople" target="_blank">nopeople</a>
+ - #<a href="https://friendica.mrpetovan.com/search?tag=Close" target="_blank">close</a>
+ - #<a href="https://friendica.mrpetovan.com/search?tag=Close-up" target="_blank">close-up</a>
|
@@ -501,7 +501,7 @@ You can also retrieve the variables of a specific post by pasting its URL below
string |
- - @<a href="https://twitter.com/MrPetovan" target="_blank" rel="noopener noreferrer">mrpetovan</a>
+ - @<a href="https://twitter.com/MrPetovan" target="_blank">mrpetovan</a>
|
diff --git a/buglink/buglink.php b/buglink/buglink.php
index 2414a3a3..5d354109 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/forumdirectory/forumdirectory.php b/forumdirectory/forumdirectory.php
index 5ade04cf..93c57564 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`.*, `user`.`nickname`, `user`.`timezone` , `user`.`page-flags`,
+ $r = DBA::p("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `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/irc/irc.php b/irc/irc.php
index 2c969d4b..52778e55 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 5df1c7d7..61fe1efd 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.')],
]);
diff --git a/public_server/public_server.php b/public_server/public_server.php
index 41c62832..a02c8672 100644
--- a/public_server/public_server.php
+++ b/public_server/public_server.php
@@ -1,7 +1,7 @@
*/
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]);
}
}
diff --git a/widgets/templates/widget_like.tpl b/widgets/templates/widget_like.tpl
index b99dbda4..ad529575 100644
--- a/widgets/templates/widget_like.tpl
+++ b/widgets/templates/widget_like.tpl
@@ -1,5 +1,3 @@
-{{$like}}
-{{if $dislike}}
+{{$like}}
{{$dislike}}
-{{/if}}
diff --git a/widgets/widget_friendheader.php b/widgets/widget_friendheader.php
index c4031290..f47b1b57 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`.* , `user`.* FROM `profile`
+ $r = q("SELECT `profile`.`uid` AS `profile_uid`, `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 08b7415c..a3951cdc 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`.* , `user`.* FROM `profile`
+ $r = q("SELECT `profile`.`uid` AS `profile_uid`, `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_like.php b/widgets/widget_like.php
index 8dd6b8a7..464e6101 100644
--- a/widgets/widget_like.php
+++ b/widgets/widget_like.php
@@ -43,18 +43,14 @@ function like_widget_content(&$a, $conf){
DBA::escape($args[0])
);
$likes = $r[0]['c'];
+ $iid = $r[0]['id'];
- $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);
- }
+ // 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'];
$o = "";
@@ -66,7 +62,7 @@ function like_widget_content(&$a, $conf){
'$strlike' => DI::l10n()->tt("%d person likes this", "%d people like this", $likes),
'$dislike' => $dislikes,
- '$strdislike'=> $strdislike,
+ '$strdislike'=> DI::l10n()->tt("%d person doesn't like this", "%d people don't like this", $dislikes),
]);
return $o;