Пример #1
0
<?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;
 }
Пример #4
0
<?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>';