X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FProtocol%2FOStatus.php;h=21f07d46b90dcb20bff703a666d56b49766004cb;hb=6db211568ae283d152ee8fa0cfe17a2bab809779;hp=9de0138ad6f64782dd19f5ca3e48f84a3d177d2f;hpb=c840ee82af9a885bef092a3ba3daae5e0204e12d;p=friendica.git diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 9de0138ad6..21f07d46b9 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -38,6 +38,7 @@ use Friendica\Model\ItemURI; use Friendica\Model\Post; use Friendica\Model\Tag; use Friendica\Model\User; +use Friendica\Network\HTTPClientOptions; use Friendica\Network\Probe; use Friendica\Util\DateTimeFormat; use Friendica\Util\Images; @@ -208,7 +209,7 @@ class OStatus $contact['name-date'] = DateTimeFormat::utcNow(); - DBA::update('contact', $contact, ['id' => $contact["id"]], $current); + Contact::update($contact, ['id' => $contact["id"]], $current); if (!empty($author["author-avatar"]) && ($author["author-avatar"] != $current['avatar'])) { Logger::log("Update profile picture for contact ".$contact["id"], Logger::DEBUG); @@ -229,7 +230,7 @@ class OStatus 'about' => $contact["about"], 'location' => $contact["location"], 'success_update' => DateTimeFormat::utcNow(), 'last-update' => DateTimeFormat::utcNow()]; - DBA::update('contact', $fields, ['id' => $cid], $old_contact); + Contact::update($fields, ['id' => $cid], $old_contact); // Update the avatar if (!empty($author["author-avatar"])) { @@ -470,7 +471,7 @@ class OStatus if ($item["verb"] == Activity::O_UNFOLLOW) { $dummy = null; - Contact::removeFollower($importer, $contact, $item, $dummy); + Contact::removeFollower($contact); continue; } @@ -727,7 +728,7 @@ class OStatus self::$conv_list[$conversation] = true; - $curlResult = DI::httpRequest()->get($conversation, ['accept_content' => 'application/atom+xml, text/html']); + $curlResult = DI::httpClient()->get($conversation, [HTTPClientOptions::ACCEPT_CONTENT => ['application/atom+xml', 'text/html']]); if (!$curlResult->isSuccess() || empty($curlResult->getBody())) { return; @@ -735,7 +736,8 @@ class OStatus $xml = ''; - if (stristr($curlResult->getHeader(), 'Content-Type: application/atom+xml')) { + if ($curlResult->inHeader('Content-Type') && + in_array('application/atom+xml', $curlResult->getHeader('Content-Type'))) { $xml = $curlResult->getBody(); } @@ -756,7 +758,7 @@ class OStatus } } if ($file != '') { - $conversation_atom = DI::httpRequest()->get($attribute['href']); + $conversation_atom = DI::httpClient()->get($attribute['href']); if ($conversation_atom->isSuccess()) { $xml = $conversation_atom->getBody(); @@ -870,7 +872,7 @@ class OStatus return; } - $curlResult = DI::httpRequest()->get($self); + $curlResult = DI::httpClient()->get($self); if (!$curlResult->isSuccess()) { return; @@ -920,7 +922,7 @@ class OStatus } $stored = false; - $curlResult = DI::httpRequest()->get($related, ['accept_content' => 'application/atom+xml, text/html']); + $curlResult = DI::httpClient()->get($related, [HTTPClientOptions::ACCEPT_CONTENT => ['application/atom+xml', 'text/html']]); if (!$curlResult->isSuccess() || empty($curlResult->getBody())) { return; @@ -928,7 +930,8 @@ class OStatus $xml = ''; - if (stristr($curlResult->getHeader(), 'Content-Type: application/atom+xml')) { + if ($curlResult->inHeader('Content-Type') && + in_array('application/atom+xml', $curlResult->getHeader('Content-Type'))) { Logger::log('Directly fetched XML for URI ' . $related_uri, Logger::DEBUG); $xml = $curlResult->getBody(); } @@ -951,7 +954,7 @@ class OStatus } } if ($atom_file != '') { - $curlResult = DI::httpRequest()->get($atom_file); + $curlResult = DI::httpClient()->get($atom_file); if ($curlResult->isSuccess()) { Logger::log('Fetched XML for URI ' . $related_uri, Logger::DEBUG); @@ -963,7 +966,7 @@ class OStatus // Workaround for older GNU Social servers if (($xml == '') && strstr($related, '/notice/')) { - $curlResult = DI::httpRequest()->get(str_replace('/notice/', '/api/statuses/show/', $related) . '.atom'); + $curlResult = DI::httpClient()->get(str_replace('/notice/', '/api/statuses/show/', $related) . '.atom'); if ($curlResult->isSuccess()) { Logger::log('GNU Social workaround to fetch XML for URI ' . $related_uri, Logger::DEBUG); @@ -974,7 +977,7 @@ class OStatus // Even more worse workaround for GNU Social ;-) if ($xml == '') { $related_guess = self::convertHref($related_uri); - $curlResult = DI::httpRequest()->get(str_replace('/notice/', '/api/statuses/show/', $related_guess) . '.atom'); + $curlResult = DI::httpClient()->get(str_replace('/notice/', '/api/statuses/show/', $related_guess) . '.atom'); if ($curlResult->isSuccess()) { Logger::log('GNU Social workaround 2 to fetch XML for URI ' . $related_uri, Logger::DEBUG); @@ -1195,7 +1198,7 @@ class OStatus * @return string The cleaned body * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function formatPicturePost($body) + public static function formatPicturePost($body, $uriid) { $siteinfo = BBCode::getAttachedData($body); @@ -1207,7 +1210,7 @@ class OStatus } // Is it a remote picture? Then make a smaller preview here - $preview = ProxyUtils::proxifyUrl($preview, false, ProxyUtils::SIZE_SMALL); + $preview = Post\Link::getByLink($uriid, $preview, ProxyUtils::SIZE_SMALL); // Is it a local picture? Then make it smaller here $preview = str_replace(["-0.jpg", "-0.png"], ["-2.jpg", "-2.png"], $preview); @@ -1272,7 +1275,7 @@ class OStatus XML::addElement($doc, $root, "id", DI::baseUrl() . "/profile/" . $owner["nick"]); XML::addElement($doc, $root, "title", $title); XML::addElement($doc, $root, "subtitle", sprintf("Updates from %s on %s", $owner["name"], DI::config()->get('config', 'sitename'))); - XML::addElement($doc, $root, "logo", $owner["photo"]); + XML::addElement($doc, $root, "logo", User::getAvatarUrl($owner, ProxyUtils::SIZE_SMALL)); XML::addElement($doc, $root, "updated", DateTimeFormat::utcNow(DateTimeFormat::ATOM)); $author = self::addAuthor($doc, $owner, true); @@ -1418,7 +1421,7 @@ class OStatus XML::addElement($doc, $author, "name", $owner["nick"]); XML::addElement($doc, $author, "email", $owner["addr"]); if ($show_profile) { - XML::addElement($doc, $author, "summary", BBCode::convert($owner["about"], false, BBCode::OSTATUS)); + XML::addElement($doc, $author, "summary", BBCode::convertForUriId($owner['uri-id'], $owner["about"], BBCode::OSTATUS)); } $attributes = ["rel" => "alternate", "type" => "text/html", "href" => $owner["url"]]; @@ -1427,25 +1430,25 @@ class OStatus $attributes = [ "rel" => "avatar", "type" => "image/jpeg", // To-Do? - "media:width" => 300, - "media:height" => 300, - "href" => $owner["photo"]]; + "media:width" => ProxyUtils::PIXEL_SMALL, + "media:height" => ProxyUtils::PIXEL_SMALL, + "href" => User::getAvatarUrl($owner, ProxyUtils::SIZE_SMALL)]; XML::addElement($doc, $author, "link", "", $attributes); if (isset($owner["thumb"])) { $attributes = [ "rel" => "avatar", "type" => "image/jpeg", // To-Do? - "media:width" => 80, - "media:height" => 80, - "href" => $owner["thumb"]]; + "media:width" => ProxyUtils::PIXEL_THUMB, + "media:height" => ProxyUtils::PIXEL_THUMB, + "href" => User::getAvatarUrl($owner, ProxyUtils::SIZE_THUMB)]; XML::addElement($doc, $author, "link", "", $attributes); } XML::addElement($doc, $author, "poco:preferredUsername", $owner["nick"]); XML::addElement($doc, $author, "poco:displayName", $owner["name"]); if ($show_profile) { - XML::addElement($doc, $author, "poco:note", BBCode::convert($owner["about"], false, BBCode::OSTATUS)); + XML::addElement($doc, $author, "poco:note", BBCode::convertForUriId($owner['uri-id'], $owner["about"], BBCode::OSTATUS)); if (trim($owner["location"]) != "") { $element = $doc->createElement("poco:address"); @@ -1803,7 +1806,7 @@ class OStatus if (!$toplevel) { if (!empty($item['title'])) { - $title = BBCode::convert($item['title'], false, BBCode::OSTATUS); + $title = BBCode::convertForUriId($item['uri-id'], $item['title'], BBCode::OSTATUS); } else { $title = sprintf("New note by %s", $owner["nick"]); } @@ -1886,13 +1889,13 @@ class OStatus XML::addElement($doc, $entry, "title", html_entity_decode($title, ENT_QUOTES, 'UTF-8')); $body = Post\Media::addAttachmentsToBody($item['uri-id'], $item['body']); - $body = self::formatPicturePost($body); + $body = self::formatPicturePost($body, $item['uri-id']); if (!empty($item['title'])) { $body = "[b]".$item['title']."[/b]\n\n".$body; } - $body = BBCode::convert($body, false, BBCode::OSTATUS); + $body = BBCode::convertForUriId($item['uri-id'], $body, BBCode::OSTATUS); XML::addElement($doc, $entry, "content", $body, ["type" => "html"]); @@ -1928,27 +1931,31 @@ class OStatus if ($item['gravity'] != GRAVITY_PARENT) { $parent = Post::selectFirst(['guid', 'author-link', 'owner-link'], ['id' => $item['parent']]); - $thrparent = Post::selectFirst(['guid', 'author-link', 'owner-link', 'plink'], ['uid' => $owner["uid"], 'uri' => $item['thr-parent']]); + $thrparent = Post::selectFirst(['guid', 'author-link', 'owner-link', 'plink'], ['uid' => $owner['uid'], 'uri' => $item['thr-parent']]); if (DBA::isResult($thrparent)) { - $mentioned[$thrparent["author-link"]] = $thrparent["author-link"]; - $mentioned[$thrparent["owner-link"]] = $thrparent["owner-link"]; - $parent_plink = $thrparent["plink"]; + $mentioned[$thrparent['author-link']] = $thrparent['author-link']; + $mentioned[$thrparent['owner-link']] = $thrparent['owner-link']; + $parent_plink = $thrparent['plink']; + } elseif (DBA::isResult($parent)) { + $mentioned[$parent['author-link']] = $parent['author-link']; + $mentioned[$parent['owner-link']] = $parent['owner-link']; + $parent_plink = DI::baseUrl() . '/display/' . $parent['guid']; } else { - $mentioned[$parent["author-link"]] = $parent["author-link"]; - $mentioned[$parent["owner-link"]] = $parent["owner-link"]; - $parent_plink = DI::baseUrl()."/display/".$parent["guid"]; + DI::logger()->notice('Missing parent and thr-parent for child item', ['item' => $item]); } - $attributes = [ - "ref" => $item['thr-parent'], - "href" => $parent_plink]; - XML::addElement($doc, $entry, "thr:in-reply-to", "", $attributes); + if (isset($parent_plink)) { + $attributes = [ + 'ref' => $item['thr-parent'], + 'href' => $parent_plink]; + XML::addElement($doc, $entry, 'thr:in-reply-to', '', $attributes); - $attributes = [ - "rel" => "related", - "href" => $parent_plink]; - XML::addElement($doc, $entry, "link", "", $attributes); + $attributes = [ + 'rel' => 'related', + 'href' => $parent_plink]; + XML::addElement($doc, $entry, 'link', '', $attributes); + } } if (intval($item['parent']) > 0) {