74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * FancyManiaLinks - Automatic ManiaLink Generator Framework
 | |
|  *
 | |
|  * @author steeffeen
 | |
|  * @version 1.0
 | |
|  * @copyright FancyManiaLinks Copyright © 2014 Steffen Schröder
 | |
|  * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3
 | |
|  */
 | |
| if (!defined('FML_PATH')) {
 | |
| 	define('FML_PATH', __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR);
 | |
| }
 | |
| if (!defined('FML_VERSION')) {
 | |
| 	define('FML_VERSION', 1.0);
 | |
| }
 | |
| if (!defined('FML_SIMPLE_CLASSES')) {
 | |
| 	define('FML_SIMPLE_CLASSES', false);
 | |
| }
 | |
| 
 | |
| /*
 | |
|  * Autoload Function that loads FML Class Files on Demand
 | |
|  */
 | |
| if (!defined('FML_AUTOLOAD_DEFINED')) {
 | |
| 	define('FML_AUTOLOAD_DEFINED', true);
 | |
| 	spl_autoload_register(function ($className) {
 | |
| 		$classPath = str_replace('\\', DIRECTORY_SEPARATOR, $className);
 | |
| 		$filePath = FML_PATH . $classPath . '.php';
 | |
| 		if (file_exists($filePath)) {
 | |
| 			// Load with FML namespace
 | |
| 			require_once $filePath;
 | |
| 		}
 | |
| 		else if (FML_SIMPLE_CLASSES) {
 | |
| 			// Load as simple class name
 | |
| 			if (!function_exists('loadSimpleClass')) {
 | |
| 
 | |
| 				function loadSimpleClass($className, $directory, $excludes, $baseNamespace) {
 | |
| 					if ($dirHandle = opendir($directory)) {
 | |
| 						$classParts = explode('\\', $className);
 | |
| 						$simpleClassName = end($classParts);
 | |
| 						$classFileName = $simpleClassName . '.php';
 | |
| 						while ($fileName = readdir($dirHandle)) {
 | |
| 							if (in_array($fileName, $excludes)) {
 | |
| 								continue;
 | |
| 							}
 | |
| 							$filePath = $directory . $fileName;
 | |
| 							if (is_dir($filePath)) {
 | |
| 								$subDirectory = $filePath . DIRECTORY_SEPARATOR;
 | |
| 								$namespace = $baseNamespace . $fileName . '\\';
 | |
| 								$success = loadSimpleClass($className, $subDirectory, $excludes, $namespace);
 | |
| 								if ($success) return true;
 | |
| 								continue;
 | |
| 							}
 | |
| 							if (is_file($filePath)) {
 | |
| 								if ($fileName == $classFileName) {
 | |
| 									require_once $filePath;
 | |
| 									class_alias($baseNamespace . $simpleClassName, $className, false);
 | |
| 									return true;
 | |
| 								}
 | |
| 								continue;
 | |
| 							}
 | |
| 						}
 | |
| 						closedir($dirHandle);
 | |
| 					}
 | |
| 					return false;
 | |
| 				}
 | |
| 			}
 | |
| 			$excludes = array('.', '..');
 | |
| 			$baseNamespace = 'FML\\';
 | |
| 			loadSimpleClass($className, FML_PATH . 'FML' . DIRECTORY_SEPARATOR, $excludes, $baseNamespace);
 | |
| 		}
 | |
| 	});
 | |
| }
 |