PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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
DonorNotesRepository.php 1 year ago DonorRepository.php 8 months ago DonorRepositoryProxy.php 1 year ago
DonorRepositoryProxy.php
89 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 * @var DonorNotesRepository
36 */
37 public $notes;
38
39 /**
40 * The Give_DB_Donors class extends Give_DB which has & assigns public properties that we need to
41 * dynamically assign to this proxy class or else they won't be accessible.
42 *
43 * @since 4.4.0 Add "notes" property
44 * @since 2.19.6
45 */
46 public function __construct(
47 Give_DB_Donors $legacyDonorRepository,
48 DonorRepository $donorRepository,
49 DonorNotesRepository $donorNotesRepository
50 )
51 {
52 $this->legacyDonorRepository = $legacyDonorRepository;
53 $this->donorRepository = $donorRepository;
54 $this->notes = $donorNotesRepository;
55
56 $properties = get_object_vars($legacyDonorRepository);
57
58 foreach ($properties as $key => $value) {
59 $this->$key = $value;
60 }
61 }
62
63 /**
64 * @since 2.19.6
65 *
66 * @param string $method
67 * @param array $parameters
68 * @return mixed
69 */
70 public function __call($method, $parameters)
71 {
72 if (in_array($method, self::SHARED_METHODS, true)) {
73 return $parameters[0] instanceof Donor ? $this->donorRepository->{$method}(
74 ...$parameters
75 ) : $this->legacyDonorRepository->{$method}(...$parameters);
76 }
77
78 if (method_exists($this->donorRepository, $method)) {
79 return $this->donorRepository->{$method}(...$parameters);
80 }
81
82 if (method_exists($this->legacyDonorRepository, $method)) {
83 return $this->legacyDonorRepository->{$method}(...$parameters);
84 }
85
86 throw new InvalidArgumentException("$method does not exist.");
87 }
88 }
89