PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.9.3
GiveWP – Donation Plugin and Fundraising Platform v2.9.3
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 5 years ago
Revenue.php
144 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 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 $wpdb->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 */
54 public function deleteByDonationId( $revenueId ) {
55 global $wpdb;
56
57 try {
58 return DB::delete(
59 $wpdb->give_revenue,
60 [ 'donation_id' => $revenueId ],
61 [ '%d' ]
62 );
63 } catch ( DatabaseQueryException $exception ) {
64 give_record_log(
65 'Revenue delete by donation failed',
66 $exception->getLogOutput(),
67 0,
68 'database'
69 );
70
71 throw $exception;
72 }
73 }
74
75 /**
76 * Validate new revenue data.
77 *
78 * @since 2.9.0
79 *
80 * @param array $array
81 */
82 protected function validateNewRevenueData( $array ) {
83 $required = [ 'donation_id', 'form_id', 'amount' ];
84
85 $array = array_filter( $array ); // Remove empty values.
86
87 if ( array_diff( $required, array_keys( $array ) ) ) {
88 throw new InvalidArgumentException(
89 sprintf(
90 'To insert revenue, please provide valid %1$s.',
91 implode( ', ', $required )
92 )
93 );
94 }
95
96 foreach ( $required as $columnName ) {
97 if ( empty( $array[ $columnName ] ) ) {
98 throw new InvalidArgumentException( 'Empty value is not allowed to create revenue.' );
99 }
100 }
101 }
102
103 /**
104 * Get placeholder for prepare query.
105 *
106 * @param array $data
107 *
108 * @return string[] Array of value format type
109 */
110 private function getPlaceholderForPrepareQuery( $data ) {
111 $format = [];
112
113 foreach ( $data as $value ) {
114 $format[] = is_numeric( $value ) ? '%d' : '%s';
115 }
116
117 return $format;
118 }
119
120 /**
121 * Return whether or not donation id exist in give_revenue table.
122 *
123 * @sicne 2.9.0
124 *
125 * @param int $donationId
126 *
127 * @return bool
128 */
129 public function isDonationExist( $donationId ) {
130 global $wpdb;
131
132 return (bool) $wpdb->get_var(
133 $wpdb->prepare(
134 "
135 SELECT donation_id
136 FROM {$wpdb->give_revenue}
137 WHERE donation_id = %d
138 ",
139 $donationId
140 )
141 );
142 }
143 }
144