__('Adverships Affiliate', 'adverships-affiliate'), 'callback' => array($this, 'export'), ); return $exporters; } public function register_eraser($erasers) { $erasers['adverships-affiliate'] = array( 'eraser_friendly_name' => __('Adverships Affiliate', 'adverships-affiliate'), 'callback' => array($this, 'erase'), ); return $erasers; } /** * Export the affiliate attribution stored on this customer's orders. */ public function export($email_address, $page = 1) { $items = array(); if (function_exists('wc_get_orders')) { $orders = wc_get_orders(array( 'billing_email' => $email_address, 'limit' => 50, 'paged' => max(1, (int) $page), )); foreach ($orders as $order) { $t = (string) $order->get_meta('_adverships_t'); if ($t === '') { continue; } $items[] = array( 'group_id' => 'adverships_affiliate', 'group_label' => __('Adverships affiliate attribution', 'adverships-affiliate'), 'item_id' => 'order-' . $order->get_id(), 'data' => array( array('name' => __('Order', 'adverships-affiliate'), 'value' => $order->get_order_number()), array('name' => __('Affiliate code', 'adverships-affiliate'), 'value' => $t), ), ); } } return array('data' => $items, 'done' => true); } /** * Erase the affiliate attribution meta from this customer's orders. */ public function erase($email_address, $page = 1) { $removed = false; if (function_exists('wc_get_orders')) { $orders = wc_get_orders(array( 'billing_email' => $email_address, 'limit' => 50, 'paged' => max(1, (int) $page), )); foreach ($orders as $order) { $had = false; foreach (array('_adverships_t', '_adverships_d', '_adverships_cid', '_adverships_landing') as $key) { if ($order->get_meta($key) !== '') { $order->delete_meta_data($key); $had = true; } } if ($had) { $order->save(); $removed = true; } } } return array( 'items_removed' => $removed, 'items_retained' => false, 'messages' => array(), 'done' => true, ); } }