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