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