<?php defined('ABSPATH') or exit; /** * @ignore * @return object */ function _mc4wp_400_find_grouping_for_interest_category($groupings, $interest_category) { foreach ($groupings as $grouping) { // cast to stdClass because of missing class $grouping = (object) (array) $grouping; if ($grouping->name === $interest_category->title) { return $grouping; } } return null; } /** * @ignore * @return object */ function _mc4wp_400_find_group_for_interest($groups, $interest) { foreach ($groups as $group_id => $group_name) { if ($group_name === $interest->name) { return (object) array( 'name' => $group_name, 'id' => $group_id, ); } } return null; } // in case the migration is _very_ late to the party if (! class_exists('MC4WP_API_V3')) { return; } $options = get_option('mc4wp', array()); if (empty($options['api_key'])) { return; } // get current state from transient $lists = get_transient('mc4wp_mailchimp_lists_fallback'); if (empty($lists)) { return; } @set_time_limit(600); $api_v3 = new MC4WP_API_V3($options['api_key']); $map = array(); foreach ($lists as $list) { // cast to stdClass because of missing classes $list = (object) (array) $list; // no groupings? easy! if (empty($list->groupings)) { continue; } // fetch (new) interest categories for this list try { $interest_categories = $api_v3->get_list_interest_categories($list->id); } catch (MC4WP_API_Exception $e) { continue; } foreach ($interest_categories as $interest_category) { // compare interest title with grouping name, if it matches, get new id. $grouping = _mc4wp_400_find_grouping_for_interest_category($list->groupings, $interest_category); if (! $grouping) { continue; } $groups = array(); try { $interests = $api_v3->get_list_interest_category_interests($list->id, $interest_category->id); } catch (MC4WP_API_Exception $e) { continue; } foreach ($interests as $interest) { $group = _mc4wp_400_find_group_for_interest($grouping->groups, $interest); if ($group) { $groups[ $group->id ] = $interest->id; $groups[ $group->name ] = $interest->id; } } $map[ (string) $grouping->id ] = array( 'id' => $interest_category->id, 'groups' => $groups, ); } } if (! empty($map)) { update_option('mc4wp_groupings_map', $map); }