From bc32b76e6354baf8a990d8a438d97f6bc4558b2f Mon Sep 17 00:00:00 2001 From: Luis Eduardo Telaya Escobedo Date: Fri, 11 Nov 2016 09:13:40 -0500 Subject: [PATCH] [rest:disable] Fix rest disable functionality (#2916) --- src/Command/Rest/DisableCommand.php | 58 ++++++++++++++++++----------- 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/src/Command/Rest/DisableCommand.php b/src/Command/Rest/DisableCommand.php index c1fa98901..d437491f5 100644 --- a/src/Command/Rest/DisableCommand.php +++ b/src/Command/Rest/DisableCommand.php @@ -30,13 +30,13 @@ class DisableCommand extends Command use RestTrait; /** - * @var ConfigFactory -*/ + * @var ConfigFactory + */ protected $configFactory; /** - * @var ResourcePluginManager -*/ + * @var ResourcePluginManager + */ protected $pluginManagerRest; /** @@ -53,7 +53,6 @@ public function __construct( parent::__construct(); } - /** * @DrupalCommand( * dependencies = { @@ -96,23 +95,38 @@ protected function execute(InputInterface $input, OutputInterface $output) $rest_resources_ids, $this->translator ); - $input->setArgument('resource-id', $resource_id); - $rest_settings = $this->getRestDrupalConfig(); - - unset($rest_settings[$resource_id]); - - $config = $this->configFactory->getEditable('rest.settings'); - - $config->set('resources', $rest_settings); - $config->save(); - - $io->success( - sprintf( - $this->trans('commands.rest.disable.messages.success'), - $resource_id - ) - ); + $resources = \Drupal::service('entity_type.manager') + ->getStorage('rest_resource_config')->loadMultiple(); + if ($resources[$this->getResourceKey($resource_id)]) { + $routeBuilder = \Drupal::service('router.builder'); + $resources[$this->getResourceKey($resource_id)]->delete(); + // Rebuild routing cache. + $routeBuilder->rebuild(); + + $io->success( + sprintf( + $this->trans('commands.rest.disable.messages.success'), + $resource_id + ) + ); + return true; + } + $message = sprintf($this->trans('commands.rest.disable.messages.already-disabled'), $resource_id); + $io->info($message); + return true; + } - return 0; + /** + * The key used in the form. + * + * @param string $resource_id + * The resource ID. + * + * @return string + * The resource key in the form. + */ + protected function getResourceKey($resource_id) { + return str_replace(':', '.', $resource_id); } + }