diff --git a/boot.php b/boot.php index 4c9a1a5e8c..224eba1f45 100644 --- a/boot.php +++ b/boot.php @@ -413,7 +413,7 @@ function public_contact() * * @return int|bool visitor_id or false */ -function remote_user($uid = 0) +function remote_user($uid = null) { // You cannot be both local and remote. // Unncommented by rabuzarus because remote authentication to local @@ -426,15 +426,15 @@ function remote_user($uid = 0) return false; } - if (!empty($uid) && !empty($_SESSION['remote'])) { + if (!is_null($uid) && !empty($_SESSION['remote'])) { + /// @todo replace it with this: + // if (!empty($_SESSION['remote'][$uid])) ... foreach ($_SESSION['remote'] as $visitor) { if ($visitor['uid'] == $uid) { return $visitor['cid']; } } - } - - if (!empty($_SESSION['visitor_id'])) { + } elseif (is_null($uid) && !empty($_SESSION['visitor_id'])) { return intval($_SESSION['visitor_id']); } diff --git a/mod/dfrn_poll.php b/mod/dfrn_poll.php index 6c849cb807..d805bcfd49 100644 --- a/mod/dfrn_poll.php +++ b/mod/dfrn_poll.php @@ -114,7 +114,7 @@ function dfrn_poll_init(App $a) $_SESSION['remote'] = []; } - $_SESSION['remote'][] = ['cid' => $r[0]['id'], 'uid' => $r[0]['uid'], 'url' => $r[0]['url']]; + $_SESSION['remote'][$r[0]['uid']] = ['cid' => $r[0]['id'], 'uid' => $r[0]['uid']]; $_SESSION['visitor_id'] = $r[0]['id']; $_SESSION['visitor_home'] = $r[0]['url']; @@ -521,7 +521,7 @@ function dfrn_poll_content(App $a) $_SESSION['remote'] = []; } - $_SESSION['remote'][] = ['cid' => $r[0]['id'], 'uid' => $r[0]['uid'], 'url' => $r[0]['url']]; + $_SESSION['remote'][$r[0]['uid']] = ['cid' => $r[0]['id'], 'uid' => $r[0]['uid']]; $_SESSION['visitor_id'] = $r[0]['id']; $_SESSION['visitor_home'] = $r[0]['url']; $_SESSION['visitor_visiting'] = $r[0]['uid']; diff --git a/src/Core/Session.php b/src/Core/Session.php index 8186c4745d..9927fca189 100644 --- a/src/Core/Session.php +++ b/src/Core/Session.php @@ -120,15 +120,18 @@ class Session 'my_url' => $a->getBaseURL() . '/profile/' . $user_record['nickname'], 'my_address' => $user_record['nickname'] . '@' . substr($a->getBaseURL(), strpos($a->getBaseURL(), '://') + 3), 'addr' => defaults($_SERVER, 'REMOTE_ADDR', '0.0.0.0'), + 'remote' => [] ]); - $remote_contacts = DBA::select('contact', ['id', 'uid'], ['nurl' => Strings::normaliseLink($_SESSION['my_url']), 'rel' => [Contact::FOLLOWER, Contact::FRIEND]]); + $remote_contacts = DBA::select('contact', ['id', 'uid'], ['nurl' => Strings::normaliseLink($_SESSION['my_url']), 'rel' => [Contact::FOLLOWER, Contact::FRIEND], 'self' => false]); while ($contact = DBA::fetch($remote_contacts)) { if (($contact['uid'] == 0) || Contact::isBlockedByUser($contact['id'], $contact['uid'])) { continue; } - $_SESSION['remote'][] = ['cid' => $contact['id'], 'uid' => $contact['uid'], 'url' => $_SESSION['my_url']]; + /// @todo Change it to this format to save space + // $_SESSION['remote'][$contact['uid']] = $contact['id']; + $_SESSION['remote'][$contact['uid']] = ['cid' => $contact['id'], 'uid' => $contact['uid']]; } DBA::close($remote_contacts); diff --git a/src/Model/Profile.php b/src/Model/Profile.php index 37f7028a51..290b6d3490 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -1124,13 +1124,13 @@ class Profile /// @todo replace this and the query for this variable with some cleaner functionality $_SESSION['remote'] = []; - $remote_contacts = DBA::select('contact', ['id', 'uid'], ['nurl' => $visitor['nurl'], 'rel' => [Contact::FOLLOWER, Contact::FRIEND]]); + $remote_contacts = DBA::select('contact', ['id', 'uid'], ['nurl' => $visitor['nurl'], 'rel' => [Contact::FOLLOWER, Contact::FRIEND], 'self' => false]); while ($contact = DBA::fetch($remote_contacts)) { if (($contact['uid'] == 0) || Contact::isBlockedByUser($visitor['id'], $contact['uid'])) { continue; } - $_SESSION['remote'][] = ['cid' => $contact['id'], 'uid' => $contact['uid'], 'url' => $visitor['url']]; + $_SESSION['remote'][$contact['uid']] = ['cid' => $contact['id'], 'uid' => $contact['uid']]; } $a->contact = $visitor;