Index: kernel/classes/datatypes/ezuser/ezuser.php
===================================================================
--- kernel/classes/datatypes/ezuser/ezuser.php	(revision 22488)
+++ kernel/classes/datatypes/ezuser/ezuser.php	(working copy)
@@ -2215,7 +2215,8 @@
     function isLoggedIn()
     {
         if ( $this->ContentObjectID == self::anonymousId() or
-             $this->ContentObjectID == -1 )
+             $this->ContentObjectID == -1 or
+             !is_numeric( $this->ContentObjectID ) )
         {
             return false;
         }
Index: kernel/classes/ezpreferences.php
===================================================================
--- kernel/classes/ezpreferences.php	(revision 22488)
+++ kernel/classes/ezpreferences.php	(working copy)
@@ -139,8 +139,8 @@
         if ( $useCache and eZPreferences::isStoredInSession( $name ) )
             return eZPreferences::storedSessionValue( $name );
 
-        // If this the anonymous user we should return false, no need to check database.
-        if ( $user->isAnonymous() )
+        // If the user is not logged in we should return false, no need to check database.
+        if ( !$user->isLoggedIn() )
             return false;
 
         $db = eZDB::instance();
@@ -148,17 +148,11 @@
         $userID = $user->attribute( 'contentobject_id' );
         $existingRes = $db->arrayQuery( "SELECT value FROM ezpreferences WHERE user_id = $userID AND name = '$name'" );
 
-        if ( count( $existingRes ) == 1 )
+        $value = is_array( $existingRes ) && count( $existingRes ) == 1 ? $existingRes[0]['value'] : false;
+        if ( $useCache )
         {
-            $value = $existingRes[0]['value'];
-            if ( $useCache )
-                eZPreferences::storeInSession( $name, $value );
+            eZPreferences::storeInSession( $name, $value );
         }
-        else
-        {
-            if ( $useCache )
-                eZPreferences::storeInSession( $name, false );
-        }
         return $value;
     }
 
@@ -173,7 +167,7 @@
         if ( !( $user instanceof eZUser ) )
             $user = eZUser::currentUser();
 
-        if ( !$user->isAnonymous() )
+        if ( $user->isLoggedIn() )
         {
             // If the user object is not the currently logged in user we cannot use the session values
             $http = eZHTTPTool::instance();
