]> git.mxchange.org Git - friendica.git/blobdiff - mod/_well_known.php
Merge branch 'develop' of https://github.com/Hypolite/friendica into develop
[friendica.git] / mod / _well_known.php
index 155810df367ae04c8e516d2c9ccaa1794668dee7..622d7fd93f647e9838e29af57f3649b8f5f02828 100644 (file)
@@ -1,14 +1,68 @@
-<?php\r
-require_once("hostxrd.php");\r
-\r
-function _well_known_init(&$a){\r
-    if ($a->argc > 1) {\r
-        switch($a->argv[1]) {\r
-            case "host-meta":\r
-                hostxrd_init($a);\r
-                break;\r
-        }\r
-    }\r
-    http_status_exit(404);\r
-    killme();\r
-}
\ No newline at end of file
+<?php
+
+use \Friendica\Core\Config;
+
+require_once("mod/hostxrd.php");
+require_once("mod/nodeinfo.php");
+
+function _well_known_init(App $a) {
+       if ($a->argc > 1) {
+               switch($a->argv[1]) {
+                       case "host-meta":
+                               hostxrd_init($a);
+                               break;
+                       case "x-social-relay":
+                               wk_social_relay($a);
+                               break;
+                       case "nodeinfo":
+                               nodeinfo_wellknown($a);
+                               break;
+               }
+       }
+       http_status_exit(404);
+       killme();
+}
+
+function wk_social_relay(App $a) {
+
+       $subscribe = (bool)Config::get('system', 'relay_subscribe', false);
+
+       if ($subscribe) {
+               $scope = Config::get('system', 'relay_scope', SR_SCOPE_ALL);
+       } else {
+               $scope = SR_SCOPE_NONE;
+       }
+
+       $tags = array();
+
+       if ($scope == SR_SCOPE_TAGS) {
+               $server_tags = Config::get('system', 'relay_server_tags');
+               $tagitems = explode(",", $server_tags);
+
+               foreach($tagitems AS $tag) {
+                       $tags[trim($tag, "# ")] = trim($tag, "# ");
+               }
+
+               if (Config::get('system', 'relay_user_tags')) {
+                       $terms = q("SELECT DISTINCT(`term`) FROM `search`");
+
+                       foreach($terms AS $term) {
+                               $tag = trim($term["term"], "#");
+                               $tags[$tag] = $tag;
+                       }
+               }
+       }
+
+       $taglist = array();
+       foreach($tags AS $tag) {
+               $taglist[] = $tag;
+       }
+
+       $relay = array("subscribe" => $subscribe,
+                       "scope" => $scope,
+                       "tags" => $taglist);
+
+       header('Content-type: application/json; charset=utf-8');
+       echo json_encode($relay, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
+       exit;
+}