aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzotlabs <mike@macgirvin.com>2017-09-20 19:12:23 -0700
committerzotlabs <mike@macgirvin.com>2017-09-20 19:12:23 -0700
commit7b060dff68841543e08e516a1dbdcdceea8fb59a (patch)
tree83cf1a73c692c08d9854d9b3886c7d9bf9beee81
parent90f759412b32485b029c2a43f9c01372e9fc83a7 (diff)
downloadvolse-hubzilla-7b060dff68841543e08e516a1dbdcdceea8fb59a.tar.gz
volse-hubzilla-7b060dff68841543e08e516a1dbdcdceea8fb59a.tar.bz2
volse-hubzilla-7b060dff68841543e08e516a1dbdcdceea8fb59a.zip
add HTTP link header to channel page, making it pluggable
-rw-r--r--Zotlabs/Web/Router.php19
-rwxr-xr-xboot.php18
-rw-r--r--doc/hooklist.bb3
3 files changed, 40 insertions, 0 deletions
diff --git a/Zotlabs/Web/Router.php b/Zotlabs/Web/Router.php
index 710aa2844..b0193652b 100644
--- a/Zotlabs/Web/Router.php
+++ b/Zotlabs/Web/Router.php
@@ -178,6 +178,25 @@ class Router {
*/
if(\App::$module_loaded) {
+ if (( \App::$module === 'channel' ) && argc() > 1) {
+ \App::$channel_links = [
+ [
+ 'rel' => 'lrdd',
+ 'type' => 'application/xrd+xml',
+ 'url' => z_root() . '/xrd?f=&uri=acct%3A' . argv(1) . '%40' . \App::get_hostname()
+ ],
+ [
+ 'rel' => 'jrd',
+ 'type' => 'application/jrd+json',
+ 'url' => z_root() . '/.well-known/webfinger?f=&resource=acct%3A' . argv(1) . '%40' . \App::get_hostname()
+ ],
+ ];
+ $x = [ 'channel_address' => argv(1), 'channel_links' => \App::$channel_links ];
+ call_hooks('channel_links', $x );
+ \App::$channel_links = $x['channel_links'];
+ header('Link: ' . \App::get_channel_links());
+ }
+
\App::$page['page_title'] = \App::$module;
$placeholder = '';
diff --git a/boot.php b/boot.php
index b6a33b808..9260cea43 100755
--- a/boot.php
+++ b/boot.php
@@ -782,6 +782,10 @@ class App {
public static $is_tablet = false;
public static $comanche;
+
+ public static $channel_links;
+
+
public static $category;
// Allow themes to control internal parameters
@@ -929,6 +933,7 @@ class App {
self::$module = 'home';
}
+
/*
* See if there is any page number information, and initialise
* pagination
@@ -1026,6 +1031,19 @@ class App {
return self::$path;
}
+ public static function get_channel_links() {
+ $s = '';
+ $x = self::$channel_links;
+ if($x && is_array($x) && count($x)) {
+ foreach($x as $y) {
+ if($s) {
+ $s .= ',';
+ }
+ $s .= '<' . $y['url'] . '>;rel="' . $y['rel'] . '";type="' . $y['type'] . '"';
+ }
+ }
+ return $s;
+ }
public static function set_account($acct) {
self::$account = $acct;
}
diff --git a/doc/hooklist.bb b/doc/hooklist.bb
index 9a17fdb91..1192a1506 100644
--- a/doc/hooklist.bb
+++ b/doc/hooklist.bb
@@ -91,6 +91,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the
[zrl=[baseurl]/help/hook/channel_remove]channel_remove[/zrl]
Called when removing a channel
+[zrl=[baseurl]/help/hook/channel_links]channel_links[/zrl]
+ Called when generating the Link: HTTP header for a channel
+
[zrl=[baseurl]/help/hook/channel_settings]channel_settings[/zrl]
Called when displaying the channel settings page