diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index 824bb61..33ee8f1 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -628,9 +628,9 @@ function _drupal_request_initialize() { * configuration. For example, a module 'foo' may legally be located * in any of these three places: * - * core/modules/foo/foo.module - * modules/foo/foo.module - * sites/example.com/modules/foo/foo.module + * core/modules/foo/foo.info.yml + * modules/foo/foo.info.yml + * sites/example.com/modules/foo/foo.info.yml * * Calling drupal_get_filename('module', 'foo') will give you one of * the above, depending on where the module is located. @@ -671,7 +671,7 @@ function drupal_get_filename($type, $name, $filename = NULL) { // Retrieve the current module list (derived from the service container). if ($type == 'module' && \Drupal::hasService('module_handler')) { foreach (\Drupal::moduleHandler()->getModuleList() as $module_name => $module) { - $files[$type][$module_name] = $module->getExtensionPathname(); + $files[$type][$module_name] = $module->getPathname(); } } // If still unknown, retrieve the file list prepared in state by diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc index 5331e95..3634974 100644 --- a/core/includes/install.core.inc +++ b/core/includes/install.core.inc @@ -492,7 +492,7 @@ function install_begin_request(&$install_state) { $module_handler = \Drupal::moduleHandler(); if (!$module_handler->moduleExists('system')) { // Override the module list with a minimal set of modules. - \Drupal::moduleHandler()->add('system', 'core/modules/system'); + $module_handler->add('system', 'core/modules/system'); } // After setting up a custom and finite module list in a custom low-level // bootstrap like here, ensure to use ModuleHandler::loadAll() so that diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php index c4f070a..054fa0c 100644 --- a/core/lib/Drupal/Core/DrupalKernel.php +++ b/core/lib/Drupal/Core/DrupalKernel.php @@ -81,7 +81,7 @@ class DrupalKernel implements DrupalKernelInterface, TerminableInterface { protected $newModuleList; /** - * An array of module Extension objects. + * List of available modules and installation profiles. * * @var \Drupal\Core\Extension\Extension[] */ @@ -499,7 +499,7 @@ protected function buildContainer() { $container = $this->getContainerBuilder(); $container->set('kernel', $this); $container->setParameter('container.service_providers', $this->serviceProviderClasses); - $container->setParameter('container.modules', $this->getModules()); + $container->setParameter('container.modules', $this->getModulesParameter()); // Get a list of namespaces and put it onto the container. $namespaces = $this->getModuleNamespaces($this->getModuleFileNames()); @@ -643,15 +643,19 @@ protected function storage() { } /** - * Returns a list of enabled modules. + * Returns an array of Extension class parameters for all enabled modules. * - * @return \Drupal\Core\Extension\Extension[] + * @return array */ - protected function getModules() { + protected function getModulesParameter() { $extensions = array(); - foreach ($this->moduleList as $module => $weight) { - if ($data = $this->moduleData($module)) { - $extensions[$module] = json_encode($data); + foreach ($this->moduleList as $name => $weight) { + if ($data = $this->moduleData($name)) { + $extensions[$name] = array( + 'type' => $data->getType(), + 'pathname' => $data->getPathname(), + 'filename' => $data->getExtensionFilename(), + ); } } return $extensions; diff --git a/core/lib/Drupal/Core/Extension/Extension.php b/core/lib/Drupal/Core/Extension/Extension.php index 1a6b8f8..cc21c53 100644 --- a/core/lib/Drupal/Core/Extension/Extension.php +++ b/core/lib/Drupal/Core/Extension/Extension.php @@ -10,7 +10,7 @@ /** * Defines an extension (file) object. */ -class Extension implements \Serializable, \JsonSerializable { +class Extension implements \Serializable { /** * The type of the extension (e.g., 'module'). @@ -29,7 +29,7 @@ class Extension implements \Serializable, \JsonSerializable { /** * The filename of the main extension file (e.g., 'node.module'). * - * @var string + * @var string|null */ protected $filename; @@ -116,6 +116,15 @@ public function getExtensionPathname() { } /** + * Returns the name of the main extension file, if any. + * + * @return string|null + */ + public function getExtensionFilename() { + return $this->filename; + } + + /** * Loads the main extension file, if any. * * @return bool @@ -197,15 +206,4 @@ public function unserialize($data) { } } - /** - * Implements \JsonSerializable::jsonSerialize(). - */ - public function jsonSerialize() { - return array( - 'type' => $this->type, - 'pathname' => $this->pathname, - 'filename' => $this->filename, - ); - } - } diff --git a/core/lib/Drupal/Core/Extension/ModuleHandler.php b/core/lib/Drupal/Core/Extension/ModuleHandler.php index a1e05fc..003486f 100644 --- a/core/lib/Drupal/Core/Extension/ModuleHandler.php +++ b/core/lib/Drupal/Core/Extension/ModuleHandler.php @@ -67,8 +67,8 @@ class ModuleHandler implements ModuleHandlerInterface { * * @param array $module_list * An associative array whose keys are the names of installed modules and - * whose values are JSON-encoded Extension class parameters. This is - * normally the %container.modules% parameter being set up by DrupalKernel. + * whose values are Extension class parameters. This is normally the + * %container.modules% parameter being set up by DrupalKernel. * * @see \Drupal\Core\DrupalKernel * @see \Drupal\Core\CoreServiceProvider @@ -76,8 +76,7 @@ class ModuleHandler implements ModuleHandlerInterface { public function __construct(array $module_list = array()) { $this->moduleList = array(); foreach ($module_list as $name => $module) { - $module = json_decode($module, TRUE); - $this->moduleList[$name] = new Extension($module['type'], $module['pathname'], $module['extensionFilename']); + $this->moduleList[$name] = new Extension($module['type'], $module['pathname'], $module['filename']); } } @@ -142,9 +141,9 @@ public function setModuleList(array $module_list = array()) { } public function add($name, $path) { - $info = "$path/$name.info.yml"; - $file = file_exists($path . "/$name.module") ? "$name.module" : NULL; - $this->moduleList[$name] = new Extension('module', $info, $file); + $pathname = "$path/$name.info.yml"; + $filename = file_exists($path . "/$name.module") ? "$name.module" : NULL; + $this->moduleList[$name] = new Extension('module', $pathname, $filename); $this->resetImplementations(); } @@ -595,9 +594,9 @@ public function install(array $module_list, $enable_dependencies = TRUE) { } else { $module_path = drupal_get_path('module', $name); - $module_info = "$module_path/$name.info.yml"; - $module_file = file_exists($module_path . "/$name.module") ? "$name.module" : NULL; - $module_filenames[$name] = new Extension('module', $module_info, $module_file); + $pathname = "$module_path/$name.info.yml"; + $filename = file_exists($module_path . "/$name.module") ? "$name.module" : NULL; + $module_filenames[$name] = new Extension('module', $pathname, $filename); } } diff --git a/core/modules/simpletest/simpletest.module b/core/modules/simpletest/simpletest.module index b75f3fe..9b6e9cc 100644 --- a/core/modules/simpletest/simpletest.module +++ b/core/modules/simpletest/simpletest.module @@ -552,7 +552,7 @@ function simpletest_classloader_register() { $extensions = array(); foreach ($types as $type) { foreach ($listing->scan($type, TRUE) as $name => $file) { - $extensions[$type][$name] = $file->getExtensionPathname(); + $extensions[$type][$name] = $file->getPathname(); } } \Drupal::cache()->set($cid, $extensions); diff --git a/core/modules/system/system.module b/core/modules/system/system.module index c633c9d..e58c1cf 100644 --- a/core/modules/system/system.module +++ b/core/modules/system/system.module @@ -1463,7 +1463,7 @@ function system_rebuild_module_data() { $module->weight = isset($installed_modules[$name]) ? $installed_modules[$name] : 0; $module->status = (int) isset($installed_modules[$name]); $module->schema_version = SCHEMA_UNINSTALLED; - $files[$name] = $module->getExtensionPathname() ?: $module->getPathname(); + $files[$name] = $module->getPathname(); } $modules = \Drupal::moduleHandler()->buildModuleDependencies($modules); $modules_cache = $modules;