93 lines
2.4 KiB
PHP
93 lines
2.4 KiB
PHP
<?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);
|
|
}
|
|
} |