PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 10.2.2
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v10.2.2
11.1.1 11.1.0 11.0.5 11.0.4 11.0.3 11.0.2 11.0.1 11.0.0 10.11.1 10.11.0 10.10.2 10.10.1 10.10.0 10.9.1 trunk 10.0.0 10.0.1 10.1.0 10.1.1 10.1.2 10.1.3 10.1.4 10.2.0 10.2.1 10.2.2 All 62 releases
acymailing / vendor / composer / InstalledVersions.php

InstalledVersions.php in AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress 10.2.2, at vendor/composer/InstalledVersions.php

239 lines 7.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3
4 namespace Composer;
5
6 use Composer\Autoload\ClassLoader;
7 use Composer\Semver\VersionParser;
8
9 class InstalledVersions
10 {
11 private static $installed;
12
13 private static $installedIsLocalDir;
14
15 private static $canGetVendors;
16
17 private static $installedByVendor = array();
18
19 public static function getInstalledPackages()
20 {
21 $packages = array();
22 foreach (self::getInstalled() as $installed) {
23 $packages[] = array_keys($installed['versions']);
24 }
25
26 if (1 === \count($packages)) {
27 return $packages[0];
28 }
29
30 return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
31 }
32
33 public static function getInstalledPackagesByType($type)
34 {
35 $packagesByType = array();
36
37 foreach (self::getInstalled() as $installed) {
38 foreach ($installed['versions'] as $name => $package) {
39 if (isset($package['type']) && $package['type'] === $type) {
40 $packagesByType[] = $name;
41 }
42 }
43 }
44
45 return $packagesByType;
46 }
47
48 public static function isInstalled($packageName, $includeDevRequirements = true)
49 {
50 foreach (self::getInstalled() as $installed) {
51 if (isset($installed['versions'][$packageName])) {
52 return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
53 }
54 }
55
56 return false;
57 }
58
59 public static function satisfies(VersionParser $parser, $packageName, $constraint)
60 {
61 $constraint = $parser->parseConstraints((string) $constraint);
62 $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
63
64 return $provided->matches($constraint);
65 }
66
67 public static function getVersionRanges($packageName)
68 {
69 foreach (self::getInstalled() as $installed) {
70 if (!isset($installed['versions'][$packageName])) {
71 continue;
72 }
73
74 $ranges = array();
75 if (isset($installed['versions'][$packageName]['pretty_version'])) {
76 $ranges[] = $installed['versions'][$packageName]['pretty_version'];
77 }
78 if (array_key_exists('aliases', $installed['versions'][$packageName])) {
79 $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
80 }
81 if (array_key_exists('replaced', $installed['versions'][$packageName])) {
82 $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
83 }
84 if (array_key_exists('provided', $installed['versions'][$packageName])) {
85 $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
86 }
87
88 return implode(' || ', $ranges);
89 }
90
91 throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
92 }
93
94 public static function getVersion($packageName)
95 {
96 foreach (self::getInstalled() as $installed) {
97 if (!isset($installed['versions'][$packageName])) {
98 continue;
99 }
100
101 if (!isset($installed['versions'][$packageName]['version'])) {
102 return null;
103 }
104
105 return $installed['versions'][$packageName]['version'];
106 }
107
108 throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
109 }
110
111 public static function getPrettyVersion($packageName)
112 {
113 foreach (self::getInstalled() as $installed) {
114 if (!isset($installed['versions'][$packageName])) {
115 continue;
116 }
117
118 if (!isset($installed['versions'][$packageName]['pretty_version'])) {
119 return null;
120 }
121
122 return $installed['versions'][$packageName]['pretty_version'];
123 }
124
125 throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
126 }
127
128 public static function getReference($packageName)
129 {
130 foreach (self::getInstalled() as $installed) {
131 if (!isset($installed['versions'][$packageName])) {
132 continue;
133 }
134
135 if (!isset($installed['versions'][$packageName]['reference'])) {
136 return null;
137 }
138
139 return $installed['versions'][$packageName]['reference'];
140 }
141
142 throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
143 }
144
145 public static function getInstallPath($packageName)
146 {
147 foreach (self::getInstalled() as $installed) {
148 if (!isset($installed['versions'][$packageName])) {
149 continue;
150 }
151
152 return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
153 }
154
155 throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
156 }
157
158 public static function getRootPackage()
159 {
160 $installed = self::getInstalled();
161
162 return $installed[0]['root'];
163 }
164
165 public static function getRawData()
166 {
167 @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);
168
169 if (null === self::$installed) {
170 if (substr(__DIR__, -8, 1) !== 'C') {
171 self::$installed = include __DIR__ . '/installed.php';
172 } else {
173 self::$installed = array();
174 }
175 }
176
177 return self::$installed;
178 }
179
180 public static function getAllRawData()
181 {
182 return self::getInstalled();
183 }
184
185 public static function reload($data)
186 {
187 self::$installed = $data;
188 self::$installedByVendor = array();
189
190 self::$installedIsLocalDir = false;
191 }
192
193 private static function getInstalled()
194 {
195 if (null === self::$canGetVendors) {
196 self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
197 }
198
199 $installed = array();
200 $copiedLocalDir = false;
201
202 if (self::$canGetVendors) {
203 $selfDir = strtr(__DIR__, '\\', '/');
204 foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
205 $vendorDir = strtr($vendorDir, '\\', '/');
206 if (isset(self::$installedByVendor[$vendorDir])) {
207 $installed[] = self::$installedByVendor[$vendorDir];
208 } elseif (is_file($vendorDir.'/composer/installed.php')) {
209 $required = require $vendorDir.'/composer/installed.php';
210 self::$installedByVendor[$vendorDir] = $required;
211 $installed[] = $required;
212 if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
213 self::$installed = $required;
214 self::$installedIsLocalDir = true;
215 }
216 }
217 if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
218 $copiedLocalDir = true;
219 }
220 }
221 }
222
223 if (null === self::$installed) {
224 if (substr(__DIR__, -8, 1) !== 'C') {
225 $required = require __DIR__ . '/installed.php';
226 self::$installed = $required;
227 } else {
228 self::$installed = array();
229 }
230 }
231
232 if (self::$installed !== array() && !$copiedLocalDir) {
233 $installed[] = self::$installed;
234 }
235
236 return $installed;
237 }
238 }
239