How can I get user import to hook into the mailchimp module to opt-in imported users in my mailchimp database?

/**
 * Submit handler to add users to lists when editing/creating a user
 */
function mailchimp_user_profile_submit($form, &$form_state) {
  if ($q = _mailchimp_get_api_object()) {
    $account = new stdClass();
    if (arg(0) == 'user' && is_numeric(arg(1))) {
      $account = user_load(array('uid' => arg(1)));
    }
    else {
      $account = $form_state['user'];
    }

    $lists = _mailchimp_get_available_lists($account);
    foreach ($lists as $list) {
    // ignore required lists, they are handled via hook_user
      if ($list->listtype !== MAILCHIMP_LISTTYPE_REQUIRED) {
        $is_subscribed = _mailchimp_is_subscribed($list->id, $account->mail, $q);
        $ret = TRUE;
        $selected = @$form_state['values']['mailchimp_list_'. $list->id];

        // unsubscribe a subscribed user who unchecked the box for this newsletter
        if ($is_subscribed && !$selected) {
          $ret = _mailchimp_unsubscribe_user($list, $account->mail, TRUE, $q);
        }
        else if ($selected) {
        // subscribe the user if they are not previously subscribed or update existing subscriptions
          $merge_vars = _mailchimp_load_user_list_mergevars($account->uid, $list->id, $q->listMergeVars($list->id));
          $merge_vars['EMAIL'] = $form_state['values']['mail'];
          if (!empty($form_state['values']['mailchimp_list_'. $list->id .'_INTERESTS'])){
            $merge_vars['INTERESTS'] = implode(',', array_filter($form_state['values']['mailchimp_list_'. $list->id .'_INTERESTS']));
          }
          $ret = _mailchimp_subscribe_user($list, $account->mail, $merge_vars, TRUE, $q);
        }
 
        if (!$ret) {
          watchdog('mailchimp', $q->errorMessage, array(), WATCHDOG_ERROR);
        }
      }
    }
  }
}

Comments

gisle’s picture

Status: Active » Closed (outdated)