Browse code

Created repository.

DoubleBastionAdmin authored on 01/03/2022 23:31:10
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,293 @@
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' => '1.0.0+no-version-set',
29
+    'version' => '1.0.0.0',
30
+    'aliases' => 
31
+    array (
32
+    ),
33
+    'reference' => NULL,
34
+    'name' => '__root__',
35
+  ),
36
+  'versions' => 
37
+  array (
38
+    '__root__' => 
39
+    array (
40
+      'pretty_version' => '1.0.0+no-version-set',
41
+      'version' => '1.0.0.0',
42
+      'aliases' => 
43
+      array (
44
+      ),
45
+      'reference' => NULL,
46
+    ),
47
+    'phaxio/phaxio' => 
48
+    array (
49
+      'pretty_version' => '2.0.2',
50
+      'version' => '2.0.2.0',
51
+      'aliases' => 
52
+      array (
53
+      ),
54
+      'reference' => '6ad1f76b4f1ff1f68176dab9509ae66fdaa85487',
55
+    ),
56
+  ),
57
+);
58
+private static $canGetVendors;
59
+private static $installedByVendor = array();
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+public static function getInstalledPackages()
68
+{
69
+$packages = array();
70
+foreach (self::getInstalled() as $installed) {
71
+$packages[] = array_keys($installed['versions']);
72
+}
73
+
74
+
75
+if (1 === \count($packages)) {
76
+return $packages[0];
77
+}
78
+
79
+return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
80
+}
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+public static function isInstalled($packageName)
91
+{
92
+foreach (self::getInstalled() as $installed) {
93
+if (isset($installed['versions'][$packageName])) {
94
+return true;
95
+}
96
+}
97
+
98
+return false;
99
+}
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+public static function satisfies(VersionParser $parser, $packageName, $constraint)
115
+{
116
+$constraint = $parser->parseConstraints($constraint);
117
+$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
118
+
119
+return $provided->matches($constraint);
120
+}
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+public static function getVersionRanges($packageName)
132
+{
133
+foreach (self::getInstalled() as $installed) {
134
+if (!isset($installed['versions'][$packageName])) {
135
+continue;
136
+}
137
+
138
+$ranges = array();
139
+if (isset($installed['versions'][$packageName]['pretty_version'])) {
140
+$ranges[] = $installed['versions'][$packageName]['pretty_version'];
141
+}
142
+if (array_key_exists('aliases', $installed['versions'][$packageName])) {
143
+$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
144
+}
145
+if (array_key_exists('replaced', $installed['versions'][$packageName])) {
146
+$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
147
+}
148
+if (array_key_exists('provided', $installed['versions'][$packageName])) {
149
+$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
150
+}
151
+
152
+return implode(' || ', $ranges);
153
+}
154
+
155
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
156
+}
157
+
158
+
159
+
160
+
161
+
162
+public static function getVersion($packageName)
163
+{
164
+foreach (self::getInstalled() as $installed) {
165
+if (!isset($installed['versions'][$packageName])) {
166
+continue;
167
+}
168
+
169
+if (!isset($installed['versions'][$packageName]['version'])) {
170
+return null;
171
+}
172
+
173
+return $installed['versions'][$packageName]['version'];
174
+}
175
+
176
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
177
+}
178
+
179
+
180
+
181
+
182
+
183
+public static function getPrettyVersion($packageName)
184
+{
185
+foreach (self::getInstalled() as $installed) {
186
+if (!isset($installed['versions'][$packageName])) {
187
+continue;
188
+}
189
+
190
+if (!isset($installed['versions'][$packageName]['pretty_version'])) {
191
+return null;
192
+}
193
+
194
+return $installed['versions'][$packageName]['pretty_version'];
195
+}
196
+
197
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
198
+}
199
+
200
+
201
+
202
+
203
+
204
+public static function getReference($packageName)
205
+{
206
+foreach (self::getInstalled() as $installed) {
207
+if (!isset($installed['versions'][$packageName])) {
208
+continue;
209
+}
210
+
211
+if (!isset($installed['versions'][$packageName]['reference'])) {
212
+return null;
213
+}
214
+
215
+return $installed['versions'][$packageName]['reference'];
216
+}
217
+
218
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
219
+}
220
+
221
+
222
+
223
+
224
+
225
+public static function getRootPackage()
226
+{
227
+$installed = self::getInstalled();
228
+
229
+return $installed[0]['root'];
230
+}
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+public static function getRawData()
239
+{
240
+return self::$installed;
241
+}
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+public static function reload($data)
262
+{
263
+self::$installed = $data;
264
+self::$installedByVendor = array();
265
+}
266
+
267
+
268
+
269
+
270
+private static function getInstalled()
271
+{
272
+if (null === self::$canGetVendors) {
273
+self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
274
+}
275
+
276
+$installed = array();
277
+
278
+if (self::$canGetVendors) {
279
+
280
+foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
281
+if (isset(self::$installedByVendor[$vendorDir])) {
282
+$installed[] = self::$installedByVendor[$vendorDir];
283
+} elseif (is_file($vendorDir.'/composer/installed.php')) {
284
+$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
285
+}
286
+}
287
+}
288
+
289
+$installed[] = self::$installed;
290
+
291
+return $installed;
292
+}
293
+}