Example #1
0
 /**
  * Setup the visitor singleton.
  *
  * @param integer $userId User ID to setup as
  * @param array $options
  *
  * @return XenForo_Visitor
  */
 public static function setup($userId, array $options = array())
 {
     $userId = intval($userId);
     $options = array_merge(array('languageId' => 0, 'permissionUserId' => 0), $options);
     /* @var $userModel XenForo_Model_User */
     $userModel = XenForo_Model::create('XenForo_Model_User');
     $object = new self();
     if ($userId && ($user = $userModel->getVisitingUserById($userId))) {
         if ($user['is_admin'] && $options['permissionUserId']) {
             // force permissions for testing
             $user = $userModel->setPermissionsFromUserId($user, $options['permissionUserId']);
         }
         $object->_user = $user;
     } else {
         $object->_user = $userModel->getVisitingGuestUser();
         if ($options['languageId']) {
             $object->_user['language_id'] = $options['languageId'];
         }
     }
     $object->_user['referer'] = !empty($options['referer']) ? $options['referer'] : null;
     $object->_user['from_search'] = !empty($options['fromSearch']);
     $object->_user['is_robot'] = !empty($options['isRobot']);
     $object->_user['permissions'] = XenForo_Permission::unserializePermissions($object->_user['global_permission_cache']);
     $object->setVisitorLanguage($object->_user['language_id']);
     XenForo_Locale::setDefaultTimeZone($object->_user['timezone']);
     self::$_instance = $object;
     XenForo_CodeEvent::fire('visitor_setup', array(&self::$_instance));
     return self::$_instance;
 }