]> git.mxchange.org Git - friendica.git/commitdiff
Add Feed module
authorHypolite Petovan <mrpetovan@gmail.com>
Sat, 30 Dec 2017 05:19:45 +0000 (00:19 -0500)
committerHypolite Petovan <mrpetovan@gmail.com>
Sat, 30 Dec 2017 05:32:45 +0000 (00:32 -0500)
- Update profile alternate links

mod/profile.php
src/Module/Feed.php [new file with mode: 0644]

index 9b609f885a94eb8f87d0f82416ebaa3ff0386c3c..843f06de3ea9e8d61b589acfc99c151eb2f8b51b 100644 (file)
@@ -64,7 +64,9 @@ function profile_init(App $a)
        }
 
        $a->page['htmlhead'] .= '<meta name="dfrn-global-visibility" content="' . ($a->profile['net-publish'] ? 'true' : 'false') . '" />' . "\r\n";
-       $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . System::baseUrl() . '/dfrn_poll/' . $which . '" />' . "\r\n";
+       $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . System::baseUrl() . '/feed/' . $which . '/" title="' . t('%s\'s posts', $a->profile['username']) . '"/>' . "\r\n";
+       $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . System::baseUrl() . '/feed/' . $which . '/comments" title="' . t('%s\'s comments', $a->profile['username']) . '"/>' . "\r\n";
+       $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . System::baseUrl() . '/feed/' . $which . '/activity" title="' . t('%s\'s timeline', $a->profile['username']) . '"/>' . "\r\n";
        $uri = urlencode('acct:' . $a->profile['nickname'] . '@' . $a->get_hostname() . ($a->path ? '/' . $a->path : ''));
        $a->page['htmlhead'] .= '<link rel="lrdd" type="application/xrd+xml" href="' . System::baseUrl() . '/xrd/?uri=' . $uri . '" />' . "\r\n";
        header('Link: <' . System::baseUrl() . '/xrd/?uri=' . $uri . '>; rel="lrdd"; type="application/xrd+xml"', false);
diff --git a/src/Module/Feed.php b/src/Module/Feed.php
new file mode 100644 (file)
index 0000000..678e77e
--- /dev/null
@@ -0,0 +1,59 @@
+<?php\r
+\r
+namespace Friendica\Module;\r
+\r
+use Friendica\BaseModule;\r
+use Friendica\Protocol\OStatus;\r
+\r
+/**\r
+ * Provides public Atom feeds\r
+ *\r
+ * Currently supported:\r
+ * - /feed/[nickname]/ => posts\r
+ * - /feed/[nickname]/posts => posts\r
+ * - /feed/[nickname]/comments => comments\r
+ * - /feed/[nickname]/replies => comments\r
+ * - /feed/[nickname]/activity => activity\r
+ *\r
+ * The nocache GET parameter is provided mainly for debug purposes, requires auth\r
+ *\r
+ * @brief Provides public Atom feeds\r
+ *\r
+ * @author Hypolite Petovan <mrpetovan@gmail.com>\r
+ */\r
+class Feed extends BaseModule\r
+{\r
+       public static function content()\r
+       {\r
+               $a = self::getApp();\r
+\r
+               $last_update = x($_GET, 'last_update') ? $_GET['last_update'] : '';\r
+               $nocache     = x($_GET, 'nocache') && local_user();\r
+\r
+               if ($a->argc < 2) {\r
+                       http_status_exit(400);\r
+               }\r
+\r
+               $type = null;\r
+               if ($a->argc > 2) {\r
+                       $type = $a->argv[2];\r
+               }\r
+\r
+               switch ($type) {\r
+                       case 'posts':\r
+                       case 'comments':\r
+                       case 'activity':\r
+                               break;\r
+                       case 'replies':\r
+                               $type = 'comments';\r
+                               break;\r
+                       default:\r
+                               $type = 'posts';\r
+               }\r
+\r
+               $nickname = $a->argv[1];\r
+               header("Content-type: application/atom+xml");\r
+               echo OStatus::feed($nickname, $last_update, 10, $type, $nocache);\r
+               killme();\r
+       }\r
+}\r