Subversion Repositories PHPX

Rev

Rev 32 | Rev 34 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 32 Rev 33
Line 1... Line 1...
1
<?php
1
<?php
2
2
3
require_once __DIR__ . '/../global.inc';
3
require_once __DIR__ . '/../global.inc';
4
-
 
5
require_once __DIR__ . '/../AbstractModel.php';
4
require_once __DIR__ . '/../AbstractModel.php';
6
5
7
/**
6
/**
8
 * Generic database model class using PDO (PHP Data Objects)
7
 * Generic database model class using PDO (PHP Data Objects)
9
 *
8
 *
Line 272... Line 271...
272
        $value = $value[key($value)];
271
        $value = $value[key($value)];
273
      }
272
      }
274
     
273
     
275
      if (is_array($value))
274
      if (is_array($value))
276
      {
275
      {
277
        $placeholder = '(' . implode(',', self::_expand($value, $column)) . ')';
276
        $placeholder = '(' . implode(', ', self::_expand($value, $column)) . ')';
278
      }
277
      }
279
     
278
     
280
      $result[] = $this->_leftQuote . $column . $this->_rightQuote . "{$op}{$placeholder}{$suffix}";
279
      $result[] = $this->_leftQuote . $column . $this->_rightQuote . "{$op}{$placeholder}{$suffix}";
281
    }
280
    }
282
 
281
 
Line 351... Line 350...
351
      if ($this->_isAssociativeArray($columns))
350
      if ($this->_isAssociativeArray($columns))
352
      {
351
      {
353
        $columns = $this->_escapeAliasArray($columns);
352
        $columns = $this->_escapeAliasArray($columns);
354
      }
353
      }
355
354
356
      $columns = implode(',', $columns);
355
      $columns = implode(', ', $columns);
357
    }
356
    }
358
357
359
    if (is_array($tables))
358
    if (is_array($tables))
360
    {
359
    {
361
      if ($this->_isAssociativeArray($columns))
360
      if ($this->_isAssociativeArray($columns))
362
      {
361
      {
363
        $columns = $this->_escapeAliasArray($columns);
362
        $columns = $this->_escapeAliasArray($columns);
364
      }
363
      }
365
364
366
      $tables = implode(',', $tables);
365
      $tables = implode(', ', $tables);
367
    }
366
    }
368
367
369
    $query = "SELECT {$columns} FROM {$tables}" . $this->_where($where);
368
    $query = "SELECT {$columns} FROM {$tables}" . $this->_where($where);
370
369
371
    if (!is_null($order))
370
    if (!is_null($order))
372
    {
371
    {
373
      if (is_array($order))
372
      if (is_array($order))
374
      {
373
      {
375
        $order = 'ORDER BY ' . implode(',', $order);
374
        $order = 'ORDER BY ' . implode(', ', $order);
376
      }
375
      }
377
     
376
     
378
      $query .= " $order";
377
      $query .= " $order";
379
    }
378
    }
380
379
Line 484... Line 483...
484
      throw new InvalidArgumentException('No table specified');
483
      throw new InvalidArgumentException('No table specified');
485
    }
484
    }
486
     
485
     
487
    if (is_array($tables))
486
    if (is_array($tables))
488
    {
487
    {
489
      $tables = implode(',', $tables);
488
      $tables = implode(', ', $tables);
490
    }
489
    }
491
     
490
     
492
    if (!$updates)
491
    if (!$updates)
493
    {
492
    {
494
      throw new InvalidArgumentException('No values specified');
493
      throw new InvalidArgumentException('No values specified');
Line 502... Line 501...
502
      {
501
      {
503
        $params[":{$key}"] = $condition;
502
        $params[":{$key}"] = $condition;
504
      }
503
      }
505
    }
504
    }
506
   
505
   
507
    $updates = implode(',', $this->_escapeValueArray($updates));
506
    $updates = implode(', ', $this->_escapeValueArray($updates));
508
         
507
         
509
    /* TODO: Should escape table names with escapeName(), but what about aliases? */
508
    /* TODO: Should escape table names with escapeName(), but what about aliases? */
510
    $query = "UPDATE {$tables} SET {$updates}" . $this->_where($where, '2');
509
    $query = "UPDATE {$tables} SET {$updates}" . $this->_where($where, '2');
511
   
510
   
512
    $stmt = $this->prepare($query);
511
    $stmt = $this->prepare($query);
Line 592... Line 591...
592
  {
591
  {
593
    if ($cols != null)
592
    if ($cols != null)
594
    {
593
    {
595
      $cols = ' ('
594
      $cols = ' ('
596
            . (is_array($cols)
595
            . (is_array($cols)
597
                ? implode(',', array_map(create_function('$s', 'return "`$s`";'), $cols))
596
                ? implode(', ', array_map(array($this, 'escapeName'), $cols))
598
                : $cols) . ')';
597
                : $cols) . ')';
599
    }
598
    }
600
    else
599
    else
601
    {
600
    {
602
      $cols = '';
601
      $cols = '';
Line 737... Line 736...
737
      throw new InvalidArgumentException('No table specified');
736
      throw new InvalidArgumentException('No table specified');
738
    }
737
    }
739
         
738
         
740
    if (is_array($tables))
739
    if (is_array($tables))
741
    {
740
    {
742
      $tables = implode(',', $tables);
741
      $tables = implode(', ', $tables);
743
    }
742
    }
744
     
743
     
745
    $params = array();
744
    $params = array();
746
   
745
   
747
    $query = "DELETE FROM {$tables}" . $this->_where($where);
746
    $query = "DELETE FROM {$tables}" . $this->_where($where);