Skip to content

Commit 1afb2ea

Browse files
committed
MAGETWO-55193: Extension Management with Marketplace data
- Remove form extension greed unnecessary package types
1 parent f97db4d commit 1afb2ea

File tree

14 files changed

+157
-251
lines changed

14 files changed

+157
-251
lines changed

setup/src/Magento/Setup/Controller/InstallExtensionGrid.php

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
use Zend\View\Model\JsonModel;
1111
use Zend\View\Model\ViewModel;
1212
use Magento\Setup\Model\PackagesData;
13-
use \Magento\Setup\Model\Grid\TypeMapper;
1413

1514
/**
1615
* Controller for extensions grid tasks
@@ -22,21 +21,13 @@ class InstallExtensionGrid extends AbstractActionController
2221
*/
2322
private $packagesData;
2423

25-
/**
26-
* @var TypeMapper
27-
*/
28-
private $typeMapper;
29-
3024
/**
3125
* @param PackagesData $packagesData
32-
* @param TypeMapper $typeMapper
3326
*/
3427
public function __construct(
35-
PackagesData $packagesData,
36-
TypeMapper $typeMapper
28+
PackagesData $packagesData
3729
) {
3830
$this->packagesData = $packagesData;
39-
$this->typeMapper = $typeMapper;
4031
}
4132

4233
/**
@@ -81,12 +72,6 @@ private function formatPackageList(array $packages)
8172
{
8273
array_walk($packages, function (&$package) {
8374
$package['vendor'] = ucfirst($package['vendor']);
84-
$package['link'] = isset($package['extra']['x-magento-ext-package-link']) ?
85-
$package['extra']['x-magento-ext-package-link'] : '';
86-
$package['product_name'] = isset($package['extra']['x-magento-ext-title']) ?
87-
$package['extra']['x-magento-ext-title'] : $package['name'];
88-
$package['type'] = isset($package['extra']['x-magento-ext-type']) ?
89-
$package['extra']['x-magento-ext-type'] : $this->typeMapper->map($package['name'], $package['type']);
9075
});
9176

9277
return $packages;

setup/src/Magento/Setup/Model/Grid/Extension.php

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,6 @@ class Extension
1818
*/
1919
private $composerInformation;
2020

21-
/**
22-
* @var TypeMapper
23-
*/
24-
private $typeMapper;
25-
2621
/**
2722
* @var PackagesData
2823
*/
@@ -31,16 +26,13 @@ class Extension
3126
/**
3227
* @param ComposerInformation $composerInformation
3328
* @param PackagesData $packagesData
34-
* @param TypeMapper $typeMapper
3529
*/
3630
public function __construct(
3731
ComposerInformation $composerInformation,
38-
PackagesData $packagesData,
39-
TypeMapper $typeMapper
32+
PackagesData $packagesData
4033
) {
4134
$this->composerInformation = $composerInformation;
4235
$this->packagesData = $packagesData;
43-
$this->typeMapper = $typeMapper;
4436
}
4537

4638
/**
@@ -88,14 +80,7 @@ public function getListForUpdate()
8880
private function formatExtensions(array $extensions)
8981
{
9082
foreach ($extensions as &$extension) {
91-
$extraInfo = $this->packagesData->getPackageExtraInfo($extension['name'], $extension['version']);
9283
$extension['vendor'] = ucfirst(current(explode('/', $extension['name'])));
93-
$extension['product_name'] = isset($extraInfo['x-magento-ext-title']) ?
94-
$extraInfo['x-magento-ext-title'] : $extension['name'];
95-
$extension['type'] = isset($extraInfo['x-magento-ext-type']) ?
96-
$extraInfo['x-magento-ext-type'] : $this->typeMapper->map($extension['name'], $extension['type']);
97-
$extension['link'] = isset($extraInfo['x-magento-ext-package-link']) ?
98-
$extraInfo['x-magento-ext-package-link'] : '';
9984
}
10085
return array_values($extensions);
10186
}

setup/src/Magento/Setup/Model/Grid/Module.php

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,6 @@ class Module
5252
*/
5353
private $moduleList;
5454

