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 / common / src / Proxy / AbstractProxyFactory.php
mailpoet / vendor-prefixed / doctrine / common / src / Proxy Last commit date
Exception 2 years ago AbstractProxyFactory.php 2 years ago Autoloader.php 2 years ago Proxy.php 2 years ago ProxyDefinition.php 2 years ago ProxyGenerator.php 9 months ago index.php 2 years ago
AbstractProxyFactory.php
110 lines
1 <?php
2 namespace MailPoetVendor\Doctrine\Common\Proxy;
3 if (!defined('ABSPATH')) exit;
4 use MailPoetVendor\Doctrine\Common\Proxy\Exception\InvalidArgumentException;
5 use MailPoetVendor\Doctrine\Common\Proxy\Exception\OutOfBoundsException;
6 use MailPoetVendor\Doctrine\Common\Util\ClassUtils;
7 use MailPoetVendor\Doctrine\Persistence\Mapping\ClassMetadata;
8 use MailPoetVendor\Doctrine\Persistence\Mapping\ClassMetadataFactory;
9 use function class_exists;
10 use function file_exists;
11 use function filemtime;
12 use function in_array;
13 abstract class AbstractProxyFactory
14 {
15 public const AUTOGENERATE_NEVER = 0;
16 public const AUTOGENERATE_ALWAYS = 1;
17 public const AUTOGENERATE_FILE_NOT_EXISTS = 2;
18 public const AUTOGENERATE_EVAL = 3;
19 public const AUTOGENERATE_FILE_NOT_EXISTS_OR_CHANGED = 4;
20 private const AUTOGENERATE_MODES = [self::AUTOGENERATE_NEVER, self::AUTOGENERATE_ALWAYS, self::AUTOGENERATE_FILE_NOT_EXISTS, self::AUTOGENERATE_EVAL, self::AUTOGENERATE_FILE_NOT_EXISTS_OR_CHANGED];
21 private $metadataFactory;
22 private $proxyGenerator;
23 private $autoGenerate;
24 private $definitions = [];
25 public function __construct(ProxyGenerator $proxyGenerator, ClassMetadataFactory $metadataFactory, $autoGenerate)
26 {
27 $this->proxyGenerator = $proxyGenerator;
28 $this->metadataFactory = $metadataFactory;
29 $this->autoGenerate = (int) $autoGenerate;
30 if (!in_array($this->autoGenerate, self::AUTOGENERATE_MODES, \true)) {
31 throw InvalidArgumentException::invalidAutoGenerateMode($autoGenerate);
32 }
33 }
34 public function getProxy($className, array $identifier)
35 {
36 $definition = $this->definitions[$className] ?? $this->getProxyDefinition($className);
37 $fqcn = $definition->proxyClassName;
38 $proxy = new $fqcn($definition->initializer, $definition->cloner);
39 foreach ($definition->identifierFields as $idField) {
40 if (!isset($identifier[$idField])) {
41 throw OutOfBoundsException::missingPrimaryKeyValue($className, $idField);
42 }
43 $definition->reflectionFields[$idField]->setValue($proxy, $identifier[$idField]);
44 }
45 return $proxy;
46 }
47 public function generateProxyClasses(array $classes, $proxyDir = null)
48 {
49 $generated = 0;
50 foreach ($classes as $class) {
51 if ($this->skipClass($class)) {
52 continue;
53 }
54 $proxyFileName = $this->proxyGenerator->getProxyFileName($class->getName(), $proxyDir);
55 $this->proxyGenerator->generateProxyClass($class, $proxyFileName);
56 $generated += 1;
57 }
58 return $generated;
59 }
60 public function resetUninitializedProxy(Proxy $proxy)
61 {
62 if ($proxy->__isInitialized()) {
63 throw InvalidArgumentException::unitializedProxyExpected($proxy);
64 }
65 $className = ClassUtils::getClass($proxy);
66 $definition = $this->definitions[$className] ?? $this->getProxyDefinition($className);
67 $proxy->__setInitializer($definition->initializer);
68 $proxy->__setCloner($definition->cloner);
69 return $proxy;
70 }
71 private function getProxyDefinition($className)
72 {
73 $classMetadata = $this->metadataFactory->getMetadataFor($className);
74 $className = $classMetadata->getName();
75 // aliases and case sensitivity
76 $this->definitions[$className] = $this->createProxyDefinition($className);
77 $proxyClassName = $this->definitions[$className]->proxyClassName;
78 if (!class_exists($proxyClassName, \false)) {
79 $fileName = $this->proxyGenerator->getProxyFileName($className);
80 switch ($this->autoGenerate) {
81 case self::AUTOGENERATE_NEVER:
82 require $fileName;
83 break;
84 case self::AUTOGENERATE_FILE_NOT_EXISTS:
85 if (!file_exists($fileName)) {
86 $this->proxyGenerator->generateProxyClass($classMetadata, $fileName);
87 }
88 require $fileName;
89 break;
90 case self::AUTOGENERATE_ALWAYS:
91 $this->proxyGenerator->generateProxyClass($classMetadata, $fileName);
92 require $fileName;
93 break;
94 case self::AUTOGENERATE_EVAL:
95 $this->proxyGenerator->generateProxyClass($classMetadata, \false);
96 break;
97 case self::AUTOGENERATE_FILE_NOT_EXISTS_OR_CHANGED:
98 if (!file_exists($fileName) || filemtime($fileName) < filemtime($classMetadata->getReflectionClass()->getFileName())) {
99 $this->proxyGenerator->generateProxyClass($classMetadata, $fileName);
100 }
101 require $fileName;
102 break;
103 }
104 }
105 return $this->definitions[$className];
106 }
107 protected abstract function skipClass(ClassMetadata $metadata);
108 protected abstract function createProxyDefinition($className);
109 }
110