Subversion Repositories oidplus

Rev

Rev 732 | Rev 759 | 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 (
752 daniel-mar 28
  'root' =>
597 daniel-mar 29
  array (
30
    'pretty_version' => '2.0',
31
    'version' => '2.0.0.0',
752 daniel-mar 32
    'aliases' =>
597 daniel-mar 33
    array (
34
    ),
35
    'reference' => NULL,
36
    'name' => 'danielmarschall/oidplus',
37
  ),
752 daniel-mar 38
  'versions' =>
597 daniel-mar 39
  array (
752 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',
752 daniel-mar 44
      'aliases' =>
597 daniel-mar 45
      array (
46
      ),
637 daniel-mar 47
      'reference' => '6cf38ee1fd04b6adf8e7dda161283aa35be818c3',
597 daniel-mar 48
    ),
752 daniel-mar 49
    'components/jqueryui' =>
597 daniel-mar 50
    array (
51
      'pretty_version' => '1.12.1',
52
      'version' => '1.12.1.0',
752 daniel-mar 53
      'aliases' =>
597 daniel-mar 54
      array (
55
      ),
56
      'reference' => '44ecf3794cc56b65954cc19737234a3119d036cc',
57
    ),
752 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',
752 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
    ),
752 daniel-mar 68
    'danielmarschall/oidplus' =>
597 daniel-mar 69
    array (
70
      'pretty_version' => '2.0',
71
      'version' => '2.0.0.0',
752 daniel-mar 72
      'aliases' =>
597 daniel-mar 73
      array (
74
      ),
75
      'reference' => NULL,
76
    ),
752 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',
752 daniel-mar 81
      'aliases' =>
603 daniel-mar 82
      array (
621 daniel-mar 83
 
603 daniel-mar 84
      ),
732 daniel-mar 85
      'reference' => '0f6f43b78e7ffef69e23710e9e006c33d3d732bc',
603 daniel-mar 86
    ),
752 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',
752 daniel-mar 91
      'aliases' =>
602 daniel-mar 92
      array (
621 daniel-mar 93
 
602 daniel-mar 94
      ),
728 daniel-mar 95
      'reference' => 'f99346b5382b1debcdb84c4541941151f700c1be',
602 daniel-mar 96
    ),
752 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',
752 daniel-mar 101
      'aliases' =>
597 daniel-mar 102
      array (
621 daniel-mar 103
 
597 daniel-mar 104
      ),
732 daniel-mar 105
      'reference' => '4cee6e674e6628b4deeb0327ab65109da4f28f4d',
597 daniel-mar 106
    ),
752 daniel-mar 107
    'dcodeio/bcrypt.js' =>
597 daniel-mar 108
    array (
109
      'pretty_version' => 'master',
110
      'version' => 'dev-master',
752 daniel-mar 111
      'aliases' =>
597 daniel-mar 112
      array (
113
      ),
114
      'reference' => 'master',
115
    ),
752 daniel-mar 116
    'emn178/js-sha3' =>
597 daniel-mar 117
    array (
118
      'pretty_version' => 'master',
119
      'version' => 'dev-master',
752 daniel-mar 120
      'aliases' =>
597 daniel-mar 121
      array (
122
      ),
123
      'reference' => 'master',
124
    ),
752 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',
752 daniel-mar 129
      'aliases' =>
597 daniel-mar 130
      array (
131
      ),
679 daniel-mar 132
      'reference' => '83b609028194aa042ea33b5af2d41a7427de80e6',
597 daniel-mar 133
    ),
752 daniel-mar 134
    'gedmarc/layout' =>
597 daniel-mar 135
    array (
136
      'pretty_version' => 'master',
137
      'version' => 'dev-master',
752 daniel-mar 138
      'aliases' =>
597 daniel-mar 139
      array (
140
      ),
141
      'reference' => 'master',
142
    ),
752 daniel-mar 143
    'matthiasmullie/minify' =>
597 daniel-mar 144
    array (
145
      'pretty_version' => '1.3.66',
146
      'version' => '1.3.66.0',
752 daniel-mar 147
      'aliases' =>
597 daniel-mar 148
      array (
149
      ),
150
      'reference' => '45fd3b0f1dfa2c965857c6d4a470bea52adc31a6',
151
    ),
