From 70fba8a98554bbcea966d13d70f8d6207a9008a6 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 11 Sep 2018 21:37:54 -0400 Subject: [PATCH] [twitter] Fix external link picture - Ensure the media url is the same as one of the external links url before showing only a picture --- twitter/twitter.php | 40 ++++++++++++++++------------------------ 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/twitter/twitter.php b/twitter/twitter.php index cd1fa9f0..82861de0 100644 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -1298,20 +1298,22 @@ function twitter_media_entities($post, array &$postarray) { // There are no media entities? So we quit. if (empty($post->extended_entities->media)) { - return ""; + return ''; } // When the post links to an external page, we only take one picture. // We only do this when there is exactly one media. if ((count($post->entities->urls) > 0) && (count($post->extended_entities->media) == 1)) { - $picture = ""; - foreach ($post->extended_entities->media AS $medium) { - if (isset($medium->media_url_https)) { + $medium = $post->extended_entities->media[0]; + $picture = ''; + foreach ($post->entities->urls as $link) { + // Let's make sure the external link url matches the media url + if ($medium->url == $link->url && isset($medium->media_url_https)) { $picture = $medium->media_url_https; - $postarray['body'] = str_replace($medium->url, "", $postarray['body']); + $postarray['body'] = str_replace($medium->url, '', $postarray['body']); + return $picture; } } - return $picture; } // This is a pure media post, first search for all media urls @@ -1322,19 +1324,19 @@ function twitter_media_entities($post, array &$postarray) } switch ($medium->type) { case 'photo': - $media[$medium->url] .= "\n[img]" . $medium->media_url_https . "[/img]"; + $media[$medium->url] .= "\n[img]" . $medium->media_url_https . '[/img]'; $postarray['object-type'] = ACTIVITY_OBJ_IMAGE; break; case 'video': case 'animated_gif': - $media[$medium->url] .= "\n[img]" . $medium->media_url_https . "[/img]"; + $media[$medium->url] .= "\n[img]" . $medium->media_url_https . '[/img]'; $postarray['object-type'] = ACTIVITY_OBJ_VIDEO; if (is_array($medium->video_info->variants)) { $bitrate = 0; // We take the video with the highest bitrate foreach ($medium->video_info->variants AS $variant) { - if (($variant->content_type == "video/mp4") && ($variant->bitrate >= $bitrate)) { - $media[$medium->url] = "\n[video]" . $variant->url . "[/video]"; + if (($variant->content_type == 'video/mp4') && ($variant->bitrate >= $bitrate)) { + $media[$medium->url] = "\n[video]" . $variant->url . '[/video]'; $bitrate = $variant->bitrate; } } @@ -1350,7 +1352,8 @@ function twitter_media_entities($post, array &$postarray) foreach ($media AS $key => $value) { $postarray['body'] = str_replace($key, "\n" . $value . "\n", $postarray['body']); } - return ""; + + return ''; } function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $only_existing_contact, $noquote) @@ -1617,23 +1620,12 @@ function twitter_fetchhometimeline(App $a, $uid) return; } - $r = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1", - intval($uid)); - - if (DBA::isResult($r)) { - $self = $r[0]; - } else { + $self = User::getOwnerDataById($uid); + if ($self === false) { logger("Own contact not found for user " . $uid); return; } - $u = q("SELECT * FROM user WHERE uid = %d LIMIT 1", - intval($uid)); - if (!DBA::isResult($u)) { - logger("Own user not found for user " . $uid); - return; - } - $parameters = ["exclude_replies" => false, "trim_user" => false, "contributor_details" => true, "include_rts" => true, "tweet_mode" => "extended"]; //$parameters["count"] = 200; // Fetching timeline