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