752 daniel-mar 152
    'matthiasmullie/path-converter' =>
597 daniel-mar 153
    array (
154
      'pretty_version' => '1.1.3',
155
      'version' => '1.1.3.0',
752 daniel-mar 156
      'aliases' =>
597 daniel-mar 157
      array (
158
      ),
159
      'reference' => 'e7d13b2c7e2f2268e1424aaed02085518afa02d9',
160
    ),
752 daniel-mar 161
    'n-other/php-sha3' =>
597 daniel-mar 162
    array (
163
      'pretty_version' => 'dev-master',
164
      'version' => 'dev-master',
752 daniel-mar 165
      'aliases' =>
597 daniel-mar 166
      array (
167
 
168
      ),
169
      'reference' => '54ee3b90986e88286d333319e6340b90bde4f71a',
170
    ),
752 daniel-mar 171
    'spamspan/spamspan' =>
597 daniel-mar 172
    array (
173
      'pretty_version' => 'master',
174
      'version' => 'dev-master',
752 daniel-mar 175
      'aliases' =>
597 daniel-mar 176
      array (
177
      ),
178
      'reference' => 'master',
179
    ),
752 daniel-mar 180
    'symfony/polyfill-mbstring' =>
597 daniel-mar 181
    array (
182
      'pretty_version' => 'v1.19.0',
183
      'version' => '1.19.0.0',
752 daniel-mar 184
      'aliases' =>
597 daniel-mar 185
      array (
186
      ),
187
      'reference' => 'b5f7b932ee6fa802fc792eabd77c4c88084517ce',
188
    ),
752 daniel-mar 189
    'tinymce/tinymce' =>
597 daniel-mar 190
    array (
679 daniel-mar 191
      'pretty_version' => '5.10.2',
192
      'version' => '5.10.2.0',
752 daniel-mar 193
      'aliases' =>
597 daniel-mar 194
      array (
195
      ),
679 daniel-mar 196
      'reference' => 'ef9962f1d40abbb80a4fd4f023151fd28f891a6c',
597 daniel-mar 197
    ),
752 daniel-mar 198
    'twbs/bootstrap' =>
597 daniel-mar 199
    array (
679 daniel-mar 200
      'pretty_version' => 'v5.1.3',
201
      'version' => '5.1.3.0',
752 daniel-mar 202
      'aliases' =>
597 daniel-mar 203
      array (
204
      ),
679 daniel-mar 205
      'reference' => '1a6fdfae6be09b09eaced8f0e442ca6f7680a61e',
597 daniel-mar 206
    ),
752 daniel-mar 207
    'tweeb/tinymce-i18n' =>
597 daniel-mar 208
    array (
209
      'pretty_version' => '2.0.3',
210
      'version' => '2.0.3.0',
752 daniel-mar 211
      'aliases' =>
597 daniel-mar 212
      array (
213
      ),
214
      'reference' => '9be0b61d0d91bba1f9a5c34f4830752b5da987ef',
215
    ),
752 daniel-mar 216
    'twitter/bootstrap' =>
597 daniel-mar 217
    array (
752 daniel-mar 218
      'replaced' =>
597 daniel-mar 219
      array (
679 daniel-mar 220
 
597 daniel-mar 221
      ),
222
    ),
752 daniel-mar 223
    'vakata/jstree' =>
597 daniel-mar 224
    array (
637 daniel-mar 225
      'pretty_version' => '3.3.12',
226
      'version' => '3.3.12.0',
752 daniel-mar 227
      'aliases' =>
597 daniel-mar 228
      array (
229
      ),
637 daniel-mar 230
      'reference' => '7a03954015eaea2467956dc05e6be78f4d1a1ff0',
597 daniel-mar 231
    ),
232
  ),
233
);
234
private static $canGetVendors;
235
private static $installedByVendor = array();
236
 
237
 
238
 
239
 
240
 
241
 
242
 
243
public static function getInstalledPackages()
244
{
245
$packages = array();
246
foreach (self::getInstalled() as $installed) {
247
$packages[] = array_keys($installed['versions']);
248
}
249
 
250
if (1 === \count($packages)) {
251
return $packages[0];
252
}
253
 
254
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
255
}
256
 
