diff options
author | John Molakvoæ <skjnldsv@users.noreply.github.com> | 2020-10-12 22:25:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-12 22:25:49 +0200 |
commit | ca7a921ee28285427201e5d57aedd444b0f5bb48 (patch) | |
tree | ac88c1c9c30877c92f80207e88c617f2988b5d5a | |
parent | 5c2eb89b0fe280eaf819b9690cf15146a81d8e0a (diff) | |
parent | e3814b742ce46d49d0d17e66d719eb91b76e2193 (diff) |
Merge pull request #1843 from nextcloud/fix/social-apple
-rw-r--r-- | lib/Service/Social/FacebookProvider.php | 16 | ||||
-rw-r--r-- | lib/Service/Social/InstagramProvider.php | 1 | ||||
-rw-r--r-- | lib/Service/Social/MastodonProvider.php | 5 | ||||
-rw-r--r-- | lib/Service/Social/TumblrProvider.php | 1 |
4 files changed, 10 insertions, 13 deletions
diff --git a/lib/Service/Social/FacebookProvider.php b/lib/Service/Social/FacebookProvider.php index 028b1dcc..770ac45a 100644 --- a/lib/Service/Social/FacebookProvider.php +++ b/lib/Service/Social/FacebookProvider.php @@ -78,17 +78,11 @@ class FacebookProvider implements ISocialProvider { if ($result->getStatusCode() !== 200) { return $profileName; } - $htmlResult = new \DOMDocument(); - $htmlResult->loadHTML($result->getBody()); - $metas = $htmlResult->getElementsByTagName('meta'); - foreach ($metas as $meta) { - foreach ($meta->attributes as $attr) { - $value = $attr->nodeValue; - if (strpos($value, "/profile/")) { - $value = str_replace('fb://profile/', '', $value); - return($value); - } - } + $htmlResult = $result->getBody(); + + $entity_id = '/.*"entity_id":"([0-9]+)".*/'; + if (preg_match($entity_id, $htmlResult, $matches)) { + return($matches[1]); } // keyword not found - page changed? return $profileName; diff --git a/lib/Service/Social/InstagramProvider.php b/lib/Service/Social/InstagramProvider.php index 36c5a3d6..b7687e71 100644 --- a/lib/Service/Social/InstagramProvider.php +++ b/lib/Service/Social/InstagramProvider.php @@ -42,6 +42,7 @@ class InstagramProvider implements ISocialProvider { * @return string */ public function cleanupId(string $candidate):string { + $candidate = preg_replace('/^' . preg_quote('x-apple:', '/') . '/', '', $candidate); return basename($candidate); } diff --git a/lib/Service/Social/MastodonProvider.php b/lib/Service/Social/MastodonProvider.php index bcbde9f3..74b68e96 100644 --- a/lib/Service/Social/MastodonProvider.php +++ b/lib/Service/Social/MastodonProvider.php @@ -42,10 +42,11 @@ class MastodonProvider implements ISocialProvider { * @return string */ public function cleanupId(string $candidate):?string { + $candidate = preg_replace('/^' . preg_quote('x-apple:', '/') . '/', '', $candidate); try { - if (strpos($candidate, '@') === 0) { + if (strpos($candidate, 'http') !== 0) { $user_server = explode('@', $candidate); - $candidate = 'https://' . $user_server[2] . '/@' . $user_server[1]; + $candidate = 'https://' . array_pop($user_server) . '/@' . array_pop($user_server); } } catch (Exception $e) { $candidate = null; diff --git a/lib/Service/Social/TumblrProvider.php b/lib/Service/Social/TumblrProvider.php index 71f2fa71..a830b945 100644 --- a/lib/Service/Social/TumblrProvider.php +++ b/lib/Service/Social/TumblrProvider.php @@ -35,6 +35,7 @@ class TumblrProvider implements ISocialProvider { * @return string */ public function cleanupId(string $candidate):?string { + $candidate = preg_replace('/^' . preg_quote('x-apple:', '/') . '/', '', $candidate); $subdomain = '/(?:http[s]*\:\/\/)*(.*?)\.(?=[^\/]*\..{2,5})/i'; // subdomain if (preg_match($subdomain, $candidate, $matches)) { $candidate = $matches[1]; |