/**
  * @static
  * @param int $intDbIndex The index in the database array
  * @param string $strTableName The table name to be used for saving sessions.
  * @return boolean
  */
 public static function Initialize($intDbIndex = 1, $strTableName = "qc_session")
 {
     self::$intDbIndex = QType::Cast($intDbIndex, QType::Integer);
     self::$strTableName = QType::Cast($strTableName, QType::String);
     // If the database index exists
     if (!array_key_exists(self::$intDbIndex, QApplication::$Database)) {
         throw new QCallerException('No database defined at DB_CONNECTION index ' . self::$intDbIndex . '. Correct your settings in configuration.inc.php.');
     }
     $objDatabase = QApplication::$Database[self::$intDbIndex];
     // see if the database contains a table with desired name
     if (!in_array(self::$strTableName, $objDatabase->GetTables())) {
         throw new QCallerException('Table ' . self::$strTableName . ' not found in database at DB_CONNECTION index ' . self::$intDbIndex . '. Correct your settings in configuration.inc.php.');
     }
     // Set session handler functions
     $session_ok = session_set_save_handler('QDbBackedSessionHandler::SessionOpen', 'QDbBackedSessionHandler::SessionClose', 'QDbBackedSessionHandler::SessionRead', 'QDbBackedSessionHandler::SessionWrite', 'QDbBackedSessionHandler::SessionDestroy', 'QDbBackedSessionHandler::SessionGarbageCollect');
     // could not register the session handler functions
     if (!$session_ok) {
         throw new QCallerException("session_set_save_handler function failed");
     }
     // Will be called before session ends.
     register_shutdown_function('session_write_close');
     return $session_ok;
 }
 public static function SessionOverride()
 {
     // Are we using QDbBackedSessionHandler?
     if (defined("DB_BACKED_SESSION_HANDLER_DB_INDEX") && constant("DB_BACKED_SESSION_HANDLER_DB_INDEX") != 0 && defined("DB_BACKED_SESSION_HANDLER_TABLE_NAME")) {
         // Yes we are going to override PHP's default file based handlers.
         QDbBackedSessionHandler::Initialize(DB_BACKED_SESSION_HANDLER_DB_INDEX, DB_BACKED_SESSION_HANDLER_TABLE_NAME);
     }
 }
 /**
  * Open the session (used by PHP when the session handler is active)
  * @param string $save_path
  * @param string $session_name
  *
  * @return bool
  */
 public static function SessionOpen($save_path, $session_name)
 {
     self::$strSessionName = $session_name;
     // Nothing to do
     return true;
 }