PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.36.0
MailPoet – Newsletters, Email Marketing, and Automation v5.36.0
5.36.0 5.35.1 5.35.0 5.34.3 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-prefixed / doctrine / persistence / src / Persistence / Mapping / Driver / SymfonyFileLocator.php
mailpoet / vendor-prefixed / doctrine / persistence / src / Persistence / Mapping / Driver Last commit date
ColocatedMappingDriver.php 9 months ago DefaultFileLocator.php 9 months ago FileDriver.php 9 months ago FileLocator.php 9 months ago MappingDriver.php 9 months ago MappingDriverChain.php 9 months ago PHPDriver.php 9 months ago StaticPHPDriver.php 9 months ago SymfonyFileLocator.php 9 months ago index.php 3 years ago
SymfonyFileLocator.php
144 lines
1 <?php
2 declare (strict_types=1);
3 namespace MailPoetVendor\Doctrine\Persistence\Mapping\Driver;
4 if (!defined('ABSPATH')) exit;
5 use MailPoetVendor\Doctrine\Persistence\Mapping\MappingException;
6 use InvalidArgumentException;
7 use RecursiveDirectoryIterator;
8 use RecursiveIteratorIterator;
9 use RuntimeException;
10 use function array_keys;
11 use function array_merge;
12 use function assert;
13 use function is_dir;
14 use function is_file;
15 use function is_int;
16 use function realpath;
17 use function sprintf;
18 use function str_replace;
19 use function strlen;
20 use function strpos;
21 use function strrpos;
22 use function strtr;
23 use function substr;
24 use const DIRECTORY_SEPARATOR;
25 class SymfonyFileLocator implements FileLocator
26 {
27 protected $paths = [];
28 protected $prefixes = [];
29 protected $fileExtension;
30 private $nsSeparator;
31 public function __construct(array $prefixes, string $fileExtension = '', string $nsSeparator = '.')
32 {
33 $this->addNamespacePrefixes($prefixes);
34 $this->fileExtension = $fileExtension;
35 if ($nsSeparator === '') {
36 throw new InvalidArgumentException('Namespace separator should not be empty');
37 }
38 $this->nsSeparator = $nsSeparator;
39 }
40 public function addNamespacePrefixes(array $prefixes)
41 {
42 $this->prefixes = array_merge($this->prefixes, $prefixes);
43 $this->paths = array_merge($this->paths, array_keys($prefixes));
44 }
45 public function getNamespacePrefixes()
46 {
47 return $this->prefixes;
48 }
49 public function getPaths()
50 {
51 return $this->paths;
52 }
53 public function getFileExtension()
54 {
55 return $this->fileExtension;
56 }
57 public function setFileExtension(string $fileExtension)
58 {
59 $this->fileExtension = $fileExtension;
60 }
61 public function fileExists(string $className)
62 {
63 $defaultFileName = str_replace('\\', $this->nsSeparator, $className) . $this->fileExtension;
64 foreach ($this->paths as $path) {
65 if (!isset($this->prefixes[$path])) {
66 // global namespace class
67 if (is_file($path . DIRECTORY_SEPARATOR . $defaultFileName)) {
68 return \true;
69 }
70 continue;
71 }
72 $prefix = $this->prefixes[$path];
73 if (strpos($className, $prefix . '\\') !== 0) {
74 continue;
75 }
76 $filename = $path . '/' . strtr(substr($className, strlen($prefix) + 1), '\\', $this->nsSeparator) . $this->fileExtension;
77 if (is_file($filename)) {
78 return \true;
79 }
80 }
81 return \false;
82 }
83 public function getAllClassNames(?string $globalBasename = null)
84 {
85 if ($this->paths === []) {
86 return [];
87 }
88 $classes = [];
89 foreach ($this->paths as $path) {
90 if (!is_dir($path)) {
91 throw MappingException::fileMappingDriversRequireConfiguredDirectoryPath($path);
92 }
93 $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::LEAVES_ONLY);
94 foreach ($iterator as $file) {
95 $fileName = $file->getBasename($this->fileExtension);
96 if ($fileName === $file->getBasename() || $fileName === $globalBasename) {
97 continue;
98 }
99 // NOTE: All files found here means classes are not transient!
100 if (isset($this->prefixes[$path])) {
101 // Calculate namespace suffix for given prefix as a relative path from basepath to file path
102 $nsSuffix = strtr(substr($this->realpath($file->getPath()), strlen($this->realpath($path))), $this->nsSeparator, '\\');
103 $class = $this->prefixes[$path] . str_replace(DIRECTORY_SEPARATOR, '\\', $nsSuffix) . '\\' . str_replace($this->nsSeparator, '\\', $fileName);
104 } else {
105 $class = str_replace($this->nsSeparator, '\\', $fileName);
106 }
107 $classes[] = $class;
108 }
109 }
110 return $classes;
111 }
112 public function findMappingFile(string $className)
113 {
114 $defaultFileName = str_replace('\\', $this->nsSeparator, $className) . $this->fileExtension;
115 foreach ($this->paths as $path) {
116 if (!isset($this->prefixes[$path])) {
117 if (is_file($path . DIRECTORY_SEPARATOR . $defaultFileName)) {
118 return $path . DIRECTORY_SEPARATOR . $defaultFileName;
119 }
120 continue;
121 }
122 $prefix = $this->prefixes[$path];
123 if (strpos($className, $prefix . '\\') !== 0) {
124 continue;
125 }
126 $filename = $path . '/' . strtr(substr($className, strlen($prefix) + 1), '\\', $this->nsSeparator) . $this->fileExtension;
127 if (is_file($filename)) {
128 return $filename;
129 }
130 }
131 $pos = strrpos($className, '\\');
132 assert(is_int($pos));
133 throw MappingException::mappingFileNotFound($className, substr($className, $pos + 1) . $this->fileExtension);
134 }
135 private function realpath(string $path) : string
136 {
137 $realpath = realpath($path);
138 if ($realpath === \false) {
139 throw new RuntimeException(sprintf('Could not get realpath for %s', $path));
140 }
141 return $realpath;
142 }
143 }
144