Aleksander Machniak
2013-04-17 282dff4f18672c22f171768a983a740d1a8e0096
program/lib/Roundcube/rcube_db.php
@@ -444,17 +444,20 @@
     *
     * @param mixed $result Optional query handle
     * @return mixed   Number of rows or false on failure
     * @deprecated This method shows very poor performance and should be avoided.
     */
    public function num_rows($result = null)
    {
        if ($result || ($result === null && ($result = $this->last_result))) {
            // repeat query with SELECT COUNT(*) ...
            if (preg_match('/^SELECT\s+(?:ALL\s+|DISTINCT\s+)?(?:.*?)\s+FROM\s+(.*)$/i', $result->queryString, $m)) {
            if (preg_match('/^SELECT\s+(?:ALL\s+|DISTINCT\s+)?(?:.*?)\s+FROM\s+(.*)$/ims', $result->queryString, $m)) {
                $query = $this->dbh->query('SELECT COUNT(*) FROM ' . $m[1], PDO::FETCH_NUM);
                return $query ? intval($query->fetchColumn(0)) : false;
            }
            else {
                return count($result->fetchAll());
                $num = count($result->fetchAll());
                $result->execute();  // re-execute query because there's no seek(0)
                return $num;
            }
        }
@@ -631,6 +634,22 @@
    }
    /**
     * Escapes a string so it can be safely used in a query
     *
     * @param string $str A string to escape
     *
     * @return string Escaped string for use in a query
     */
    public function escape($str)
    {
        if (is_null($str)) {
            return 'NULL';
        }
        return substr($this->quote($str), 1, -1);
    }
    /**
     * Quotes a string so it can be safely used as a table or column name
     *
     * @param string $str Value to quote
@@ -645,6 +664,20 @@
    }
    /**
     * Escapes a string so it can be safely used in a query
     *
     * @param string $str A string to escape
     *
     * @return string Escaped string for use in a query
     * @deprecated    Replaced by rcube_db::escape
     * @see           rcube_db::escape
     */
    public function escapeSimple($str)
    {
        return $this->escape($str);
    }
    /**
     * Quotes a string so it can be safely used as a table or column name
     *
     * @param string $str Value to quote