You are here

function mailchimp_campaign_save_campaign in Mailchimp 7.2

Same name and namespace in other branches
  1. 8 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_save_campaign()
  2. 7.5 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_save_campaign()
  3. 7.3 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_save_campaign()
  4. 7.4 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_save_campaign()
  5. 2.x modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_save_campaign()

Save a campaign in MailChimp and as a Drupal entity.

Parameters

$template:

$options:

null $campaign_id:

Return value

string New or existing campaign ID.

1 call to mailchimp_campaign_save_campaign()
mailchimp_campaign_campaign_form_submit in modules/mailchimp_campaign/mailchimp_campaign.admin.inc
Submit handler for mailchimp_campaign_campaign_form().

File

modules/mailchimp_campaign/mailchimp_campaign.module, line 204

Code

function mailchimp_campaign_save_campaign($template, $options, $campaign_id = NULL) {
  $mcapi = mailchimp_get_api_object();
  $options += array(
    'generate_text' => TRUE,
    'tracking' => array(
      'opens' => TRUE,
      'html_clicks' => TRUE,
      'text_clicks' => TRUE,
    ),
  );

  // convert template to content by running through formatter
  $content = mailchimp_campaign_render_template($template);

  // Save campaign to MailChimp. (Only regular campaigns are supported)
  $is_new = empty($campaign_id);
  if ($is_new) {
    $campaign_id = $mcapi
      ->campaignCreate('regular', $options, $content);
  }
  else {

    // updates must be done one value at a time
    $values = $options += array(
      'content' => $content,
    );
    foreach ($values as $key => $value) {
      $mcapi
        ->campaignUpdate($campaign_id, $key, $value);
    }
  }
  if ($mcapi->errorCode) {

    // Display and log error, if any.
    $message = 'MailChimp error. The campaign was not saved.';
    _mailchimp_campaign_mcapi_error_message($mcapi, $message);
  }
  else {
    drupal_set_message(t('Campaign %name (%cid) was successfully saved.', array(
      '%name' => $options['title'],
      '%cid' => $campaign_id,
    )));

    // save the campaign entity
    $campaign = entity_create('mailchimp_campaign', array(
      'mc_campaign_id' => $campaign_id,
      'template' => $template,
      'is_new' => $is_new,
    ));
    mailchimp_campaign_save($campaign);

    // clear cached data for this campaign
    mailchimp_campaign_get_campaigns(array(
      $campaign_id,
    ), TRUE);
  }
  return $campaign_id;
}