Overview

Namespaces

  • Ctct
    • Auth
    • Components
      • Account
      • Activities
      • Contacts
      • EmailMarketing
      • Library
      • Tracking
    • Exceptions
    • Services
    • Util
    • WebHooks

Classes

  • Ctct\Auth\CtctOAuth2
  • Ctct\Auth\SessionDataStore
  • Ctct\Components\Account\AccountInfo
  • Ctct\Components\Account\VerifiedEmailAddress
  • Ctct\Components\Activities\Activity
  • Ctct\Components\Activities\ActivityError
  • Ctct\Components\Activities\AddContacts
  • Ctct\Components\Activities\AddContactsImportData
  • Ctct\Components\Activities\ExportContacts
  • Ctct\Components\Component
  • Ctct\Components\Contacts\Address
  • Ctct\Components\Contacts\Contact
  • Ctct\Components\Contacts\ContactList
  • Ctct\Components\Contacts\CustomField
  • Ctct\Components\Contacts\EmailAddress
  • Ctct\Components\Contacts\Note
  • Ctct\Components\EmailMarketing\Campaign
  • Ctct\Components\EmailMarketing\ClickThroughDetails
  • Ctct\Components\EmailMarketing\MessageFooter
  • Ctct\Components\EmailMarketing\Schedule
  • Ctct\Components\EmailMarketing\TestSend
  • Ctct\Components\Library\File
  • Ctct\Components\Library\FileUploadStatus
  • Ctct\Components\Library\Folder
  • Ctct\Components\Library\Thumbnail
  • Ctct\Components\ResultSet
  • Ctct\Components\Tracking\BounceActivity
  • Ctct\Components\Tracking\ClickActivity
  • Ctct\Components\Tracking\ForwardActivity
  • Ctct\Components\Tracking\OpenActivity
  • Ctct\Components\Tracking\SendActivity
  • Ctct\Components\Tracking\TrackingActivity
  • Ctct\Components\Tracking\TrackingSummary
  • Ctct\Components\Tracking\UnsubscribeActivity
  • Ctct\ConstantContact
  • Ctct\Services\AccountService
  • Ctct\Services\ActivityService
  • Ctct\Services\BaseService
  • Ctct\Services\CampaignScheduleService
  • Ctct\Services\CampaignTrackingService
  • Ctct\Services\ContactService
  • Ctct\Services\ContactTrackingService
  • Ctct\Services\EmailMarketingService
  • Ctct\Services\LibraryService
  • Ctct\Services\ListService
  • Ctct\SplClassLoader
  • Ctct\Util\Config
  • Ctct\WebHooks\CTCTWebhookUtil

Interfaces

  • Ctct\Auth\CtctDataStore

