diff options
Diffstat (limited to 'mod/dfrn_poll.php')
-rw-r--r-- | mod/dfrn_poll.php | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/mod/dfrn_poll.php b/mod/dfrn_poll.php new file mode 100644 index 000000000..e7f4b0786 --- /dev/null +++ b/mod/dfrn_poll.php @@ -0,0 +1,58 @@ +<?php + + +function dfrn_poll_init(&$a) { + + if(x($_GET,'dfrn_id')) + $dfrn_id = $a->config['dfrn_poll_dfrn_id'] = $_GET['dfrn_id']; + if(x($_GET,'type')) + $type = $a->config['dfrn_poll_type'] = $_GET['type']; + if(x($_GET,'last_update')) + $last_update = $a->config['dfrn_poll_last_update'] = $_GET['last_update']; + + + + if(! x($dfrn_id)) + return; + + + if((x($type)) && ($type == 'profile')) { + + $r = q("SELECT `contact`.*, `user`.`nickname` + FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid` + WHERE `issued-id` = '%s' LIMIT 1", + dbesc($dfrn_id)); + if(count($r)) { + $s = fetch_url($r[0]['poll'] . '?dfrn_id=' . $dfrn_id . '&type=profile-check'); + if(strlen($s)) { + $xml = simplexml_load_string($s); + if((int) $xml->status == 1) { + $_SESSION['authenticated'] = 1; + $_SESSION['visitor_id'] = $r[0]['id']; + $_SESSION['sysmsg'] .= "Hi {$r[0]['name']}" . EOL; + // Visitors get 1 day session. + $session_id = session_id(); + $expire = time() + 86400; + q("UPDATE `session` SET `expire` = '%s' WHERE `sid` = '%s' LIMIT 1", + dbesc($expire), + dbesc($session_id)); + } + } + $profile = ((strlen($r[0]['nickname'])) ? $r[0]['nickname'] : $r[0]['uid']); + goaway($a->get_baseurl() . "/profile/$profile"); + } + goaway($a->get_baseurl()); + } + + if((x($type)) && ($type == 'profile-check')) { + + q("DELETE FROM `expire` WHERE `expire` < " . time()); + $r = q("SELECT * FROM `profile_check` WHERE `dfrn_id` = '%s' ORDER BY `expire` DESC", + dbesc($dfrn_id)); + if(count($r)) + xml_status(1); + xml_status(0); + return; // NOTREACHED + } + +} |