Subversion Repositories oidplus

Rev

Rev 927 | Rev 930 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
597 daniel-mar 1
<?php
2
 
3
 
874 daniel-mar 4
 
5
 
6
 
7
 
8
 
9
 
10
 
11
 
12
 
597 daniel-mar 13
namespace Composer;
14
 
15
use Composer\Autoload\ClassLoader;
16
use Composer\Semver\VersionParser;
17
 
874 daniel-mar 18
 
19
 
20
 
21
 
22
 
23
 
24
 
597 daniel-mar 25
class InstalledVersions
26
{
874 daniel-mar 27
private static $installed = array (
28
  'root' =>
29
  array (
30
    'pretty_version' => '2.0',
31
    'version' => '2.0.0.0',
32
    'aliases' =>
33
    array (
34
    ),
35
    'reference' => NULL,
36
    'name' => 'danielmarschall/oidplus',
37
  ),
38
  'versions' =>
39
  array (
40
    'components/jquery' =>
41
    array (
42
      'pretty_version' => '3.6.0',
43
      'version' => '3.6.0.0',
44
      'aliases' =>
45
      array (
46
      ),
47
      'reference' => '6cf38ee1fd04b6adf8e7dda161283aa35be818c3',
48
    ),
49
    'components/jqueryui' =>
50
    array (
51
      'pretty_version' => '1.12.1',
52
      'version' => '1.12.1.0',
53
      'aliases' =>
54
      array (
55
      ),
56
      'reference' => '44ecf3794cc56b65954cc19737234a3119d036cc',
57
    ),
58
    'danielmarschall/fileformats' =>
59
    array (
60
      'pretty_version' => 'dev-master',
61
      'version' => 'dev-master',
62
      'aliases' =>
63
      array (
64
 
65
      ),
66
      'reference' => '880e97b497710dc14ee8f38b4e48250ce49202ee',
67
    ),
68
    'danielmarschall/oidplus' =>
69
    array (
70
      'pretty_version' => '2.0',
71
      'version' => '2.0.0.0',
72
      'aliases' =>
73
      array (
74
      ),
75
      'reference' => NULL,
76
    ),
77
    'danielmarschall/php_utils' =>
78
    array (
79
      'pretty_version' => 'dev-master',
80
      'version' => 'dev-master',
81
      'aliases' =>
82
      array (
83
 
84
      ),
927 daniel-mar 85
      'reference' => 'a13f0e04b3a8a1f4d45f111286190ac8ce723500',
874 daniel-mar 86
    ),
87
    'danielmarschall/uuid_mac_utils' =>
88
    array (
89
      'pretty_version' => 'dev-master',
90
      'version' => 'dev-master',
91
      'aliases' =>
92
      array (
93
 
94
      ),
95
      'reference' => '31174ea5dc3398645f70bc40f5162aa5b73f5b52',
96
    ),
97
    'danielmarschall/vnag' =>
98
    array (
99
      'pretty_version' => 'dev-master',
100
      'version' => 'dev-master',
101
      'aliases' =>
102
      array (
103
 
104
      ),
929 daniel-mar 105
      'reference' => '7cf969d7dd3b128cc63713165fee87c81becd8d3',
874 daniel-mar 106
    ),
107
    'dcodeio/bcrypt.js' =>
108
    array (
109
      'pretty_version' => 'master',
110
      'version' => 'dev-master',
111
      'aliases' =>
112
      array (
113
      ),
114
      'reference' => 'master',
115
    ),
116
    'emn178/js-sha3' =>
117
    array (
118
      'pretty_version' => 'master',
119
      'version' => 'dev-master',
120
      'aliases' =>
121
      array (
122
      ),
123
      'reference' => 'master',
124
    ),
125
    'firebase/php-jwt' =>
126
    array (
127
      'pretty_version' => 'v5.5.1',
128
      'version' => '5.5.1.0',
129
      'aliases' =>
130
      array (
131
      ),
132
      'reference' => '83b609028194aa042ea33b5af2d41a7427de80e6',
133
    ),
134
    'gedmarc/layout' =>
135
    array (
136
      'pretty_version' => 'master',
137
      'version' => 'dev-master',
138
      'aliases' =>
139
      array (
140
      ),
141
      'reference' => 'master',
142
    ),
143
    'matthiasmullie/minify' =>
144
    array (
925 daniel-mar 145
      'pretty_version' => '1.3.69',
146
      'version' => '1.3.69.0',
874 daniel-mar 147
      'aliases' =>
148
      array (
149
      ),
925 daniel-mar 150
      'reference' => 'a61c949cccd086808063611ef9698eabe42ef22f',
874 daniel-mar 151
    ),
152
    'matthiasmullie/path-converter' =>
153
    array (
154
      'pretty_version' => '1.1.3',
155
      'version' => '1.1.3.0',
156
      'aliases' =>
157
      array (
158
      ),
159
      'reference' => 'e7d13b2c7e2f2268e1424aaed02085518afa02d9',
160
    ),
161
    'n-other/php-sha3' =>
162
    array (
163
      'pretty_version' => 'dev-master',
164
      'version' => 'dev-master',
165
      'aliases' =>
166
      array (
167
 
168
      ),
169
      'reference' => '54ee3b90986e88286d333319e6340b90bde4f71a',
170
    ),
171
    'paragonie/constant_time_encoding' =>
172
    array (
173
      'pretty_version' => 'v2.6.3',
174
      'version' => '2.6.3.0',
175
      'aliases' =>
176
      array (
177
      ),
178
      'reference' => '58c3f47f650c94ec05a151692652a868995d2938',
179
    ),
180
    'paragonie/random_compat' =>
181
    array (
182
      'pretty_version' => 'v9.99.100',
183
      'version' => '9.99.100.0',
184
      'aliases' =>
185
      array (
186
      ),
187
      'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
188
    ),
189
    'phpseclib/phpseclib' =>
190
    array (
191
      'pretty_version' => '3.0.14',
192
      'version' => '3.0.14.0',
193
      'aliases' =>
194
      array (
195
      ),
196
      'reference' => '2f0b7af658cbea265cbb4a791d6c29a6613f98ef',
197
    ),
198
    'script47/bs5-utils' =>
199
    array (
200
      'pretty_version' => 'master',
201
      'version' => 'dev-master',
202
      'aliases' =>
203
      array (
204
      ),
205
      'reference' => 'master',
206
    ),
207
    'spamspan/spamspan' =>
208
    array (
209
      'pretty_version' => 'master',
210
      'version' => 'dev-master',
211
      'aliases' =>
212
      array (
213
      ),
214
      'reference' => 'master',
215
    ),
216
    'symfony/polyfill-mbstring' =>
217
    array (
218
      'pretty_version' => 'v1.19.0',
219
      'version' => '1.19.0.0',
220
      'aliases' =>
221
      array (
222
      ),
223
      'reference' => 'b5f7b932ee6fa802fc792eabd77c4c88084517ce',
224
    ),
225
    'tinymce/tinymce' =>
226
    array (
227
      'pretty_version' => '5.x-dev',
228
      'version' => '5.9999999.9999999.9999999-dev',
229
      'aliases' =>
230
      array (
231
      ),
232
      'reference' => 'c91227ab933d664c3ce2ea4ec68257f2282437ed',
233
    ),
234
    'twbs/bootstrap' =>
235
    array (
922 daniel-mar 236
      'pretty_version' => '5.2.0',
237
      'version' => '5.2.0.0',
874 daniel-mar 238
      'aliases' =>
239
      array (
240
      ),
922 daniel-mar 241
      'reference' => 'edf9c40956d19e6ab3f9151bfe0dfac6be06fa21',
874 daniel-mar 242
    ),
243
    'tweeb/tinymce-i18n' =>
244
    array (
245
      'pretty_version' => '2.0.4',
246
      'version' => '2.0.4.0',
247
      'aliases' =>
248
      array (
249
      ),
250
      'reference' => '058da08d6e61dc4e0279de6509bb6969a62f68e5',
251
    ),
252
    'twitter/bootstrap' =>
253
    array (
254
      'replaced' =>
255
      array (
922 daniel-mar 256
 
874 daniel-mar 257
      ),
258
    ),
259
    'vakata/jstree' =>
260
    array (
261
      'pretty_version' => '3.3.12',
262
      'version' => '3.3.12.0',
263
      'aliases' =>
264
      array (
265
      ),
266
      'reference' => '7a03954015eaea2467956dc05e6be78f4d1a1ff0',
267
    ),
268
  ),
269
);
270
private static $canGetVendors;
271
private static $installedByVendor = array();
597 daniel-mar 272
 
273
 
274
 
275
 
276
 
277
 
278
 
874 daniel-mar 279
public static function getInstalledPackages()
280
{
281
$packages = array();
282
foreach (self::getInstalled() as $installed) {
283
$packages[] = array_keys($installed['versions']);
284
}
597 daniel-mar 285
 
874 daniel-mar 286
if (1 === \count($packages)) {
287
return $packages[0];
288
}
597 daniel-mar 289
 
874 daniel-mar 290
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
291
}
597 daniel-mar 292
 
293
 
294
 
295
 
296
 
297
 
298
 
299
 
300
 
874 daniel-mar 301
public static function isInstalled($packageName)
302
{
303
foreach (self::getInstalled() as $installed) {
304
if (isset($installed['versions'][$packageName])) {
305
return true;
306
}
307
}
597 daniel-mar 308
 
874 daniel-mar 309
return false;
310
}
597 daniel-mar 311
 
312
 
313
 
314
 
315
 
316
 
317
 
318
 
319
 
320
 
321
 
322
 
323
 
324
 
874 daniel-mar 325
public static function satisfies(VersionParser $parser, $packageName, $constraint)
326
{
327
$constraint = $parser->parseConstraints($constraint);
328
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
597 daniel-mar 329
 
874 daniel-mar 330
return $provided->matches($constraint);
331
}
597 daniel-mar 332
 
333
 
334
 
335
 
336
 
337
 
338
 
339
 
340
 
874 daniel-mar 341
 
342
public static function getVersionRanges($packageName)
343
{
344
foreach (self::getInstalled() as $installed) {
345
if (!isset($installed['versions'][$packageName])) {
346
continue;
597 daniel-mar 347
}
874 daniel-mar 348
 
349
$ranges = array();
350
if (isset($installed['versions'][$packageName]['pretty_version'])) {
351
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
352
}
353
if (array_key_exists('aliases', $installed['versions'][$packageName])) {
354
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
355
}
356
if (array_key_exists('replaced', $installed['versions'][$packageName])) {
357
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
358
}
359
if (array_key_exists('provided', $installed['versions'][$packageName])) {
360
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
361
}
362
 
363
return implode(' || ', $ranges);
364
}
365
 
366
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
367
}
368
 
369
 
370
 
371
 
372
 
373
public static function getVersion($packageName)
374
{
375
foreach (self::getInstalled() as $installed) {
376
if (!isset($installed['versions'][$packageName])) {
377
continue;
378
}
379
 
380
if (!isset($installed['versions'][$packageName]['version'])) {
381
return null;
382
}
383
 
384
return $installed['versions'][$packageName]['version'];
385
}
386
 
387
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
388
}
389
 
390
 
391
 
392
 
393
 
394
public static function getPrettyVersion($packageName)
395
{
396
foreach (self::getInstalled() as $installed) {
397
if (!isset($installed['versions'][$packageName])) {
398
continue;
399
}
400
 
401
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
402
return null;
403
}
404
 
405
return $installed['versions'][$packageName]['pretty_version'];
406
}
407
 
408
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
409
}
410
 
