first commit
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
<?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 );
|
||||
}
|
||||
Reference in New Issue
Block a user