<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing

namespace MailPoet\Config;

if (!defined('ABSPATH')) exit;


use MailPoet\DI\ContainerWrapper;
use MailPoet\Subscribers\SubscriberPersonalDataEraser;
use MailPoet\WooCommerce\OrderAttributionPrivacy;
use MailPoet\WP\Functions as WPFunctions;

class PersonalDataErasers {
  public function init() {
    // WordPress runs erasers sequentially in registration order. The attribution
    // eraser looks the subscriber up by email, so it must run before the
    // subscriber eraser anonymizes that email.
    WPFunctions::get()->addFilter('wp_privacy_personal_data_erasers', [$this, 'registerWooCommerceOrderAttributionEraser']);
    WPFunctions::get()->addFilter('wp_privacy_personal_data_erasers', [$this, 'registerSubscriberEraser']);
  }

  public function registerSubscriberEraser($erasers) {
    $erasers['mailpet-subscriber'] = [
      'eraser_friendly_name' => __('MailPoet Subscribers', 'mailpoet'),
      'callback' => [ContainerWrapper::getInstance()->get(SubscriberPersonalDataEraser::class), 'erase'],
    ];

    return $erasers;
  }

  public function registerWooCommerceOrderAttributionEraser($erasers) {
    $erasers['mailpoet-woocommerce-order-attribution'] = [
      'eraser_friendly_name' => __('MailPoet WooCommerce Order Attribution', 'mailpoet'),
      'callback' => [ContainerWrapper::getInstance()->get(OrderAttributionPrivacy::class), 'erase'],
    ];

    return $erasers;
  }
}