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