PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.3
GiveWP – Donation Plugin and Fundraising Platform v4.16.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-delete-test-transactions.php
give / includes / admin / tools / data Last commit date
class-give-tools-delete-donations.php 6 years ago class-give-tools-delete-import-donors.php 6 years ago class-give-tools-delete-test-donors.php 6 years ago class-give-tools-delete-test-transactions.php 8 months ago class-give-tools-recount-all-stats.php 6 years ago class-give-tools-recount-donor-stats.php 6 years ago class-give-tools-recount-form-stats.php 5 years ago class-give-tools-recount-income.php 5 years ago class-give-tools-recount-single-donor-stats.php 6 years ago class-give-tools-reset-stats.php 9 months ago tools-actions.php 7 years ago
class-give-tools-delete-test-transactions.php
316 lines
1 <?php
2 /**
3 * Delete Test Transactions
4 *
5 * This class handles batch processing of deleting test transactions
6 *
7 * @subpackage Admin/Tools/Give_Tools_Delete_Test_Transactions
8 * @copyright Copyright (c) 2016, GiveWP
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_Delete_Test_Transactions Class
20 *
21 * @since 1.5
22 */
23 class Give_Tools_Delete_Test_Transactions extends Give_Batch_Export {
24
25 /**
26 * Our export type. Used for export-type specific filters/actions
27 *
28 * @var string
29 * @since 1.5
30 */
31 public $export_type = '';
32
33 /**
34 * Allows for a non-form batch processing to be run.
35 *
36 * @since 1.5
37 * @var boolean
38 */
39 public $is_void = true;
40
41 /**
42 * Sets the number of items to pull on each step
43 *
44 * @since 1.5
45 * @var integer
46 */
47 public $per_step = 30;
48
49 /**
50 * Constructor.
51 */
52 public function __construct( $_step = 1 ) {
53 parent::__construct( $_step );
54
55 $this->is_writable = true;
56 }
57
58 /**
59 * Get the Export Data
60 *
61 * @access public
62 * @since 1.5
63 * @global object $wpdb Used to query the database using the WordPress Database API
64 *
65 * @return array|bool $data The data for the CSV file
66 */
67 public function get_data() {
68 $items = $this->get_stored_data( 'give_temp_delete_test_ids' );
69
70 if ( ! is_array( $items ) ) {
71 return false;
72 }
73
74 $offset = ( $this->step - 1 ) * $this->per_step;
75 $step_items = array_slice( $items, $offset, $this->per_step );
76 $meta_table = give_v20_bc_table_details( 'payment' );
77
78 if ( $step_items ) {
79 foreach ( $step_items as $item ) {
80 // Delete the main payment.
81 give_delete_donation( absint( $item['id'] ) );
82 }
83 return true;
84 }
85
86 return false;
87 }
88
89 /**
90 * Return the calculated completion percentage
91 *
92 * @since 1.5
93 * @return int
94 */
95 public function get_percentage_complete() {
96
97 $items = $this->get_stored_data( 'give_temp_delete_test_ids', false );
98 $total = is_array( $items )
99 ? count( $items )
100 : 0;
101
102 $percentage = 100;
103
104 if ( $total > 0 ) {
105 $percentage = ( ( $this->per_step * $this->step ) / $total ) * 100;
106 }
107
108 if ( $percentage > 100 ) {
109 $percentage = 100;
110 }
111
112 return $percentage;
113 }
114
115 /**
116 * Set the properties specific to the payments export
117 *
118 * @since 1.5
119 *
120 * @param array $request The Form Data passed into the batch processing
121 */
122 public function set_properties( $request ) {
123 }
124
125 /**
126 * Process a step
127 *
128 * @since 1.5
129 * @return bool
130 */
131 public function process_step() {
132
133 if ( ! $this->can_export() ) {
134 wp_die( __( 'You do not have permission to delete test transactions.', 'give' ), __( 'Error', 'give' ), array( 'response' => 403 ) );
135 }
136
137 $had_data = $this->get_data();
138
139 if ( $had_data ) {
140 $this->done = false;
141
142 return true;
143 } else {
144 update_option( 'give_earnings_total', give_get_total_earnings( true ), false );
145 Give_Cache::delete( Give_Cache::get_key( 'give_estimated_monthly_stats' ) );
146
147 $this->delete_data( 'give_temp_delete_test_ids' );
148
149 $this->done = true;
150 $this->message = __( 'Test transactions successfully deleted.', 'give' );
151
152 return false;
153 }
154 }
155
156 /**
157 * Headers
158 */
159 public function headers() {
160 give_ignore_user_abort();
161 }
162
163 /**
164 * Perform the export
165 *
166 * @access public
167 * @since 1.5
168 * @return void
169 */
170 public function export() {
171
172 // Set headers
173 $this->headers();
174
175 give_die();
176 }
177
178 /**
179 * Pre Fetch
180 */
181 public function pre_fetch() {
182
183 if ( $this->step == 1 ) {
184 $this->delete_data( 'give_temp_delete_test_ids' );
185 }
186
187 $items = get_option( 'give_temp_delete_test_ids', false );
188
189 if ( false === $items ) {
190 $items = array();
191
192 $args = apply_filters(
193 'give_tools_reset_stats_total_args',
194 array(
195 'post_status' => 'any',
196 'number' => - 1,
197 'meta_query' => array(
198 'relation' => 'OR',
199 array(
200 'key' => '_give_payment_mode',
201 'value' => 'test',
202 ),
203 array(
204 'key' => '_give_payment_gateway',
205 'value' => 'manual',
206 ),
207 ),
208 )
209 );
210
211 $posts = new Give_Payments_Query( $args );
212 $payments = $posts->get_payments();
213
214 /* @var Give_Payment $payment */
215 foreach ( $payments as $payment ) {
216 $items[] = array(
217 'id' => (int) $payment->ID,
218 'type' => 'give_payment',
219 );
220 }
221
222 // Allow filtering of items to remove with an unassociative array for each item.
223 // The array contains the unique ID of the item, and a 'type' for you to use in the execution of the get_data method.
224 $items = apply_filters( 'give_delete_test_items', $items );
225
226 $this->store_data( 'give_temp_delete_test_ids', $items );
227 }
228
229 }
230
231 /**
232 * Given a key, get the information from the Database Directly
233 *
234 * @since 1.5
235 *
236 * @param string $key The option_name
237 *
238 * @return mixed Returns the data from the database
239 */
240 private function get_stored_data( $key ) {
241 global $wpdb;
242 $value = $wpdb->get_var( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = '%s'", $key ) );
243
244 if ( empty( $value ) ) {
245 return false;
246 }
247
248 $maybe_json = json_decode( $value );
249 if ( ! is_null( $maybe_json ) ) {
250 $value = json_decode( $value, true );
251 }
252
253 return $value;
254 }
255
256 /**
257 * Give a key, store the value
258 *
259 * @since 1.5
260 *
261 * @param string $key The option_name
262 * @param mixed $value The value to store
263 *
264 * @return void
265 */
266 private function store_data( $key, $value ) {
267 global $wpdb;
268
269 $value = is_array( $value ) ? wp_json_encode( $value ) : esc_attr( $value );
270
271 $data = array(
272 'option_name' => $key,
273 'option_value' => $value,
274 'autoload' => 'no',
275 );
276
277 $formats = array(
278 '%s',
279 '%s',
280 '%s',
281 );
282
283 $wpdb->replace( $wpdb->options, $data, $formats );
284 }
285
286 /**
287 * Delete an option
288 *
289 * @since 1.5
290 *
291 * @param string $key The option_name to delete
292 *
293 * @return void
294 */
295 private function delete_data( $key ) {
296 global $wpdb;
297 $wpdb->delete( $wpdb->options, array( 'option_name' => $key ) );
298 }
299
300 /**
301 * Unset the properties specific to the donors export.
302 *
303 * @since 2.3.0
304 *
305 * @param array $request
306 * @param Give_Batch_Export $export
307 */
308 public function unset_properties( $request, $export ) {
309 if ( $export->done ) {
310 // Delete all the donation ids.
311 $this->delete_data( 'give_temp_delete_test_ids' );
312 }
313 }
314
315 }
316