55-
/**
56-
* @var TypeMapper
57-
*/
58-
private $typeMapper;
59-
6055
/**
6156
* @var PackagesData
6257
*/
@@ -67,22 +62,19 @@ class Module
6762
* @param \Magento\Framework\Module\FullModuleList $fullModuleList
6863
* @param ModuleList $moduleList
6964
* @param \Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider
70-
* @param TypeMapper $typeMapper
7165
* @param PackagesData $packagesData
7266
*/
7367
public function __construct(
7468
ComposerInformation $composerInformation,
7569
\Magento\Framework\Module\FullModuleList $fullModuleList,
7670
ModuleList $moduleList,
7771
\Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider,
78-
TypeMapper $typeMapper,
7972
PackagesData $packagesData
8073
) {
8174
$this->composerInformation = $composerInformation;
8275
$this->fullModuleList = $fullModuleList;
8376
$this->moduleList = $moduleList;
8477
$this->objectManagerProvider = $objectManagerProvider;
85-
$this->typeMapper = $typeMapper;
8678
$this->packagesData = $packagesData;
8779
}
8880

@@ -169,6 +161,7 @@ private function getModulesInfo(array $moduleList)
169161
$result[$key] = [
170162
'name' => $packageName ?: self::UNKNOWN_PACKAGE_NAME,
171163
'moduleName' => $moduleName,
164+
'type' => ComposerInformation::MODULE_PACKAGE_TYPE,
172165
'version' => $this->packageInfo->getVersion($moduleName) ?: self::UNKNOWN_VERSION,
173166
];
174167
}
@@ -189,28 +182,9 @@ private function addGeneralInfo(array $items)
189182
$item['enable'] = $this->moduleList->has($item['moduleName']);
190183
$vendorSource = $item['name'] == self::UNKNOWN_PACKAGE_NAME ? $item['moduleName'] : $item['name'];
191184
$item['vendor'] = ucfirst(current(preg_split('%[/_]%', $vendorSource)));
185+
$item = $this->packagesData->addPackageExtraInfo($item);
192186
}
193-
$items = $this->addExtraInfo($items);
194187

195188
return array_values($items);
196189
}
197-
198-
/**
199-
* Add extra info to result array
200-
*
201-
* @param array $items
202-
* @return array
203-
*/
204-
private function addExtraInfo(array $items)
205-
{
206-
foreach ($items as &$item) {
207-
$extraInfo = $this->packagesData->getPackageExtraInfo($item['name'], $item['version']);
208-
$item['product_name'] = isset($extraInfo['x-magento-ext-title']) ?
209-
$extraInfo['x-magento-ext-title'] : $item['name'];
210-
$item['type'] = isset($extraInfo['x-magento-ext-type']) ? $extraInfo['x-magento-ext-type'] :
211-
$this->typeMapper->map($item['name'], ComposerInformation::MODULE_PACKAGE_TYPE);
212-
}
213-
214-
return $items;
215-
}
216190
}

setup/src/Magento/Setup/Model/Grid/TypeMapper.php

Lines changed: 14 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -17,65 +17,34 @@ class TypeMapper
1717
*/
1818
const UNDEFINED_PACKAGE_TYPE = 'Undefined';
1919
const EXTENSION_PACKAGE_TYPE = 'Extension';
20+
const THEME_PACKAGE_TYPE = 'Theme';
21+
const MODULE_PACKAGE_TYPE = 'Module';
22+
const LANGUAGE_PACKAGE_TYPE = 'Language';
23+
const METAPACKAGE_PACKAGE_TYPE = 'Metapackage';
24+
const COMPONENT_PACKAGE_TYPE = 'Component';
25+
const LIBRARY_PACKAGE_TYPE = 'Library';
2026
/**#@-*/
21-
22-
/**
23-
* @var ComposerInformation
24-
*/
25-
private $composerInformation;
26-
27-
/**
28-
* @var array
29-
*/
30-
private $rootRequires;
3127

