/** * This simply gets public session, from cookies if necessary. * * @param Zend_Controller_Request_Http $request * * @return XenForo_Session */ public static function getPublicSession(Zend_Controller_Request_Http $request) { $session = new XenForo_Session(); $session->start(); if (!$session->sessionExists()) { $cookiePrefix = XenForo_Application::get('config')->cookie->prefix; $userCookie = $request->getCookie($cookiePrefix . 'user'); if ($userCookie) { if ($userId = XenForo_Model::create('XenForo_Model_User')->loginUserByRememberCookie($userCookie)) { $session->changeUserId($userId); } else { XenForo_Helper_Cookie::deleteCookie('user', true); } } if (!empty($_SERVER['HTTP_USER_AGENT'])) { $session->set('userAgent', $_SERVER['HTTP_USER_AGENT']); $session->set('isRobot', self::isRobot($_SERVER['HTTP_USER_AGENT'])); } if (!empty($_SERVER['HTTP_REFERER'])) { $session->set('referer', $_SERVER['HTTP_REFERER']); $session->set('fromSearch', self::isSearchReferer($_SERVER['HTTP_REFERER'])); } } return $session; }