]> git.mxchange.org Git - friendica.git/commitdiff
API: Support for fetching mails with more "statuses" calls
authorMichael <heluecht@pirati.ca>
Wed, 21 Jul 2021 05:58:22 +0000 (05:58 +0000)
committerMichael <heluecht@pirati.ca>
Wed, 21 Jul 2021 05:58:22 +0000 (05:58 +0000)
src/Factory/Api/Mastodon/Status.php
src/Module/Api/Mastodon/Statuses/Context.php
src/Module/Api/Mastodon/Timelines/Direct.php

index 42f02a725c2435cf312f5841344ffba0674ae2fd..a2d3640f3a5065334e61fd9dad5970753e0b7ff2 100644 (file)
@@ -25,6 +25,7 @@ use Friendica\BaseFactory;
 use Friendica\Content\ContactSelector;
 use Friendica\Content\Text\BBCode;
 use Friendica\Database\Database;
+use Friendica\Database\DBA;
 use Friendica\Model\Post;
 use Friendica\Model\Verb;
 use Friendica\Network\HTTPException;
@@ -79,6 +80,10 @@ class Status extends BaseFactory
                        'thr-parent-id', 'parent-author-id', 'language', 'uri', 'plink', 'private', 'vid', 'gravity'];
                $item = Post::selectFirst($fields, ['uri-id' => $uriId, 'uid' => [0, $uid]], ['order' => ['uid' => true]]);
                if (!$item) {
+                       $mail = DBA::selectFirst('mail', ['id'], ['uri-id' => $uriId, 'uid' => $uid]);
+                       if ($mail) {
+                               return $this->createFromMailId($mail['id']);
+                       }
                        throw new HTTPException\NotFoundException('Item with URI ID ' . $uriId . ' not found' . ($uid ? ' for user ' . $uid : '.'));
                }
 
index 226e52c9ea42224c8958ff6918e374fda41244ce..62397afdbc7a6e2dbbceb5ca5bf817c99654718c 100644 (file)
@@ -50,25 +50,39 @@ class Context extends BaseApi
 
                $id = $parameters['id'];
 
-               $parent = Post::selectFirst(['parent-uri-id'], ['uri-id' => $id]);
-               if (!DBA::isResult($parent)) {
-                       DI::mstdnError()->RecordNotFound();
-               }
-
                $parents  = [];
                $children = [];
 
-               $posts = Post::selectPosts(['uri-id', 'thr-parent-id'],
-                       ['parent-uri-id' => $parent['parent-uri-id'], 'gravity' => [GRAVITY_PARENT, GRAVITY_COMMENT]], []);
-               while ($post = Post::fetch($posts)) {
-                       if ($post['uri-id'] == $post['thr-parent-id']) {
-                               continue;
+               $parent = Post::selectFirst(['parent-uri-id'], ['uri-id' => $id]);
+               if (DBA::isResult($parent)) {
+                       $posts = Post::selectPosts(['uri-id', 'thr-parent-id'],
+                               ['parent-uri-id' => $parent['parent-uri-id'], 'gravity' => [GRAVITY_PARENT, GRAVITY_COMMENT]]);
+                       while ($post = Post::fetch($posts)) {
+                               if ($post['uri-id'] == $post['thr-parent-id']) {
+                                       continue;
+                               }
+                               $parents[$post['uri-id']] = $post['thr-parent-id'];
+
+                               $children[$post['thr-parent-id']][] = $post['uri-id'];
+                       }
+                       DBA::close($posts);
+               } else {
+                       $parent = DBA::selectFirst('mail', ['parent-uri-id'], ['uri-id' => $id, 'uid' => $uid]);
+                       if (DBA::isResult($parent)) {
+                               $posts = DBA::select('mail', ['uri-id', 'thr-parent-id'], ['parent-uri-id' => $parent['parent-uri-id']]);
+                               while ($post = DBA::fetch($posts)) {
+                                       if ($post['uri-id'] == $post['thr-parent-id']) {
+                                               continue;
+                                       }
+                                       $parents[$post['uri-id']] = $post['thr-parent-id'];
+
+                                       $children[$post['thr-parent-id']][] = $post['uri-id'];
+                               }
+                               DBA::close($posts);
+                       } else {
+                               DI::mstdnError()->RecordNotFound();
                        }
-                       $parents[$post['uri-id']] = $post['thr-parent-id'];
-
-                       $children[$post['thr-parent-id']][] = $post['uri-id'];
                }
-               DBA::close($posts);
 
                $statuses = ['ancestors' => [], 'descendants' => []];
 
index c0fef79c542c498b069d6841bb90575c3f0c6a1f..3c3b9c052b0137bedd8321e2c2313ebddd5e96dc 100644 (file)
@@ -66,7 +66,7 @@ class Direct extends BaseApi
                        $params['order'] = ['uri-id'];
                }
 
-               $mails = DBA::select('mail', ['id'], $condition, $params);
+               $mails = DBA::select('mail', ['id', 'uri-id'], $condition, $params);
 
                $statuses = [];