411
 
412
 
413
 
414
 
415
public static function getReference($packageName)
416
{
417
foreach (self::getInstalled() as $installed) {
418
if (!isset($installed['versions'][$packageName])) {
419
continue;
420
}
421
 
422
if (!isset($installed['versions'][$packageName]['reference'])) {
423
return null;
424
}
425
 
426
return $installed['versions'][$packageName]['reference'];
427
}
428
 
429
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
430
}
431
 
432
 
433
 
434
 
435
 
436
public static function getRootPackage()
437
{
438
$installed = self::getInstalled();
439
 
440
return $installed[0]['root'];
441
}
442
 
443
 
444
 
445
 
446
 
447
 
448
 
449
 
450
public static function getRawData()
451
{
452
@trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
453
 
454
return self::$installed;
455
}
456
 
457
 
458
 
459
 
460
 
461
 
462
 
463
public static function getAllRawData()
464
{
465
return self::getInstalled();
466
}
467
 
468
 
469
 
470
 
471
 
472
 
473
 
474
 
475
 
476
 
477
 
478
 
479
 
480
 
481
 
482
 
483
 
484
 
485
 
486
public static function reload($data)
487
{
488
self::$installed = $data;
489
self::$installedByVendor = array();
490
}
491
 
492
 
493
 
494
 
495
 
496
private static function getInstalled()
497
{
498
if (null === self::$canGetVendors) {
499
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
500
}
501
 
502
$installed = array();
503
 
504
if (self::$canGetVendors) {
505
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
506
if (isset(self::$installedByVendor[$vendorDir])) {
507
$installed[] = self::$installedByVendor[$vendorDir];
508
} elseif (is_file($vendorDir.'/composer/installed.php')) {
509
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
510
}
511
}
512
}
513
 
514
$installed[] = self::$installed;
515
 
516
return $installed;
517
}
518
}