257
 
258
 
259
 
260
 
261
 
262
 
263
 
264
 
265
public static function isInstalled($packageName)
266
{
267
foreach (self::getInstalled() as $installed) {
268
if (isset($installed['versions'][$packageName])) {
269
return true;
270
}
271
}
272
 
273
return false;
274
}
275
 
276
 
277
 
278
 
279
 
280
 
281
 
282
 
283
 
284
 
285
 
286
 
287
 
288
 
289
public static function satisfies(VersionParser $parser, $packageName, $constraint)
290
{
291
$constraint = $parser->parseConstraints($constraint);
292
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
293
 
294
return $provided->matches($constraint);
295
}
296
 
297
 
298
 
299
 
300
 
301
 
302
 
303
 
304
 
305
 
306
public static function getVersionRanges($packageName)
307
{
308
foreach (self::getInstalled() as $installed) {
309
if (!isset($installed['versions'][$packageName])) {
310
continue;
311
}
312
 
313
$ranges = array();
314
if (isset($installed['versions'][$packageName]['pretty_version'])) {
315
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
316
}
317
if (array_key_exists('aliases', $installed['versions'][$packageName])) {
318
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
319
}
320
if (array_key_exists('replaced', $installed['versions'][$packageName])) {
321
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
322
}
323
if (array_key_exists('provided', $installed['versions'][$packageName])) {
324
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
325
}
326
 
327
return implode(' || ', $ranges);
328
}
329
 
330
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
331
}
332
 
333
 
334
 
335
 
336
 
337
public static function getVersion($packageName)
338
{
339
foreach (self::getInstalled() as $installed) {
340
if (!isset($installed['versions'][$packageName])) {
341
continue;
342
}
343
 
344
if (!isset($installed['versions'][$packageName]['version'])) {
345
return null;
346
}
347
 
348
return $installed['versions'][$packageName]['version'];
349
}
350
 
351
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
352
}
353
 
354
 
355
 
356
 
357
 
358
public static function getPrettyVersion($packageName)
359
{
360
foreach (self::getInstalled() as $installed) {
361
if (!isset($installed['versions'][$packageName])) {
362
continue;
363
}
364
 
365
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
366
return null;
367
}
368
 
369
return $installed['versions'][$packageName]['pretty_version'];
370
}
371
 
372
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
373
}
374
 
375
 
376
 
377
 
378
 
379
public static function getReference($packageName)
380
{
381
foreach (self::getInstalled() as $installed) {
382
if (!isset($installed['versions'][$packageName])) {
383
continue;
384
}
385
 
386
if (!isset($installed['versions'][$packageName]['reference'])) {
387
return null;
388
}
389
 
390
return $installed['versions'][$packageName]['reference'];
391
}
392
 
393
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
394
}
395
 
396
 
397
 
398
 
399
 
400
public static function getRootPackage()
401
{
402
$installed = self::getInstalled();
403
 
404
return $installed[0]['root'];
405
}
406
 
407
 
408
 
409
 
410
 
411
 
412
 
413
 
414
public static function getRawData()
415
{
416
@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);
417
 
418
return self::$installed;
419
}
420
 
421
 
422
 
423
 
424
 
425
 
426
 
427
public static function getAllRawData()
428
{
429
return self::getInstalled();
430
}
431
 
432
 
433
 
434
 
435
 
436
 
437
 
438
 
439
 
440
 
441
 
442
 
443
 
444
 
445
 
446
 
447
 
448
 
449
 
450
public static function reload($data)
451
{
452
self::$installed = $data;
453
self::$installedByVendor = array();
454
}
455
 
456
 
457
 
458
 
459
 
460
private static function getInstalled()
461
{
462
if (null === self::$canGetVendors) {
463
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
464
}
465
 
466
$installed = array();
467
 
468
if (self::$canGetVendors) {
469
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
470
if (isset(self::$installedByVendor[$vendorDir])) {
471
$installed[] = self::$installedByVendor[$vendorDir];
472
} elseif (is_file($vendorDir.'/composer/installed.php')) {
473
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
474
}
475
}
476
}
477
 
478
$installed[] = self::$installed;
479
 
480
return $installed;
481
}
482
}