aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs/Module/Oexchange.php
diff options
context:
space:
mode:
Diffstat (limited to 'Zotlabs/Module/Oexchange.php')
-rw-r--r--Zotlabs/Module/Oexchange.php77
1 files changed, 77 insertions, 0 deletions
diff --git a/Zotlabs/Module/Oexchange.php b/Zotlabs/Module/Oexchange.php
new file mode 100644
index 000000000..24fc14821
--- /dev/null
+++ b/Zotlabs/Module/Oexchange.php
@@ -0,0 +1,77 @@
+<?php
+namespace Zotlabs\Module;
+
+
+
+class Oexchange extends \Zotlabs\Web\Controller {
+
+ function init() {
+
+ if((argc() > 1) && (argv(1) === 'xrd')) {
+ $tpl = get_markup_template('oexchange_xrd.tpl');
+
+ $o = replace_macros($tpl, array('$base' => z_root()));
+ echo $o;
+ killme();
+ }
+ }
+
+ function get() {
+
+ if(! local_channel()) {
+ if(remote_channel()) {
+ $observer = \App::get_observer();
+ if($observer && $observer['xchan_url']) {
+ $parsed = @parse_url($observer['xchan_url']);
+ if(! $parsed) {
+ notice( t('Unable to find your hub.') . EOL);
+ return;
+ }
+ $url = $parsed['scheme'] . '://' . $parsed['host'] . (($parsed['port']) ? ':' . $parsed['port'] : '');
+ $url .= '/oexchange';
+ $result = z_post_url($url,$_REQUEST);
+ json_return_and_die($result);
+ }
+ }
+
+ return login(false);
+ }
+
+ if((argc() > 1) && argv(1) === 'done') {
+ info( t('Post successful.') . EOL);
+ return;
+ }
+
+ $url = (((x($_REQUEST,'url')) && strlen($_REQUEST['url']))
+ ? urlencode(notags(trim($_REQUEST['url']))) : '');
+ $title = (((x($_REQUEST,'title')) && strlen($_REQUEST['title']))
+ ? '&title=' . urlencode(notags(trim($_REQUEST['title']))) : '');
+ $description = (((x($_REQUEST,'description')) && strlen($_REQUEST['description']))
+ ? '&description=' . urlencode(notags(trim($_REQUEST['description']))) : '');
+ $tags = (((x($_REQUEST,'tags')) && strlen($_REQUEST['tags']))
+ ? '&tags=' . urlencode(notags(trim($_REQUEST['tags']))) : '');
+
+ $ret = z_fetch_url(z_root() . '/urlinfo?f=&url=' . $url . $title . $description . $tags);
+
+ if($ret['success'])
+ $s = $ret['body'];
+
+ if(! strlen($s))
+ return;
+
+ $post = array();
+
+ $post['profile_uid'] = local_channel();
+ $post['return'] = '/oexchange/done' ;
+ $post['body'] = $s;
+ $post['type'] = 'wall';
+
+ $_REQUEST = $post;
+ $mod = new Item();
+ $mod->post();
+
+ }
+
+
+
+}