Passed
Push — master ( 38000a...9b3cc3 )
by Richard
05:56 queued 11s
created

InstalledVersions::getRawData()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
3
4
5
6
7
8
9
10
11
12
13
namespace Composer;
14
15
use Composer\Autoload\ClassLoader;
16
use Composer\Semver\VersionParser;
17
18
19
20
21
22
23
class InstalledVersions
24
{
25
private static $installed = array (
26
  'root' => 
27
  array (
28
    'pretty_version' => 'dev-master',
29
    'version' => 'dev-master',
30
    'aliases' => 
31
    array (
32
    ),
33
    'reference' => '38000a7eb05dad9711fd6006d8b4e00755206a8c',
34
    'name' => 'xoopscore25/libraries',
35
  ),
36
  'versions' => 
37
  array (
38
    'firebase/php-jwt' => 
39
    array (
40
      'pretty_version' => 'v5.2.1',
41
      'version' => '5.2.1.0',
42
      'aliases' => 
43
      array (
44
      ),
45
      'reference' => 'f42c9110abe98dd6cfe9053c49bc86acc70b2d23',
46
    ),
47
    'geekwright/regdom' => 
48
    array (
49
      'pretty_version' => 'v1.0.6',
50
      'version' => '1.0.6.0',
51
      'aliases' => 
52
      array (
53
      ),
54
      'reference' => '4aaa27c5edc4ca590d19d9cf33354f519d4733bd',
55
    ),
56
    'ircmaxell/password-compat' => 
57
    array (
58
      'pretty_version' => 'v1.0.4',
59
      'version' => '1.0.4.0',
60
      'aliases' => 
61
      array (
62
      ),
63
      'reference' => '5c5cde8822a69545767f7c7f3058cb15ff84614c',
64
    ),
65
    'kint-php/kint' => 
66
    array (
67
      'pretty_version' => '3.3',
68
      'version' => '3.3.0.0',
69
      'aliases' => 
70
      array (
71
      ),
72
      'reference' => '335ac1bcaf04d87df70d8aa51e8887ba2c6d203b',
73
    ),
74
    'paragonie/random_compat' => 
75
    array (
76
      'pretty_version' => 'v2.0.19',
77
      'version' => '2.0.19.0',
78
      'aliases' => 
79
      array (
80
      ),
81
      'reference' => '446fc9faa5c2a9ddf65eb7121c0af7e857295241',
82
    ),
83
    'smottt/wideimage' => 
84
    array (
85
      'pretty_version' => '1.1.4',
86
      'version' => '1.1.4.0',
87
      'aliases' => 
88
      array (
89
      ),
90
      'reference' => '755d1b2b474ce9c32092aa6ac0357ebf857545f5',
91
    ),
92
    'symfony/polyfill-ctype' => 
93
    array (
94
      'pretty_version' => 'v1.19.0',
95
      'version' => '1.19.0.0',
96
      'aliases' => 
97
      array (
98
      ),
99
      'reference' => 'aed596913b70fae57be53d86faa2e9ef85a2297b',
100
    ),
101
    'symfony/polyfill-iconv' => 
102
    array (
103
      'pretty_version' => 'v1.19.0',
104
      'version' => '1.19.0.0',
105
      'aliases' => 
106
      array (
107
      ),
108
      'reference' => '085241787d52fa6f7a774fd034135fef0cfd5496',
109
    ),
110
    'symfony/polyfill-mbstring' => 
111
    array (
112
      'pretty_version' => 'v1.19.0',
113
      'version' => '1.19.0.0',
114
      'aliases' => 
115
      array (
116
      ),
117
      'reference' => 'b5f7b932ee6fa802fc792eabd77c4c88084517ce',
118
    ),
119
    'symfony/yaml' => 
120
    array (
121
      'pretty_version' => 'v2.8.52',
122
      'version' => '2.8.52.0',
123
      'aliases' => 
124
      array (
125
      ),
126
      'reference' => '02c1859112aa779d9ab394ae4f3381911d84052b',
127
    ),
128
    'webmozart/assert' => 
129
    array (
130
      'pretty_version' => '1.9.1',
131
      'version' => '1.9.1.0',
132
      'aliases' => 
133
      array (
134
      ),
135
      'reference' => 'bafc69caeb4d49c39fd0779086c03a3738cbb389',
136
    ),
137
    'xoops/base-requires25' => 
138
    array (
139
      'pretty_version' => 'v1.0.1',
140
      'version' => '1.0.1.0',
141
      'aliases' => 
142
      array (
143
      ),
144
      'reference' => 'e25bf69c7d2ad6f04d44b6cad3aaf5a8b35cc5fc',
145
    ),
146
    'xoops/xmf' => 
147
    array (
148
      'pretty_version' => 'v1.2.23',
149
      'version' => '1.2.23.0',
150
      'aliases' => 
151
      array (
152
      ),
153
      'reference' => 'd84ac791d39753a51eae5eaebcf990342ea9f1e2',
154
    ),
155
    'xoopscore25/libraries' => 
156
    array (
157
      'pretty_version' => 'dev-master',
158
      'version' => 'dev-master',
159
      'aliases' => 
160
      array (
161
      ),
162
      'reference' => '38000a7eb05dad9711fd6006d8b4e00755206a8c',
163
    ),
164
  ),
165
);
166
private static $canGetVendors;
167
private static $installedByVendor = array();
168
169
170
171
172
173
174
175
public static function getInstalledPackages()
176
{
177
$packages = array();
178
foreach (self::getInstalled() as $installed) {
179
$packages[] = array_keys($installed['versions']);
180
}
181
182
183
if (1 === \count($packages)) {
184
return $packages[0];
185
}
186
187
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
188
}
189
190
191
192
193
194
195
196
197
198
public static function isInstalled($packageName)
199
{
200
foreach (self::getInstalled() as $installed) {
201
if (isset($installed['versions'][$packageName])) {
202
return true;
203
}
204
}
205
206
return false;
207
}
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
public static function satisfies(VersionParser $parser, $packageName, $constraint)
223
{
224
$constraint = $parser->parseConstraints($constraint);
225
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
226
227
return $provided->matches($constraint);
228
}
229
230
231
232
233
234
235
236
237
238
239
public static function getVersionRanges($packageName)
240
{
241
foreach (self::getInstalled() as $installed) {
242
if (!isset($installed['versions'][$packageName])) {
243
continue;
244
}
245
246
$ranges = array();
247
if (isset($installed['versions'][$packageName]['pretty_version'])) {
248
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
249
}
250
if (array_key_exists('aliases', $installed['versions'][$packageName])) {
251
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
252
}
253
if (array_key_exists('replaced', $installed['versions'][$packageName])) {
254
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
255
}
256
if (array_key_exists('provided', $installed['versions'][$packageName])) {
257
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
258
}
259
260
return implode(' || ', $ranges);
261
}
262
263
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
264
}
265
266
267
268
269
270
public static function getVersion($packageName)
271
{
272
foreach (self::getInstalled() as $installed) {
273
if (!isset($installed['versions'][$packageName])) {
274
continue;
275
}
276
277
if (!isset($installed['versions'][$packageName]['version'])) {
278
return null;
279
}
280
281
return $installed['versions'][$packageName]['version'];
282
}
283
284
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
285
}
286
287
288
289
290
291
public static function getPrettyVersion($packageName)
292
{
293
foreach (self::getInstalled() as $installed) {
294
if (!isset($installed['versions'][$packageName])) {
295
continue;
296
}
297
298
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
299
return null;
300
}
301
302
return $installed['versions'][$packageName]['pretty_version'];
303
}
304
305
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
306
}
307
308
309
310
311
312
public static function getReference($packageName)
313
{
314
foreach (self::getInstalled() as $installed) {
315
if (!isset($installed['versions'][$packageName])) {
316
continue;
317
}
318
319
if (!isset($installed['versions'][$packageName]['reference'])) {
320
return null;
321
}
322
323
return $installed['versions'][$packageName]['reference'];
324
}
325
326
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
327
}
328
329
330
331
332
333
public static function getRootPackage()
334
{
335
$installed = self::getInstalled();
336
337
return $installed[0]['root'];
338
}
339
340
341
342
343
344
345
346
public static function getRawData()
347
{
348
return self::$installed;
349
}
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
public static function reload($data)
370
{
371
self::$installed = $data;
372
self::$installedByVendor = array();
373
}
374
375
376
377
378
private static function getInstalled()
379
{
380
if (null === self::$canGetVendors) {
381
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
382
}
383
384
$installed = array();
385
386
if (self::$canGetVendors) {
387
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
388
if (isset(self::$installedByVendor[$vendorDir])) {
389
$installed[] = self::$installedByVendor[$vendorDir];
390
} elseif (is_file($vendorDir.'/composer/installed.php')) {
391
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
392
}
393
}
394
}
395
396
$installed[] = self::$installed;
397
398
return $installed;
399
}
400
}
401