]> git.mxchange.org Git - friendica.git/blob - mod/redir.php
9223e5483c0c5b816485e8c7dd62ac88402bf3ca
[friendica.git] / mod / redir.php
1 <?php
2
3 function redir_init(&$a) {
4
5         $url = ((x($_GET,'url')) ? $_GET['url'] : '');
6
7         // traditional DFRN
8
9         if(local_user() && $a->argc == 2 && intval($a->argv[1])) {
10
11                 $cid = $a->argv[1];
12
13                 $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
14                         intval($cid),
15                         intval(local_user())
16                 );
17
18                 if((! count($r)) || ($r[0]['network'] !== NETWORK_DFRN))
19                         goaway(z_root());
20
21                 $dfrn_id = $orig_id = (($r[0]['issued-id']) ? $r[0]['issued-id'] : $r[0]['dfrn-id']);
22
23                 if($r[0]['duplex'] && $r[0]['issued-id']) {
24                         $orig_id = $r[0]['issued-id'];
25                         $dfrn_id = '1:' . $orig_id;
26                 }
27                 if($r[0]['duplex'] && $r[0]['dfrn-id']) {
28                         $orig_id = $r[0]['dfrn-id'];
29                         $dfrn_id = '0:' . $orig_id;
30                 }
31
32                 $sec = random_string();
33
34                 q("INSERT INTO `profile_check` ( `uid`, `cid`, `dfrn_id`, `sec`, `expire`)
35                         VALUES( %d, %s, '%s', '%s', %d )",
36                         intval(local_user()),
37                         intval($cid),
38                         dbesc($dfrn_id),
39                         dbesc($sec),
40                         intval(time() + 45)
41                 );
42
43                 logger('mod_redir: ' . $r[0]['name'] . ' ' . $sec, LOGGER_DEBUG); 
44                 $dest = (($url) ? '&destination_url=' . $url : '');
45                 goaway ($r[0]['poll'] . '?dfrn_id=' . $dfrn_id 
46                         . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec . $dest );
47         }
48
49         if(local_user())
50                 $handle = $a->user['nickname'] . '@' . substr($a->get_baseurl(),strpos($a->get_baseurl(),'://')+3);
51         if(remote_user())
52                 $handle = $_SESSION['handle'];
53
54         if($url) {
55                 $url = str_replace('{zid}','&zid=' . $handle,$url);
56                 goaway($url);
57         }
58
59         goaway(z_root());
60 }