[ Index ]

PHP Cross Reference of Akelos Framework

title

Body

[close]

/AkActiveRecord/AkDbAdapters/ -> AkMysqlDbAdapter.php (source)

   1  <?php
   2  /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
   3  
   4  // +----------------------------------------------------------------------+
   5  // | Akelos Framework - http://www.akelos.org                             |
   6  // +----------------------------------------------------------------------+
   7  // | Copyright (c) 2002-2006, Akelos Media, S.L.  & Bermi Ferrer Martinez |
   8  // | Released under the GNU Lesser General Public License, see LICENSE.txt|
   9  // +----------------------------------------------------------------------+
  10  
  11  /**
  12   * @package ActiveRecord
  13   * @subpackage Base
  14   * @component DbAdapter MySQL
  15   * @author Bermi Ferrer <bermi a.t akelos c.om> 2004 - 2007
  16   * @author Kaste 2007
  17   * @copyright Copyright (c) 2002-2006, Akelos Media, S.L. http://www.akelos.org
  18   * @license GNU Lesser General Public License <http://www.gnu.org/copyleft/lesser.html>
  19   */
  20  
  21  class AkMysqlDbAdapter extends AkDbAdapter
  22  {
  23      
  24      /**
  25       * @param array $database_settings
  26       * @return string
  27       */
  28      function _constructDsn($database_settings)
  29      {
  30          $dsn  = 'mysqlt://';
  31          $dsn .= $database_settings['user'].':'.$database_settings['password'];
  32          $dsn .= !empty($database_settings['host']) ? '@'.$database_settings['host'] : '@localhost';
  33          $dsn .= !empty($database_settings['port']) ? ':'.$database_settings['port'] : '';
  34          $dsn .= '/'.$database_settings['database_name'];
  35          if (empty($database_settings['options']) && !empty($database_settings['socket'])) $database_settings['options'] = 'socket='.urlencode($database_settings['socket']); 
  36          $dsn .= !empty($database_settings['options']) ? '?'.$database_settings['options'] : '';
  37          return $dsn;
  38      }
  39      
  40      function type()
  41      {
  42          return 'mysql';
  43      }
  44  
  45      function addLimitAndOffset(&$sql,$options)
  46      {
  47          if (isset($options['limit']) && $limit = $options['limit']){
  48              if (isset($options['offset']) && $offset = $options['offset'])
  49                  $sql .= " LIMIT $offset, $limit";
  50              else
  51                  $sql .= " LIMIT $limit";
  52          }
  53          return $sql;
  54      }
  55      
  56      /* SCHEMA */
  57      
  58      function renameColumn($table_name,$column_name,$new_name)
  59      {
  60          $column_details = $this->selectOne("SHOW COLUMNS FROM $table_name LIKE '$column_name'");
  61          if (!$column_details) {
  62              trigger_error(Ak::t("No such column '%column' in %table_name",array('%column'=>$column_name,'%table_name'=>$table_name)), E_USER_ERROR);
  63              return false;
  64          }
  65          $column_type_definition = $column_details['Type'];
  66          if ($column_details['Null']!=='YES') $column_type_definition .= ' not null';
  67          if (!empty($column_details['Default'])) $column_type_definition .= " default '".$column_details['Default']."'";
  68          return $this->execute("ALTER TABLE $table_name CHANGE COLUMN $column_name $new_name $column_type_definition");
  69      }
  70      
  71      function availableTables()
  72      {
  73          return $this->selectValues('SHOW TABLES');
  74      }
  75      
  76      /* QUOTING */ 
  77      
  78      function quote_string($value)
  79      {
  80          return "'".mysql_real_escape_string($value, $this->connection->_connectionID)."'";
  81      }
  82      
  83  }
  84  ?>


Generated: Mon Oct 27 12:43:49 2008 Cross-referenced by PHPXref 0.6