PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.6.1
GiveWP – Donation Plugin and Fundraising Platform v4.6.1
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 / License / Repositories / LicenseRepository.php
give / src / License / Repositories Last commit date
LicenseRepository.php 1 year ago
LicenseRepository.php
168 lines
1 <?php
2
3 namespace Give\License\Repositories;
4
5 use Give\License\DataTransferObjects\License;
6 use Give\License\ValueObjects\LicenseOptionKeys;
7
8 /**
9 * @since 4.3.0
10 */
11 class LicenseRepository
12 {
13 /**
14 * Check if we have stored licenses in the database.
15 *
16 * @since 4.3.0
17 */
18 public function hasStoredLicenses(): bool
19 {
20 return !empty($this->getStoredLicenses());
21 }
22
23 /**
24 * Gets the raw, stored licenses from the database.
25 *
26 * @since 4.3.0
27 */
28 public function getStoredLicenses(): array
29 {
30 return (array)get_option(LicenseOptionKeys::LICENSES, []);
31 }
32
33 /**
34 * Gets the stored licenses from the database and converts them to License objects.
35 *
36 * @since 4.3.0
37 * @return License[]
38 */
39 public function getLicenses(): array
40 {
41 if (!$this->hasStoredLicenses()) {
42 return [];
43 }
44
45 $storedLicenses = $this->getStoredLicenses();
46 $licenses = [];
47
48 foreach ($storedLicenses as $license) {
49 $licenses[] = License::fromData($license);
50 }
51
52 return $licenses;
53 }
54
55 /**
56 * Returns only the active licenses.
57 *
58 * @since 4.3.0
59 */
60 public function getActiveLicenses(): array
61 {
62 if (!$this->hasStoredLicenses()) {
63 return [];
64 }
65
66 $licenses = $this->getLicenses();
67
68 return array_filter($licenses, static function(License $license) {
69 return $license->isActive;
70 });
71 }
72
73 /**
74 * Checks if we have any active licenses.
75 *
76 * @since 4.3.0
77 */
78 public function hasActiveLicenses(): bool
79 {
80 if (!$this->hasStoredLicenses()) {
81 return false;
82 }
83
84 $activeLicenses = $this->getActiveLicenses();
85
86 return !empty($activeLicenses);
87 }
88
89 /**
90 * The platform fee percentage is used by gateways to calculate a platform fee.
91 *
92 * @since 4.3.0
93 */
94 public function getPlatformFeePercentage(): float
95 {
96 if (!$this->hasActiveLicenses()) {
97 return 2.0;
98 }
99
100 if (!$this->hasStoredPlatformFeePercentage()) {
101 return 0.0;
102 }
103
104 return $this->getStoredPlatformFeePercentage();
105 }
106
107 /**
108 * Check if we have an available platform fee percentage set.
109 * This can be used to determine if we can charge a platform fee.
110 *
111 * @since 4.3.0
112 */
113 public function hasPlatformFeePercentage(): bool
114 {
115 return $this->getPlatformFeePercentage() > 0;
116 }
117
118 /**
119 * The stored platform fee percentage comes from License Server API.
120 * When licenses are activated and refreshed, this value is stored in the database.
121 *
122 * @since 4.3.0
123 */
124 public function getStoredPlatformFeePercentage(): ?float
125 {
126 if (!get_option(LicenseOptionKeys::PLATFORM_FEE_PERCENTAGE)) {
127 return null;
128 }
129
130 return (float)get_option(LicenseOptionKeys::PLATFORM_FEE_PERCENTAGE);
131 }
132
133 /**
134 * Check if we have a stored platform fee percentage.
135 *
136 * @since 4.3.0
137 */
138 public function hasStoredPlatformFeePercentage(): bool
139 {
140 return !is_null($this->getStoredPlatformFeePercentage());
141 }
142
143 /**
144 * Find the lowest platform fee percentage from active licenses.
145 * Since there can be multiple licenses, we need to find the lowest fee from all active licenses.
146 * Once we have the lowest fee, we store it in the database for future use.
147 *
148 * @since 4.3.0
149 */
150 public function findLowestPlatformFeePercentageFromActiveLicenses(): ?float
151 {
152 if (!$this->hasActiveLicenses()) {
153 return null;
154 }
155
156 $fees = array_map(static function(License $license) {
157 return $license->gatewayFee;
158
159 }, $this->getActiveLicenses());
160
161 if (empty($fees)) {
162 return null;
163 }
164
165 return (float)min($fees);
166 }
167 }
168