Ir a la documentación de este archivo.00001 <?php
00002
00009 class Database{
00010
00019 private static $instance = null ;
00020
00028 private function __construct(){}
00029
00037 private function __clone(){}
00038
00052 public static function getInstance ( ) {
00053
00054 if ( self :: $instance )
00055 return self :: $instance;
00056
00057 try{
00058 self::$instance = new PDO (
00059 Config::get('database/dsn'),
00060 Config::get('database/user'),
00061 Config::get('database/password'),
00062 Config::get('database/db_option')
00063 );
00064
00065 foreach ( Config::get('database/db_attribute') as $k => $v )
00066 self :: $instance->setAttribute(
00067 constant ( "PDO::{$k}" ),
00068 constant ( "PDO::{$v}" )
00069 );
00070
00071 if( self::$instance->getAttribute( constant( 'PDO::ATTR_DRIVER_NAME' ) ) == 'oci' ){
00072 self::$instance->exec( "ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD hh24:mi:ss'" );
00073 self::$instance->exec( "ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD hh24:mi:ss'" );
00074 self::$instance->exec( "ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD hh24:mi:ss'" );
00075 }
00076
00077 }catch( PDOException $e ){
00078 throw new Exception( $e->getMessage(), $e->getCode() );
00079 }
00080
00081 return self :: $instance ;
00082 }
00083
00088 public static function lastInsertId( $seq='' ){
00089 $db = self::getInstance( );
00090 if( ($db->getAttribute( constant( 'PDO::ATTR_DRIVER_NAME' ) ) == 'oci') ){
00091 $result = $db->query( "SELECT {$seq}.currval as lastid FROM dual" )->fetch( );
00092 return $result['lastid'];
00093 }else
00094 return $db->lastInsertId( );
00095 }
00096
00101 public static function driver( ){
00102 return self::getInstance( )->getAttribute( constant( 'PDO::ATTR_DRIVER_NAME' ) );
00103 }
00104
00105
00110 public static function limit( $query, $limit, $offset ){
00111 $db = self::getInstance( );
00112 return ( ($db->getAttribute( constant( 'PDO::ATTR_DRIVER_NAME' ) ) == 'oci') ) ?
00113 "SELECT * FROM (SELECT a.*, ROWNUM rnum FROM ( {$query} ) a WHERE ROWNUM <= {$limit}) WHERE rnum >= {$offset}"
00114 :
00115 $query." LIMIT {$limit} OFFSET {$offset}";
00116 }
00117
00118
00123 public static function count( $table, $where=NULL ){
00124 $db = self::getInstance( );
00125
00126 $consulta = $db->prepare(
00127 "SELECT count(*) as rowcount FROM {$table}".( $where && isset( $where['where'] ) ? " WHERE {$where['where']}" : '' )
00128 );
00129
00130 $consulta->execute( $where && isset( $where['data'] ) ? $where['data'] : array( ) );
00131
00132 $resultado = $consulta->fetch(PDO::FETCH_ASSOC);
00133 $consulta->closeCursor( ); unset( $consulta );
00134
00135 return !$resultado ? 0 : $resultado['rowcount'];
00136 }
00137
00142 public static function alterDate( $format='YYYY-MM-DD hh24:mi:ss' ){
00143 $db = self::getInstance( );
00144 if( $db->getAttribute( constant( 'PDO::ATTR_DRIVER_NAME' ) ) == 'oci' ){
00145 $db->exec( "ALTER SESSION SET NLS_DATE_FORMAT = '{$format}'" );
00146 $db->exec( "ALTER SESSION SET NLS_TIMESTAMP_FORMAT = '{$format}'" );
00147 $db->exec( "ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = '{$format}'" );
00148 }
00149
00150 }
00151
00152 }