Tribe__Tickets_Plus__Privacy::wooticket_eraser( $email_address, int $page = 1 )
Eraser for Events Ticket Plus WooTicket Attendee Meta Data
Contents
Parameters
- $email_address
-
(Required)
- $page
-
(int) (Optional)
Default value: 1
Return
(array)
Source
File: src/Tribe/Privacy.php
public function wooticket_eraser( $email_address, $page = 1 ) {
$number = 50; // Limit us to avoid timing out
$page = (int) $page;
$messages = array();
$items_removed = false;
$items_retained = false;
// bail if the email is empty or if we don't have WooCommerce
if ( ! class_exists( 'WooCommerce' ) ) {
return array(
'items_removed' => false,
'items_retained' => false,
'messages' => array(),
'done' => true,
);
}
// get the orders of the given email
$order_query = array(
'limit' => $number,
'page' => $page,
'customer' => array( $email_address ),
);
$orders = wc_get_orders( $order_query );
foreach ( $orders as $order ) {
// Find WooTickets for that order
$wootickets = new WP_Query( array(
'post_type' => 'tribe_wooticket',
'meta_key' => '_tribe_wooticket_order',
'meta_value' => $order->get_id(),
'posts_per_page' => -1,
) );
foreach ( $wootickets->posts as $ticket ) {
// Check if the ticket has meta fields
$ticket_meta = get_post_meta( $ticket->ID, '_tribe_tickets_meta', true );
// if it doesn't, we continue with th next one
if ( '' === $ticket_meta ) {
continue;
}
// Delete only the data saved by our plugin.
// The order/products are handled by the Ecommerce vendor
$deleted = delete_post_meta( $ticket->ID, '_tribe_tickets_meta' );
if ( $deleted ) {
$items_removed = true;
} else {
$items_retained = true;
$messages[] = __( 'WooTicket fields information was not removed. A database error may have occurred during deletion.', 'event-tickets-plus' );
}
}
}
// Tell core if we have more elements to work on still
$done = count( $orders ) < $number;
return array(
'items_removed' => $items_removed,
'items_retained' => $items_retained,
'messages' => $messages,
'done' => $done,
);
}
Changelog
| Version | Description |
|---|---|
| 4.8.1 | Introduced. |