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