function mailchimp_campaign_save_campaign in Mailchimp 7.3
Same name and namespace in other branches
- 8 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_save_campaign()
- 7.5 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_save_campaign()
- 7.2 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_save_campaign()
- 7.4 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_save_campaign()
- 2.x modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_save_campaign()
Save a campaign in MailChimp and as a Drupal entity.
Parameters
array $template: Associative array of template content indexed by section IDs.
array $options: Associative array of template values.
array $segment_options: Associative array of list segment options.
string $campaign_id: The ID of the campaign to save, if updating.
Return value
string New or existing campaign ID.
1 call to mailchimp_campaign_save_campaign()
- mailchimp_campaign_campaign_form_submit in modules/
mailchimp_campaign/ includes/ mailchimp_campaign.admin.inc - Submit handler for mailchimp_campaign_campaign_form().
File
- modules/
mailchimp_campaign/ mailchimp_campaign.module, line 294 - Module file for mailchimp_campaign.
Code
function mailchimp_campaign_save_campaign($template, $options, $segment_options = NULL, $campaign_id = NULL) {
$mcapi = mailchimp_get_api_object();
$options += array(
'generate_text' => TRUE,
'tracking' => array(
'opens' => TRUE,
'html_clicks' => TRUE,
'text_clicks' => TRUE,
),
);
// Allow alter of template and options used in campaign
drupal_alter('mailchimp_campaign', $options, $template, $campaign_id);
// Convert template to content by running through formatter.
if (isset($template['html'])) {
$content = mailchimp_campaign_render_template($template);
}
else {
$content = array(
'sections' => mailchimp_campaign_render_template($template),
);
}
// Test for valid list segment, if selected.
if ($segment_options != NULL) {
if (mailchimp_test_list_segment($options['list_id'], $segment_options['saved_segment_id']) === NULL) {
return NULL;
}
}
// Save campaign to MailChimp. (Only regular campaigns are supported).
$is_new = empty($campaign_id);
if ($is_new) {
try {
if (!$mcapi) {
throw new MailchimpException('Cannot create campaign without Mailchimp API. Check API key has been entered.');
}
$result = $mcapi->campaigns
->create('regular', $options, $content, $segment_options);
} catch (Mailchimp_Error $e) {
drupal_set_message($e
->getMessage(), 'error');
watchdog('mailchimp_campaign', 'An error occurred while creating this campaign: @msg', array(
'@msg' => $e
->getMessage(),
), WATCHDOG_ERROR);
return NULL;
}
if (isset($result['status']) && $result['status'] == 'save') {
$campaign_id = $result['id'];
}
}
else {
// Updates must be sent one type at a time.
try {
if (!$mcapi) {
throw new MailchimpException('Cannot update campaign without Mailchimp API. Check API key has been entered.');
}
$mcapi->campaigns
->update($campaign_id, 'options', $options);
$mcapi->campaigns
->update($campaign_id, 'segment_opts', $segment_options);
$mcapi->campaigns
->update($campaign_id, 'content', $content);
} catch (Mailchimp_Error $e) {
drupal_set_message($e
->getMessage(), 'error');
watchdog('mailchimp_campaign', 'An error occurred while updating this campaign: @msg', array(
'@msg' => $e
->getMessage(),
), WATCHDOG_ERROR);
return NULL;
}
}
if (isset($result['status']) && $result['status'] == 'error') {
// Display and log error, if any.
$message = 'MailChimp error. The campaign was not saved.';
_mailchimp_campaign_mcapi_error_message($result, $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;
}