PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 10.11.1
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v10.11.1
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.11.1, at vendor/composer/InstalledVersions.php

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