/** * Gets a select field containing all possible CommandController actions * * @return array */ protected function getCommandControllerActionField() { $commands = $this->commandManager->getAvailableCommands(); $options = array(); foreach ($commands as $command) { if ($command->isInternal() === FALSE) { $className = $command->getControllerClassName(); if (strpos($className, '\\')) { $classNameParts = explode('\\', $className); // Skip vendor and product name for core classes if (strpos($className, 'TYPO3\\CMS\\') === 0) { $classPartsToSkip = 2; } else { $classPartsToSkip = 1; } $classNameParts = array_slice($classNameParts, $classPartsToSkip); $extensionName = $classNameParts[0]; $controllerName = $classNameParts[2]; } else { $classNameParts = explode('_', $className); $extensionName = $classNameParts[1]; $controllerName = $classNameParts[3]; } $identifier = $command->getCommandIdentifier(); $options[$identifier] = $extensionName . ' ' . str_replace('CommandController', '', $controllerName) . ': ' . $command->getControllerCommandName(); } } $name = 'action'; $currentlySelectedCommand = $this->task !== NULL ? $this->task->getCommandIdentifier() : NULL; return array('code' => $this->renderSelectField($name, $options, $currentlySelectedCommand), 'label' => $this->getActionLabel()); }
/** * Builds an index of available commands. For each of them a Command object is * added to the commands array of this class. * * @return void */ protected function buildCommandsIndex() { $availableCommands = $this->commandManager->getAvailableCommands(); foreach ($availableCommands as $command) { if ($command->isInternal()) { continue; } $commandIdentifier = $command->getCommandIdentifier(); $extensionKey = strstr($commandIdentifier, ':', TRUE); $commandControllerClassName = $command->getControllerClassName(); $commandName = $command->getControllerCommandName(); $this->commandsByExtensionsAndControllers[$extensionKey][$commandControllerClassName][$commandName] = $command; } }
/** * Make sure the objet manager is set * * @return \TYPO3\CMS\Extbase\Mvc\Cli\Command[] */ public function getAvailableCommands() { $this->initialize(); if ($this->availableCommands === NULL) { $commandControllerRegistry =& $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['extbase']['commandControllers']; if (!empty($commandControllerRegistry) && is_array($commandControllerRegistry)) { $commandControllerRegistry = array_merge($commandControllerRegistry, $this->commandControllers); } else { $commandControllerRegistry = $this->commandControllers; } $this->availableCommands = parent::getAvailableCommands(); } return $this->availableCommands; }
/** * Gets a select field containing all possible CommandController actions * * @return array */ protected function getCommandControllerActionField() { $commands = $this->commandManager->getAvailableCommands(); $options = array(); foreach ($commands as $command) { if ($command->isInternal() === FALSE) { $classNameParts = explode('_', $command->getControllerClassName()); $identifier = $command->getCommandIdentifier(); $options[$identifier] = $classNameParts[1] . ' ' . str_replace('CommandController', '', $classNameParts[3]) . ': ' . $command->getControllerCommandName(); } } $name = "action"; $currentlySelectedCommand = $this->task !== NULL ? $this->task->getCommandIdentifier() : NULL; return array('code' => $this->renderSelectField($name, $options, $currentlySelectedCommand), 'label' => $this->getActionLabel()); }