]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/OStatus.php
Merge pull request #4429 from MrPetovan/bug/4426-handle-auth-exceptions
[friendica.git] / src / Protocol / OStatus.php
index 214767648ef3f72566c77991dc24e62b9efe0277..1ff13c55db3eae097cb641778f26e563811b74a6 100644 (file)
@@ -4,24 +4,27 @@
  */
 namespace Friendica\Protocol;
 
-use Friendica\App;
+use Friendica\Content\Text\BBCode;
 use Friendica\Core\Cache;
 use Friendica\Core\Config;
+use Friendica\Core\L10n;
 use Friendica\Core\System;
 use Friendica\Database\DBM;
 use Friendica\Model\Contact;
-use Friendica\Model\GContact;
 use Friendica\Model\Conversation;
+use Friendica\Model\GContact;
+use Friendica\Model\Item;
 use Friendica\Network\Probe;
 use Friendica\Object\Image;
+use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Lock;
+use Friendica\Util\Network;
 use Friendica\Util\XML;
 use dba;
 use DOMDocument;
 use DOMXPath;
 
 require_once 'include/dba.php';
-require_once 'include/threads.php';
 require_once 'include/html2bbcode.php';
 require_once 'include/bbcode.php';
 require_once 'include/items.php';
@@ -195,7 +198,7 @@ class OStatus
                                $contact["location"] = $value;
                        }
 
-                       $contact['name-date'] = datetime_convert();
+                       $contact['name-date'] = DateTimeFormat::utcNow();
 
                        dba::update('contact', $contact, ['id' => $contact["id"]], $current);
 
@@ -216,7 +219,7 @@ class OStatus
                                                'nurl' => normalise_link($author["author-link"]),
                                                'nick' => $contact["nick"], 'alias' => $contact["alias"],
                                                'about' => $contact["about"], 'location' => $contact["location"],
-                                               'success_update' => datetime_convert(), 'last-update' => datetime_convert()];
+                                               'success_update' => DateTimeFormat::utcNow(), 'last-update' => DateTimeFormat::utcNow()];
 
                                dba::update('contact', $fields, ['id' => $cid], $old_contact);
 
@@ -452,12 +455,12 @@ class OStatus
                        }
 
                        if ($item["verb"] == ACTIVITY_FOLLOW) {
-                               new_follower($importer, $contact, $item, $nickname);
+                               Contact::addRelationship($importer, $contact, $item, $nickname);
                                continue;
                        }
 
                        if ($item["verb"] == NAMESPACE_OSTATUS."/unfollow") {
-                               lose_follower($importer, $contact, $item, $dummy);
+                               Contact::removeFollower($importer, $contact, $item, $dummy);
                                continue;
                        }
 
@@ -518,12 +521,12 @@ class OStatus
                                                        logger("Item with uri ".$item["uri"]." is from a blocked contact.", LOGGER_DEBUG);
                                                } else {
                                                        // We are having duplicated entries. Hopefully this solves it.
-                                                       if (Lock::set('ostatus_process_item_store')) {
-                                                               $ret = item_store($item);
-                                                               Lock::remove('ostatus_process_item_store');
+                                                       if (Lock::set('ostatus_process_item_insert')) {
+                                                               $ret = Item::insert($item);
+                                                               Lock::remove('ostatus_process_item_insert');
                                                                logger("Item with uri ".$item["uri"]." for user ".$importer["uid"].' stored. Return value: '.$ret);
                                                        } else {
-                                                               $ret = item_store($item);
+                                                               $ret = Item::insert($item);
                                                                logger("We couldn't lock - but tried to store the item anyway. Return value is ".$ret);
                                                        }
                                                }
@@ -549,16 +552,7 @@ class OStatus
                        return;
                }
 
-               // Currently we don't have a central deletion function that we could use in this case
-               // The function "item_drop" doesn't work for that case
-               dba::update(
-                       'item',
-                       ['deleted' => true, 'title' => '', 'body' => '',
-                                       'edited' => datetime_convert(), 'changed' => datetime_convert()],
-                       ['id' => $deleted["id"]]
-               );
-
-               delete_thread($deleted["id"], $deleted["parent-uri"]);
+               Item::deleteById($deleted["id"]);
 
                logger('Deleted item with uri '.$item['uri'].' for user '.$item['uid']);
        }
