Campustream 1.0
A social network MQP for WPI
|
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 }