PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.34.2
MailPoet – Newsletters, Email Marketing, and Automation v5.34.2
5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / vendor / composer / ClassLoader.php
mailpoet / vendor / composer Last commit date
ClassLoader.php 2 years ago InstalledVersions.php 5 months ago autoload_classmap.php 5 days ago autoload_files.php 8 months ago autoload_namespaces.php 4 years ago autoload_psr4.php 4 months ago autoload_real.php 5 days ago autoload_static.php 5 days ago index.php 3 years ago installed.json 2 months ago installed.php 4 days ago jetpack_autoload_classmap.php 5 days ago jetpack_autoload_filemap.php 8 months ago platform_check.php 5 months ago
ClassLoader.php
304 lines
1 <?php
2 namespace Composer\Autoload;
3 if (!defined('ABSPATH')) exit;
4 class ClassLoader
5 {
6 private static $includeFile;
7 private $vendorDir;
8 // PSR-4
9 private $prefixLengthsPsr4 = array();
10 private $prefixDirsPsr4 = array();
11 private $fallbackDirsPsr4 = array();
12 // PSR-0
13 private $prefixesPsr0 = array();
14 private $fallbackDirsPsr0 = array();
15 private $useIncludePath = false;
16 private $classMap = array();
17 private $classMapAuthoritative = false;
18 private $missingClasses = array();
19 private $apcuPrefix;
20 private static $registeredLoaders = array();
21 public function __construct($vendorDir = null)
22 {
23 $this->vendorDir = $vendorDir;
24 self::initializeIncludeClosure();
25 }
26 public function getPrefixes()
27 {
28 if (!empty($this->prefixesPsr0)) {
29 return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
30 }
31 return array();
32 }
33 public function getPrefixesPsr4()
34 {
35 return $this->prefixDirsPsr4;
36 }
37 public function getFallbackDirs()
38 {
39 return $this->fallbackDirsPsr0;
40 }
41 public function getFallbackDirsPsr4()
42 {
43 return $this->fallbackDirsPsr4;
44 }
45 public function getClassMap()
46 {
47 return $this->classMap;
48 }
49 public function addClassMap(array $classMap)
50 {
51 if ($this->classMap) {
52 $this->classMap = array_merge($this->classMap, $classMap);
53 } else {
54 $this->classMap = $classMap;
55 }
56 }
57 public function add($prefix, $paths, $prepend = false)
58 {
59 $paths = (array) $paths;
60 if (!$prefix) {
61 if ($prepend) {
62 $this->fallbackDirsPsr0 = array_merge(
63 $paths,
64 $this->fallbackDirsPsr0
65 );
66 } else {
67 $this->fallbackDirsPsr0 = array_merge(
68 $this->fallbackDirsPsr0,
69 $paths
70 );
71 }
72 return;
73 }
74 $first = $prefix[0];
75 if (!isset($this->prefixesPsr0[$first][$prefix])) {
76 $this->prefixesPsr0[$first][$prefix] = $paths;
77 return;
78 }
79 if ($prepend) {
80 $this->prefixesPsr0[$first][$prefix] = array_merge(
81 $paths,
82 $this->prefixesPsr0[$first][$prefix]
83 );
84 } else {
85 $this->prefixesPsr0[$first][$prefix] = array_merge(
86 $this->prefixesPsr0[$first][$prefix],
87 $paths
88 );
89 }
90 }
91 public function addPsr4($prefix, $paths, $prepend = false)
92 {
93 $paths = (array) $paths;
94 if (!$prefix) {
95 // Register directories for the root namespace.
96 if ($prepend) {
97 $this->fallbackDirsPsr4 = array_merge(
98 $paths,
99 $this->fallbackDirsPsr4
100 );
101 } else {
102 $this->fallbackDirsPsr4 = array_merge(
103 $this->fallbackDirsPsr4,
104 $paths
105 );
106 }
107 } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
108 // Register directories for a new namespace.
109 $length = strlen($prefix);
110 if ('\\' !== $prefix[$length - 1]) {
111 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
112 }
113 $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
114 $this->prefixDirsPsr4[$prefix] = $paths;
115 } elseif ($prepend) {
116 // Prepend directories for an already registered namespace.
117 $this->prefixDirsPsr4[$prefix] = array_merge(
118 $paths,
119 $this->prefixDirsPsr4[$prefix]
120 );
121 } else {
122 // Append directories for an already registered namespace.
123 $this->prefixDirsPsr4[$prefix] = array_merge(
124 $this->prefixDirsPsr4[$prefix],
125 $paths
126 );
127 }
128 }
129 public function set($prefix, $paths)
130 {
131 if (!$prefix) {
132 $this->fallbackDirsPsr0 = (array) $paths;
133 } else {
134 $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
135 }
136 }
137 public function setPsr4($prefix, $paths)
138 {
139 if (!$prefix) {
140 $this->fallbackDirsPsr4 = (array) $paths;
141 } else {
142 $length = strlen($prefix);
143 if ('\\' !== $prefix[$length - 1]) {
144 throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
145 }
146 $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
147 $this->prefixDirsPsr4[$prefix] = (array) $paths;
148 }
149 }
150 public function setUseIncludePath($useIncludePath)
151 {
152 $this->useIncludePath = $useIncludePath;
153 }
154 public function getUseIncludePath()
155 {
156 return $this->useIncludePath;
157 }
158 public function setClassMapAuthoritative($classMapAuthoritative)
159 {
160 $this->classMapAuthoritative = $classMapAuthoritative;
161 }
162 public function isClassMapAuthoritative()
163 {
164 return $this->classMapAuthoritative;
165 }
166 public function setApcuPrefix($apcuPrefix)
167 {
168 $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
169 }
170 public function getApcuPrefix()
171 {
172 return $this->apcuPrefix;
173 }
174 public function register($prepend = false)
175 {
176 spl_autoload_register(array($this, 'loadClass'), true, $prepend);
177 if (null === $this->vendorDir) {
178 return;
179 }
180 if ($prepend) {
181 self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
182 } else {
183 unset(self::$registeredLoaders[$this->vendorDir]);
184 self::$registeredLoaders[$this->vendorDir] = $this;
185 }
186 }
187 public function unregister()
188 {
189 spl_autoload_unregister(array($this, 'loadClass'));
190 if (null !== $this->vendorDir) {
191 unset(self::$registeredLoaders[$this->vendorDir]);
192 }
193 }
194 public function loadClass($class)
195 {
196 if ($file = $this->findFile($class)) {
197 $includeFile = self::$includeFile;
198 $includeFile($file);
199 return true;
200 }
201 return null;
202 }
203 public function findFile($class)
204 {
205 // class map lookup
206 if (isset($this->classMap[$class])) {
207 return $this->classMap[$class];
208 }
209 if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
210 return false;
211 }
212 if (null !== $this->apcuPrefix) {
213 $file = apcu_fetch($this->apcuPrefix.$class, $hit);
214 if ($hit) {
215 return $file;
216 }
217 }
218 $file = $this->findFileWithExtension($class, '.php');
219 // Search for Hack files if we are running on HHVM
220 if (false === $file && defined('HHVM_VERSION')) {
221 $file = $this->findFileWithExtension($class, '.hh');
222 }
223 if (null !== $this->apcuPrefix) {
224 apcu_add($this->apcuPrefix.$class, $file);
225 }
226 if (false === $file) {
227 // Remember that this class does not exist.
228 $this->missingClasses[$class] = true;
229 }
230 return $file;
231 }
232 public static function getRegisteredLoaders()
233 {
234 return self::$registeredLoaders;
235 }
236 private function findFileWithExtension($class, $ext)
237 {
238 // PSR-4 lookup
239 $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
240 $first = $class[0];
241 if (isset($this->prefixLengthsPsr4[$first])) {
242 $subPath = $class;
243 while (false !== $lastPos = strrpos($subPath, '\\')) {
244 $subPath = substr($subPath, 0, $lastPos);
245 $search = $subPath . '\\';
246 if (isset($this->prefixDirsPsr4[$search])) {
247 $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
248 foreach ($this->prefixDirsPsr4[$search] as $dir) {
249 if (file_exists($file = $dir . $pathEnd)) {
250 return $file;
251 }
252 }
253 }
254 }
255 }
256 // PSR-4 fallback dirs
257 foreach ($this->fallbackDirsPsr4 as $dir) {
258 if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
259 return $file;
260 }
261 }
262 // PSR-0 lookup
263 if (false !== $pos = strrpos($class, '\\')) {
264 // namespaced class name
265 $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
266 . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
267 } else {
268 // PEAR-like class name
269 $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
270 }
271 if (isset($this->prefixesPsr0[$first])) {
272 foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
273 if (0 === strpos($class, $prefix)) {
274 foreach ($dirs as $dir) {
275 if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
276 return $file;
277 }
278 }
279 }
280 }
281 }
282 // PSR-0 fallback dirs
283 foreach ($this->fallbackDirsPsr0 as $dir) {
284 if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
285 return $file;
286 }
287 }
288 // PSR-0 include paths.
289 if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
290 return $file;
291 }
292 return false;
293 }
294 private static function initializeIncludeClosure()
295 {
296 if (self::$includeFile !== null) {
297 return;
298 }
299 self::$includeFile = \Closure::bind(static function($file) {
300 include $file;
301 }, null, null);
302 }
303 }
304