3
3
* Copyright © 2016 Magento. All rights reserved.
4
4
* See COPYING.txt for license details.
5
5
*/
6
-
7
6
namespace Magento \Setup \Model \Grid ;
8
7
9
8
use Magento \Framework \Composer \ComposerInformation ;
9
+ use Magento \Framework \Module \FullModuleList ;
10
+ use Magento \Framework \Module \ModuleList ;
11
+ use Magento \Framework \Module \PackageInfoFactory ;
12
+ use Magento \Setup \Model \ObjectManagerProvider ;
13
+ use Magento \Setup \Model \PackagesData ;
10
14
11
15
/**
12
16
* Module grid
@@ -32,21 +36,21 @@ class Module
32
36
private $ packageInfo ;
33
37
34
38
/**
35
- * @var \Magento\Setup\Model\ ObjectManagerProvider
39
+ * @var ObjectManagerProvider
36
40
*/
37
41
private $ objectManagerProvider ;
38
42
39
43
/**
40
44
* Full Module info
41
45
*
42
- * @var \Magento\Framework\Module\ FullModuleList
46
+ * @var FullModuleList
43
47
*/
44
48
private $ fullModuleList ;
45
49
46
50
/**
47
51
* Module info
48
52
*
49
- * @var \Magento\Framework\Module\ ModuleList
53
+ * @var ModuleList
50
54
*/
51
55
private $ moduleList ;
52
56
@@ -56,25 +60,25 @@ class Module
56
60
private $ typeMapper ;
57
61
58
62
/**
59
- * @var \Magento\Setup\Model\ PackagesData
63
+ * @var PackagesData
60
64
*/
61
65
private $ packagesData ;
62
66
63
67
/**
64
68
* @param ComposerInformation $composerInformation
65
- * @param \Magento\Framework\Module\ FullModuleList $fullModuleList
66
- * @param \Magento\Framework\Module\ ModuleList $moduleList
67
- * @param \Magento\Setup\Model\ ObjectManagerProvider $objectManagerProvider
69
+ * @param FullModuleList $fullModuleList
70
+ * @param ModuleList $moduleList
71
+ * @param ObjectManagerProvider $objectManagerProvider
68
72
* @param TypeMapper $typeMapper
69
- * @param \Magento\Setup\Model\ PackagesData $packagesData
73
+ * @param PackagesData $packagesData
70
74
*/
71
75
public function __construct (
72
76
ComposerInformation $ composerInformation ,
73
- \ Magento \ Framework \ Module \ FullModuleList $ fullModuleList ,
74
- \ Magento \ Framework \ Module \ ModuleList $ moduleList ,
75
- \ Magento \ Setup \ Model \ ObjectManagerProvider $ objectManagerProvider ,
77
+ FullModuleList $ fullModuleList ,
78
+ ModuleList $ moduleList ,
79
+ ObjectManagerProvider $ objectManagerProvider ,
76
80
TypeMapper $ typeMapper ,
77
- \ Magento \ Setup \ Model \ PackagesData $ packagesData
81
+ PackagesData $ packagesData
78
82
) {
79
83
$ this ->composerInformation = $ composerInformation ;
80
84
$ this ->fullModuleList = $ fullModuleList ;
@@ -92,46 +96,81 @@ public function __construct(
92
96
public function getList ()
93
97
{
94
98
$ this ->packageInfo = $ this ->objectManagerProvider ->get ()
95
- ->get (\ Magento \ Framework \ Module \ PackageInfoFactory::class)
99
+ ->get (PackageInfoFactory::class)
96
100
->create ();
97
101
98
102
$ items = array_replace_recursive (
103
+ $ this ->getModuleListFromComposer (),
104
+ $ this ->getFullModuleList ()
105
+ );
106
+
107
+ $ items = $ this ->addRequiredBy ($ this ->addGeneralInfo ($ items ));
108
+
109
+ return $ items ;
110
+ }
111
+
112
+ /**
113
+ * Get module list from composer
114
+ *
115
+ * @return array
116
+ */
117
+ private function getModuleListFromComposer ()
118
+ {
119
+ return array_filter (
99
120
$ this ->composerInformation ->getInstalledMagentoPackages (),
100
- $ this ->getInstalledModules ()
121
+ function ($ item ) {
122
+ return $ item ['type ' ] === ComposerInformation::MODULE_PACKAGE_TYPE ;
123
+ }
101
124
);
125
+ }
102
126
103
- $ items = array_filter ($ items , function ($ item ) {
104
- return $ item ['type ' ] === ComposerInformation::MODULE_PACKAGE_TYPE ;
105
- });
127
+ /**
128
+ * Get full module list
129
+ *
130
+ * @return array
131
+ */
132
+ private function getFullModuleList ()
133
+ {
134
+ return $ this ->getModulesInfo (
135
+ $ this ->fullModuleList ->getNames ()
136
+ );
137
+ }
106
138
107
- array_walk ($ items , function (&$ module , $ name ) {
108
- $ module ['moduleName ' ] = $ module ['moduleName ' ] ?: $ this ->packageInfo ->getModuleName ($ name );
109
- $ module ['enable ' ] = $ this ->moduleList ->has ($ module ['moduleName ' ]);
110
- $ module ['vendor ' ] = ucfirst (current (preg_split ('%[/_]% ' , $ name )));
111
- $ module ['type ' ] = $ this ->typeMapper ->map ($ name , $ module ['type ' ]);
112
- $ module ['requiredBy ' ] = $ this ->getModuleRequiredBy ($ name );
113
- });
139
+ /**
140
+ * Add all modules, extensions, metapackages a module required by
141
+ *
142
+ * @param array $items
143
+ * @return array
144
+ */
145
+ private function addRequiredBy (array $ items )
146
+ {
147
+ foreach ($ items as $ key => $ item ) {
148
+ $ items [$ key ]['requiredBy ' ] = $ item ['name ' ] != self ::UNKNOWN_PACKAGE_NAME ?
149
+ $ this ->addGeneralInfo (
150
+ $ this ->getModulesInfo (
151
+ $ this ->packageInfo ->getRequiredBy ($ item ['name ' ])
152
+ )
153
+ ) : [];
154
+ }
114
155
115
- return array_values ( $ items) ;
156
+ return $ items ;
116
157
}
117
158
118
159
/**
119
- * Get all modules, extensions, metapackages a module required by
120
- *
121
- * @param string $name Module name
160
+ * Get modules info
161
+ *
162
+ * @param array $moduleList
122
163
* @return array
123
164
*/
124
- private function getModuleRequiredBy ( $ name )
165
+ private function getModulesInfo ( array $ moduleList )
125
166
{
126
167
$ result = [];
127
- $ modules = $ this ->packageInfo ->getRequiredBy ($ name );
128
- foreach ($ modules as $ moduleName ) {
168
+ foreach ($ moduleList as $ moduleName ) {
129
169
$ packageName = $ this ->packageInfo ->getPackageName ($ moduleName );
130
- $ result [] = [
170
+ $ key = $ packageName ?: $ moduleName ;
171
+ $ result [$ key ] = [
131
172
'name ' => $ packageName ?: self ::UNKNOWN_PACKAGE_NAME ,
132
173
'moduleName ' => $ moduleName ,
133
- 'type ' => $ this ->typeMapper ->map ($ packageName , ComposerInformation::MODULE_PACKAGE_TYPE ),
134
- 'enable ' => $ this ->moduleList ->has ($ moduleName ),
135
174
'version ' => $ this ->packageInfo ->getVersion ($ moduleName ) ?: self ::UNKNOWN_VERSION ,
136
175
];
137
176
}
@@ -140,23 +179,27 @@ private function getModuleRequiredBy($name)
140
179
}
141
180
142
181
/**
143
- * Get full list of installed modules
182
+ * Add general info to result array
144
183
*
184
+ * @param array $items
145
185
* @return array
146
186
*/
147
- private function getInstalledModules ( )
187
+ private function addGeneralInfo ( array $ items )
148
188
{
149
- $ modules = [];
150
- $ allModules = $ this ->fullModuleList ->getNames ();
151
- foreach ($ allModules as $ module ) {
152
- $ packageName = $ this ->packageInfo ->getPackageName ($ module );
153
- $ name = $ packageName ?: $ module ;
154
- $ modules [$ name ]['name ' ] = $ packageName ?: self ::UNKNOWN_PACKAGE_NAME ;
155
- $ modules [$ name ]['moduleName ' ] = $ module ;
156
- $ modules [$ name ]['type ' ] = ComposerInformation::MODULE_PACKAGE_TYPE ;
157
- $ modules [$ name ]['version ' ] = $ this ->packageInfo ->getVersion ($ module ) ?: self ::UNKNOWN_VERSION ;
189
+ foreach ($ items as &$ item ) {
190
+ $ item ['moduleName ' ] = $ item ['moduleName ' ] ?: $ this ->packageInfo ->getModuleName ($ item ['name ' ]);
191
+ $ item ['enable ' ] = $ this ->moduleList ->has ($ item ['moduleName ' ]);
192
+
193
+ $ vendorSource = $ item ['name ' ] == self ::UNKNOWN_PACKAGE_NAME ? $ item ['moduleName ' ] : $ item ['name ' ];
194
+ $ item ['vendor ' ] = ucfirst (current (preg_split ('%[/_]% ' , $ vendorSource )));
195
+
196
+ $ extraInfo = $ this ->packagesData ->getPackageExtraInfo ($ item ['name ' ], $ item ['version ' ]);
197
+ $ item ['product_name ' ] = isset ($ extraInfo ['x-magento-ext-title ' ]) ?
198
+ $ extraInfo ['x-magento-ext-title ' ] : $ item ['name ' ];
199
+ $ item ['type ' ] = isset ($ extraInfo ['x-magento-ext-type ' ]) ? $ extraInfo ['x-magento-ext-type ' ] :
200
+ $ this ->typeMapper ->map ($ item ['name ' ], ComposerInformation::MODULE_PACKAGE_TYPE );
158
201
}
159
202
160
- return $ modules ;
203
+ return array_values ( $ items ) ;
161
204
}
162
205
}
0 commit comments