diff --git a/core/includes/config.inc b/core/includes/config.inc index b033f5e..4b4538a 100644 --- a/core/includes/config.inc +++ b/core/includes/config.inc @@ -4,6 +4,7 @@ use Drupal\Core\Config\FileStorage; use Drupal\Core\Config\NullStorage; use Drupal\Core\Config\StorageInterface; +use Drupal\Core\Config\Entity\ConfigStorageController; /** * @file @@ -35,7 +36,7 @@ function config_install_default_config($type, $name) { $manifest_config = config('manifest.' . $entity_info['config_prefix']); $manifest_data = array(); foreach ($source_storage->listAll($entity_info['config_prefix']) as $config_name) { - $id = substr($config_name, strlen($entity_info['config_prefix'] . '.')); + $id = ConfigStorageController::extractID($config_name, $entity_info['config_prefix']); $manifest_data[$id]['name'] = $config_name; } $manifest_config->setData($manifest_data)->save(); diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php index 8700db6..ab3f4c3 100644 --- a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php +++ b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php @@ -148,6 +148,22 @@ public function getConfigPrefix() { } /** + * Extracts the configuration entity ID from the full configuration name. + * + * @param string $config_name + * The full configuration name to extract the ID from. E.g. + * 'views.view.archive'. + * @param string $config_prefix + * The config prefix of the configuration entity. E.g. 'views.view' + * + * @return string + * The ID of the configuration entity. + */ + public static function extractID($config_name, $config_prefix) { + return substr($config_name, strlen($config_prefix . '.')); + } + + /** * Builds the query to load the entity. * * This has full revision support. For entities requiring special queries, diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityUnitTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityUnitTest.php index 32a198a..26f0fde 100644 --- a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityUnitTest.php +++ b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityUnitTest.php @@ -8,6 +8,7 @@ namespace Drupal\config\Tests; use Drupal\simpletest\DrupalUnitTestBase; +use Drupal\Core\Config\Entity\ConfigStorageController; /** * Unit tests for configuration controllers and objects. @@ -38,6 +39,11 @@ public function testStorageControllerMethods() { $expected = $info['config_prefix'] . '.'; $this->assertIdentical($controller->getConfigPrefix(), $expected); + + // Test the static extractID() method. + $expected_id = 'test_id'; + $config_name = $info['config_prefix'] . '.' . $expected_id; + $this->assertIdentical(ConfigStorageController::extractID($config_name, $info['config_prefix']), $expected_id); } }