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-delete-test-transactions.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-delete-test-transactions.php
289 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, 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_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 ) );
140 Give_Cache::delete( Give_Cache::get_key( 'give_estimated_monthly_stats' ) );
141
142 $this->delete_data( 'give_temp_delete_test_ids' );
143
144 // Reset the sequential order numbers
145 if ( give_get_option( 'enable_sequential' ) ) {
146 delete_option( 'give_last_payment_number' );
147 }
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( 'give_tools_reset_stats_total_args', array(
193 'post_status' => 'any',
194 'number' => - 1,
195 'meta_key' => '_give_payment_mode',
196 'meta_value' => 'test'
197 ) );
198
199 $posts = new Give_Payments_Query( $args );
200 $payments = $posts->get_payments();
201
202 /* @var Give_Payment $payment */
203 foreach ( $payments as $payment ) {
204 $items[] = array(
205 'id' => (int) $payment->ID,
206 'type' => 'give_payment',
207 );
208 }
209
210 // Allow filtering of items to remove with an unassociative array for each item.
211 // The array contains the unique ID of the item, and a 'type' for you to use in the execution of the get_data method.
212 $items = apply_filters( 'give_delete_test_items', $items );
213
214 $this->store_data( 'give_temp_delete_test_ids', $items );
215 }
216
217 }
218
219 /**
220 * Given a key, get the information from the Database Directly
221 *
222 * @since 1.5
223 *
224 * @param string $key The option_name
225 *
226 * @return mixed Returns the data from the database
227 */
228 private function get_stored_data( $key ) {
229 global $wpdb;
230 $value = $wpdb->get_var( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = '%s'", $key ) );
231
232 if ( empty( $value ) ) {
233 return false;
234 }
235
236 $maybe_json = json_decode( $value );
237 if ( ! is_null( $maybe_json ) ) {
238 $value = json_decode( $value, true );
239 }
240
241 return $value;
242 }
243
244 /**
245 * Give a key, store the value
246 *
247 * @since 1.5
248 *
249 * @param string $key The option_name
250 * @param mixed $value The value to store
251 *
252 * @return void
253 */
254 private function store_data( $key, $value ) {
255 global $wpdb;
256
257 $value = is_array( $value ) ? wp_json_encode( $value ) : esc_attr( $value );
258
259 $data = array(
260 'option_name' => $key,
261 'option_value' => $value,
262 'autoload' => 'no',
263 );
264
265 $formats = array(
266 '%s',
267 '%s',
268 '%s',
269 );
270
271 $wpdb->replace( $wpdb->options, $data, $formats );
272 }
273
274 /**
275 * Delete an option
276 *
277 * @since 1.5
278 *
279 * @param string $key The option_name to delete
280 *
281 * @return void
282 */
283 private function delete_data( $key ) {
284 global $wpdb;
285 $wpdb->delete( $wpdb->options, array( 'option_name' => $key ) );
286 }
287
288 }
289