Subversion Repositories oidplus

Rev

Rev 637 | Rev 663 | 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 (
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 (
637 daniel-mar 42
      'pretty_version' => '3.6.0',
43
      'version' => '3.6.0.0',
597 daniel-mar 44
      'aliases' =>
45
      array (
46
      ),
637 daniel-mar 47
      'reference' => '6cf38ee1fd04b6adf8e7dda161283aa35be818c3',
597 daniel-mar 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 (
621 daniel-mar 60
      'pretty_version' => 'dev-master',
597 daniel-mar 61
      'version' => 'dev-master',
62
      'aliases' =>
63
      array (
621 daniel-mar 64
 
597 daniel-mar 65
      ),
637 daniel-mar 66
      'reference' => 'acfeaf40523a3a3cd0b6dbf18f3dc2349a3bec25',
597 daniel-mar 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
    ),
603 daniel-mar 77
    'danielmarschall/php_utils' =>
78
    array (
621 daniel-mar 79
      'pretty_version' => 'dev-master',
603 daniel-mar 80
      'version' => 'dev-master',
81
      'aliases' =>
82
      array (
621 daniel-mar 83
 
603 daniel-mar 84
      ),
661 daniel-mar 85
      'reference' => 'f5e662c1d9af308613277de02adbf109ca1fa368',
603 daniel-mar 86
    ),
602 daniel-mar 87
    'danielmarschall/uuid_mac_utils' =>
88
    array (
621 daniel-mar 89
      'pretty_version' => 'dev-master',
602 daniel-mar 90
      'version' => 'dev-master',
91
      'aliases' =>
92
      array (
621 daniel-mar 93
 
602 daniel-mar 94
      ),
621 daniel-mar 95
      'reference' => '7b292091da6fd9ab93b06be767754ee668ff457c',
602 daniel-mar 96
    ),
597 daniel-mar 97
    'danielmarschall/vnag' =>
98
    array (
621 daniel-mar 99
      'pretty_version' => 'dev-master',
597 daniel-mar 100
      'version' => 'dev-master',
101
      'aliases' =>
102
      array (
621 daniel-mar 103
 
597 daniel-mar 104
      ),
637 daniel-mar 105
      'reference' => '4f729d8b09e4750c1b9ae762519d50ad8d25609a',
597 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 (
637 daniel-mar 127
      'pretty_version' => 'v5.4.0',
128
      'version' => '5.4.0.0',
597 daniel-mar 129
      'aliases' =>
130
      array (
131
      ),
637 daniel-mar 132
      'reference' => 'd2113d9b2e0e349796e72d2a63cf9319100382d2',
597 daniel-mar 133
    ),
134
    'gedmarc/layout' =>
135
    array (
136
      'pretty_version' => 'master',
137
      'version' => 'dev-master',
138
      'aliases' =>
139
      array (
140
      ),
141
      'reference' => 'master',
142
    ),
143
    'google/recaptcha' =>
144
    array (
621 daniel-mar 145
      'pretty_version' => 'dev-master',
146
      'version' => 'dev-master',
597 daniel-mar 147
      'aliases' =>
148
      array (
621 daniel-mar 149
 
597 daniel-mar 150
      ),
621 daniel-mar 151
      'reference' => 'f911286ad361c9fba1b422c07f040852c0c193a3',
597 daniel-mar 152
    ),
153
    'matthiasmullie/minify' =>
154
    array (
155
      'pretty_version' => '1.3.66',
156
      'version' => '1.3.66.0',
157
      'aliases' =>
158
      array (
159
      ),
160
      'reference' => '45fd3b0f1dfa2c965857c6d4a470bea52adc31a6',
161
    ),
162
    'matthiasmullie/path-converter' =>
163
    array (
164
      'pretty_version' => '1.1.3',
165
      'version' => '1.1.3.0',
166
      'aliases' =>
167
      array (
168
      ),
169
      'reference' => 'e7d13b2c7e2f2268e1424aaed02085518afa02d9',
170
    ),
171
    'mikemcl/bignumber.js' =>
172
    array (
173
      'pretty_version' => 'master',
174
      'version' => 'dev-master',
175
      'aliases' =>
176
      array (
177
      ),
178
      'reference' => 'master',
179
    ),
180
    'n-other/php-sha3' =>
181
    array (
182
      'pretty_version' => 'dev-master',
183
      'version' => 'dev-master',
184
      'aliases' =>
185
      array (
186
 
187
      ),
188
      'reference' => '54ee3b90986e88286d333319e6340b90bde4f71a',
189
    ),
190
    'spamspan/spamspan' =>
191
    array (
192
      'pretty_version' => 'master',
193
      'version' => 'dev-master',
194
      'aliases' =>
195
      array (
196
      ),
197
      'reference' => 'master',
198
    ),
199
    'symfony/polyfill-mbstring' =>
200
    array (
201
      'pretty_version' => 'v1.19.0',
202
      'version' => '1.19.0.0',
203
      'aliases' =>
204
      array (
205
      ),
206
      'reference' => 'b5f7b932ee6fa802fc792eabd77c4c88084517ce',
207
    ),
208
    'tinymce/tinymce' =>
209
    array (
637 daniel-mar 210
      'pretty_version' => '5.9.2',
211
      'version' => '5.9.2.0',
597 daniel-mar 212
      'aliases' =>
213
      array (
214
      ),
637 daniel-mar 215
      'reference' => '48c665ad12ba0e4d8068ba0784026c7488aa4746',
597 daniel-mar 216
    ),
217
    'twbs/bootstrap' =>
218
    array (
637 daniel-mar 219
      'pretty_version' => 'v5.1.1',
220
      'version' => '5.1.1.0',
597 daniel-mar 221
      'aliases' =>
222
      array (
223
      ),
637 daniel-mar 224
      'reference' => '0d81d3cbc14dfcdca8a868e3f25189a4f1ab273c',
597 daniel-mar 225
    ),
226
    'tweeb/tinymce-i18n' =>
227
    array (
228
      'pretty_version' => '2.0.3',
229
      'version' => '2.0.3.0',
230
      'aliases' =>
231
      array (
232
      ),
233
      'reference' => '9be0b61d0d91bba1f9a5c34f4830752b5da987ef',
234
    ),
235
    'twitter/bootstrap' =>
236
    array (
237
      'replaced' =>
238
      array (
637 daniel-mar 239
 
597 daniel-mar 240
      ),
241
    ),
242
    'vakata/jstree' =>
243
    array (
637 daniel-mar 244
      'pretty_version' => '3.3.12',
245
      'version' => '3.3.12.0',
597 daniel-mar 246
      'aliases' =>
247
      array (
248
      ),
637 daniel-mar 249
      'reference' => '7a03954015eaea2467956dc05e6be78f4d1a1ff0',
597 daniel-mar 250
    ),
251
  ),
252
);
253
private static $canGetVendors;
254
private static $installedByVendor = array();
255
 
256
 
257
 
258
 
259
 
260
 
261
 
262
public static function getInstalledPackages()
263
{
264
$packages = array();
265
foreach (self::getInstalled() as $installed) {
266
$packages[] = array_keys($installed['versions']);
267
}
268
 
269
if (1 === \count($packages)) {
270
return $packages[0];
271
}
272
 
273
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
274
}
275
 
276
 
277
 
278
 
279
 
280
 
281
 
282
 
283
 
284
public static function isInstalled($packageName)
285
{
286
foreach (self::getInstalled() as $installed) {
287
if (isset($installed['versions'][$packageName])) {
288
return true;
289
}
290
}
291
 
292
return false;
293
}
294
 
295
 
296
 
297
 
298
 
299
 
300
 
301
 
302
 
303
 
304
 
305
 
306
 
307
 
308
public static function satisfies(VersionParser $parser, $packageName, $constraint)
309
{
310
$constraint = $parser->parseConstraints($constraint);
311
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
312
 
313
return $provided->matches($constraint);
314
}
315
 
316
 
317
 
318
 
319
 
320
 
321
 
322
 
323
 
324
 
325
public static function getVersionRanges($packageName)
326
{
327
foreach (self::getInstalled() as $installed) {
328
if (!isset($installed['versions'][$packageName])) {
329
continue;
330
}
331
 
332
$ranges = array();
333
if (isset($installed['versions'][$packageName]['pretty_version'])) {
334
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
335
}
336
if (array_key_exists('aliases', $installed['versions'][$packageName])) {
337
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
338
}
339
if (array_key_exists('replaced', $installed['versions'][$packageName])) {
340
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
341
}
342
if (array_key_exists('provided', $installed['versions'][$packageName])) {
343
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
344
}
345
 
346
return implode(' || ', $ranges);
347
}
348
 
349
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
350
}
351
 
352
 
353
 
354
 
355
 
356
public static function getVersion($packageName)
357
{
358
foreach (self::getInstalled() as $installed) {
359
if (!isset($installed['versions'][$packageName])) {
360
continue;
361
}
362
 
363
if (!isset($installed['versions'][$packageName]['version'])) {
364
return null;
365
}
366
 
367
return $installed['versions'][$packageName]['version'];
368
}
369
 
370
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
371
}
372
 
373
 
374
 
375
 
376
 
377
public static function getPrettyVersion($packageName)
378
{
379
foreach (self::getInstalled() as $installed) {
380
if (!isset($installed['versions'][$packageName])) {
381
continue;
382
}
383
 
384
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
385
return null;
386
}
387
 
388
return $installed['versions'][$packageName]['pretty_version'];
389
}
390
 
391
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
392
}
393
 
