OwlCyberSecurity - MANAGER
Edit File: class-personal-data-exporter.php
<?php /** * Class MC4WP_Exporter */ class MC4WP_Personal_Data_Exporter { /** * Registers the personal data exporter for comments. * * @param array[] $exporters An array of personal data exporters. * @return array[] An array of personal data exporters. */ public static function add_mailchimp_to_privacy_export($exporters) { $exporters['mailchimp-subscriptions'] = [ 'exporter_friendly_name' => __('Mailchimp Subscriptions'), 'callback' => [self::class, 'get_mailchimp_subscription_data'] ]; return $exporters; } /** * Retrieves the Mailchimp subscription data for a given email address. * * This method uses the Mailchimp for WordPress (MC4WP) API to search for members based on the provided * email address and returns a list of Mailchimp lists the user is subscribed to, if any. * * @param string $email_address The email address of the user to search for. * * @return array An array containing the user's Mailchimp subscription data: * - 'data' (array): The subscription information, including: * - 'group_id' (string): The group identifier for Mailchimp. * - 'group_label' (string): The label for the group ('Mailchimp Subscriptions'). * - 'item_id' (string): The item identifier ('mailchimp-subscriptions'). * - 'data' (array): The subscription details, with: * - 'name' (string): The label ('Mailchimp List'). * - 'value' (string): A comma-separated list of Mailchimp lists the user is subscribed to. * - 'done' (bool): Indicates the completion of the process (always true). */ public static function get_mailchimp_subscription_data($email_address) { $api = mc4wp_get_api_v3(); $client = $api->get_client(); $data = $client->get('search-members?query=' . urlencode($email_address)); // Parse the API response to get the lists the user is subscribed to. $subscribed_lists = []; $data_to_export = []; if (!empty($data->exact_matches->members)) { $lists = $api->get_lists(); foreach ($data->exact_matches->members as $member) { // Fetch the user's subscribed lists. if (isset($member->list_id)) { foreach ($lists as $list) { if ($list->id == $member->list_id) { $subscribed_lists[] = $list->name; continue; } } } } } if ($subscribed_lists) { $data_to_export[] = [ 'group_id' => 'mailchimp', 'group_label' => __('Mailchimp Subscriptions', 'mailchimp-for-wp'), 'item_id' => 'mailchimp-subscriptions', 'data' => [ [ 'name' => __('Mailchimp Lists', 'mailchimp-for-wp'), 'value' => implode(', ', $subscribed_lists), ] ] ]; } return [ 'data' => $data_to_export, 'done' => true, ]; } }