PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.0.5
GiveWP – Donation Plugin and Fundraising Platform v2.0.5
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 / includes / admin / tools / export / class-batch-export-payments.php
give / includes / admin / tools / export Last commit date
class-batch-export-donors.php 8 years ago class-batch-export-forms.php 9 years ago class-batch-export-payments.php 8 years ago class-batch-export.php 8 years ago class-core-settings-export.php 8 years ago class-export-earnings.php 8 years ago class-export.php 8 years ago export-actions.php 8 years ago export-functions.php 8 years ago pdf-reports.php 8 years ago
class-batch-export-payments.php
241 lines
1 <?php
2 /**
3 * Payments Export Class.
4 *
5 * This class handles payment export in batches.
6 *
7 * @package Give
8 * @subpackage Admin/Reports
9 * @copyright Copyright (c) 2016, WordImpress
10 * @license https://opensource.org/licenses/gpl-license GNU Public License
11 * @since 1.5
12 */
13
14 // Exit if accessed directly.
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit;
17 }
18
19 /**
20 * Give_Batch_Payments_Export Class
21 *
22 * @since 1.5
23 */
24 class Give_Batch_Payments_Export extends Give_Batch_Export {
25
26 /**
27 * Our export type. Used for export-type specific filters/actions.
28 * @var string
29 * @since 1.5
30 */
31 public $export_type = 'payments';
32
33 /**
34 * Set the CSV columns.
35 *
36 * @access public
37 * @since 1.5
38 * @return array $cols All the columns.
39 */
40 public function csv_cols() {
41 $cols = array(
42 'id' => __( 'ID', 'give' ), // unaltered payment ID (use for querying).
43 'seq_id' => __( 'Payment Number', 'give' ), // sequential payment ID.
44 'email' => __( 'Email', 'give' ),
45 'first' => __( 'First Name', 'give' ),
46 'last' => __( 'Last Name', 'give' ),
47 'address1' => __( 'Address 1', 'give' ),
48 'address2' => __( 'Address 2', 'give' ),
49 'city' => __( 'City', 'give' ),
50 'state' => __( 'State', 'give' ),
51 'country' => __( 'Country', 'give' ),
52 'zip' => __( 'Zip / Postal Code', 'give' ),
53 'form_id' => __( 'Form ID', 'give' ),
54 'form_name' => __( 'Form Name', 'give' ),
55 'amount' => __( 'Amount', 'give' ) . ' (' . give_currency_symbol( '', true ) . ')',
56 'gateway' => __( 'Payment Method', 'give' ),
57 'trans_id' => __( 'Transaction ID', 'give' ),
58 'key' => __( 'Key', 'give' ),
59 'date' => __( 'Date', 'give' ),
60 'user' => __( 'User', 'give' ),
61 'status' => __( 'Status', 'give' )
62 );
63
64 if ( ! give_get_option( 'enable_sequential' ) ) {
65 unset( $cols['seq_id'] );
66 }
67
68 return $cols;
69 }
70
71 /**
72 * Get the Export Data.
73 *
74 * @access public
75 * @since 1.5
76 * @global object $wpdb Used to query the database using the WordPress database API.
77 * @return array $data The data for the CSV file.
78 */
79 public function get_data() {
80
81 $data = array();
82
83 $args = array(
84 'number' => 30,
85 'page' => $this->step,
86 'status' => $this->status
87 );
88
89 if ( ! empty( $this->start ) || ! empty( $this->end ) ) {
90
91 $args['date_query'] = array(
92 array(
93 'after' => date( 'Y-n-d 00:00:00', strtotime( $this->start ) ),
94 'before' => date( 'Y-n-d 23:59:59', strtotime( $this->end ) ),
95 'inclusive' => true
96 )
97 );
98
99 }
100
101 // Add category or tag to payment query if any.
102 if ( ! empty( $this->categories ) || ! empty( $this->tags ) ) {
103 $form_args = array(
104 'post_type' => 'give_forms',
105 'post_status' => 'publish',
106 'posts_per_page' => - 1,
107 'fields' => 'ids',
108 'tax_query' => array(
109 'relation' => 'AND',
110 ),
111 );
112
113
114 if ( ! empty( $this->categories ) ) {
115 $form_args['tax_query'][] = array(
116 'taxonomy' => 'give_forms_category',
117 'terms' => $this->categories,
118 );
119 }
120
121 if ( ! empty( $this->tags ) ) {
122 $form_args['tax_query'][] = array(
123 'taxonomy' => 'give_forms_tag',
124 'terms' => $this->tags,
125 );
126 }
127
128 $forms = new WP_Query( $form_args );
129
130 if ( empty( $forms->posts ) ) {
131 return array();
132 }
133
134 $args['give_forms'] = $forms->posts;
135 }
136
137 $payments = give_get_payments( $args );
138
139 if ( $payments ) {
140
141 foreach ( $payments as $payment ) {
142 $payment_meta = give_get_payment_meta( $payment->ID );
143 $user_info = give_get_payment_meta_user_info( $payment->ID );
144 $total = give_donation_amount( $payment->ID, array( 'type' => 'stats' ) );
145 $user_id = isset( $user_info['id'] ) && $user_info['id'] != - 1 ? $user_info['id'] : $user_info['email'];
146
147 if ( is_numeric( $user_id ) ) {
148 $user = get_userdata( $user_id );
149 } else {
150 $user = false;
151 }
152
153 $data[] = array(
154 'id' => $payment->ID,
155 'seq_id' => give_get_payment_number( $payment->ID ),
156 'email' => $payment_meta['email'],
157 'first' => $user_info['first_name'],
158 'last' => $user_info['last_name'],
159 'address1' => isset( $user_info['address']['line1'] ) ? $user_info['address']['line1'] : '',
160 'address2' => isset( $user_info['address']['line2'] ) ? $user_info['address']['line2'] : '',
161 'city' => isset( $user_info['address']['city'] ) ? $user_info['address']['city'] : '',
162 'state' => isset( $user_info['address']['state'] ) ? $user_info['address']['state'] : '',
163 'country' => isset( $user_info['address']['country'] ) ? $user_info['address']['country'] : '',
164 'zip' => isset( $user_info['address']['zip'] ) ? $user_info['address']['zip'] : '',
165 'form_id' => isset( $payment_meta['form_id'] ) ? $payment_meta['form_id'] : '',
166 'form_name' => isset( $payment_meta['form_title'] ) ? $payment_meta['form_title'] : '',
167 'amount' => html_entity_decode( give_format_amount( $total, array( 'sanitize' => false ) ) ),
168 'gateway' => give_get_gateway_admin_label( give_get_meta( $payment->ID, '_give_payment_gateway', true ) ),
169 'trans_id' => give_get_payment_transaction_id( $payment->ID ),
170 'key' => $payment_meta['key'],
171 'date' => $payment->post_date,
172 'user' => $user ? $user->display_name : __( 'guest', 'give' ),
173 'status' => give_get_payment_status( $payment, true )
174 );
175
176 }
177
178 $data = apply_filters( 'give_export_get_data', $data );
179 $data = apply_filters( "give_export_get_data_{$this->export_type}", $data );
180
181 return $data;
182
183 }
184
185 return array();
186
187 }
188
189 /**
190 * Return the calculated completion percentage.
191 *
192 * @since 1.5
193 * @return int
194 */
195 public function get_percentage_complete() {
196
197 $status = $this->status;
198 $args = array(
199 'start-date' => date( 'n/d/Y', strtotime( $this->start ) ),
200 'end-date' => date( 'n/d/Y', strtotime( $this->end ) ),
201 );
202
203 if ( 'any' == $status ) {
204
205 $total = array_sum( (array) give_count_payments( $args ) );
206
207 } else {
208
209 $total = give_count_payments( $args )->$status;
210
211 }
212
213 $percentage = 100;
214
215 if ( $total > 0 ) {
216 $percentage = ( ( 30 * $this->step ) / $total ) * 100;
217 }
218
219 if ( $percentage > 100 ) {
220 $percentage = 100;
221 }
222
223 return $percentage;
224 }
225
226 /**
227 * Set the properties specific to the payments export.
228 *
229 * @since 1.5
230 *
231 * @param array $request The Form Data passed into the batch processing.
232 */
233 public function set_properties( $request ) {
234 $this->start = isset( $request['start'] ) ? sanitize_text_field( $request['start'] ) : '';
235 $this->end = isset( $request['end'] ) ? sanitize_text_field( $request['end'] ) : '';
236 $this->status = isset( $request['status'] ) ? sanitize_text_field( $request['status'] ) : 'complete';
237 $this->categories = isset( $request['give_forms_categories'] ) ? give_clean( $request['give_forms_categories'] ) : array();
238 $this->tags = isset( $request['give_forms_tags'] ) ? give_clean( $request['give_forms_tags'] ) : array();
239 }
240 }
241