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();
        }
Example #3
0
 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;
 }