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.
85 lines
2.0 KiB
85 lines
2.0 KiB
<?php |
|
/** |
|
* HelpController class file. |
|
* |
|
* @link http://www.yiiframework.com/ |
|
* @copyright Copyright © 2008-2012 Yii Software LLC |
|
* @license http://www.yiiframework.com/license/ |
|
*/ |
|
|
|
namespace yii\console\commands; |
|
|
|
/** |
|
* HelpCommand represents a console help command. |
|
* |
|
* HelpCommand displays the available command list or the help instructions |
|
* about a specific command. |
|
* |
|
* To use this command, enter the following on the command line: |
|
* |
|
* ~~~ |
|
* yiic help [command name] |
|
* ~~~ |
|
* |
|
* In the above, if the command name is not provided, it will display all |
|
* available commands. |
|
* |
|
* @property string $help The command description. |
|
* |
|
* @author Qiang Xue <qiang.xue@gmail.com> |
|
* @since 2.0 |
|
*/ |
|
class HelpController extends \yii\console\Controller |
|
{ |
|
public function actionIndex($args = array()) |
|
{ |
|
echo "Yii console command helper (based on Yii v" . \Yii::getVersion() . ").\n"; |
|
$commands = $this->getCommands(); |
|
if ($commands !== array()) { |
|
echo "\n Usage: yiic <command-name> [...options...]\n\n"; |
|
echo "The following commands are available:\n"; |
|
foreach ($commands as $command) { |
|
echo " - $command\n"; |
|
} |
|
echo "\nTo see individual command help, enter:\n"; |
|
echo "\n yiic help <command-name>\n"; |
|
} else { |
|
echo "\nNo commands are found.\n"; |
|
} |
|
} |
|
|
|
protected function getCommands() |
|
{ |
|
$commands = $this->getModuleCommands(\Yii::$application); |
|
sort($commands); |
|
return array_unique($commands); |
|
} |
|
|
|
/** |
|
* @param \yii\base\Module $module |
|
* @return array |
|
*/ |
|
protected function getModuleCommands($module) |
|
{ |
|
if ($module === null) { |
|
return array(); |
|
} |
|
|
|
$commands = array_keys($module->controllers); |
|
|
|
foreach ($module->getModules() as $id => $module) { |
|
foreach ($this->getModuleCommands($module->getModule($id)) as $command) { |
|
$commands[] = $command; |
|
} |
|
} |
|
|
|
$files = scandir($module->getControllerPath()); |
|
foreach ($files as $file) { |
|
if(strcmp(substr($file,-14),'Controller.php') === 0 && is_file($file)) { |
|
$commands[] = lcfirst(substr(basename($file), 0, -14)); |
|
} |
|
} |
|
|
|
return $commands; |
|
} |
|
} |