PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.0.3
GiveWP – Donation Plugin and Fundraising Platform v2.0.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 / includes / admin / tools / data / class-give-tools-recount-income.php
give / includes / admin / tools / data Last commit date
class-give-tools-delete-import-donors.php 8 years ago class-give-tools-delete-test-donors.php 8 years ago class-give-tools-delete-test-transactions.php 8 years ago class-give-tools-recount-all-stats.php 8 years ago class-give-tools-recount-donor-stats.php 8 years ago class-give-tools-recount-form-stats.php 8 years ago class-give-tools-recount-income.php 8 years ago class-give-tools-recount-single-donor-stats.php 8 years ago class-give-tools-reset-stats.php 8 years ago tools-actions.php 8 years ago
class-give-tools-recount-income.php
275 lines
1 <?php
2 /**
3 * Recount earnings
4 *
5 * This class handles batch processing of recounting earnings
6 *
7 * @subpackage Admin/Tools/Give_Tools_Recount_Income
8 * @copyright Copyright (c) 2016, WordImpress
9 * @license https://opensource.org/licenses/gpl-license GNU Public License
10 * @since 1.5
11 */
12
13 // Exit if accessed directly.
14 if ( ! defined( 'ABSPATH' ) ) {
15 exit;
16 }
17
18 /**
19 * Give_Tools_Recount_Income Class
20 *
21 * @since 1.5
22 */
23 class Give_Tools_Recount_Income extends Give_Batch_Export {
24
25 /**
26 * Our export type. Used for export-type specific filters/actions
27 * @var string
28 * @since 1.5
29 */
30 public $export_type = '';
31
32 /**
33 * Allows for a non-form batch processing to be run.
34 * @since 1.5
35 * @var boolean
36 */
37 public $is_void = true;
38
39 /**
40 * Sets the number of items to pull on each step
41 * @since 1.5
42 * @var integer
43 */
44 public $per_step = 100;
45
46 /**
47 * Constructor.
48 */
49 public function __construct( $_step = 1 ) {
50 parent::__construct( $_step );
51
52 $this->is_writable = true;
53 }
54 /**
55 * Get the Export Data
56 *
57 * @access public
58 * @since 1.5
59 *
60 * @return bool
61 */
62 public function get_data() {
63
64 if ( $this->step == 1 ) {
65 $this->delete_data( 'give_temp_recount_earnings' );
66 }
67
68 $total = get_option( 'give_temp_recount_earnings', false );
69
70 if ( false === $total ) {
71 $total = (float) 0;
72 $this->store_data( 'give_temp_recount_earnings', $total );
73 }
74
75 $accepted_statuses = apply_filters( 'give_recount_accepted_statuses', array( 'publish' ) );
76
77 $args = apply_filters( 'give_recount_earnings_args', array(
78 'number' => $this->per_step,
79 'page' => $this->step,
80 'status' => $accepted_statuses,
81 'fields' => 'ids'
82 ) );
83
84 $payments = give_get_payments( $args );
85
86 if ( ! empty( $payments ) ) {
87
88 foreach ( $payments as $payment ) {
89
90 $total += (float) give_donation_amount( $payment, array( 'type' => 'stats' ) );
91
92 }
93
94 if ( $total < 0 ) {
95 $totals = 0;
96 }
97
98 $total = round( $total, give_get_price_decimals() );
99
100 $this->store_data( 'give_temp_recount_earnings', $total );
101
102 return true;
103
104 }
105
106 update_option( 'give_earnings_total', $total );
107
108 return false;
109
110 }
111
112 /**
113 * Return the calculated completion percentage
114 *
115 * @since 1.5
116 * @return int
117 */
118 public function get_percentage_complete() {
119
120 $total = $this->get_stored_data( 'give_recount_earnings_total' );
121
122 if ( false === $total ) {
123 $args = apply_filters( 'give_recount_earnings_total_args', array() );
124
125 $counts = give_count_payments( $args );
126 $total = absint( $counts->publish );
127 $total = apply_filters( 'give_recount_store_earnings_total', $total );
128
129 $this->store_data( 'give_recount_earnings_total', $total );
130 }
131
132 $percentage = 100;
133
134 if ( $total > 0 ) {
135 $percentage = ( ( $this->per_step * $this->step ) / $total ) * 100;
136 }
137
138 if ( $percentage > 100 ) {
139 $percentage = 100;
140 }
141
142 return $percentage;
143 }
144
145 /**
146 * Set the properties specific to the payments export
147 *
148 * @since 1.5
149 *
150 * @param array $request The Form Data passed into the batch processing
151 */
152 public function set_properties( $request ) {
153 }
154
155 /**
156 * Process a step
157 *
158 * @since 1.5
159 * @return bool
160 */
161 public function process_step() {
162
163 if ( ! $this->can_export() ) {
164 wp_die( esc_html__( 'You do not have permission to recount stats.', 'give' ), esc_html__( 'Error', 'give' ), array( 'response' => 403 ) );
165 }
166
167 $had_data = $this->get_data();
168
169 if ( $had_data ) {
170 $this->done = false;
171
172 return true;
173 } else {
174 $this->delete_data( 'give_recount_earnings_total' );
175 $this->delete_data( 'give_temp_recount_earnings' );
176 $this->done = true;
177 $this->message = esc_html__( 'Income stats have been successfully recounted.', 'give' );
178
179 return false;
180 }
181 }
182
183 /**
184 * Headers.
185 */
186 public function headers() {
187 give_ignore_user_abort();
188 }
189
190 /**
191 * Perform the export
192 *
193 * @access public
194 * @since 1.5
195 * @return void
196 */
197 public function export() {
198
199 // Set headers
200 $this->headers();
201
202 give_die();
203 }
204
205 /**
206 * Given a key, get the information from the Database Directly
207 *
208 * @since 1.5
209 *
210 * @param string $key The option_name
211 *
212 * @return mixed Returns the data from the database
213 */
214 private function get_stored_data( $key ) {
215 global $wpdb;
216 $value = $wpdb->get_var( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = '%s'", $key ) );
217
218 if ( empty( $value ) ) {
219 return false;
220 }
221
222 $maybe_json = json_decode( $value );
223 if ( ! is_null( $maybe_json ) ) {
224 $value = json_decode( $value, true );
225 }
226
227 return $value;
228 }
229
230 /**
231 * Give a key, store the value
232 *
233 * @since 1.5
234 *
235 * @param string $key The option_name
236 * @param mixed $value The value to store
237 *
238 * @return void
239 */
240 private function store_data( $key, $value ) {
241 global $wpdb;
242
243 $value = is_array( $value ) ? wp_json_encode( $value ) : esc_attr( $value );
244
245 $data = array(
246 'option_name' => $key,
247 'option_value' => $value,
248 'autoload' => 'no',
249 );
250
251 $formats = array(
252 '%s',
253 '%s',
254 '%s',
255 );
256
257 $wpdb->replace( $wpdb->options, $data, $formats );
258 }
259
260 /**
261 * Delete an option
262 *
263 * @since 1.5
264 *
265 * @param string $key The option_name to delete
266 *
267 * @return void
268 */
269 private function delete_data( $key ) {
270 global $wpdb;
271 $wpdb->delete( $wpdb->options, array( 'option_name' => $key ) );
272 }
273
274 }
275