PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.30.0
GiveWP – Donation Plugin and Fundraising Platform v2.30.0
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 3 years ago DonorRepositoryProxy.php 4 years ago
DonorRepositoryProxy.php
77 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 class DonorRepositoryProxy
21 {
22 const SHARED_METHODS = ['insert', 'update', 'delete'];
23
24 /**
25 * @var Give_DB_Donors
26 */
27 private $legacyDonorRepository;
28 /**
29 * @var DonorRepository
30 */
31 private $donorRepository;
32
33 /**
34 * The Give_DB_Donors class extends Give_DB which has & assigns public properties that we need to
35 * dynamically assign to this proxy class or else they won't be accessible.
36 *
37 * @since 2.19.6
38 */
39 public function __construct(Give_DB_Donors $legacyDonorRepository, DonorRepository $donorRepository)
40 {
41 $this->legacyDonorRepository = $legacyDonorRepository;
42 $this->donorRepository = $donorRepository;
43
44 $properties = get_object_vars($legacyDonorRepository);
45
46 foreach ($properties as $key => $value) {
47 $this->$key = $value;
48 }
49 }
50
51 /**
52 * @since 2.19.6
53 *
54 * @param string $method
55 * @param array $parameters
56 * @return mixed
57 */
58 public function __call($method, $parameters)
59 {
60 if (in_array($method, self::SHARED_METHODS, true)) {
61 return $parameters[0] instanceof Donor ? $this->donorRepository->{$method}(
62 ...$parameters
63 ) : $this->legacyDonorRepository->{$method}(...$parameters);
64 }
65
66 if (method_exists($this->donorRepository, $method)) {
67 return $this->donorRepository->{$method}(...$parameters);
68 }
69
70 if (method_exists($this->legacyDonorRepository, $method)) {
71 return $this->legacyDonorRepository->{$method}(...$parameters);
72 }
73
74 throw new InvalidArgumentException("$method does not exist.");
75 }
76 }
77