]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Feed.php
Merge pull request #13599 from Raroun/Fix_for_Pull_Request_#13596_missing_a_hidden...
[friendica.git] / src / Module / Feed.php
index e5ebe2a4d66239e4551232fb68c49b3fe639e05a..b9d573979a721430eec0467b725635c5b0efb8b7 100644 (file)
@@ -1,10 +1,31 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2023, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Module;
 
 use Friendica\BaseModule;
 use Friendica\Core\System;
-use Friendica\Protocol\OStatus;
+use Friendica\Model\User;
+use Friendica\Network\HTTPException;
+use Friendica\Protocol\Feed as ProtocolFeed;
 
 /**
  * Provides public Atom feeds
@@ -16,30 +37,14 @@ use Friendica\Protocol\OStatus;
  * - /feed/[nickname]/replies => comments
  * - /feed/[nickname]/activity => activity
  *
- * The nocache GET parameter is provided mainly for debug purposes, requires auth
- *
- * @brief Provides public Atom feeds
- *
  * @author Hypolite Petovan <hypolite@mrpetovan.com>
  */
 class Feed extends BaseModule
 {
-       public static function content()
+       protected function rawContent(array $request = [])
        {
-               $a = self::getApp();
-
-               $last_update = defaults($_GET, 'last_update', '');
-               $nocache     = !empty($_GET['nocache']) && local_user();
-
-               if ($a->argc < 2) {
-                       System::httpExit(400);
-               }
-
-               $type = null;
-               if ($a->argc > 2) {
-                       $type = $a->argv[2];
-               }
-
+               $nick = $this->parameters['nickname'] ?? '';
+               $type = $this->parameters['type'] ?? null;
                switch ($type) {
                        case 'posts':
                        case 'comments':
@@ -53,9 +58,19 @@ class Feed extends BaseModule
                                $type = 'posts';
                }
 
-               $nickname = $a->argv[1];
-               header("Content-type: application/atom+xml; charset=utf-8");
-               echo OStatus::feed($nickname, $last_update, 10, $type, $nocache, true);
-               exit();
+               $last_update = $this->getRequestValue($request, 'last_update', '');
+
+               $owner = User::getOwnerDataByNick($nick);
+               if (!$owner || $owner['account_expired'] || $owner['account_removed']) {
+                       throw new HTTPException\NotFoundException($this->t('User not found.'));
+               }
+
+               if ($owner['blocked']) {
+                       throw new HTTPException\UnauthorizedException($this->t('Access to this profile has been restricted.'));
+               }
+
+               $feed = ProtocolFeed::atom($owner, $last_update, 10, $type);
+
+               $this->httpExit($feed, Response::TYPE_ATOM);
        }
 }