3228
/** @var array */
3329
private $packageTypesMap = [
34-
ComposerInformation::THEME_PACKAGE_TYPE => 'Theme',
35-
ComposerInformation::LANGUAGE_PACKAGE_TYPE => 'Language',
36-
ComposerInformation::MODULE_PACKAGE_TYPE => 'Module',
37-
ComposerInformation::METAPACKAGE_PACKAGE_TYPE => 'Metapackage',
38-
ComposerInformation::COMPONENT_PACKAGE_TYPE => 'Component',
39-
ComposerInformation::LIBRARY_PACKAGE_TYPE => 'Library'
30+
ComposerInformation::THEME_PACKAGE_TYPE => self::THEME_PACKAGE_TYPE,
31+
ComposerInformation::LANGUAGE_PACKAGE_TYPE => self::LANGUAGE_PACKAGE_TYPE,
32+
ComposerInformation::MODULE_PACKAGE_TYPE => self::MODULE_PACKAGE_TYPE,
33+
ComposerInformation::METAPACKAGE_PACKAGE_TYPE => self::METAPACKAGE_PACKAGE_TYPE,
34+
ComposerInformation::COMPONENT_PACKAGE_TYPE => self::COMPONENT_PACKAGE_TYPE,
35+
ComposerInformation::LIBRARY_PACKAGE_TYPE => self::LIBRARY_PACKAGE_TYPE
4036
];
4137

42-
/**
43-
* TypeMapper constructor.
44-
* @param ComposerInformation $composerInformation
45-
*/
46-
public function __construct(
47-
ComposerInformation $composerInformation
48-
) {
49-
$this->composerInformation = $composerInformation;
50-
}
51-
5238
/**
5339
* Retrieve package type for a grid.
5440
*
55-
* @param string $packageName
5641
* @param string $packageType
5742
* @return string
43+
* @internal param string $packageName
5844
*/
59-
public function map($packageName, $packageType)
45+
public function map($packageType)
6046
{
61-
if (in_array($packageName, $this->getRootRequires())
62-
&& $packageType == ComposerInformation::MODULE_PACKAGE_TYPE
63-
) {
64-
return self::EXTENSION_PACKAGE_TYPE;
65-
}
66-
6747
return isset($this->packageTypesMap[$packageType]) ?
6848
$this->packageTypesMap[$packageType] : self::UNDEFINED_PACKAGE_TYPE;
6949
}
70-
71-
/**
72-
* @return array
73-
*/
74-
private function getRootRequires()
75-
{
76-
if ($this->rootRequires === null) {
77-
$this->rootRequires = array_keys($this->composerInformation->getRootPackage()->getRequires());
78-
}
79-
return $this->rootRequires;
80-
}
8150
}

setup/src/Magento/Setup/Model/PackagesData.php

Lines changed: 62 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,24 +62,27 @@ class PackagesData
6262
/**
6363
* PackagesData constructor.
6464
*
65-
* @param \Magento\Framework\Composer\ComposerInformation $composerInformation,
66-
* @param \Magento\Setup\Model\DateTime\TimeZoneProvider $timeZoneProvider,
67-
* @param \Magento\Setup\Model\PackagesAuth $packagesAuth,
68-
* @param \Magento\Framework\Filesystem $filesystem,
65+
* @param \Magento\Framework\Composer\ComposerInformation $composerInformation ,
66+
* @param \Magento\Setup\Model\DateTime\TimeZoneProvider $timeZoneProvider ,
67+
* @param \Magento\Setup\Model\PackagesAuth $packagesAuth ,
68+
* @param \Magento\Framework\Filesystem $filesystem ,
6969
* @param \Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider
70+
* @param TypeMapper $typeMapper
7071
*/
7172
public function __construct(
7273
\Magento\Framework\Composer\ComposerInformation $composerInformation,
7374
\Magento\Setup\Model\DateTime\TimeZoneProvider $timeZoneProvider,
7475
\Magento\Setup\Model\PackagesAuth $packagesAuth,
7576
\Magento\Framework\Filesystem $filesystem,
76-
\Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider
77+
\Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider,
78+
\Magento\Setup\Model\Grid\TypeMapper $typeMapper
7779
) {
7880
$this->objectManagerProvider = $objectManagerProvider;
7981
$this->composerInformation = $composerInformation;
8082
$this->timeZoneProvider = $timeZoneProvider;
8183
$this->packagesAuth = $packagesAuth;
8284
$this->filesystem = $filesystem;
85+
$this->typeMapper = $typeMapper;
8386
}
8487

