Files
aowow/includes/database.class.php
Sarjuuk 51f2828f6f - moved shared setup functions from FileGen to new CLISetup
- removed web-setup
- new CLI parameters
  --account    : create initial account(s)
  --siteconfig : edit php/aowow config values
  --dbconfig   : set up db connection
  --sql        : create db content from world/dbc-tables
  --firstrun   : [NYI] step by step initial setup

- some fixes by the wayside
  * display required arena bracket for extendedCost
  * achievement chains are searchable again
  * category trees for factions should now be correct
  * trainer tab on spell detail page reapeared
  * userMenu item 'Settings' no longer breaks the page
  * display abilities of shapeshift in tab on spell detail page
  * corrected reading ?_sourcestrings for titles
  * fixed error on race detail page
  * added simple descriptions to skill detail page
  * fixed tab "reward from" (achievement) on title detail page
  * fixed alphabetical order of some filter-dropdowns
  * fixed skill colors for spells
  * fixed power display for rune-based spells, that also cost mana
  * added more information to zones
  * also check mail_loot_template for achivements
  * fixed bug, where loot_template-ids would be reused for multiple templates
  * display sourcemore for pvp-sources
2015-05-11 22:44:54 +02:00

123 lines
2.7 KiB
PHP

<?php
if (!defined('AOWOW_REVISION'))
die('illegal access');
/*
Class designed by LordJZ for Aowow3
https://github.com/LordJZ/aowow3/
*/
class DB
{
private static $interfaceCache = [];
private static $optionsCache = [];
private static $connectionCache = [];
private static function createConnectSyntax(&$options)
{
return 'mysqli://'.$options['user'].':'.$options['pass'].'@'.$options['host'].'/'.$options['db'];
}
public static function connect($idx)
{
if (self::isConnected($idx))
return;
$options = &self::$optionsCache[$idx];
$interface = DbSimple_Generic::connect(self::createConnectSyntax($options));
if (!$interface || $interface->error)
die('Failed to connect to database.');
$interface->setErrorHandler(['DB', 'errorHandler']);
$interface->query('SET NAMES ?', 'utf8');
if ($options['prefix'])
$interface->setIdentPrefix($options['prefix']);
self::$interfaceCache[$idx] = &$interface;
self::$connectionCache[$idx] = true;
}
public static function errorHandler($message, $data)
{
if (!error_reporting())
return;
$error = "DB ERROR:<br /><br />\n\n<pre>".print_r($data, true)."</pre>";
echo CLI ? strip_tags($error) : $error;
exit;
}
public static function getDB($idx)
{
return self::$interfaceCache[$idx];
}
public static function isConnected($idx)
{
return isset(self::$connectionCache[$idx]);
}
public static function isConnectable($idx)
{
return isset(self::$optionsCache[$idx]);
}
private static function safeGetDB($idx)
{
if (!self::isConnected($idx))
self::connect($idx);
return self::getDB($idx);
}
/**
* @static
* @return DbSimple_Mysql
*/
public static function Characters($realm)
{
if (!isset(self::$optionsCache[DB_CHARACTERS.$realm]))
die('Connection info not found for live database of realm #'.$realm.'. Aborted.');
return self::safeGetDB(DB_CHARACTERS.$realm);
}
/**
* @static
* @return DbSimple_Mysql
*/
public static function Auth()
{
return self::safeGetDB(DB_AUTH);
}
/**
* @static
* @return DbSimple_Mysql
*/
public static function World()
{
return self::safeGetDB(DB_WORLD);
}
/**
* @static
* @return DbSimple_Mysql
*/
public static function Aowow()
{
return self::safeGetDB(DB_AOWOW);
}
public static function load($idx, $config)
{
self::$optionsCache[$idx] = $config;
}
}
?>