PluginProbe
Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More / 0.0.2
Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More v0.0.2
2.4.1 2.4.0 2.3.4 2.3.3 2.3.2 2.3.1 2.3.0 2.2.2 2.2.1 2.2.0 2.1.2 2.1.1 trunk 0.0.1 0.0.2 0.0.3 0.0.4 0.0.5 0.0.6 0.0.7 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 All 68 releases
better-payment / admin / includes / class-better-payment-db.php

class-better-payment-db.php in Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More 0.0.2, at admin/includes/class-better-payment-db.php

282 lines 9.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * This class responsible for database work
5 * using wordpress functionality
6 * get_option and update_option.
7 */
8 class Better_Payment_DB
9 {
10 public static function get_table_name()
11 {
12 global $wpdb;
13
14 $table = "{$wpdb->prefix}better_payment";
15 return $table;
16 }
17 /**
18 * Get all default settings value.
19 *
20 * @param string $name
21 * @return array
22 */
23 public static function default_settings()
24 {
25 return apply_filters('better_payment_option_default_settings', array(
26 'better_payment_settings_general_general_stripe' => esc_html__('yes', 'better-payment'),
27 'better_payment_settings_general_general_paypal' => esc_html__('yes', 'better-payment'),
28 'better_payment_settings_general_general_email' => esc_html__('yes', 'better-payment'),
29 'better_payment_settings_general_general_currency' => esc_html__('USD', 'better-payment'),
30
31 'better_payment_settings_general_email_to' => esc_html__('', 'better-payment'),
32 'better_payment_settings_general_email_subject' => esc_html__('', 'better-payment'),
33 'better_payment_settings_general_email_message_admin' => esc_html__('', 'better-payment'),
34 'better_payment_settings_general_email_from_email' => esc_html__('', 'better-payment'),
35 'better_payment_settings_general_email_from_name' => esc_html__('', 'better-payment'),
36 'better_payment_settings_general_email_reply_to' => esc_html__('', 'better-payment'),
37 'better_payment_settings_general_email_cc' => esc_html__('', 'better-payment'),
38 'better_payment_settings_general_email_bcc' => esc_html__('', 'better-payment'),
39 'better_payment_settings_general_email_send_as' => esc_html__('html', 'better-payment'),
40
41 'better_payment_settings_general_email_subject_customer' => esc_html__('', 'better-payment'),
42 'better_payment_settings_general_email_message_customer' => esc_html__('', 'better-payment'),
43 'better_payment_settings_general_email_from_email_customer' => esc_html__('', 'better-payment'),
44 'better_payment_settings_general_email_from_name_customer' => esc_html__('', 'better-payment'),
45 'better_payment_settings_general_email_reply_to_customer' => esc_html__('', 'better-payment'),
46 'better_payment_settings_general_email_cc_customer' => esc_html__('', 'better-payment'),
47 'better_payment_settings_general_email_bcc_customer' => esc_html__('', 'better-payment'),
48 'better_payment_settings_general_email_send_as_customer' => esc_html__('html', 'better-payment'),
49
50 'better_payment_settings_payment_stripe_live_mode' => esc_html__('no', 'better-payment'),
51 'better_payment_settings_payment_stripe_live_public' => esc_html__('', 'better-payment'),
52 'better_payment_settings_payment_stripe_live_secret' => esc_html__('', 'better-payment'),
53 'better_payment_settings_payment_stripe_test_public' => esc_html__('', 'better-payment'),
54 'better_payment_settings_payment_stripe_test_secret' => esc_html__('', 'better-payment'),
55 'better_payment_settings_payment_paypal_live_mode' => esc_html__('no', 'better-payment'),
56 'better_payment_settings_payment_paypal_email' => esc_html__('', 'better-payment'),
57 'better_payment_settings_opt_in' => esc_html__('', 'better-payment'),
58 'better_payment_settings_payment_paypal_live_client_id' => esc_html__('', 'better-payment'),
59 'better_payment_settings_payment_paypal_test_client_id' => esc_html__('', 'better-payment'),
60 'better_payment_settings_payment_paypal_live_secret' => esc_html__('', 'better-payment'),
61 'better_payment_settings_payment_paypal_test_secret' => esc_html__('', 'better-payment'),
62 ));
63 }
64 /**
65 * Get all settings value from options table.
66 *
67 * @param string $name
68 * @return array
69 */
70 public static function get_settings($name = '')
71 {
72 $settings = get_option('better_payment_settings', true);
73 $default = self::default_settings();
74 if (!empty($name) && isset($settings[$name])) {
75 return $settings[$name];
76 }
77
78 if (!empty($name) && !isset($settings[$name]) && isset($default[$name])) {
79 return $default[$name];
80 }
81
82 if (!empty($name) && !isset($settings[$name]) && !isset($default[$name])) {
83 return '';
84 }
85
86 return is_array($settings) ? $settings : [];
87 }
88 /**
89 * Update settings
90 * @param array $value
91 * @return boolean
92 */
93 public static function update_settings($value, $key = '')
94 {
95 if (!empty($key)) {
96 return update_option($key, $value);
97 }
98 return update_option('better_payment_settings', $value);
99 }
100
101 /**
102 * Get all transactions from better payment table.
103 *
104 * @param string $args
105 * @return array
106 */
107 public static function get_transactions($args = [], $count_only=0)
108 {
109 global $wpdb;
110 $items = '';
111
112 $defaults = array(
113 'search_text' => '',
114 'payment_date_from' => '',
115 'payment_date_to' => '',
116 'order_by' => 'id',
117 'order' => 'DESC',
118 'source' => '',
119 'paged' => 1,
120 'per_page' => 20,
121 'offset' => 0,
122 );
123
124 $allowed_order_by = array(
125 'id',
126 'payment_date',
127 'email',
128 'amount',
129 'status'
130 );
131
132 $allowed_order = array(
133 'DESC',
134 'ASC'
135 );
136
137 $args = wp_parse_args($args, $defaults);
138 $table = self::get_table_name();
139
140 $search_text = sanitize_text_field($args['search_text']);
141 $search_text = empty($search_text) ? '' : "%$search_text%";
142
143 $order_by = in_array($args['order_by'], $allowed_order_by) ? sanitize_text_field($args['order_by']) : $defaults['order_by'];
144 $order = in_array($args['order'], $allowed_order) ? sanitize_text_field($args['order']) : $defaults['order'];
145 $offset = $args['offset'] > 0 ? intval($args['offset']) : $defaults['offset'];
146 $per_page = $args['per_page'] > 0 ? intval($args['per_page']) : $defaults['per_page'];
147
148 $whereQuery = '';
149
150 if($search_text != '' && strlen($search_text) >= 2){
151 $whereQuery = $wpdb->prepare(' AND email LIKE %s OR transaction_id LIKE %s OR amount LIKE %s OR source LIKE %s ', $search_text, $search_text, $search_text, $search_text );
152 }
153
154 if( $args['source'] != '' ){
155 $whereQuery .= $wpdb->prepare(" AND source = %s", $args['source']);
156 }
157
158 if( $args['payment_date_from'] != '' && $args['payment_date_to'] != ''){
159 $whereQuery .= $wpdb->prepare(" AND payment_date BETWEEN %s AND %s", $args['payment_date_from'], $args['payment_date_to']);
160 }
161
162 if($count_only === 1){
163 $items = $wpdb->get_var(
164 $wpdb->prepare(
165 "SELECT count(id) FROM $table WHERE 1
166 $whereQuery
167 ORDER BY $order_by $order
168 LIMIT %d, %d
169 ",
170 $offset,
171 $per_page
172 )
173 );
174 }else {
175 $items = $wpdb->get_results(
176 $wpdb->prepare(
177 "SELECT * FROM $table WHERE 1
178 $whereQuery
179 ORDER BY $order_by $order
180 LIMIT %d, %d
181 ",
182 $offset,
183 $per_page
184 )
185 );
186 }
187
188 return $items;
189 }
190
191 /**
192 * Get the count of total transactions
193 *
194 * @return int
195 */
196 public static function get_transaction_count($args = '')
197 {
198 global $wpdb;
199 $table = self::get_table_name();
200
201 $count = 0;
202
203 if($args !== ''){
204 $count = self::get_transactions($args, 1);
205 }else {
206 $count = $wpdb->get_var(
207 "SELECT count(id) FROM $table"
208 );
209 }
210
211 return $count;
212 }
213
214 /**
215 * Get transactions analytics
216 *
217 * @return int
218 */
219 public static function get_transactions_analytics()
220 {
221 global $wpdb;
222 $transaction_analytics = [];
223
224 $table = self::get_table_name();
225
226 $count_all = (int) $wpdb->get_var(
227 "SELECT count(id) FROM $table"
228 );
229
230 $count_paid = (int) $wpdb->get_var($wpdb->prepare(
231 "SELECT count(id) FROM $table WHERE status LIKE %s", 'paid'
232 ));
233
234 $transaction_analytics['all'] = $count_all;
235 $transaction_analytics['paid'] = $count_paid;
236
237 return $transaction_analytics;
238 }
239
240 /**
241 * Get transaction details from better payment table.
242 *
243 * @param string $args
244 * @return object
245 */
246 public static function get_transaction($id)
247 {
248 global $wpdb;
249
250 $table = self::get_table_name();
251 $transaction_id = (int) sanitize_text_field($id);
252
253 $item = $wpdb->get_row(
254 $wpdb->prepare(
255 "SELECT * FROM $table WHERE id = %d",
256 $transaction_id
257 )
258 );
259
260 return $item;
261 }
262
263 /**
264 * Delete a transaction
265 *
266 * @param int $id
267 *
268 * @return int|boolean
269 */
270 public static function delete_transaction($id)
271 {
272 global $wpdb;
273 $table = self::get_table_name();
274
275 return $wpdb->delete(
276 $table,
277 ['id' => $id],
278 ['%d']
279 );
280 }
281 }
282