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