amdaintegration_autoload.php 3 KB
<?php
//autoload configuration

class AutoloadData {
	private static $integration_dirs = NULL;

	private static $ihm_dirs = NULL;

	private static $cache = NULL;

	public static function integration_dirs() {
		if (self::$integration_dirs == NULL) {
			self::$integration_dirs = array(
				'InputOutput',
				'InputOutput/IHMImpl',
				'InputOutput/IHMImpl/Config',
				'InputOutput/IHMImpl/Params',
				'InputOutput/IHMImpl/Params/DataMiningImpl',
				'InputOutput/IHMImpl/Params/StatisticsImpl',
				'InputOutput/IHMImpl/Params/DownloadImpl',
				'InputOutput/IHMImpl/Params/PlotImpl',
				'InputOutput/IHMImpl/Params/GeneratorImpl',
				'InputOutput/IHMImpl/Params/GenInfoParamImpl',
				'InputOutput/IHMImpl/Process',
				'InputOutput/IHMImpl/ParamInfo',
				'InputOutput/IHMImpl/Tools',
				'InputOutput/IHMImpl/TimeTables',
				'InputOutput/TestImpl',
				'InputOutput/WSImpl',
				'InputOutput/WSImpl/Config',
				'InputOutput/WSImpl/Process',
				'InputOutput/WSImpl/Params/DownloadImpl',
				'InputOutput/WSImpl/Params/PlotImpl',
				'InputOutput/WSImpl/Tools',
				'InputOutput/WSImpl/TimeTables',
				'InputOutput/SharedObjectsUpdater',
				'InputOutput/SharedObjectsUpdater/TimeTables',
				'Request',
				'Request/Config',
				'Request/ParamsRequestImpl',
				'Request/ParamsRequestImpl/Nodes',
				'Request/ParamsRequestImpl/Nodes/Infos',
				'Request/ParamsRequestImpl/Nodes/Params',
				'Request/ParamsRequestImpl/Nodes/Requests',
				'Request/ProcessRequestImpl',
				'Request/ProcessRequestImpl/Process',
				'Request/TTRequestImpl',
				'Request/ParserRequestImpl',
			);
		}
		return self::$integration_dirs;
	}

	public static function ihm_dirs() {
		if (self::$ihm_dirs == NULL) {
			self::$ihm_dirs = array(
				IHM_SRC_DIR.'/php/classes',
				IHM_SRC_DIR.'/php/RemoteDataCenter',
				IHM_SRC_DIR.'/php/WebServices',
				IHM_SRC_DIR.'/php/WebServices/Client'
			);
		}
		return self::$ihm_dirs;
	}

	public static function get_cache($class_name) {
		if (self::$cache == NULL) {
			self::$cache = array();
		}
		if (isset(self::$cache[$class_name])) {
			return self::$cache[$class_name];
		}
		return NULL;
	}

	public static function set_cache($class_name, $file) {
		if (self::$cache == NULL) {
			self::$cache = array();
		}
		self::$cache[$class_name] = $file;
	}
}

function amdaintegration_autoload($class_name)
{
	$file = AutoloadData::get_cache($class_name);
	if (isset($file)) {
		require $file;
		return;
	}

	$file = __DIR__.'/'.$class_name.'.php';
	
	if (file_exists($file))
	{
		require $file;
		AutoloadData::set_cache($class_name, $file);
		return;	
	}

	foreach(AutoloadData::integration_dirs() as $dir)
	{
		$file = __DIR__.'/'.$dir.'/'.$class_name.'.php';
		if (file_exists($file))
		{
			require $file;
			AutoloadData::set_cache($class_name, $file);
			return;
		}
	}
	
	foreach(AutoloadData::ihm_dirs() as $dir)
	{
		$file = $dir.'/'.$class_name.'.php';
		if (file_exists($file))
		{
			require $file;
			AutoloadData::set_cache($class_name, $file);
			break;
		}
	}
}

spl_autoload_register('amdaintegration_autoload');

?>