Merge pull request #522 from MrPetovan/bug/4295-twitter-mentions-and-urls

[twitter] Fix mentions and urls mix up
pull/524/head
Tobias Diekershoff 2018-02-08 06:59:06 +01:00 committed by GitHub
commit adb394729b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 50 additions and 55 deletions

View File

@ -1147,12 +1147,24 @@ function twitter_fetchuser(App $a, $uid, $screen_name = "", $user_id = "")
return $contact_id; return $contact_id;
} }
function twitter_expand_entities(App $a, $body, $item, $no_tags = false, $picture) function twitter_expand_entities(App $a, $body, $item, $picture)
{ {
$tags = "";
$plain = $body; $plain = $body;
$tags_arr = [];
foreach ($item->entities->hashtags AS $hashtag) {
$url = "#[url=" . $a->get_baseurl() . "/search?tag=" . rawurlencode($hashtag->text) . "]" . $hashtag->text . "[/url]";
$tags_arr["#" . $hashtag->text] = $url;
$body = str_replace("#" . $hashtag->text, $url, $body);
}
foreach ($item->entities->user_mentions AS $mention) {
$url = "@[url=https://twitter.com/" . rawurlencode($mention->screen_name) . "]" . $mention->screen_name . "[/url]";
$tags_arr["@" . $mention->screen_name] = $url;
$body = str_replace("@" . $mention->screen_name, $url, $body);
}
if (isset($item->entities->urls)) { if (isset($item->entities->urls)) {
$type = ""; $type = "";
$footerurl = ""; $footerurl = "";
@ -1233,23 +1245,6 @@ function twitter_expand_entities(App $a, $body, $item, $no_tags = false, $pictur
} elseif (($footer == "") && ($picture == "")) { } elseif (($footer == "") && ($picture == "")) {
$body = add_page_info_to_body($body); $body = add_page_info_to_body($body);
} }
if ($no_tags) {
return ["body" => $body, "tags" => "", "plain" => $plain];
}
$tags_arr = [];
foreach ($item->entities->hashtags AS $hashtag) {
$url = "#[url=" . $a->get_baseurl() . "/search?tag=" . rawurlencode($hashtag->text) . "]" . $hashtag->text . "[/url]";
$tags_arr["#" . $hashtag->text] = $url;
$body = str_replace("#" . $hashtag->text, $url, $body);
}
foreach ($item->entities->user_mentions AS $mention) {
$url = "@[url=https://twitter.com/" . rawurlencode($mention->screen_name) . "]" . $mention->screen_name . "[/url]";
$tags_arr["@" . $mention->screen_name] = $url;
$body = str_replace("@" . $mention->screen_name, $url, $body);
} }
// it seems as if the entities aren't always covering all mentions. So the rest will be checked here // it seems as if the entities aren't always covering all mentions. So the rest will be checked here
@ -1292,7 +1287,7 @@ function twitter_expand_entities(App $a, $body, $item, $no_tags = false, $pictur
} }
$tags = implode($tags_arr, ","); $tags = implode($tags_arr, ",");
}
return ["body" => $body, "tags" => $tags, "plain" => $plain]; return ["body" => $body, "tags" => $tags, "plain" => $plain];
} }
@ -1302,7 +1297,7 @@ function twitter_expand_entities(App $a, $body, $item, $no_tags = false, $pictur
* @param object $post Twitter object with the post * @param object $post Twitter object with the post
* @param array $postarray Array of the item that is about to be posted * @param array $postarray Array of the item that is about to be posted
* *
* @return $picture string Returns a a single picture string if it isn't a media post * @return $picture string Image URL or empty string
*/ */
function twitter_media_entities($post, &$postarray) function twitter_media_entities($post, &$postarray)
{ {
@ -1480,7 +1475,7 @@ function twitter_createpost(App $a, $uid, $post, $self, $create_user, $only_exis
// Search for media links // Search for media links
$picture = twitter_media_entities($post, $postarray); $picture = twitter_media_entities($post, $postarray);
$converted = twitter_expand_entities($a, $postarray['body'], $post, false, $picture); $converted = twitter_expand_entities($a, $postarray['body'], $post, $picture);
$postarray['body'] = $converted["body"]; $postarray['body'] = $converted["body"];
$postarray['tag'] = $converted["tags"]; $postarray['tag'] = $converted["tags"];
$postarray['created'] = DateTimeFormat::utc($post->created_at); $postarray['created'] = DateTimeFormat::utc($post->created_at);