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