From 6f88d6cf7abe4597e0b27809775b56477d586ad3 Mon Sep 17 00:00:00 2001 From: Nicole Cordes <typo3@cordes.co> Date: Mon, 13 Jul 2015 17:51:42 +0200 Subject: [PATCH] [BUGFIX] Fallback to version of ext_emconf.php To resolve dependencies the ExtensionManager needs a version of an extension. If the current composer.json fails to provide a version we should fall back to the ext_emconf.php. Releases: master Resolves: #65866 Change-Id: I9e8383de10e2df1b722fda4b55d1379908f13138 Reviewed-on: http://review.typo3.org/41133 Reviewed-by: Benjamin Mack <benni@typo3.org> Tested-by: Benjamin Mack <benni@typo3.org> Reviewed-by: Stefan Neufeind <typo3.neufeind@speedpartner.de> Tested-by: Stefan Neufeind <typo3.neufeind@speedpartner.de> --- typo3/sysext/core/Classes/Package/Package.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/typo3/sysext/core/Classes/Package/Package.php b/typo3/sysext/core/Classes/Package/Package.php index 02e54707c7f5..3de91c659f96 100644 --- a/typo3/sysext/core/Classes/Package/Package.php +++ b/typo3/sysext/core/Classes/Package/Package.php @@ -111,6 +111,7 @@ class Package implements PackageInterface { if (!$this->loadExtensionEmconf()) { throw new Exception\InvalidPackageManifestException('No valid ext_emconf.php file found for package "' . $packageKey . '".', 1360403545); } + $this->mapExtensionManagerConfigurationToComposerManifest(); } $this->loadFlagsFromComposerManifest(); } @@ -201,7 +202,6 @@ class Package implements PackageInterface { include $path; if (is_array($EM_CONF[$_EXTKEY])) { $this->extensionManagerConfiguration = $EM_CONF[$_EXTKEY]; - $this->mapExtensionManagerConfigurationToComposerManifest(); return TRUE; } } @@ -263,7 +263,16 @@ class Package implements PackageInterface { if ($this->packageMetaData === NULL) { $this->packageMetaData = new MetaData($this->getPackageKey()); $this->packageMetaData->setDescription($this->getValueFromComposerManifest('description')); - $this->packageMetaData->setVersion($this->getValueFromComposerManifest('version')); + $version = $this->getValueFromComposerManifest('version'); + if ($version !== NULL) { + $this->packageMetaData->setVersion($version); + } else { + // As version is important within the core we need to make sure it is available + // Fetch it from ext_emconf.php + if ($this->loadExtensionEmconf()) { + $this->packageMetaData->setVersion($this->extensionManagerConfiguration['version']); + } + } $requirements = $this->getValueFromComposerManifest('require'); if ($requirements !== NULL) { foreach ($requirements as $requirement => $version) { -- GitLab