Seditio Source
Root |
./othercms/elxis_5.3_atlas_rev2452/includes/libraries/elxis/database/statement.class.php
<?php
/**
* @version        $Id: statement.class.php 274 2011-04-03 18:54:47Z datahell $
* @package        Elxis
* @subpackage    Database
* @copyright    Copyright (c) 2006-2012 Elxis CMS (http://www.elxis.org). All rights reserved.
* @license        Elxis Public License ( http://www.elxis.org/elxis-public-license.html )
* @author        Elxis Team ( http://www.elxis.org )
* @description     Elxis CMS is free software. Read the license for copyright notices and details
*/

defined('_ELXIS_') or die ('Direct access to this location is not allowed.');


class
elxisPDOStatement extends PDOStatement {

    private
$pdo = null;
    private
$elxisdebug = 0;


    protected function
__construct($pdo, $elxisdebug=0) {
       
$this->pdo = $pdo;
       
$this->elxisdebug = $elxisdebug;
       
$this->setFetchMode(PDO::FETCH_OBJ);
    }


   
/********************************/
    /* EXECUTE A PREPARED STATEMENT */
    /********************************/
   
public function execute($params=null, $options=array()) {
        if (isset(
$options['fetch'])) {
            if (
is_string($options['fetch'])) {
               
$this->setFetchMode(PDO::FETCH_CLASS, $options['fetch']);
            } else {
               
$this->setFetchMode($options['fetch']);
            }
        }

       
$this->monitor();
       
$result = parent::execute($params);
        return
$result;
    }


   
/*********************/
    /* MONITOR SQL QUERY */
    /*********************/
   
private function monitor() {
        if (
$this->elxisdebug > 1) {
            if ((
$this->elxisdebug == 2) || ($this->elxisdebug == 3)) {
               
eRegistry::get('ePerformance')->addQuery();
            } else if ((
$this->elxisdebug == 4) || ($this->elxisdebug == 5)) {
               
eRegistry::get('ePerformance')->addQuery($this->queryString);
            }
        }
    }


   
/********************/
    /* GET QUERY STRING */
    /********************/
   
public function getQueryString() {
        return
$this->queryString;
    }


   
/***************************************************************/
    /* GET RESULT SET AS AN ASSOCIATIVE ARRAY KEYED BY GIVEN FIELD */
    /***************************************************************/
   
public function fetchAllAssoc($key, $fetchMode=null) {
        if (
$fetchMode !== null) {
            if (
is_string($fetchMode)) {
               
$this->setFetchMode(PDO::FETCH_CLASS, $fetchMode);
            } else {
               
$this->setFetchMode($fetchMode);
            }
        }

       
$rows = array();
        foreach (
$this as $record) {
           
$record_key = is_object($record) ? $record->$key : $record[$key];
           
$rows[$record_key] = $record;
        }

        return
$rows;
    }


   
/**************************************************************/
    /* FETCH A 2-COLUMN RESULT SET AS AN ARRAY OF KEY-VALUE PAIRS */
    /**************************************************************/
   
public function fetchPairs($key_index=0, $value_index=1) {
       
$this->setFetchMode(PDO::FETCH_NUM);
       
$rows = array();
        foreach (
$this as $record) {
           
$rows[$record[$key_index]] = $record[$value_index];
        }
        return
$rows;
    }


   
/********************************************/
    /* RETURN SINGLE COLUMN AS AN INDEXED ARRAY */
    /********************************************/
   
public function fetchCol($index = 0) {
        return
$this->fetchAll(PDO::FETCH_COLUMN, $index);
    }


   
/********************************************/
    /* RETURN SINGLE COLUMN AS AN INDEXED ARRAY */
    /********************************************/
   
public function fetchResult() {
       
$row = $this->fetch(PDO::FETCH_NUM);
        return (
$row && isset($row[0])) ? $row[0] : null;
    }

}

?>