00001 <?php
00007 namespace Habari;
00008
00015 class DB extends Singleton
00016 {
00020 private $connection = null;
00021
00028 protected static function instance()
00029 {
00030 return self::getInstanceOf( __CLASS__ );
00031 }
00032
00043 public static function connect()
00044 {
00045
00046
00047
00048 if ( null != DB::instance()->connection ) {
00049 if ( (func_num_args() == 0) && false != DB::instance()->connection->is_connected() ) {
00050 return true;
00051 }
00052 }
00053
00054 if ( func_num_args() > 0 ) {
00055 $connect_string = func_get_arg( 0 );
00056 $db_user = func_get_arg( 1 );
00057 $db_pass = func_get_arg( 2 );
00058 }
00059 else {
00060
00061 $connect_string = Config::get( 'db_connection' )->connection_string;
00062 $db_user = Config::get( 'db_connection' )->username;
00063 $db_pass = Config::get( 'db_connection' )->password;
00064 }
00065 DB::instance()->connection = DatabaseConnection::ConnectionFactory( $connect_string );
00066 if ( null != DB::instance()->connection ) {
00067 return DB::instance()->connection->connect( $connect_string, $db_user, $db_pass );
00068 }
00069 else {
00070
00071 print _t( 'Panic! No database connection class appears to be found for the connection string specified. Please check config.php' );
00072 }
00073 }
00074
00075 public static function disconnect()
00076 {
00077 if ( null == DB::instance()->connection ) {
00078 return true;
00079 }
00080
00081 return DB::instance()->connection->disconnect();
00082 }
00083
00090 public static function table( $name )
00091 {
00092 return DB::instance()->connection->table( $name );
00093 }
00094
00102 public static function register_table( $name )
00103 {
00104 DB::instance()->connection->register_table( $name );
00105 }
00106
00112 public static function set_fetch_mode( $mode )
00113 {
00114 DB::instance()->connection->set_fetch_mode( $mode );
00115 }
00116
00122 public static function set_fetch_class( $class_name )
00123 {
00124 DB::instance()->connection->set_fetch_class( $class_name );
00125 }
00126
00135 public static function exec( $query )
00136 {
00137 return DB::instance()->connection->exec( $query );
00138 }
00139
00146 public static function query( $query, $args = array() )
00147 {
00148 return DB::instance()->connection->query( $query, $args );
00149 }
00150
00160 public static function execute_procedure( $procedure, $args = array() )
00161 {
00162 return DB::instance()->connection->execute_procedure( $procedure, $args );
00163 }
00164
00169 public static function begin_transaction()
00170 {
00171 DB::instance()->connection->begin_transaction();
00172 }
00173
00179 public static function rollback()
00180 {
00181 DB::instance()->connection->rollback();
00182 }
00183
00187 public static function commit()
00188 {
00189 DB::instance()->connection->commit();
00190 }
00191
00197 public static function get_profiles()
00198 {
00199 return DB::instance()->connection->get_profiles();
00200 }
00201
00207 private static function add_error( $error )
00208 {
00209 DB::instance()->connection->add_error( $error );
00210 }
00211
00216 public static function get_errors()
00217 {
00218 return DB::instance()->connection->get_errors();
00219 }
00220
00225 public static function has_errors()
00226 {
00227 return DB::instance()->connection->has_errors();
00228 }
00229
00233 public static function clear_errors()
00234 {
00235 DB::instance()->connection->clear_errors();
00236 }
00237
00242 public static function get_last_error()
00243 {
00244 return DB::instance()->connection->get_last_error();
00245 }
00246
00255 public static function get_results( $query, $args = array(), $class_name = '\Habari\QueryRecord' )
00256 {
00257 return DB::instance()->connection->get_results( $query, $args, $class_name );
00258 }
00259
00268 public static function get_row( $query, $args = array(), $class_name = '\Habari\QueryRecord' )
00269 {
00270 return DB::instance()->connection->get_row( $query, $args, $class_name );
00271 }
00272
00281 public static function get_column( $query, $args = array() )
00282 {
00283 return DB::instance()->connection->get_column( $query, $args );
00284 }
00285
00293 public static function get_value( $query, $args = array() )
00294 {
00295 return DB::instance()->connection->get_value( $query, $args );
00296 }
00297
00306 public static function get_keyvalue( $query, $args = array() )
00307 {
00308 return DB::instance()->connection->get_keyvalue( $query, $args );
00309 }
00310
00318 public static function insert( $table, $fieldvalues )
00319 {
00320 return DB::instance()->connection->insert( $table, $fieldvalues );
00321 }
00322
00330 public static function exists( $table, $keyfieldvalues )
00331 {
00332 return DB::instance()->connection->exists( $table, $keyfieldvalues );
00333 }
00334
00345 public static function update( $table, $fieldvalues, $keyfields )
00346 {
00347 return DB::instance()->connection->update( $table, $fieldvalues, $keyfields );
00348 }
00349
00357 public static function delete( $table, $keyfields )
00358 {
00359 return DB::instance()->connection->delete( $table, $keyfields );
00360 }
00361
00371 public static function last_insert_id()
00372 {
00373 return DB::instance()->connection->last_insert_id( func_num_args() == 1 ? func_get_arg( 0 ) : '' );
00374 }
00375
00381 public static function row_count()
00382 {
00383 return DB::instance()->connection->row_count();
00384 }
00385
00395 public static function dbdelta( $queries, $execute = true, $silent = true, $doinserts = false )
00396 {
00397 return DB::instance()->connection->dbdelta( $queries, $execute, $silent, $doinserts );
00398 }
00399
00406 public static function upgrade( $old_version )
00407 {
00408 return DB::instance()->connection->upgrade( $old_version );
00409 }
00410
00414 public static function upgrade_pre( $old_version )
00415 {
00416 return DB::instance()->connection->upgrade_pre( $old_version );
00417 }
00418
00422 public static function upgrade_post( $old_version )
00423 {
00424 return DB::instance()->connection->upgrade_post( $old_version );
00425 }
00426
00430 public static function get_driver_name()
00431 {
00432 return DB::instance()->connection->get_driver_name();
00433 }
00434
00438 public static function get_driver_version()
00439 {
00440 return DB::instance()->connection->get_driver_version();
00441 }
00442
00448 public static function list_tables()
00449 {
00450 return DB::instance()->connection->list_tables();
00451 }
00452
00458 public static function is_connected()
00459 {
00460 return (DB::instance()->connection instanceof DatabaseConnection && DB::instance()->connection->is_connected());
00461 }
00462
00468 public static function in_transaction()
00469 {
00470 return DB::instance()->connection->in_transaction();
00471 }
00472
00481 public static function quote( $string )
00482 {
00483 return DB::instance()->connection->quote( $string );
00484 }
00485 }
00486
00487 ?>