Exceptions

  • Ctct\Exceptions\CtctException
  • Ctct\Exceptions\IllegalArgumentException
  • Ctct\Exceptions\OAuth2Exception
  • Overview
  • Namespace
  • Class
  1: <?php
  2: namespace Ctct\Services;
  3: 
  4: use Ctct\Exceptions\CtctException;
  5: use Ctct\Util\Config;
  6: use Ctct\Components\EmailMarketing\Campaign;
  7: use Ctct\Components\ResultSet;
  8: use GuzzleHttp\Exception\ClientException;
  9: use GuzzleHttp\Stream\Stream;
 10: 
 11: /**
 12:  * Performs all actions pertaining to Constant Contact Campaigns
 13:  *
 14:  * @package Services
 15:  * @author Constant Contact
 16:  */
 17: class EmailMarketingService extends BaseService
 18: {
 19:     /**
 20:      * Create a new campaign
 21:      * @param string $accessToken - Constant Contact OAuth2 access token
 22:      * @param Campaign $campaign - Campaign to be created
 23:      * @return Campaign
 24:      * @throws CtctException
 25:      */
 26:     public function addCampaign($accessToken, Campaign $campaign)
 27:     {
 28:         $baseUrl = Config::get('endpoints.base_url') . Config::get('endpoints.campaigns');
 29:         if ($campaign->message_footer == null) {
 30:             // API doesn't work well with a null message footer, so omit it entirely.
 31:             unset($campaign->message_footer);
 32:         }
 33: 
 34:         $request = parent::createBaseRequest($accessToken, 'POST', $baseUrl);
 35:         $stream = Stream::factory(json_encode($campaign));
 36:         $request->setBody($stream);
 37: 
 38:         try {
 39:             $response = parent::getClient()->send($request);
 40:         } catch (ClientException $e) {
 41:             throw parent::convertException($e);
 42:         }
 43: 
 44:         return Campaign::create($response->json());
 45:     }
 46: 
 47:     /**
 48:      * Get a set of campaigns
 49:      * @param string $accessToken - Constant Contact OAuth2 access token
 50:      * @param array $params - associative array of query parameters and values to append to the request.
 51:      *      Allowed parameters include:
 52:      *      limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
 53:      *      modified_since - ISO-8601 formatted timestamp.
 54:      *      next - the next link returned from a previous paginated call. May only be used by itself.
 55:      * @return ResultSet
 56:      * @throws CtctException
 57:      */
 58:     public function getCampaigns($accessToken, Array $params = array())
 59:     {
 60:         $baseUrl = Config::get('endpoints.base_url') . Config::get('endpoints.campaigns');
 61: 
 62:         $request = parent::createBaseRequest($accessToken, 'GET', $baseUrl);
 63:         if ($params) {
 64:             $query = $request->getQuery();
 65:             foreach ($params as $name => $value) {
 66:                 $query->add($name, $value);
 67:             }
 68:         }
 69: 
 70:         try {
 71:             $response = parent::getClient()->send($request);
 72:         } catch (ClientException $e) {
 73:             throw parent::convertException($e);
 74:         }
 75: 
 76:         $body = $response->json();
 77:         $campaigns = array();
 78:         foreach ($body['results'] as $contact) {
 79:             $campaigns[] = Campaign::createSummary($contact);
 80:         }
 81: 
 82:         return new ResultSet($campaigns, $body['meta']);
 83:     }
 84: 
 85:     /**
 86:      * Get campaign details for a specific campaign
 87:      * @param string $accessToken - Constant Contact OAuth2 access token
 88:      * @param int $campaign_id - Valid campaign id
 89:      * @return Campaign
 90:      * @throws CtctException
 91:      */
 92:     public function getCampaign($accessToken, $campaign_id)
 93:     {
 94:         $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.campaign'), $campaign_id);
 95: 
 96:         $request = parent::createBaseRequest($accessToken, 'GET', $baseUrl);
 97: 
 98:         try {
 99:             $response = parent::getClient()->send($request);
100:         } catch (ClientException $e) {
101:             throw parent::convertException($e);
102:         }
103: 
104:         return Campaign::create($response->json());
105:     }
106: 
107:     /**
108:      * Delete an email campaign
109:      * @param string $accessToken - Constant Contact OAuth2 access token
110:      * @param int $campaign_id - Valid campaign id
111:      * @return boolean
112:      * @throws CtctException
113:      */
114:     public function deleteCampaign($accessToken, $campaign_id)
115:     {
116:         $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.campaign'), $campaign_id);
117: 
118:         $request = parent::createBaseRequest($accessToken, 'DELETE', $baseUrl);
119: 
120:         try {
121:             $response = parent::getClient()->send($request);
122:         } catch (ClientException $e) {
123:             throw parent::convertException($e);
124:         }
125: 
126:         return ($response->getStatusCode() == 204) ? true : false;
127:     }
128: 
129:     /**
130:      * Update a specific email campaign
131:      * @param string $accessToken - Constant Contact OAuth2 access token
132:      * @param Campaign $campaign - Campaign to be updated
133:      * @return Campaign
134:      * @throws CtctException
135:      */
136:     public function updateCampaign($accessToken, Campaign $campaign)
137:     {
138:         $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.campaign'), $campaign->id);
139: 
140:         $request = parent::createBaseRequest($accessToken, 'PUT', $baseUrl);
141:         $stream = Stream::factory(json_encode($campaign));
142:         $request->setBody($stream);
143: 
144:         try {
145:             $response = parent::getClient()->send($request);
146:         } catch (ClientException $e) {
147:             throw parent::convertException($e);
148:         }
149: 
150:         return Campaign::create($response->json());
151:     }
152: }
153: 
API documentation generated by ApiGen