]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Item/Star.php
We now offer an endpoint for featured posts
[friendica.git] / src / Module / Item / Star.php
index 47dfe1875036b0a9f361f2278f7299c02b8f1510..8f444d54edfdf79c95eb99964622cf6f539226c5 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -24,6 +24,7 @@ namespace Friendica\Module\Item;
 use Friendica\BaseModule;
 use Friendica\Core\Session;
 use Friendica\Core\System;
+use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Item;
 use Friendica\Model\Post;
@@ -34,7 +35,7 @@ use Friendica\Network\HTTPException;
  */
 class Star extends BaseModule
 {
-       public static function rawContent(array $parameters = [])
+       protected function rawContent(array $request = [])
        {
                $l10n = DI::l10n();
 
@@ -42,17 +43,31 @@ class Star extends BaseModule
                        throw new HttpException\ForbiddenException($l10n->t('Access denied.'));
                }
 
-               if (empty($parameters['id'])) {
+               if (empty($this->parameters['id'])) {
                        throw new HTTPException\BadRequestException();
                }
 
-               $itemId = intval($parameters['id']);
+               $itemId = intval($this->parameters['id']);
 
-               $item = Post::selectFirstForUser(local_user(), ['starred'], ['uid' => local_user(), 'id' => $itemId]);
+
+               $item = Post::selectFirstForUser(local_user(), ['uid', 'uri-id', 'starred'], ['uid' => [0, local_user()], 'id' => $itemId]);
                if (empty($item)) {
                        throw new HTTPException\NotFoundException();
                }
 
+               if ($item['uid'] == 0) {
+                       $stored = Item::storeForUserByUriId($item['uri-id'], local_user());
+                       if (!empty($stored)) {
+                               $item = Post::selectFirst(['starred'], ['id' => $stored]);
+                               if (!DBA::isResult($item)) {
+                                       throw new HTTPException\NotFoundException();
+                               }
+                               $itemId = $stored;
+                       } else {
+                               throw new HTTPException\NotFoundException();
+                       }
+               }
+       
                $starred = !(bool)$item['starred'];
 
                Item::update(['starred' => $starred], ['id' => $itemId]);