X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FSession.php;h=b44ff3e2ea2fa928a69c4213b63c3339a20c4303;hb=83b00ef3081618dca2a17537289f55a485f70b00;hp=22909a6e6e039720d3d43b6310e6a762304ca331;hpb=08be92a86226fdad7f53e2b330fa0b5bd1388f0a;p=friendica.git diff --git a/src/Core/Session.php b/src/Core/Session.php index 22909a6e6e..b44ff3e2ea 100644 --- a/src/Core/Session.php +++ b/src/Core/Session.php @@ -9,8 +9,10 @@ use Friendica\App; use Friendica\Core\Session\CacheSessionHandler; use Friendica\Core\Session\DatabaseSessionHandler; use Friendica\Database\DBA; +use Friendica\Model\Contact; use Friendica\Model\User; use Friendica\Util\DateTimeFormat; +use Friendica\Util\Strings; /** * High-level Session service class @@ -51,7 +53,7 @@ class Session /** * Retrieves a key from the session super global or the defaults if the key is missing or the value is falsy. - * + * * Handle the case where session_start() hasn't been called and the super global isn't available. * * @param string $name @@ -117,9 +119,11 @@ class Session 'page_flags' => $user_record['page-flags'], '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'), + 'addr' => defaults($_SERVER, 'REMOTE_ADDR', '0.0.0.0') ]); + self::setVisitorsContacts(); + $member_since = strtotime($user_record['register_date']); self::set('new_member', time() < ($member_since + ( 60 * 60 * 24 * 14))); @@ -201,4 +205,68 @@ class Session } } } + + /** + * Returns contact ID for given user ID + * + * @param integer $uid User ID + * @return integer Contact ID of visitor for given user ID + */ + public static function getRemoteContactID($uid) + { + if (empty($_SESSION['remote'][$uid])) { + return false; + } + + return $_SESSION['remote'][$uid]; + } + + /** + * Returns User ID for given contact ID of the visitor + * + * @param integer $cid Contact ID + * @return integer User ID for given contact ID of the visitor + */ + public static function getUserIDForVisitorContactID($cid) + { + if (empty($_SESSION['remote'])) { + return false; + } + + return array_search($cid, $_SESSION['remote']); + } + + /** + * Set the session variable that contains the contact IDs for the visitor's contact URL + * + * @param string $url Contact URL + */ + public static function setVisitorsContacts() + { + $_SESSION['remote'] = []; + + $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'][$contact['uid']] = $contact['id']; + } + DBA::close($remote_contacts); + } + + /** + * Returns if the current visitor is authenticated + * + * @return boolean "true" when visitor is either a local or remote user + */ + public static function isAuthenticated() + { + if (empty($_SESSION['authenticated'])) { + return false; + } + + return $_SESSION['authenticated']; + } }