Aleksander Machniak
2015-06-07 a9587489473baf3854999e711083be212ca0c1c4
program/lib/Roundcube/rcube_session_db.php
@@ -1,6 +1,6 @@
<?php
/*
/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 | Copyright (C) 2005-2014, The Roundcube Dev Team                       |
@@ -71,7 +71,6 @@
        return true;
    }
    /**
     * Handler for session_destroy()
     *
@@ -109,7 +108,6 @@
            return !empty($this->vars) ? (string) $this->vars : '';
        }
        return null;
    }
    /**
@@ -121,16 +119,15 @@
     */
    public function write($key, $vars)
    {
        $now        = $this->db->now();
        $now = $this->db->now();
        $this->db->query("INSERT INTO {$this->table_name}"
                         . " (`sess_id`, `vars`, `ip`, `created`, `changed`)"
                         . " VALUES (?, ?, ?, $now, $now)",
                         $key, base64_encode($vars), (string)$this->ip);
            . " (`sess_id`, `vars`, `ip`, `created`, `changed`)"
            . " VALUES (?, ?, ?, $now, $now)",
            $key, base64_encode($vars), (string)$this->ip);
        return true;
    }
    /**
     * update session data
@@ -150,12 +147,12 @@
        // else update expire timestamp only when certain conditions are met
        if ($newvars !== $oldvars) {
            $this->db->query("UPDATE {$this->table_name} "
                             . "SET `changed` = $now, `vars` = ? WHERE `sess_id` = ?",
                             base64_encode($newvars), $key);
                . "SET `changed` = $now, `vars` = ? WHERE `sess_id` = ?",
                base64_encode($newvars), $key);
        }
        else if ($ts - $this->changed + $this->time_diff > $this->lifetime / 2) {
            $this->db->query("UPDATE {$this->table_name} SET `changed` = $now"
                                 . " WHERE `sess_id` = ?", $key);
                . " WHERE `sess_id` = ?", $key);
        }
        return true;
@@ -168,8 +165,10 @@
    {
        // just clean all old sessions when this GC is called
        $this->db->query("DELETE FROM " . $this->db->table_name('session')
                         . " WHERE changed < " . $this->db->now(-$this->gc_enabled));
        $this->log("Session GC (DB): remove records < " . date('Y-m-d H:i:s', time() - $this->gc_enabled) . '; rows = ' . intval($this->db->affected_rows()));
    }
            . " WHERE changed < " . $this->db->now(-$this->gc_enabled));
}
        $this->log("Session GC (DB): remove records < "
            . date('Y-m-d H:i:s', time() - $this->gc_enabled)
            . '; rows = ' . intval($this->db->affected_rows()));
    }
}