@@ -723,7 +717,7 @@ class OStatus
 
                self::$conv_list[$conversation] = true;
 
-               $conversation_data = z_fetch_url($conversation, false, $redirects, ['accept_content' => 'application/atom+xml, text/html']);
+               $conversation_data = Network::curl($conversation, false, $redirects, ['accept_content' => 'application/atom+xml, text/html']);
 
                if (!$conversation_data['success']) {
                        return;
@@ -751,7 +745,7 @@ class OStatus
                                        }
                                }
                                if ($file != '') {
-                                       $conversation_atom = z_fetch_url($attribute['href']);
+                                       $conversation_atom = Network::curl($attribute['href']);
 
                                        if ($conversation_atom['success']) {
                                                $xml = $conversation_atom['body'];
@@ -867,7 +861,7 @@ class OStatus
                        return;
                }
 
-               $self_data = z_fetch_url($self);
+               $self_data = Network::curl($self);
 
                if (!$self_data['success']) {
                        return;
@@ -912,7 +906,7 @@ class OStatus
                }
 
                $stored = false;
-               $related_data = z_fetch_url($related, false, $redirects, ['accept_content' => 'application/atom+xml, text/html']);
+               $related_data = Network::curl($related, false, $redirects, ['accept_content' => 'application/atom+xml, text/html']);
 
                if (!$related_data['success']) {
                        return;
@@ -943,7 +937,7 @@ class OStatus
                                        }
                                }
                                if ($atom_file != '') {
-                                       $related_atom = z_fetch_url($atom_file);
+                                       $related_atom = Network::curl($atom_file);
 
                                        if ($related_atom['success']) {
                                                logger('Fetched XML for URI '.$related_uri, LOGGER_DEBUG);
@@ -955,7 +949,7 @@ class OStatus
 
                // Workaround for older GNU Social servers
                if (($xml == '') && strstr($related, '/notice/')) {
-                       $related_atom = z_fetch_url(str_replace('/notice/', '/api/statuses/show/', $related).'.atom');
+                       $related_atom = Network::curl(str_replace('/notice/', '/api/statuses/show/', $related).'.atom');
 
                        if ($related_atom['success']) {
                                logger('GNU Social workaround to fetch XML for URI '.$related_uri, LOGGER_DEBUG);
@@ -966,7 +960,7 @@ class OStatus
                // Even more worse workaround for GNU Social ;-)
                if ($xml == '') {
                        $related_guess = OStatus::convertHref($related_uri);
-                       $related_atom = z_fetch_url(str_replace('/notice/', '/api/statuses/show/', $related_guess).'.atom');
+                       $related_atom = Network::curl(str_replace('/notice/', '/api/statuses/show/', $related_guess).'.atom');
 
                        if ($related_atom['success']) {
                                logger('GNU Social workaround 2 to fetch XML for URI '.$related_uri, LOGGER_DEBUG);
@@ -1204,7 +1198,7 @@ class OStatus
         */
        private static function formatPicturePost($body)
        {
-               $siteinfo = get_attached_data($body);
+               $siteinfo = BBCode::getAttachedData($body);
 
                if (($siteinfo["type"] == "photo")) {
                        if (isset($siteinfo["preview"])) {
@@ -1258,9 +1252,9 @@ class OStatus
                $root->setAttribute("xmlns:mastodon", NAMESPACE_MASTODON);
 
                switch ($filter) {
-                       case 'activity': $title = t('%s\'s timeline', $owner['name']); break;
-                       case 'posts'   : $title = t('%s\'s posts'   , $owner['name']); break;
-                       case 'comments': $title = t('%s\'s comments', $owner['name']); break;
+                       case 'activity': $title = L10n::t('%s\'s timeline', $owner['name']); break;
+                       case 'posts'   : $title = L10n::t('%s\'s posts'   , $owner['name']); break;
+                       case 'comments': $title = L10n::t('%s\'s comments', $owner['name']); break;
                }
 
                $attributes = ["uri" => "https://friendi.ca", "version" => FRIENDICA_VERSION . "-" . DB_UPDATE_VERSION];
@@ -1269,7 +1263,7 @@ class OStatus
                XML::addElement($doc, $root, "title", $title);
                XML::addElement($doc, $root, "subtitle", sprintf("Updates from %s on %s", $owner["name"], $a->config["sitename"]));
                XML::addElement($doc, $root, "logo", $owner["photo"]);
-               XML::addElement($doc, $root, "updated", datetime_convert("UTC", "UTC", "now", ATOM_TIME));
+               XML::addElement($doc, $root, "updated", DateTimeFormat::utcNow(DateTimeFormat::ATOM));
 
                $author = self::addAuthor($doc, $owner);
                $root->appendChild($author);
@@ -1326,7 +1320,7 @@ class OStatus
        private static function getAttachment($doc, $root, $item)
        {
                $o = "";
-               $siteinfo = get_attached_data($item["body"]);
+               $siteinfo = BBCode::getAttachedData($item["body"]);
 
                switch ($siteinfo["type"]) {
                        case 'photo':
@@ -1535,7 +1529,7 @@ class OStatus
                XML::addElement($doc, $source, "link", "", ["rel" => "alternate", "type" => "text/html", "href" => $contact["alias"]]);
                XML::addElement($doc, $source, "link", "", ["rel" => "self", "type" => "application/atom+xml", "href" => $contact["poll"]]);
                XML::addElement($doc, $source, "icon", $contact["photo"]);
-               XML::addElement($doc, $source, "updated", datetime_convert("UTC", "UTC", $contact["success_update"]."+00:00", ATOM_TIME));
+               XML::addElement($doc, $source, "updated", DateTimeFormat::utc($contact["success_update"]."+00:00", DateTimeFormat::ATOM));
 
                return $source;
        }
@@ -1787,12 +1781,12 @@ class OStatus
                }
 
                if ($item['verb'] == ACTIVITY_FOLLOW) {
-                       $message = t('%s is now following %s.');
-                       $title = t('following');
+                       $message = L10n::t('%s is now following %s.');
+                       $title = L10n::t('following');
                        $action = "subscription";
                } else {
-                       $message = t('%s stopped following %s.');
-                       $title = t('stopped following');
+                       $message = L10n::t('%s stopped following %s.');
+                       $title = L10n::t('stopped following');
                        $action = "unfollow";
                }
 
@@ -1919,8 +1913,8 @@ class OStatus
 
                XML::addElement($doc, $entry, "activity:verb", $verb);
 
-               XML::addElement($doc, $entry, "published", datetime_convert("UTC", "UTC", $item["created"]."+00:00", ATOM_TIME));
-               XML::addElement($doc, $entry, "updated", datetime_convert("UTC", "UTC", $item["edited"]."+00:00", ATOM_TIME));
+               XML::addElement($doc, $entry, "published", DateTimeFormat::utc($item["created"]."+00:00", DateTimeFormat::ATOM));
+               XML::addElement($doc, $entry, "updated", DateTimeFormat::utc($item["edited"]."+00:00", DateTimeFormat::ATOM));
        }
 
        /**
@@ -1993,7 +1987,7 @@ class OStatus
                        XML::addElement($doc, $entry, "ostatus:conversation", $conversation_uri, $attributes);
                }
 
-               $tags = item_getfeedtags($item);
+               $tags = item::getFeedTags($item);
 
                if (count($tags)) {
                        foreach ($tags as $t) {
@@ -2123,7 +2117,7 @@ class OStatus
                        $last_update = 'now -30 days';
                }
 
-               $check_date = datetime_convert('UTC', 'UTC', $last_update, 'Y-m-d H:i:s');
+               $check_date = DateTimeFormat::utc($last_update);
                $authorid = Contact::getIdForURL($owner["url"], 0);
 
                $sql_extra = '';