PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.12.2
GiveWP – Donation Plugin and Fundraising Platform v3.12.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 2 years ago
Revenue.php
171 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 * Validate new revenue data.
90 *
91 * @since 2.9.0
92 * @since 2.9.4 Mention donation id in exception message.
93 *
94 * @param array $array
95 */
96 protected function validateNewRevenueData($array)
97 {
98 $required = ['donation_id', 'form_id', 'amount'];
99
100 if (empty($array['donation_id'])) {
101 unset($array['donation_id']);
102 }
103
104 if (empty($array['form_id'])) {
105 unset($array['form_id']);
106 }
107
108 if (!is_numeric($array['amount']) || (int)$array['amount'] < 0) {
109 unset($array['amount']);
110 }
111
112 if (array_diff($required, array_keys($array))) {
113 $errorMessage = '';
114 if (isset($array['donation_id'])) {
115 $errorMessage = "An error occurred when processing Donation #{$array['donation_id']}. ";
116 }
117
118 throw new InvalidArgumentException(
119 sprintf(
120 '%2$sTo insert revenue, please provide valid %1$s.',
121 implode(', ', $required),
122 $errorMessage
123 )
124 );
125 }
126 }
127
128 /**
129 * Get placeholder for prepare query.
130 *
131 * @param array $data
132 *
133 * @return string[] Array of value format type
134 */
135 private function getPlaceholderForPrepareQuery($data)
136 {
137 $format = [];
138
139 foreach ($data as $value) {
140 $format[] = is_numeric($value) ? '%d' : '%s';
141 }
142
143 return $format;
144 }
145
146 /**
147 * Return whether or not donation id exist in give_revenue table.
148 *
149 * @sicne 2.9.0
150 *
151 * @param int $donationId
152 *
153 * @return bool
154 */
155 public function isDonationExist($donationId)
156 {
157 global $wpdb;
158
159 return (bool)DB::get_var(
160 DB::prepare(
161 "
162 SELECT donation_id
163 FROM {$wpdb->give_revenue}
164 WHERE donation_id = %d
165 ",
166 $donationId
167 )
168 );
169 }
170 }
171