PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.27.2
GiveWP – Donation Plugin and Fundraising Platform v2.27.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 / Revenue / Repositories / Revenue.php
give / src / Revenue / Repositories Last commit date
Revenue.php 3 years ago
Revenue.php
172 lines
1 <?php
2
3 namespace Give\Revenue\Repositories;
4
5 use Give\Donations\Models\Donation;
6 use Give\Framework\Database\DB;
7 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
8 use Give\Framework\Support\ValueObjects\Money;
9
10 /**
11 * Class Revenue
12 * @package Give\Revenue\Repositories
13 *
14 * Use this class to get data from "give_revenue" table.
15 *
16 * @since 2.9.0
17 * @since 2.22.1 Added the `updateRevenueAmount()` method
18 */
19 class Revenue
20 {
21 /**
22 * Insert revenue.
23 *
24 * @since 2.9.0
25 *
26 * @param array $revenueData
27 *
28 * @return bool|int
29 */
30 public function insert($revenueData)
31 {
32 global $wpdb;
33
34 // Validate revenue data
35 $this->validateNewRevenueData($revenueData);
36
37 /**
38 * Filter revenue data before inserting to revenue table.
39 *
40 * @since 2.9.0
41 */
42 $revenueData = apply_filters('give_revenue_insert_data', $revenueData);
43
44 return DB::insert(
45 $wpdb->give_revenue,
46 $revenueData,
47 $this->getPlaceholderForPrepareQuery($revenueData)
48 );
49 }
50
51 /**
52 * Deletes revenue
53 *
54 * @param $revenueId
55 *
56 * @return false|int
57 */
58 public function deleteByDonationId($revenueId)
59 {
60 global $wpdb;
61
62 return DB::delete(
63 $wpdb->give_revenue,
64 ['donation_id' => $revenueId],
65 ['%d']
66 );
67 }
68
69 /**
70 * @since 2.22.1
71 *
72 * @param Donation $donation
73 *
74 * @return false|int
75 */
76 public function updateRevenueAmount(Donation $donation)
77 {
78 global $wpdb;
79
80 return DB::update(
81 $wpdb->give_revenue,
82 ['amount' => $donation->amount->formatToMinorAmount()],
83 ['donation_id' => $donation->id],
84 ['%d'],
85 ['%d']
86 );
87 }
88
89 /**
90 * Validate new revenue data.
91 *
92 * @since 2.9.0
93 * @since 2.9.4 Mention donation id in exception message.
94 *
95 * @param array $array
96 */
97 protected function validateNewRevenueData($array)
98 {
99 $required = ['donation_id', 'form_id', 'amount'];
100
101 if (empty($array['donation_id'])) {
102 unset($array['donation_id']);
103 }
104
105 if (empty($array['form_id'])) {
106 unset($array['form_id']);
107 }
108
109 if (!is_numeric($array['amount']) || (int)$array['amount'] < 0) {
110 unset($array['amount']);
111 }
112
113 if (array_diff($required, array_keys($array))) {
114 $errorMessage = '';
115 if (isset($array['donation_id'])) {
116 $errorMessage = "An error occurred when processing Donation #{$array['donation_id']}. ";
117 }
118
119 throw new InvalidArgumentException(
120 sprintf(
121 '%2$sTo insert revenue, please provide valid %1$s.',
122 implode(', ', $required),
123 $errorMessage
124 )
125 );
126 }
127 }
128
129 /**
130 * Get placeholder for prepare query.
131 *
132 * @param array $data
133 *
134 * @return string[] Array of value format type
135 */
136 private function getPlaceholderForPrepareQuery($data)
137 {
138 $format = [];
139
140 foreach ($data as $value) {
141 $format[] = is_numeric($value) ? '%d' : '%s';
142 }
143
144 return $format;
145 }
146
147 /**
148 * Return whether or not donation id exist in give_revenue table.
149 *
150 * @sicne 2.9.0
151 *
152 * @param int $donationId
153 *
154 * @return bool
155 */
156 public function isDonationExist($donationId)
157 {
158 global $wpdb;
159
160 return (bool)DB::get_var(
161 DB::prepare(
162 "
163 SELECT donation_id
164 FROM {$wpdb->give_revenue}
165 WHERE donation_id = %d
166 ",
167 $donationId
168 )
169 );
170 }
171 }
172