8588
/**
@@ -172,10 +175,16 @@ private function formatSyncDate($syncDate)
172175
*/
173176
public function getInstalledPackages()
174177
{
175-
return array_intersect_key(
178+
$installedPackages = array_intersect_key(
176179
$this->composerInformation->getInstalledMagentoPackages(),
177180
$this->composerInformation->getRootPackage()->getRequires()
178181
);
182+
183+
foreach ($installedPackages as &$package) {
184+
$package = $this->addPackageExtraInfo($package);
185+
}
186+
187+
return $this->filterPackagesList($installedPackages);
179188
}
180189

181190
/**
@@ -276,11 +285,11 @@ private function syncPackagesForInstall()
276285
$installPackage['versions'] = $versions;
277286
$installPackage['name'] = $packageName;
278287
$installPackage['vendor'] = explode('/', $packageName)[0];
279-
$installPackages[$packageName] = $installPackage;
288+
$installPackages[$packageName] = $this->addPackageExtraInfo($installPackage);
280289
}
281290
}
282291
}
283-
$packagesForInstall['packages'] = $installPackages;
292+
$packagesForInstall['packages'] = $this->filterPackagesList($installPackages);
284293
return $packagesForInstall;
285294
} catch (\Exception $e) {
286295
throw new \RuntimeException('Error in syncing packages for Install');
@@ -294,14 +303,34 @@ private function syncPackagesForInstall()
294303
* @param string $packageVersion
295304
* @return array
296305
*/
297-
public function getPackageExtraInfo($packageName, $packageVersion)
306+
private function getPackageExtraInfo($packageName, $packageVersion)
298307
{
299308
$packagesJson = $this->getPackagesJson();
300309

301310
return isset($packagesJson[$packageName][$packageVersion]['extra']) ?
302311
$packagesJson[$packageName][$packageVersion]['extra'] : [] ;
303312
}
304313

314+
/**
315+
* Add package extra info
316+
*
317+
* @param array $package
318+
* @return array
319+
*/
320+
public function addPackageExtraInfo(array $package)
321+
{
322+
$extraInfo = $this->getPackageExtraInfo($package['name'], $package['version']);
323+
324+
$package['package_title'] = isset($extraInfo['x-magento-ext-title']) ?
325+
$extraInfo['x-magento-ext-title'] : $package['name'];
326+
$package['package_type'] = isset($extraInfo['x-magento-ext-type']) ? $extraInfo['x-magento-ext-type'] :
327+
$this->typeMapper->map($package['type']);
328+
$package['package_link'] = isset($extraInfo['x-magento-ext-package-link']) ?
329+
$extraInfo['x-magento-ext-package-link'] : '';
330+
331+
return $package;
332+
}
333+
305334
/**
306335
* Check if this new user package
307336
*
@@ -365,6 +394,30 @@ public function getPackagesForInstall()
365394
}
366395
}
367396

397+
/**
398+
* Filter packages by allowed types
399+
*
400+
* @param array $packages
401+
* @return array
402+
*/
403+
private function filterPackagesList(array $packages)
404+
{
405+
return array_filter(
406+
$packages,
407+
function ($item) {
408+
return in_array(
409+
$item['package_type'],
410+
[
411+
\Magento\Setup\Model\Grid\TypeMapper::MODULE_PACKAGE_TYPE,
412+
\Magento\Setup\Model\Grid\TypeMapper::EXTENSION_PACKAGE_TYPE,
413+
\Magento\Setup\Model\Grid\TypeMapper::THEME_PACKAGE_TYPE,
414+
\Magento\Setup\Model\Grid\TypeMapper::METAPACKAGE_PACKAGE_TYPE
415+
]
416+
);
417+
}
418+
);
419+
}
420+
368421
/**
369422
*
370423
* @param array $packages

0 commit comments

Comments
 (0)