Share Pastebin
Guest
Public paste!

grigri

By: a guest | Jun 30th, 2008 | Syntax: PHP | Size: 1.66 KB | Hits: 1,232 | Expires: Never
Copy text to clipboard
  1. <?php
  2.  
  3. require_once (LIBS . 'model' . DS . 'datasources' . DS . 'dbo' . DS . 'dbo_mysql.php');
  4.  
  5. class DboMysqlEx extends DboMysql {
  6.         var $description = "MySQL DBO Driver - Extended";
  7.        
  8.         // Extended 'resultSet' to allow alias processing
  9.         // Fields should contain '((something)) AS Model__field'
  10.         function resultSet(&$results) {
  11.                 $this->results =& $results;
  12.                 $this->map = array();
  13.                 $num_fields = mysql_num_fields($results);
  14.                 $index = 0;
  15.                 $j = 0;
  16.  
  17.                 while ($j < $num_fields) {
  18.                         $column = mysql_fetch_field($results,$j);
  19.                         if (!empty($column->table)) {
  20.                                 $this->map[$index++] = array($column->table, $column->name);
  21.                         } else {
  22.                                 if (strpos($column->name, '__')) {
  23.                                         $parts = explode('__', $column->name);
  24.                                         $this->map[$index++] = array($parts[0], $parts[1]);
  25.                                 } else {
  26.                                         $this->map[$index++] = array(0, $column->name);
  27.                                 }
  28.                         }
  29.                         $j++;
  30.                 }
  31.         }
  32.        
  33.  
  34.         // Add fields to list without re-specifying everything - use '+' as the 1st field
  35.         // Examples:
  36.         // $fields = array('+', '((SOME_CALC)) AS Model__field')
  37.         // or
  38.         // $fields = '+,((SOME_CALC)) AS Model__field'
  39.         //
  40.         function fields(&$model, $alias = null, $fields = array(), $quote = true) {
  41.                 if (empty($alias)) {
  42.                         $alias = $model->alias;
  43.                 }
  44.                 if (empty($fields)) {
  45.                         $fields = array_keys($model->schema());
  46.                 } elseif (!is_array($fields)) {
  47.                         $fields = String::tokenize($fields);
  48.                 }
  49.                 $fields = array_values(array_filter($fields));
  50.                
  51.                 if (!empty($fields[0]) && $fields[0] === '+') {
  52.                         array_shift($fields);
  53.                         $fields = array_merge(array_keys($model->schema()), array_values($fields));
  54.                 }
  55.                
  56.                 return parent::fields($model, $alias, $fields, $quote);
  57.         }
  58. }
  59.  
  60. ?>