PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.14.2
GiveWP – Donation Plugin and Fundraising Platform v3.14.2
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Donors / Repositories / DonorRepositoryProxy.php
give / src / Donors / Repositories Last commit date
DonorRepository.php 2 years ago DonorRepositoryProxy.php 2 years ago
DonorRepositoryProxy.php
78 lines
1 <?php
2
3 namespace Give\Donors\Repositories;
4
5 use Give\Donors\Models\Donor;
6 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
7 use Give_DB_Donors;
8
9 /**
10 * This proxy determines which donors repository to call donors->method() from.
11 * In the case of naming conflicts, we will manually check SHARED_METHOD against their arguments.
12 *
13 * @since 2.19.6
14 *
15 * @mixin DonorRepository
16 * @mixin Give_DB_Donors
17 *
18 * @throws InvalidArgumentException
19 */
20 #[\AllowDynamicProperties]
21 class DonorRepositoryProxy
22 {
23 const SHARED_METHODS = ['insert', 'update', 'delete'];
24
25 /**
26 * @var Give_DB_Donors
27 */
28 private $legacyDonorRepository;
29 /**
30 * @var DonorRepository
31 */
32 private $donorRepository;
33
34 /**
35 * The Give_DB_Donors class extends Give_DB which has & assigns public properties that we need to
36 * dynamically assign to this proxy class or else they won't be accessible.
37 *
38 * @since 2.19.6
39 */
40 public function __construct(Give_DB_Donors $legacyDonorRepository, DonorRepository $donorRepository)
41 {
42 $this->legacyDonorRepository = $legacyDonorRepository;
43 $this->donorRepository = $donorRepository;
44
45 $properties = get_object_vars($legacyDonorRepository);
46
47 foreach ($properties as $key => $value) {
48 $this->$key = $value;
49 }
50 }
51
52 /**
53 * @since 2.19.6
54 *
55 * @param string $method
56 * @param array $parameters
57 * @return mixed
58 */
59 public function __call($method, $parameters)
60 {
61 if (in_array($method, self::SHARED_METHODS, true)) {
62 return $parameters[0] instanceof Donor ? $this->donorRepository->{$method}(
63 ...$parameters
64 ) : $this->legacyDonorRepository->{$method}(...$parameters);
65 }
66
67 if (method_exists($this->donorRepository, $method)) {
68 return $this->donorRepository->{$method}(...$parameters);
69 }
70
71 if (method_exists($this->legacyDonorRepository, $method)) {
72 return $this->legacyDonorRepository->{$method}(...$parameters);
73 }
74
75 throw new InvalidArgumentException("$method does not exist.");
76 }
77 }
78