Tribe__Tickets_Plus__Privacy::wooticket_eraser( $email_address, int $page = 1 )

Eraser for Events Ticket Plus WooTicket Attendee Meta Data


Parameters

$email_address

(Required)

$page

(int) (Optional)

Default value: 1


Top ↑

Return

(array)


Top ↑

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,
		);
	}

Top ↑

Changelog

Changelog
Version Description
4.8.1 Introduced.