394
 
395
 
396
 
397
 
398
public static function getReference($packageName)
399
{
400
foreach (self::getInstalled() as $installed) {
401
if (!isset($installed['versions'][$packageName])) {
402
continue;
403
}
404
 
405
if (!isset($installed['versions'][$packageName]['reference'])) {
406
return null;
407
}
408
 
409
return $installed['versions'][$packageName]['reference'];
410
}
411
 
412
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
413
}
414
 
415
 
416
 
417
 
418
 
419
public static function getRootPackage()
420
{
421
$installed = self::getInstalled();
422
 
423
return $installed[0]['root'];
424
}
425
 
426
 
427
 
428
 
429
 
430
 
431
 
432
 
433
public static function getRawData()
434
{
435
@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);
436
 
437
return self::$installed;
438
}
439
 
440
 
441
 
442
 
443
 
444
 
445
 
446
public static function getAllRawData()
447
{
448
return self::getInstalled();
449
}
450
 
451
 
452
 
453
 
454
 
455
 
456
 
457
 
458
 
459
 
460
 
461
 
462
 
463
 
464
 
465
 
466
 
467
 
468
 
469
public static function reload($data)
470
{
471
self::$installed = $data;
472
self::$installedByVendor = array();
473
}
474
 
475
 
476
 
477
 
478
 
479
private static function getInstalled()
480
{
481
if (null === self::$canGetVendors) {
482
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
483
}
484
 
485
$installed = array();
486
 
487
if (self::$canGetVendors) {
488
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
489
if (isset(self::$installedByVendor[$vendorDir])) {
490
$installed[] = self::$installedByVendor[$vendorDir];
491
} elseif (is_file($vendorDir.'/composer/installed.php')) {
492
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
493
}
494
}
495
}
496
 
497
$installed[] = self::$installed;
498
 
499
return $installed;
500
}
501
}