public static function getDB() { if (!isset(self::$database) || self::$database == null) { try { $configPath = dirname(__FILE__) . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "sqlConfig.ini"; $passArray = parse_ini_file($configPath); $databaseName = $passArray["databaseName"]; $username = $passArray["username"]; $password = $passArray["password"]; self::$databaseName = $databaseName; $dbspec = self::$dsn . self::$databaseName . ";charset=utf8"; self::$database = new PDO($dbspec, $username, $password, self::$options); } catch (PDOException $e) { self::$database = null; echo "Failed to open connection to " . self::$databaseName . " " . $e->getMessage(); } } return self::$database; }
/****** Load Server Configurations ******/ // Make sure that the environment was set if (!ENVIRONMENT) { die("The ENVIRONMENT constant has not been set."); } /****** Error Reporting ******/ // Report errors locally, but not on staging or production error_reporting(E_ALL); ini_set("display_errors", ENVIRONMENT == "local" ? 1 : 0); /****** Prepare the Auto-Loader ******/ spl_autoload_register(null, false); spl_autoload_extensions('.php'); // Assign the appropriate autoloader require SYS_PATH . "/autoloader" . (CLI ? "-cli" : "") . ".php"; /****** Set the database to connect to ******/ Database::$databaseName = Config::$siteConfig['Database Name'] ? Config::$siteConfig['Database Name'] : Config::$siteConfig['Site Handle']; /****** Session Handling ******/ if (USE_SESSIONS) { session_name(SERVER_HANDLE); session_set_cookie_params(0, '/', '.' . URL_PREFIX . BASE_DOMAIN); session_start(); } /****** Prepare the Database Connection ******/ if (USE_DATABASE) { Database::initialize(Database::$databaseName); // Make sure a connection to the database was created if (Database::$database) { // Make sure the base session value used is available if (!isset($_SESSION[SITE_HANDLE])) { $_SESSION[SITE_HANDLE] = array(); }
public static function initialize($databaseName = "", $asAdmin = false) { // If a database name isn't used, attempt to use a default database. if (!$databaseName) { $databaseName = self::$databaseName ? self::$databaseName : DATABASE_NAME; } try { self::$database = null; $databaseName = Sanitize::variable($databaseName); /* http://stackoverflow.com/questions/20079320/php-pdo-mysql-returns-integer-columns-as-strings-on-ubuntu-but-as-integers-o http://stackoverflow.com/questions/1197005/how-to-get-numeric-types-from-mysql-using-pdo http://stackoverflow.com/questions/10113562/pdo-mysql-use-pdoattr-emulate-prepares-or-not */ // Prepare PDO Options $options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_STRINGIFY_FETCHES => false); if (defined("PDO::MYSQL_ATTR_FOUND_ROWS")) { $options[PDO::MYSQL_ATTR_FOUND_ROWS] = false; } else { $options[1002] = false; // Note: 1002 is PDO::MYSQL_ATTR_FOUND_ROWS (fixing issue for some instances) } // Connect to the database as an admin if ($asAdmin) { self::$database = new PDO(DATABASE_ENGINE . ":host=" . DATABASE_HOST . ";dbname=" . $databaseName . ";charset=utf8;", DATABASE_ADMIN_USER, DATABASE_ADMIN_PASS, $options); } else { self::$database = new PDO(DATABASE_ENGINE . ":host=" . DATABASE_HOST . ";dbname=" . $databaseName . ";charset=utf8;", DATABASE_USER, DATABASE_PASS, $options); } self::$databaseName = $databaseName; return true; } catch (PDOException $e) { // TODO: Use the logging method here to track the exception. } return false; }