<?php
/**
* 設定を読み込むローダー・クラス
*
* PHP version 5
*
* @package    core
* @author     stk2k <stk2k@sazysoft.com>
* @copyright  2008 stk2k, sazysoft
*/

class ConfigLoader
{
	/*
	 * 設定を読み込む
	 */
	public static function loadConfig( $virtual_path, $config_type )
	{
		log_info( "system", "設定をロードします。", __FILE__, __LINE__ );

		// 設定プロバイダを作成
		$provider = Factory::createConfigProvider();

		// 設定値格納用オブジェクトを作成
		$config= new Config();

		// 設定ルートパス
		$config_root_webapp = ResourceLocator::getWebAppPath('config');
		$config_root_system = ResourceLocator::getSystemPath('config');

		// 仮想パスを変換
		$obj_path = explode( ":" , $virtual_path );
		$sub_dir = implode( "/", $obj_path );

		// デフォルト設定ファイルを読み込む
//		$config_name = $config_type . "s/default.$config_type";
//		$config->append( $provider->load( $config_root_webapp, $config_name ) );
//		$config->append( $provider->load( $config_root_system, $config_name ) );

		// 個別設定ファイルを読み込む
		$config_name = $config_type . "s/$sub_dir.$config_type";
		$config->append( $provider->load( $config_root_webapp, $config_name ) );
		$config->append( $provider->load( $config_root_system, $config_name ) );

		// プロファイル別設定ファイルがあれば読む
		$profile_name = Profile::getProfileName();
		$config_name = $config_type . "s/$sub_dir.$profile_name.$config_type";
		$config->append( $provider->load( $config_root_webapp, $config_name ) );
		$config->append( $provider->load( $config_root_system, $config_name ) );

		log_info( "system", "設定をロードしました。", __FILE__, __LINE__ );

		return $config;
	}

}
