Campustream 1.0
A social network MQP for WPI
core/lib/databasemanager.php
Go to the documentation of this file.
00001 <?php
00002 
00003 class DatabaseManager {
00004         
00005         protected static $conwrite      = null;
00006         protected static $conread       = null;
00007         
00008         public static function connect($server_array=null) {
00009                 
00010                 if ( empty($server_array) || ( ! is_array($server_array) ) ) {
00011                         require($GLOBALS['APPROOT'] . 'application/config/database.php');
00012                         foreach($slaves as &$config) {
00013                                 $config = array_merge($default, $config);
00014                         }
00015                         unset($config);
00016                         
00017                         $server_array = array_merge($default, $master);
00018                 }
00019                 
00020                 $con = self::realconnect( array(
00021                         'host' => $server_array['host'],
00022                         'user' => $server_array['user'],
00023                         'pass' => $server_array['pass'],
00024                         'db'   => $server_array['db']
00025                 ));
00026                 
00027                 $con->query("SET NAMES 'utf8'");
00028                 
00029                 return $con;
00030                 
00031         }
00032         
00033         public static function realconnect($args) {
00034                 return new mysqli($args['host'], $args['user'], $args['pass'], $args['db']);
00035         }
00036         
00037         public static function writeConnection() {
00038                 
00039                 if (self::$conwrite !== null && mysqli_ping(self::$conwrite)) return self::$conwrite;
00040                 
00041                 $connection = DatabaseManager::connect();
00042                 self::$conwrite = $connection;
00043                 
00044                 return $connection;
00045                 
00046         }
00047         
00048         public static function readConnection() {
00049                 
00050                 if( self::$conread !== null && mysqli_ping(self::$conread)) return self::$conread;
00051                 
00052                 $connection = DatabaseManager::connect( self::selectSlave() );
00053                 self::$conread = $connection;
00054                 
00055                 return $connection;
00056                 
00057         }
00058         
00059         public static function selectSlave() {
00060                 
00061                 require($GLOBALS['APPROOT'] . 'application/config/database.php');
00062                 foreach($slaves as &$config) {
00063                         $config = array_merge($default, $config);
00064                 }
00065                 unset($config);
00066                 
00067                 foreach($slaves as $host => $config) {
00068                         if ( $config['enabled'] === false ) unset($slaves[$host]);
00069                 }
00070                 
00071                 return $slaves[array_rand($slaves)];
00072                 
00073         }
00074         
00075         public static function escape($data) {
00076                 $con = self::writeConnection();
00077                 return $con->real_escape_string($data);
00078         }
00079         
00080 }