From b9818185db7e326fca3f98c4da3711eff5aacea3 Mon Sep 17 00:00:00 2001 From: Zach Prezkuta Date: Tue, 9 Oct 2012 09:50:24 -0600 Subject: [PATCH] for profile and photos, detect contacts from local hub and auto-redir --- include/redir.php | 60 +++++++++++++++++++++++++++++++++++++++++++++++ mod/photos.php | 4 ++++ mod/profile.php | 4 ++++ 3 files changed, 68 insertions(+) create mode 100644 include/redir.php diff --git a/include/redir.php b/include/redir.php new file mode 100644 index 0000000000..ecc07dfbec --- /dev/null +++ b/include/redir.php @@ -0,0 +1,60 @@ +user['nickname']), + dbesc(NETWORK_DFRN) + ); + if(!$r || $r[0]['id'] == remote_user()) + return; + + + $r = q("SELECT * FROM contact WHERE nick = '%s' AND network = '%s' AND uid = %d LIMIT 1", + dbesc($contact_nick), + dbesc(NETWORK_DFRN), + intval(local_user()) + ); + + if(! $r) + return; + + $cid = $r[0]['id']; + + $dfrn_id = $orig_id = (($r[0]['issued-id']) ? $r[0]['issued-id'] : $r[0]['dfrn-id']); + + if($r[0]['duplex'] && $r[0]['issued-id']) { + $orig_id = $r[0]['issued-id']; + $dfrn_id = '1:' . $orig_id; + } + if($r[0]['duplex'] && $r[0]['dfrn-id']) { + $orig_id = $r[0]['dfrn-id']; + $dfrn_id = '0:' . $orig_id; + } + + $sec = random_string(); + + q("INSERT INTO `profile_check` ( `uid`, `cid`, `dfrn_id`, `sec`, `expire`) + VALUES( %d, %s, '%s', '%s', %d )", + intval(local_user()), + intval($cid), + dbesc($dfrn_id), + dbesc($sec), + intval(time() + 45) + ); + + $url = curPageURL(); + + logger('check_redir: ' . $r[0]['name'] . ' ' . $sec, LOGGER_DEBUG); + $dest = (($url) ? '&destination_url=' . $url : ''); + goaway ($r[0]['poll'] . '?dfrn_id=' . $dfrn_id + . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec . $dest ); + } + + return; +} + + diff --git a/mod/photos.php b/mod/photos.php index 9a3a402a4b..7108e95698 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -4,14 +4,18 @@ require_once('include/items.php'); require_once('include/acl_selectors.php'); require_once('include/bbcode.php'); require_once('include/security.php'); +require_once('include/redir.php'); function photos_init(&$a) { + if($a->argc > 1) + auto_redir($a, $a->argv[1]); if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) { return; } + $o = ''; if($a->argc > 1) { diff --git a/mod/profile.php b/mod/profile.php index b33b181de1..3eb97e1572 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -1,6 +1,7 @@ user['nickname']; $profile = $a->argv[1]; } + else { + auto_redir($a, $which); + } profile_load($a,$which,$profile);