PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.3
GiveWP – Donation Plugin and Fundraising Platform v3.19.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 6 years 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 5 years ago tools-actions.php 7 years ago
class-give-tools-delete-test-transactions.php
314 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 = count( $items );
99
100 $percentage = 100;
101
102 if ( $total > 0 ) {
103 $percentage = ( ( $this->per_step * $this->step ) / $total ) * 100;
104 }
105
106 if ( $percentage > 100 ) {
107 $percentage = 100;
108 }
109
110 return $percentage;
111 }
112
113 /**
114 * Set the properties specific to the payments export
115 *
116 * @since 1.5
117 *
118 * @param array $request The Form Data passed into the batch processing
119 */
120 public function set_properties( $request ) {
121 }
122
123 /**
124 * Process a step
125 *
126 * @since 1.5
127 * @return bool
128 */
129 public function process_step() {
130
131 if ( ! $this->can_export() ) {
132 wp_die( __( 'You do not have permission to delete test transactions.', 'give' ), __( 'Error', 'give' ), array( 'response' => 403 ) );
133 }
134
135 $had_data = $this->get_data();
136
137 if ( $had_data ) {
138 $this->done = false;
139
140 return true;
141 } else {
142 update_option( 'give_earnings_total', give_get_total_earnings( true ), false );
143 Give_Cache::delete( Give_Cache::get_key( 'give_estimated_monthly_stats' ) );
144
145 $this->delete_data( 'give_temp_delete_test_ids' );
146
147 $this->done = true;
148 $this->message = __( 'Test transactions successfully deleted.', 'give' );
149
150 return false;
151 }
152 }
153
154 /**
155 * Headers
156 */
157 public function headers() {
158 give_ignore_user_abort();
159 }
160
161 /**
162 * Perform the export
163 *
164 * @access public
165 * @since 1.5
166 * @return void
167 */
168 public function export() {
169
170 // Set headers
171 $this->headers();
172
173 give_die();
174 }
175
176 /**
177 * Pre Fetch
178 */
179 public function pre_fetch() {
180
181 if ( $this->step == 1 ) {
182 $this->delete_data( 'give_temp_delete_test_ids' );
183 }
184
185 $items = get_option( 'give_temp_delete_test_ids', false );
186
187 if ( false === $items ) {
188 $items = array();
189
190 $args = apply_filters(
191 'give_tools_reset_stats_total_args',
192 array(
193 'post_status' => 'any',
194 'number' => - 1,
195 'meta_query' => array(
196 'relation' => 'OR',
197 array(
198 'key' => '_give_payment_mode',
199 'value' => 'test',
200 ),
201 array(
202 'key' => '_give_payment_gateway',
203 'value' => 'manual',
204 ),
205 ),
206 )
207 );
208
209 $posts = new Give_Payments_Query( $args );
210 $payments = $posts->get_payments();
211
212 /* @var Give_Payment $payment */
213 foreach ( $payments as $payment ) {
214 $items[] = array(
215 'id' => (int) $payment->ID,
216 'type' => 'give_payment',
217 );
218 }
219
220 // Allow filtering of items to remove with an unassociative array for each item.
221 // The array contains the unique ID of the item, and a 'type' for you to use in the execution of the get_data method.
222 $items = apply_filters( 'give_delete_test_items', $items );
223
224 $this->store_data( 'give_temp_delete_test_ids', $items );
225 }
226
227 }
228
229 /**
230 * Given a key, get the information from the Database Directly
231 *
232 * @since 1.5
233 *
234 * @param string $key The option_name
235 *
236 * @return mixed Returns the data from the database
237 */
238 private function get_stored_data( $key ) {
239 global $wpdb;
240 $value = $wpdb->get_var( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = '%s'", $key ) );
241
242 if ( empty( $value ) ) {
243 return false;
244 }
245
246 $maybe_json = json_decode( $value );
247 if ( ! is_null( $maybe_json ) ) {
248 $value = json_decode( $value, true );
249 }
250
251 return $value;
252 }
253
254 /**
255 * Give a key, store the value
256 *
257 * @since 1.5
258 *
259 * @param string $key The option_name
260 * @param mixed $value The value to store
261 *
262 * @return void
263 */
264 private function store_data( $key, $value ) {
265 global $wpdb;
266
267 $value = is_array( $value ) ? wp_json_encode( $value ) : esc_attr( $value );
268
269 $data = array(
270 'option_name' => $key,
271 'option_value' => $value,
272 'autoload' => 'no',
273 );
274
275 $formats = array(
276 '%s',
277 '%s',
278 '%s',
279 );
280
281 $wpdb->replace( $wpdb->options, $data, $formats );
282 }
283
284 /**
285 * Delete an option
286 *
287 * @since 1.5
288 *
289 * @param string $key The option_name to delete
290 *
291 * @return void
292 */
293 private function delete_data( $key ) {
294 global $wpdb;
295 $wpdb->delete( $wpdb->options, array( 'option_name' => $key ) );
296 }
297
298 /**
299 * Unset the properties specific to the donors export.
300 *
301 * @since 2.3.0
302 *
303 * @param array $request
304 * @param Give_Batch_Export $export
305 */
306 public function unset_properties( $request, $export ) {
307 if ( $export->done ) {
308 // Delete all the donation ids.
309 $this->delete_data( 'give_temp_delete_test_ids' );
310 }
311 }
312
313 }
314