123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <?php
- /**
- * ModuleCommand class file.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @link http://www.yiiframework.com/
- * @copyright 2008-2013 Yii Software LLC
- * @license http://www.yiiframework.com/license/
- * @version $Id: ModuleCommand.php 433 2008-12-30 22:59:17Z qiang.xue $
- */
- /**
- * ModuleCommand generates a controller class.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: ModuleCommand.php 433 2008-12-30 22:59:17Z qiang.xue $
- * @package system.cli.commands.shell
- */
- class ModuleCommand extends CConsoleCommand
- {
- /**
- * @var string the directory that contains templates for the module command.
- * Defaults to null, meaning using 'framework/cli/views/shell/module'.
- * If you set this path and some views are missing in the directory,
- * the default views will be used.
- */
- public $templatePath;
- public function getHelp()
- {
- return <<<EOD
- USAGE
- module <module-ID>
- DESCRIPTION
- This command generates an application module.
- PARAMETERS
- * module-ID: required, module ID. It is case-sensitive.
- EOD;
- }
- /**
- * Execute the action.
- * @param array $args command line parameters specific for this command
- * @return integer|null non zero application exit code for help or null on success
- */
- public function run($args)
- {
- if(!isset($args[0]))
- {
- echo "Error: module ID is required.\n";
- echo $this->getHelp();
- return 1;
- }
- $moduleID=$args[0];
- $moduleClass=ucfirst($moduleID).'Module';
- $modulePath=Yii::app()->getModulePath().DIRECTORY_SEPARATOR.$moduleID;
- $sourceDir=$this->templatePath===null?YII_PATH.'/cli/views/shell/module':$this->templatePath;
- $list=$this->buildFileList($sourceDir,$modulePath);
- $list['module.php']['target']=$modulePath.DIRECTORY_SEPARATOR.$moduleClass.'.php';
- $list['module.php']['callback']=array($this,'generateModuleClass');
- $list['module.php']['params']=array(
- 'moduleClass'=>$moduleClass,
- 'moduleID'=>$moduleID,
- );
- $list[$moduleClass.'.php']=$list['module.php'];
- unset($list['module.php']);
- $this->copyFiles($list);
- echo <<<EOD
- Module '{$moduleID}' has been created under the following folder:
- $modulePath
- You may access it in the browser using the following URL:
- http://hostname/path/to/index.php?r=$moduleID
- Note, the module needs to be installed first by adding '{$moduleID}'
- to the 'modules' property in the application configuration.
- EOD;
- }
- public function generateModuleClass($source,$params)
- {
- return $this->renderFile($source,$params,true);
- }
- }
|