<?php require_once '../../csrest_subscribers.php'; $wrap = new CS_REST_Subscribers('Your list ID', 'Your API Key'); $result = $wrap->import(array(array('EmailAddress' => 'Subscriber email', 'Name' => 'Subscriber name', 'CustomFields' => array(array('Key' => 'Field Key', 'Value' => 'Field Value'))), array('EmailAddress' => '2nd Subscriber email', 'Name' => '2nd Subscriber name', 'CustomFields' => array(array('Key' => 'Field Key', 'Value' => 'Field Value')))), true); echo "Result of POST /api/v3/subscribers/{list id}/import.{format}\n<br />"; if ($result->was_successful()) { echo "Subscribed with results <pre>"; var_dump($result->response); } else { echo 'Failed with code ' . $result->http_status_code . "\n<br /><pre>"; var_dump($result->response); echo '</pre>'; if ($result->response->ResultData->TotalExistingSubscribers > 0) { echo 'Updated ' . $result->response->ResultData->TotalExistingSubscribers . ' existing subscribers in the list'; } else { if ($result->response->ResultData->TotalNewSubscribers > 0) { echo 'Added ' . $result->response->ResultData->TotalNewSubscribers . ' to the list'; } else { if (count($result->response->ResultData->DuplicateEmailsInSubmission) > 0) { echo $result->response->ResultData->DuplicateEmailsInSubmission . ' were duplicated in the provided array.'; } } } echo 'The following emails failed to import correctly.<pre>'; var_dump($result->response->ResultData->FailureDetails); } echo '</pre>';
/** * Subscribe * * @see https://github.com/campaignmonitor/createsend-php * @see http://www.campaignmonitor.com/api/ * @param string $apiKey * @param string $listId * @param array $subscribers * @return CS_REST_Wrapper_Result */ protected function subscribe($apiKey, $listId, $subscribers) { $auth = array('api_key' => $apiKey); $wrap = new \CS_REST_Subscribers($listId, $auth); $result = $wrap->import($subscribers, true); return $result; }
public static function cmdr_mass_update() { global $cmdr_fields_to_hide; $cmdr_user_fields = (array) unserialize(base64_decode(get_option('cmdr_user_fields'))); if (!class_exists('CS_REST_Lists')) { require_once CMDR_PLUGIN_PATH . 'campaignmonitor-createsend-php/csrest_lists.php'; } if (!class_exists('CS_REST_Subscribers')) { require_once CMDR_PLUGIN_PATH . 'campaignmonitor-createsend-php/csrest_subscribers.php'; } $auth = array('api_key' => get_option('cmdr_api_key')); $wrap_l = new CS_REST_Lists(get_option('cmdr_list_id'), $auth); $wrap_s = new CS_REST_Subscribers(get_option('cmdr_list_id'), $auth); // Update custom fields $missing_fields = $cmdr_user_fields; $result = $wrap_l->get_custom_fields(); if (!$result->was_successful()) { self::$error = $result->response; return false; } if (is_array($result->response)) { foreach ($result->response as $key => $field) { $k = str_replace('[', '', str_replace(']', '', $field->Key)); if (in_array($k, $missing_fields)) { unset($missing_fields[array_search($k, $missing_fields)]); } } } foreach ($missing_fields as $key => $field) { if (!in_array($field, $cmdr_fields_to_hide)) { $result = $wrap_l->create_custom_field(array('FieldName' => $field, 'Key' => $field, 'DataType' => CS_REST_CUSTOM_FIELD_TYPE_TEXT)); if (!$result->was_successful()) { self::$error = $result->response; return false; } } } // Update users $missing_users = array(); $u = get_users(); foreach ($u as $key => $value) { $missing_users[] = $value->user_email; } $result = $wrap_l->get_active_subscribers('', 1, 1000); if (!$result->was_successful()) { self::$error = $result->response; return false; } $i = 2; while (count($result->response->Results)) { if (!empty($result->response->Results) && is_array($result->response->Results)) { foreach ($result->response->Results as $key => $subscriber) { set_time_limit(60); $user = get_user_by('email', $subscriber->EmailAddress); if ($user) { $args = array(); if (trim($user->first_name . ' ' . $user->last_name) != trim($subscriber->Name)) { $args['Name'] = $user->first_name . ' ' . $user->last_name; } $custom_values = array(); foreach ($subscriber->CustomFields as $field) { $k = str_replace('[', '', str_replace(']', '', $field->Key)); $custom_values[$k] = $field->Value; } foreach ($cmdr_user_fields as $key => $field) { if (!in_array($field, $cmdr_fields_to_hide)) { if (empty($custom_values[$field]) || trim($custom_values[$field]) != trim(get_user_meta($user->ID, $field, true))) { // We export scalar values only if (is_scalar(get_user_meta($user->ID, $field, true))) { $args['CustomFields'][] = array('Key' => $field, 'Value' => get_user_meta($user->ID, $field, true)); } else { $args['CustomFields'][] = array('Key' => $field, 'Value' => ''); } } } } if (count($args)) { $result_tmp = $wrap_s->update($user->user_email, $args); if (!$result_tmp->was_successful()) { self::$error = $result_tmp->response; return false; } } } if (in_array($subscriber->EmailAddress, $missing_users)) { unset($missing_users[array_search($subscriber->EmailAddress, $missing_users)]); } } } $result = $wrap_l->get_active_subscribers('', $i, 1000); if (!$result->was_successful()) { self::$error = $result->response; return false; } $i++; } // Get bounced and unsubscribed users $unsubscribed = array(); $result = $wrap_l->get_unsubscribed_subscribers('', 1, 1000); if (!$result->was_successful()) { self::$error = $result->response; return false; } $i = 2; while (count($result->response->Results)) { foreach ($result->response->Results as $key => $subscriber) { $unsubscribed[] = $subscriber->EmailAddress; } $result = $wrap_l->get_unsubscribed_subscribers('', $i, 1000); if (!$result->was_successful()) { self::$error = $result->response; return false; } $i++; } $bounced = array(); $result = $wrap_l->get_bounced_subscribers('', 1, 1000); if (!$result->was_successful()) { self::$error = $result->response; return false; } $i = 2; while (count($result->response->Results)) { foreach ($result->response->Results as $key => $subscriber) { $bounced[] = $subscriber->EmailAddress; } $result = $wrap_l->get_bounced_subscribers('', $i, 1000); if (!$result->was_successful()) { self::$error = $result->response; return false; } $i++; } $subscribers = array(); foreach ($missing_users as $key => $user_email) { if (!in_array($user_email, $unsubscribed) && !in_array($user_email, $bounced)) { // Subscriber does not exist, let's add him $user = get_user_by('email', $user_email); if ($user) { $args = array('EmailAddress' => $user->user_email, 'Name' => $user->first_name . ' ' . $user->last_name, 'CustomFields' => array()); foreach ($cmdr_user_fields as $key => $field) { if (!in_array($field, $cmdr_fields_to_hide)) { // We export scalar values only if (is_scalar(get_user_meta($user->ID, $field, true))) { $args['CustomFields'][] = array('Key' => $field, 'Value' => get_user_meta($user->ID, $field, true)); } else { $args['CustomFields'][] = array('Key' => $field, 'Value' => ''); } } } $subscribers[] = $args; } } } while (count($subscribers)) { set_time_limit(60); $subscribers1000 = array(); for ($i = 0; $i < 1000; $i++) { $subscribers1000[] = array_shift($subscribers); if (!count($subscribers)) { break; } } $result = $wrap_s->import($subscribers1000, true); if (!$result->was_successful()) { self::$error = $result->response; return false; } } return true; }
<?php require_once '../../csrest_subscribers.php'; $auth = array('access_token' => 'your access token', 'refresh_token' => 'your refresh token'); $wrap = new CS_REST_Subscribers('Your list ID', $auth); $result = $wrap->import(array(array('EmailAddress' => 'Subscriber email', 'Name' => 'Subscriber name', 'CustomFields' => array(array('Key' => 'Field 1 Key', 'Value' => 'Field Value'), array('Key' => 'Field 2 Key', 'Value' => 'Field Value'), array('Key' => 'Multi Option Field 1', 'Value' => 'Option 1'), array('Key' => 'Multi Option Field 1', 'Value' => 'Option 2'))), array('EmailAddress' => '2nd Subscriber email', 'Name' => '2nd Subscriber name', 'CustomFields' => array(array('Key' => 'Field 1 Key', 'Value' => 'Field Value'), array('Key' => 'Field 2 Key', 'Value' => 'Field Value'), array('Key' => 'Multi Option Field 1', 'Value' => 'Option 1'), array('Key' => 'Multi Option Field 1', 'Value' => 'Option 2')))), false); echo "Result of POST /api/v3.1/subscribers/{list id}/import.{format}\n<br />"; if ($result->was_successful()) { echo "Subscribed with results <pre>"; var_dump($result->response); } else { echo 'Failed with code ' . $result->http_status_code . "\n<br /><pre>"; var_dump($result->response); echo '</pre>'; if ($result->response->ResultData->TotalExistingSubscribers > 0) { echo 'Updated ' . $result->response->ResultData->TotalExistingSubscribers . ' existing subscribers in the list'; } else { if ($result->response->ResultData->TotalNewSubscribers > 0) { echo 'Added ' . $result->response->ResultData->TotalNewSubscribers . ' to the list'; } else { if (count($result->response->ResultData->DuplicateEmailsInSubmission) > 0) { echo $result->response->ResultData->DuplicateEmailsInSubmission . ' were duplicated in the provided array.'; } } } echo 'The following emails failed to import correctly.<pre>'; var_dump($result->response->ResultData->FailureDetails); } echo '</pre>';