]> git.mxchange.org Git - friendica.git/blobdiff - mod/xrd.php
Merge pull request #3047 from annando/1612-indexlength
[friendica.git] / mod / xrd.php
index 06b2442b233594e597c4a0d2b7674c7caab72ce3..e4641f5a35eb0eee2545f57bb88659dee65c5191 100644 (file)
@@ -1,32 +1,80 @@
 <?php
 
+require_once('include/crypto.php');
 
-function xrd_content(&$a) {
+function xrd_init(&$a) {
 
        $uri = urldecode(notags(trim($_GET['uri'])));
-       $local = str_replace('acct:', '', $uri);
-       if(substr($local,0,2) == '//')
-               $local = substr($local,2);
 
-       $name = substr($local,0,strpos($local,'@'));
+       if(substr($uri,0,4) === 'http') {
+               $acct = false;
+               $name = basename($uri);
+       } else {
+               $acct = true;
+               $local = str_replace('acct:', '', $uri);
+               if(substr($local,0,2) == '//')
+                       $local = substr($local,2);
+
+               $name = substr($local,0,strpos($local,'@'));
+       }
 
        $r = q("SELECT * FROM `user` WHERE `nickname` = '%s' LIMIT 1",
                dbesc($name)
        );
-       if(! count($r))
+       if (! dbm::is_result($r)) {
                killme();
+       }
+
+       $salmon_key = salmon_key($r[0]['spubkey']);
+
+       header('Access-Control-Allow-Origin: *');
+       header("Content-type: text/xml");
+
+       $tpl = get_markup_template('xrd_diaspora.tpl');
+       $dspr = replace_macros($tpl,array(
+               '$baseurl' => App::get_baseurl(),
+               '$dspr_guid' => $r[0]['guid'],
+               '$dspr_key' => base64_encode(pemtorsa($r[0]['pubkey']))
+       ));
 
-       $tpl = load_view_file('view/xrd_person.tpl');
+       $tpl = get_markup_template('xrd_person.tpl');
+
+       $profile_url = App::get_baseurl().'/profile/'.$r[0]['nickname'];
+
+       if ($acct) {
+               $alias = $profile_url;
+       }
+       else {
+               $alias = 'acct:'.$r[0]['nickname'].'@'.$a->get_hostname();
+
+               if ($a->get_path()) {
+                       $alias .= '/'.$a->get_path();
+               }
+       }
 
        $o = replace_macros($tpl, array(
-               '$accturi' => $uri,
-               '$profile_url' => $a->get_baseurl() . '/profile/' . $r[0]['nickname'],
-               '$photo' => $a->get_baseurl() . '/photo/profile/' . $r[0]['uid'],
-               '$salmon' => $a->get_baseurl() . '/salmon/' . $r[0]['nickname'] . '/mention',
-               '$modexp' => $a->get_baseurl() . '/modexp/' . $r[0]['nickname']
+               '$nick'        => $r[0]['nickname'],
+               '$accturi'     => $uri,
+               '$alias'       => $alias,
+               '$profile_url' => $profile_url,
+               '$hcard_url'   => App::get_baseurl() . '/hcard/'         . $r[0]['nickname'],
+               '$atom'        => App::get_baseurl() . '/dfrn_poll/'     . $r[0]['nickname'],
+               '$zot_post'    => App::get_baseurl() . '/post/'          . $r[0]['nickname'],
+               '$poco_url'    => App::get_baseurl() . '/poco/'          . $r[0]['nickname'],
+               '$photo'       => App::get_baseurl() . '/photo/profile/' . $r[0]['uid']      . '.jpg',
+               '$dspr'        => $dspr,
+               '$salmon'      => App::get_baseurl() . '/salmon/'        . $r[0]['nickname'],
+               '$salmen'      => App::get_baseurl() . '/salmon/'        . $r[0]['nickname'] . '/mention',
+               '$subscribe'   => App::get_baseurl() . '/follow?url={uri}',
+               '$modexp'      => 'data:application/magic-public-key,'  . $salmon_key,
+               '$bigkey'      => salmon_key($r[0]['pubkey']),
        ));
 
-       echo $o;
+
+       $arr = array('user' => $r[0], 'xml' => $o);
+       call_hooks('personal_xrd', $arr);
+
+       echo $arr['xml'];
        killme();
 
-}
\ No newline at end of file
+}