コード例 #1
0
ファイル: AkDbAdapter.php プロジェクト: joeymetal/v1
 /**
  * @static 
  * @param array $database_settings
  * @return AkDbAdapter
  */
 function &getInstance($database_specifications = AK_DEFAULT_DATABASE_PROFILE, $auto_connect = true)
 {
     static $connections;
     $settings_hash = is_string($database_specifications) ? $database_specifications : AkDbAdapter::_hash($database_specifications);
     if (empty($connections[$settings_hash])) {
         global $database_settings;
         if (is_string($database_specifications)) {
             if (!empty($database_settings[$database_specifications])) {
                 $database_specifications = $database_settings[$database_specifications];
             } elseif (strstr($database_specifications, '://')) {
                 $database_specifications = AkDbAdapter::_getDbSettingsFromDsn($database_specifications);
                 $settings_hash = AK_ENVIRONMENT;
             } else {
                 trigger_error(Ak::t("Could not find the database profile '%profile_name' in config/config.php.", array('%profile_name' => $database_specifications)), E_USER_ERROR);
                 $return = false;
                 return $return;
             }
         } elseif (!empty($database_settings[$settings_hash])) {
             $database_specifications = $database_settings[$settings_hash];
         }
         $available_adapters = Ak::toArray(AK_AVAILABLE_DATABASES);
         $class_name = 'AkDbAdapter';
         $designated_database = strtolower($database_specifications['type']);
         if (in_array($designated_database, $available_adapters)) {
             $class_name = 'Ak' . ucfirst($designated_database) . 'DbAdapter';
             require_once AK_LIB_DIR . DS . 'AkActiveRecord' . DS . 'AkDbAdapters' . DS . $class_name . '.php';
         }
         $connections[$settings_hash] =& new $class_name($database_specifications, $auto_connect);
     }
     return $connections[$settings_hash];
 }
コード例 #2
0
ファイル: AkDbAdapter.php プロジェクト: joeymetal/v1
 /**
  * @static
  * @param array $database_settings
  * @return AkDbAdapter
  */
 public static function &getInstance($database_specifications = AK_DEFAULT_DATABASE_PROFILE, $auto_connect = true)
 {
     static $connections;
     $settings_hash = is_string($database_specifications) ? $database_specifications : AkDbAdapter::_hash($database_specifications);
     if (empty($connections[$settings_hash])) {
         if (empty($database_specifications)) {
             $settings_hash = AK_ENVIRONMENT;
             $database_specifications = Ak::getSettings('database', false, $settings_hash);
         } else {
             if (is_string($database_specifications)) {
                 $environment_settings = Ak::getSettings('database', false, $database_specifications);
                 if (!empty($environment_settings)) {
                     $database_specifications = $environment_settings;
                 } elseif (strstr($database_specifications, '://')) {
                     $database_specifications = AkDbAdapter::_getDbSettingsFromDsn($database_specifications);
                     $settings_hash = AK_ENVIRONMENT;
                 } else {
                     global $database_settings;
                     if (isset($database_settings) && !file_exists(AK_CONFIG_DIR . DS . 'database.yml')) {
                         trigger_error(Ak::t("You are still using the old config/config.php database configuration. Please upgrade to use the config/database.yml configuration."), E_USER_NOTICE);
                     }
                     if (!file_exists(AK_CONFIG_DIR . DS . 'database.yml')) {
                         trigger_error(Ak::t("Could not find the database configuration file in %dbconfig.", array('%dbconfig' => AK_CONFIG_DIR . DS . 'database.yml')), E_USER_ERROR);
                     } else {
                         trigger_error(Ak::t("Could not find the database profile '%profile_name' in config/database.yml.", array('%profile_name' => $database_specifications)), E_USER_ERROR);
                     }
                     $return = false;
                     return $return;
                 }
             } elseif (!empty($database_settings[$settings_hash])) {
                 $database_specifications = $database_settings[$settings_hash];
             }
         }
         $available_adapters = Ak::toArray(AK_AVAILABLE_DATABASES);
         $class_name = 'AkDbAdapter';
         $designated_database = strtolower($database_specifications['type']);
         if (in_array($designated_database, $available_adapters)) {
             $class_name = 'Ak' . ucfirst($designated_database) . 'DbAdapter';
             require_once AK_LIB_DIR . DS . 'AkActiveRecord' . DS . 'AkDbAdapters' . DS . $class_name . '.php';
         }
         $connections[$settings_hash] = new $class_name($database_specifications, $auto_connect);
     }
     return $connections[$settings_hash];
 }