Subversion Repositories oidplus

Rev

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