alecpl
2010-04-29 a004bb8cbe4a8f0adf68b5b63de1ef1d32007255
- code re-formatting + small improvements


2 files modified
183 ■■■■ changed files
program/include/rcube_contacts.php 6 ●●●● patch | view | raw | blame | history
program/include/rcube_mdb2.php 177 ●●●● patch | view | raw | blame | history
program/include/rcube_contacts.php
@@ -226,7 +226,7 @@
        foreach ($fields as $col) {
            if ($col == 'ID' || $col == $this->primary_key) {
                $ids         = !is_array($value) ? explode(',', $value) : $value;
                $ids         = join(',', array_map(array($this->db, 'quote'), $ids));
                $ids         = $this->db->array2list($ids, 'integer');
                $add_where[] = 'c.' . $this->primary_key.' IN ('.$ids.')';
            }
            else if ($strict)
@@ -437,7 +437,7 @@
        if (!is_array($ids))
            $ids = explode(',', $ids);
        $ids = join(',', array_map(array($this->db, 'quote'), $ids));
        $ids = $this->db->array2list($ids, 'integer');
        // flag record as deleted
        $this->db->query(
@@ -589,7 +589,7 @@
        if (!is_array($ids))
            $ids = explode(',', $ids);
        $ids = join(',', array_map(array($this->db, 'quote'), $ids));
        $ids = $this->db->array2list($ids, 'integer');
    
        $sql_result = $this->db->query(
            "DELETE FROM ".get_table_name('contactgroupmembers').
program/include/rcube_mdb2.php
@@ -42,11 +42,10 @@
  var $db_handle = 0;         // Connection handle
  var $db_error = false;
  var $db_error_msg = '';
  var $debug_mode = false;
  var $a_query_results = array('dummy');
  var $last_res_id = 0;
    private $debug_mode = false;
    private $a_query_results = array('dummy');
    private $last_res_id = 0;
  private $tables;
@@ -77,7 +76,7 @@
   * @return object  PEAR database handle
   * @access private
   */
  function dsn_connect($dsn)
    private function dsn_connect($dsn)
    {
    // Use persistent connections if available
    $db_options = array(
@@ -85,7 +84,7 @@
        'emulate_prepared' => $this->debug_mode,
        'debug' => $this->debug_mode,
        'debug_handler' => 'mdb2_debug_handler',
        'portability' => MDB2_PORTABILITY_ALL ^ MDB2_PORTABILITY_EMPTY_TO_NULL);
            'portability'      => MDB2_PORTABILITY_ALL ^ MDB2_PORTABILITY_EMPTY_TO_null);
    if ($this->db_provider == 'pgsql') {
      $db_options['disable_smart_seqname'] = true;
@@ -94,16 +93,15 @@
    $dbh = MDB2::connect($dsn, $db_options);
    if (MDB2::isError($dbh))
      {
      $this->db_error = TRUE;
        if (MDB2::isError($dbh)) {
            $this->db_error = true;
      $this->db_error_msg = $dbh->getMessage();
      
      raise_error(array('code' => 500, 'type' => 'db', 'line' => __LINE__,
        'file' => __FILE__, 'message' => $dbh->getUserInfo()), TRUE, FALSE);
            raise_error(array('code' => 500, 'type' => 'db',
                'line' => __LINE__, 'file' => __FILE__,
                'message' => $dbh->getUserInfo()), true, false);
      }
    else if ($this->db_provider=='sqlite')
      {
        else if ($this->db_provider == 'sqlite') {
      $dsn_array = MDB2::parseDSN($dsn);
      if (!filesize($dsn_array['database']) && !empty($this->sqlite_initials))
        $this->_sqlite_create_database($dbh, $this->sqlite_initials);
@@ -116,8 +114,7 @@
  /**
   * Connect to appropiate databse
   * depending on the operation
     * Connect to appropiate database depending on the operation
   *
   * @param  string  Connection mode (r|w)
   * @access public
@@ -127,8 +124,7 @@
    $this->db_mode = $mode;
    // Already connected
    if ($this->db_connected)
      {
        if ($this->db_connected) {
      // no replication, current connection is ok
      if ($this->db_dsnw==$this->db_dsnr)
        return;
@@ -142,10 +138,7 @@
        return;
      }
    if ($mode=='r')
      $dsn = $this->db_dsnr;
    else
      $dsn = $this->db_dsnw;
        $dsn = ($mode == 'r') ? $this->db_dsnr : $this->db_dsnw;
    $this->db_handle = $this->dsn_connect($dsn);
    $this->db_connected = true;
@@ -156,12 +149,12 @@
   * Activate/deactivate debug mode
   *
   * @param boolean True if SQL queries should be logged
     * @access public
   */
  function set_debug($dbg = true)
  {
    $this->debug_mode = $dbg;
    if ($this->db_connected)
    {
        if ($this->db_connected) {
      $this->db_handle->setOption('debug', $dbg);
      $this->db_handle->setOption('emulate_prepared', $dbg);
    }
@@ -172,10 +165,11 @@
   * Getter for error state
   *
   * @param  boolean  True on error
     * @access public
   */
  function is_error()
    {
    return $this->db_error ? $this->db_error_msg : FALSE;
        return $this->db_error ? $this->db_error_msg : false;
    }
    
@@ -183,10 +177,11 @@
   * Connection state checker
   *
   * @param  boolean  True if in connected state
     * @access public
   */
  function is_connected()
    {
    return PEAR::isError($this->db_handle) ? false : true;
        return PEAR::isError($this->db_handle) ? false : $this->db_connected;
    }
@@ -201,7 +196,7 @@
  function query()
    {
    if (!$this->is_connected())
      return NULL;
            return null;
    
    $params = func_get_args();
    $query = array_shift($params);
@@ -241,13 +236,10 @@
   * @return number  Query handle identifier
   * @access private
   */
  function _query($query, $offset, $numrows, $params)
    private function _query($query, $offset, $numrows, $params)
    {
    // Read or write ?
    if (strtolower(substr(trim($query),0,6))=='select')
      $mode='r';
    else
      $mode='w';
        $mode = (strtolower(substr(trim($query),0,6)) == 'select') ? 'r' : 'w';
    $this->db_connect($mode);
@@ -259,21 +251,18 @@
    if (empty($params))
      $result = $mode=='r' ? $this->db_handle->query($query) : $this->db_handle->exec($query);
    else
      {
        else {
      $params = (array)$params;
      $q = $this->db_handle->prepare($query, null, $mode=='w' ? MDB2_PREPARE_MANIP : null);
      if ($this->db_handle->isError($q))
        {
        $this->db_error = TRUE;
            if ($this->db_handle->isError($q)) {
                $this->db_error = true;
        $this->db_error_msg = $q->userinfo;
        raise_error(array('code' => 500, 'type' => 'db',
          'line' => __LINE__, 'file' => __FILE__,
          'message' => $this->db_error_msg), TRUE, TRUE);
                    'message' => $this->db_error_msg), true, true);
        }
      else
        {
            else {
        $result = $q->execute($params);
        $q->free();
        }
@@ -289,18 +278,18 @@
   * If no query handle is specified, the last query will be taken as reference
   *
   * @param  number  Optional query handle identifier
   * @return mixed   Number of rows or FALSE on failure
     * @return mixed   Number of rows or false on failure
   * @access public
   */
  function num_rows($res_id=NULL)
    function num_rows($res_id=null)
    {
    if (!$this->db_handle)
      return FALSE;
            return false;
    if ($result = $this->_get_result($res_id))
      return $result->numRows();
    else
      return FALSE;
            return false;
    }
@@ -308,13 +297,13 @@
   * Get number of affected rows for the last query
   *
   * @param  number  Optional query handle identifier
   * @return mixed   Number of rows or FALSE on failure
     * @return mixed   Number of rows or false on failure
   * @access public
   */
  function affected_rows($res_id = null)
    {
    if (!$this->db_handle)
      return FALSE;
            return false;
    return (int) $this->_get_result($res_id);
    }
@@ -325,13 +314,13 @@
   * For Postgres databases, a sequence name is required
   *
   * @param  string  Table name (to find the incremented sequence)
   * @return mixed   ID or FALSE on failure
     * @return mixed   ID or false on failure
   * @access public
   */
  function insert_id($table = '')
    {
    if (!$this->db_handle || $this->db_mode=='r')
      return FALSE;
            return false;
    if ($table) {
      if ($this->db_provider == 'pgsql')
@@ -353,10 +342,10 @@
   * If no query handle is specified, the last query will be taken as reference
   *
   * @param  number  Optional query handle identifier
   * @return mixed   Array with col values or FALSE on failure
     * @return mixed   Array with col values or false on failure
   * @access public
   */
  function fetch_assoc($res_id=NULL)
    function fetch_assoc($res_id=null)
    {
    $result = $this->_get_result($res_id);
    return $this->_fetch_row($result, MDB2_FETCHMODE_ASSOC);
@@ -368,10 +357,10 @@
   * If no query handle is specified, the last query will be taken as reference
   *
   * @param  number  Optional query handle identifier
   * @return mixed   Array with col values or FALSE on failure
     * @return mixed   Array with col values or false on failure
   * @access public
   */
  function fetch_array($res_id=NULL)
    function fetch_array($res_id=null)
    {
    $result = $this->_get_result($res_id);
    return $this->_fetch_row($result, MDB2_FETCHMODE_ORDERED);
@@ -383,13 +372,13 @@
   *
   * @param  object  Query result handle
   * @param  number  Fetch mode identifier
   * @return mixed   Array with col values or FALSE on failure
     * @return mixed   Array with col values or false on failure
   * @access private
   */
  function _fetch_row($result, $mode)
    private function _fetch_row($result, $mode)
    {
    if ($result === FALSE || PEAR::isError($result) || !$this->is_connected())
      return FALSE;
        if ($result === false || PEAR::isError($result) || !$this->is_connected())
            return false;
    return $result->fetchRow($mode);
    }
@@ -399,6 +388,8 @@
   * Wrapper for the SHOW TABLES command
   *
   * @return array List of all tables of the current database
     * @access public
     * @since 0.4-beta
   */
  function list_tables()
  {
@@ -419,19 +410,19 @@
   * Formats input so it can be safely used in a query
   *
   * @param  mixed   Value to quote
     * @param  string  Type of data
   * @return string  Quoted/converted string for use in query
   * @access public
   */
  function quote($input, $type = null)
    {
        // handle int directly for better performance
        if ($type == 'integer')
            return intval($input);
    // create DB handle if not available
    if (!$this->db_handle)
      $this->db_connect('r');
    // escape pear identifier chars
    $rep_chars = array('?' => '\?',
                       '!' => '\!',
                       '&' => '\&');
    return $this->db_handle->quote($input, $type);
    }
@@ -467,6 +458,7 @@
    return $this->db_handle->quoteIdentifier($str);
    }
  /**
   * Escapes a string
   *
@@ -492,8 +484,7 @@
   */
  function now()
    {
    switch($this->db_provider)
      {
        switch($this->db_provider) {
      case 'mssql':
      case 'sqlsrv':
        return "getdate()";
@@ -507,8 +498,9 @@
  /**
   * Return list of elements for use with SQL's IN clause
   *
   * @param  string Input array
   * @return string Elements list string
     * @param  array  Input array
     * @param  string Type of data
     * @return string Comma-separated list of quoted values for use in query
   * @access public
   */
  function array2list($arr, $type=null)
@@ -516,11 +508,10 @@
    if (!is_array($arr))
      return $this->quote($arr, $type);
    
    $res = array();
    foreach ($arr as $item)
      $res[] = $this->quote($item, $type);
        foreach ($arr as $idx => $item)
            $arr[$idx] = $this->quote($item, $type);
    return implode(',', $res);
        return implode(',', $arr);
    }
@@ -533,11 +524,9 @@
   */
  function unixtimestamp($field)
    {
    switch($this->db_provider)
      {
        switch($this->db_provider) {
      case 'pgsql':
        return "EXTRACT (EPOCH FROM $field)";
        break;
      case 'mssql':
      case 'sqlsrv':
@@ -558,8 +547,7 @@
   */
  function fromunixtime($timestamp)
    {
    switch($this->db_provider)
      {
        switch($this->db_provider) {
      case 'mysqli':
      case 'mysql':
      case 'sqlite':
@@ -582,8 +570,7 @@
  function ilike($column, $value)
    {
    // TODO: use MDB2's matchPattern() function
    switch($this->db_provider)
      {
        switch($this->db_provider) {
      case 'pgsql':
        return $this->quote_identifier($column).' ILIKE '.$this->quote($value);
      default:
@@ -647,18 +634,17 @@
   * @return mixed   Handle ID
   * @access private
   */
  function _add_result($res)
    private function _add_result($res)
    {
    // sql error occured
    if (PEAR::isError($res))
      {
      $this->db_error = TRUE;
        if (PEAR::isError($res)) {
            $this->db_error = true;
      $this->db_error_msg = $res->getMessage();
      raise_error(array('code' => 500, 'type' => 'db',
            'line' => __LINE__, 'file' => __FILE__,
            'message' => $res->getMessage() . " Query: " 
        . substr(preg_replace('/[\r\n]+\s*/', ' ', $res->userinfo), 0, 512)),
        TRUE, FALSE);
                true, false);
      }
    
    $res_id = sizeof($this->a_query_results);
@@ -673,19 +659,19 @@
   * If no ID is specified, the last resource handle will be returned
   *
   * @param  number  Handle ID
   * @return mixed   Resource handle or FALSE on failure
     * @return mixed   Resource handle or false on failure
   * @access private
   */
  function _get_result($res_id=NULL)
    private function _get_result($res_id = null)
    {
    if ($res_id==NULL)
        if ($res_id == null)
      $res_id = $this->last_res_id;
    if (isset($this->a_query_results[$res_id]))
      if (!PEAR::isError($this->a_query_results[$res_id]))
        return $this->a_query_results[$res_id];
    
    return FALSE;
        return false;
    }
@@ -696,7 +682,7 @@
   * @param  string  File path to use for DB creation
   * @access private
   */
  function _sqlite_create_database($dbh, $file_name)
    private function _sqlite_create_database($dbh, $file_name)
    {
    if (empty($file_name) || !is_string($file_name))
      return;
@@ -706,7 +692,8 @@
    if (strlen($data))
      if (!sqlite_exec($dbh->connection, $data, $error) || MDB2::isError($dbh)) 
        raise_error(array('code' => 500, 'type' => 'db',
        'line' => __LINE__, 'file' => __FILE__, 'message' => $error), TRUE, FALSE);
                    'line' => __LINE__, 'file' => __FILE__,
                    'message' => $error), true, false);
    }
@@ -716,17 +703,20 @@
   *
   * @access private
   */
  function _sqlite_prepare()
    private function _sqlite_prepare()
    {
    include_once('include/rcube_sqlite.inc');
    // we emulate via callback some missing MySQL function
    sqlite_create_function($this->db_handle->connection, "from_unixtime", "rcube_sqlite_from_unixtime");
    sqlite_create_function($this->db_handle->connection, "unix_timestamp", "rcube_sqlite_unix_timestamp");
    sqlite_create_function($this->db_handle->connection, "now", "rcube_sqlite_now");
    sqlite_create_function($this->db_handle->connection, "md5", "rcube_sqlite_md5");
        sqlite_create_function($this->db_handle->connection,
            'from_unixtime', 'rcube_sqlite_from_unixtime');
        sqlite_create_function($this->db_handle->connection,
            'unix_timestamp', 'rcube_sqlite_unix_timestamp');
        sqlite_create_function($this->db_handle->connection,
            'now', 'rcube_sqlite_now');
        sqlite_create_function($this->db_handle->connection,
            'md5', 'rcube_sqlite_md5');
    }
  }  // end class rcube_db
@@ -734,8 +724,7 @@
/* this is our own debug handler for the MDB2 connection */
function mdb2_debug_handler(&$db, $scope, $message, $context = array())
{
  if ($scope != 'prepare')
  {
    if ($scope != 'prepare') {
    $debug_output = $scope . '('.$db->db_index.'): ' . $message;
    write_log('sql', $debug_output);
  }