You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					90 lines
				
				2.1 KiB
			
		
		
			
		
	
	
					90 lines
				
				2.1 KiB
			| 
											12 years ago
										 | <?php
 | ||
|  | /**
 | ||
|  |  * @link http://www.yiiframework.com/
 | ||
|  |  * @copyright Copyright (c) 2008 Yii Software LLC
 | ||
|  |  * @license http://www.yiiframework.com/license/
 | ||
|  |  */
 | ||
|  | 
 | ||
|  | namespace yii\build\controllers;
 | ||
|  | 
 | ||
|  | use yii\console\Controller;
 | ||
|  | use yii\helpers\FileHelper;
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @author Qiang Xue <qiang.xue@gmail.com>
 | ||
|  |  * @since 2.0
 | ||
|  |  */
 | ||
| 
											12 years ago
										 | class ClassmapController extends Controller
 | ||
| 
											12 years ago
										 | {
 | ||
|  | 	public $defaultAction = 'create';
 | ||
|  | 
 | ||
|  | 	/**
 | ||
|  | 	 * Creates a class map for the core Yii classes.
 | ||
|  | 	 * @param string $root the root path of Yii framework. Defaults to YII_PATH.
 | ||
|  | 	 * @param string $mapFile the file to contain the class map. Defaults to YII_PATH . '/classes.php'.
 | ||
|  | 	 */
 | ||
|  | 	public function actionCreate($root = null, $mapFile = null)
 | ||
|  | 	{
 | ||
|  | 		if ($root === null) {
 | ||
|  | 			$root = YII_PATH;
 | ||
|  | 		}
 | ||
|  | 		$root = FileHelper::normalizePath($root);
 | ||
|  | 		if ($mapFile === null) {
 | ||
|  | 			$mapFile = YII_PATH . '/classes.php';
 | ||
|  | 		}
 | ||
|  | 		$options = array(
 | ||
|  | 			'filter' => function($path) {
 | ||
|  | 				if (is_file($path)) {
 | ||
|  | 					$file = basename($path);
 | ||
|  | 					if ($file[0] < 'A' || $file[0] > 'Z') {
 | ||
|  | 						return false;
 | ||
|  | 					}
 | ||
|  | 				}
 | ||
|  | 				return null;
 | ||
|  | 			},
 | ||
|  | 			'only' => array('.php'),
 | ||
|  | 			'except' => array(
 | ||
|  | 				'Yii.php',
 | ||
|  | 				'YiiBase.php',
 | ||
|  | 				'/debug/',
 | ||
|  | 				'/console/',
 | ||
|  | 				'/test/',
 | ||
|  | 			),
 | ||
|  | 		);
 | ||
|  | 		$files = FileHelper::findFiles($root, $options);
 | ||
|  | 		$map = array();
 | ||
|  | 		foreach ($files as $file) {
 | ||
|  | 			if (($pos = strpos($file, $root)) !== 0) {
 | ||
|  | 				die("Something wrong: $file");
 | ||
|  | 			}
 | ||
|  | 			$path = str_replace('\\', '/', substr($file, strlen($root)));
 | ||
|  | 			$map[] = "\t'yii" . substr(str_replace('/', '\\', $path), 0, -4) . "' => YII_PATH . '$path',";
 | ||
|  | 		}
 | ||
|  | 		$map = implode("\n", $map);
 | ||
|  | 		$output = <<<EOD
 | ||
|  | <?php
 | ||
|  | /**
 | ||
|  |  * Yii core class map.
 | ||
|  |  *
 | ||
| 
											12 years ago
										 |  * This file is automatically generated by the "build classmap" command under the "build" folder.
 | ||
| 
											12 years ago
										 |  * Do not modify it directly.
 | ||
|  |  *
 | ||
|  |  * @link http://www.yiiframework.com/
 | ||
|  |  * @copyright Copyright (c) 2008 Yii Software LLC
 | ||
|  |  * @license http://www.yiiframework.com/license/
 | ||
|  |  */
 | ||
|  | 
 | ||
|  | return array(
 | ||
|  | $map
 | ||
|  | );
 | ||
|  | 
 | ||
|  | EOD;
 | ||
|  | 		if (is_file($mapFile) && file_get_contents($mapFile) === $output) {
 | ||
|  | 			echo "Nothing changed.";
 | ||
|  | 		} else {
 | ||
|  | 			file_put_contents($mapFile, $output);
 | ||
|  | 			echo "Class map saved in $mapFile";
 | ||
|  | 		}
 | ||
|  | 	}
 | ||
|  | }
 |