<?php /** * Part of the Joomla Framework Console Package * * @copyright Copyright (C) 2005 - 2021 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ namespace Joomla\Console\Event; use Joomla\Console\Application; use Joomla\Console\Command\AbstractCommand; use Joomla\Console\ConsoleEvents; /** * Event triggered before a command is executed. * * @since 2.0.0 */ class BeforeCommandExecuteEvent extends ConsoleEvent { /** * The return code for a command disabled by this event. * * @var integer * @since 2.0.0 */ public const RETURN_CODE_DISABLED = 113; /** * Flag indicating the command is enabled * * @var boolean * @since 2.0.0 */ private $commandEnabled = true; /** * Event constructor. * * @param Application $application The active application. * @param AbstractCommand|null $command The command being executed. * * @since 2.0.0 */ public function __construct(Application $application, ?AbstractCommand $command = null) { parent::__construct(ConsoleEvents::BEFORE_COMMAND_EXECUTE, $application, $command); if ($command) { $this->commandEnabled = $command->isEnabled(); } } /** * Disable the command. * * @return void * * @since 2.0.0 */ public function disableCommand(): void { $this->commandEnabled = false; } /** * Enable the command. * * @return void * * @since 2.0.0 */ public function enableCommand(): void { $this->commandEnabled = false; } /** * Check if the command is enabled. * * @return boolean * * @since 2.0.0 */ public function isCommandEnabled(): bool { return $this->commandEnabled; } }