roundcubemail/program/lib/Roundcube/rcube_cache.php
private function read_record($key, $nostore=false)
    {
        if (!$this->db) {
            return null;
        }

        if ($this->type != 'db') {
            $this->load_index();

            // Consistency check (#1490390)
            if (!in_array($key, $this->index)) {
                // we always check if the key exist in the index
                // to have data in consistent state. Keeping the index consistent
                // is needed for keys delete operation when we delete all keys or by prefix.
            }
            else {
                $ckey = $this->ckey($key);

                if ($this->type == 'memcache') {
                    $data = $this->db->get($ckey);
                }
                else if ($this->type == 'apc') {
                    $data = apc_fetch($ckey);
                }

                if ($this->debug) {
                    $this->debug('get', $ckey, $data);
                }
            }

            if ($data !== false) {
                $md5sum = md5($data);
                $data   = $this->unserialize($data);

                if ($nostore) {
                    return $data;
                }

                $this->cache_sums[$key] = $md5sum;
                $this->cache[$key]      = $data;
            }
            else {
                $this->cache[$key] = null;
            }
        }
        else {
            $sql_result = $this->db->query(
                "SELECT `data`, `cache_key` FROM {$this->table}"
                . " WHERE `user_id` = ? AND `cache_key` = ?",
                $this->userid, $this->prefix.'.'.$key);

            if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
                if (strlen($sql_arr['data']) > 0) {
                    $md5sum = md5($sql_arr['data']);
                    $data   = $this->unserialize($sql_arr['data']);
                }

                $this->db->reset();

                if ($nostore) {
                    return $data;
                }

                $this->cache[$key]      = $data;
                $this->cache_sums[$key] = $md5sum;
            }
            else {
                $this->cache[$key] = null;
            }
        }

        return $this->cache[$key];
    }
private function read_record($key, $nostore=false)
    {
        if (!$this->db) {
            return null;
        }

        if ($this->type != 'db') {
            $this->load_index();

            // Consistency check (#1490390)
            if (!in_array($key, $this->index)) {
                // we always check if the key exist in the index
                // to have data in consistent state. Keeping the index consistent
                // is needed for keys delete operation when we delete all keys or by prefix.
            }
            else {
                $ckey = $this->ckey($key);

                if ($this->type == 'memcache') {
                    $data = $this->db->get($ckey);
                }
                else if ($this->type == 'apc') {
                    $data = apc_fetch($ckey);
                }

                if ($this->debug) {
                    $this->debug('get', $ckey, $data);
                }
            }

            if ($data !== false) {
                $md5sum = md5($data);
                $data   = $this->unserialize($data);

                if ($nostore) {
                    return $data;
                }

                $this->cache_sums[$key] = $md5sum;
                $this->cache[$key]      = $data;
            }
            else {
                $this->cache[$key] = null;
            }
        }
        else {
            $sql_result = $this->db->query(
                "SELECT `data`, `cache_key` FROM {$this->table}"
                . " WHERE `user_id` = ? AND `cache_key` = ?",
                $this->userid, $this->prefix.'.'.$key);

            if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
                if (strlen($sql_arr['data']) > 0) {
                    $md5sum = md5($sql_arr['data']);
                    $data   = $this->unserialize($sql_arr['data']);
                }

                $this->db->reset();

                if ($nostore) {
                    return $data;
                }

                $this->cache[$key]      = $data;
                $this->cache_sums[$key] = $md5sum;
            }
            else {
                $this->cache[$key] = null;
            }
        }

        return $this->cache[$key];
    }
private function read_record ( $ key , $ nostore = false ) { if ( ! $ this -> db ) { return null ; } if ( $ this -> type != 'db' ) { $ this -> load_index ( ) ; // Consistency check (#1490390) if ( ! in_array ( $ key , $ this -> index ) ) { // we always check if the key exist in the index // to have data in consistent state. Keeping the index consistent // is needed for keys delete operation when we delete all keys or by prefix. } else { $ ckey = $ this -> ckey ( $ key ) ; if ( $ this -> type == 'memcache' ) { $ data = $ this -> db -> get ( $ ckey ) ; } else if ( $ this -> type == 'apc' ) { $ data = apc_fetch ( $ ckey ) ; } if ( $ this -> debug ) { $ this -> debug ( 'get' , $ ckey , $ data ) ; } } if ( $ data !== false ) { $ md5sum = md5 ( $ data ) ; $ data = $ this -> unserialize ( $ data ) ; if ( $ nostore ) { return $ data ; } $ this -> cache_sums [ $ key ] = $ md5sum ; $ this -> cache [ $ key ] = $ data ; } else { $ this -> cache [ $ key ] = null ; } } else { $ sql_result = $ this -> db -> query ( "SELECT `data`, `cache_key` FROM {$this->table}" . " WHERE `user_id` = ? AND `cache_key` = ?" , $ this -> userid , $ this -> prefix . '.' . $ key ) ; if ( $ sql_arr = $ this -> db -> fetch_assoc ( $ sql_result ) ) { if ( strlen ( $ sql_arr [ 'data' ] ) > 0 ) { $ md5sum = md5 ( $ sql_arr [ 'data' ] ) ; $ data = $ this -> unserialize ( $ sql_arr [ 'data' ] ) ; } $ this -> db -> reset ( ) ; if ( $ nostore ) { return $ data ; } $ this -> cache [ $ key ] = $ data ; $ this -> cache_sums [ $ key ] = $ md5sum ; } else { $ this -> cache [ $ key ] = null ; } } return $ this -> cache [ $ key ] ; }
Reads cache entry.

@param string  $key     Cache key name
@param boolean $nostore Enable to skip in-memory store

@return mixed Cached value
Reads cache entry .