Aleksander Machniak
2012-08-09 23557f06d13f121a8483376dad1604eb30711a88
program/include/rcube_cache.php
@@ -19,9 +19,6 @@
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
 $Id$
*/
@@ -36,9 +33,9 @@
class rcube_cache
{
    /**
     * Instance of rcube_mdb2 or Memcache class
     * Instance of database handler
     *
     * @var rcube_mdb2/Memcache
     * @var rcube_db|Memcache|bool
     */
    private $db;
    private $type;
@@ -48,7 +45,6 @@
    private $packed;
    private $index;
    private $cache         = array();
    private $cache_keys    = array();
    private $cache_changes = array();
    private $cache_sums    = array();
@@ -170,7 +166,7 @@
            $this->cache         = array();
            $this->cache_changed = false;
            $this->cache_changes = array();
            $this->cache_keys    = array();
            $this->cache_sums    = array();
        }
        // Remove keys by name prefix
        else if ($prefix_mode) {
@@ -178,7 +174,7 @@
                if (strpos($k, $key) === 0) {
                    $this->cache[$k] = null;
                    $this->cache_changes[$k] = false;
                    unset($this->cache_keys[$k]);
                    unset($this->cache_sums[$k]);
                }
            }
        }
@@ -186,7 +182,7 @@
        else {
            $this->cache[$key] = null;
            $this->cache_changes[$key] = false;
            unset($this->cache_keys[$key]);
            unset($this->cache_sums[$key]);
        }
        // Remove record(s) from the backend
@@ -277,7 +273,7 @@
        }
        else {
            $sql_result = $this->db->limitquery(
                "SELECT cache_id, data, cache_key".
                "SELECT data, cache_key".
                " FROM ".$this->db->table_name('cache').
                " WHERE user_id = ?".
                " AND cache_key = ?".
@@ -299,7 +295,6 @@
                $this->cache[$key]      = $data;
               $this->cache_sums[$key] = $md5sum;
                $this->cache_keys[$key] = $sql_arr['cache_id'];
            }
            else {
                $this->cache[$key] = null;
@@ -328,7 +323,7 @@
            return $this->add_record($this->ckey($key), $data);
        }
        $key_exists = $this->cache_keys[$key];
        $key_exists = array_key_exists($key, $this->cache_sums);
        $key        = $this->prefix . '.' . $key;
        // Remove NULL rows (here we don't need to check if the record exist)
@@ -468,10 +463,13 @@
     */
    private function delete_record($key, $index=true)
    {
        if ($this->type == 'memcache')
            $this->db->delete($this->ckey($key));
        else
        if ($this->type == 'memcache') {
            // #1488592: use 2nd argument
            $this->db->delete($this->ckey($key), 0);
        }
        else {
            apc_delete($this->ckey($key));
        }
        if ($index) {
            if (($idx = array_search($key, $this->index)) !== false) {