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\Components\Library\File;
  6: use Ctct\Components\Library\FileUploadStatus;
  7: use Ctct\Components\Library\Folder;
  8: use Ctct\Components\ResultSet;
  9: use Ctct\Exceptions\IllegalArgumentException;
 10: use Ctct\Util\Config;
 11: use GuzzleHttp\Exception\ClientException;
 12: use GuzzleHttp\Post\PostBody;
 13: use GuzzleHttp\Post\PostFile;
 14: 
 15: class LibraryService extends BaseService
 16: {
 17:     /**
 18:      * Get files from the Library
 19:      * @param string $accessToken - Constant Contact OAuth2 Access Token
 20:      * @param array $params - associative array of query parameters and values to append to the request.
 21:      *      Allowed parameters include:
 22:      *      limit - Specifies the number of results displayed per page of output, from 1 - 1000, default = 50.
 23:      *      sort_by - Specifies how the list of files is sorted; valid sort options are:
 24:      *                CREATED_DATE, CREATED_DATE_DESC, MODIFIED_DATE, MODIFIED_DATE_DESC, NAME, NAME_DESC, SIZE, SIZE_DESC DIMENSION, DIMENSION_DESC
 25:      *      source - Specifies to retrieve files from a particular source:
 26:      *               ALL, MyComputer, Facebook, Instagram, Shutterstock, Mobile
 27:      *      next - the next link returned from a previous paginated call. May only be used by itself.
 28:      * @return ResultSet
 29:      * @throws CtctException
 30:      */
 31:     public function getLibraryFiles($accessToken, Array $params = array())
 32:     {
 33:         $baseUrl = Config::get('endpoints.base_url') . Config::get('endpoints.library_files');
 34: 
 35:         $request = parent::createBaseRequest($accessToken, 'GET', $baseUrl);
 36:         if ($params) {
 37:             $query = $request->getQuery();
 38:             foreach ($params as $name => $value) {
 39:                 $query->add($name, $value);
 40:             }
 41:         }
 42: 
 43:         try {
 44:             $response = parent::getClient()->send($request);
 45:         } catch (ClientException $e) {
 46:             throw parent::convertException($e);
 47:         }
 48: 
 49:         $body = $response->json();
 50:         $libraryFiles = array();
 51:         foreach ($body['results'] as $file) {
 52:             $libraryFiles[] = File::create($file);
 53:         }
 54: 
 55:         return new ResultSet($libraryFiles, $body['meta']);
 56:     }
 57: 
 58:     /**
 59:      * Get files from the Library in a specific Folder
 60:      * @param string $accessToken - Constant Contact OAuth2 Access Token
 61:      * @param string $folderId - Specified Folder Id
 62:      * @param array $params - associative array of query parameters and values to append to the request.
 63:      *      Allowed parameters include:
 64:      *      limit - Specifies the number of results displayed per page of output, from 1 - 1000, default = 50.
 65:      *      sort_by - Specifies how the list of files is sorted; valid sort options are:
 66:      *                CREATED_DATE, CREATED_DATE_DESC, MODIFIED_DATE, MODIFIED_DATE_DESC, NAME, NAME_DESC, SIZE, SIZE_DESC DIMENSION, DIMENSION_DESC
 67:      *      source - Specifies to retrieve files from a particular source:
 68:      *               ALL, MyComputer, Facebook, Instagram, Shutterstock, Mobile
 69:      *      next - the next link returned from a previous paginated call. May only be used by itself.
 70:      * @return ResultSet
 71:      * @throws CtctException
 72:      */
 73:     public function getLibraryFilesByFolder($accessToken, $folderId, Array $params = array())
 74:     {
 75:         $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.library_files_by_folder'), $folderId);
 76: 
 77:         $request = parent::createBaseRequest($accessToken, 'GET', $baseUrl);
 78:         if ($params) {
 79:             $query = $request->getQuery();
 80:             foreach ($params as $name => $value) {
 81:                 $query->add($name, $value);
 82:             }
 83:         }
 84: 
 85:         try {
 86:             $response = parent::getClient()->send($request);
 87:         } catch (ClientException $e) {
 88:             throw parent::convertException($e);
 89:         }
 90: 
 91:         $body = $response->json();
 92:         $libraryFiles = array();
 93:         foreach ($body['results'] as $file) {
 94:             $libraryFiles[] = File::create($file);
 95:         }
 96: 
 97:         return new ResultSet($libraryFiles, $body['meta']);
 98:     }
 99: 
100:     /**
101:      * Get File by Id
102:      * @param string $accessToken - Constant Contact OAuth2 Access Token
103:      * @param string $fileId - Specified File Id
104:      * @return File
105:      * @throws CtctException
106:      */
107:     public function getLibraryFile($accessToken, $fileId)
108:     {
109:         $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.library_file'), $fileId);
110: 
111:         $request = parent::createBaseRequest($accessToken, 'GET', $baseUrl);
112: 
113:         try {
114:             $response = parent::getClient()->send($request);
115:         } catch (ClientException $e) {
116:             throw parent::convertException($e);
117:         }
118: 
119:         return File::create($response->json());
120:     }
121: 
122:     /**
123:      * Delete a File
124:      * @param string $accessToken - Constant Contact OAuth2 Access Token
125:      * @param string $fileId - Specified File Id
126:      * @return boolean
127:      * @throws CtctException
128:      */
129:     public function deleteLibraryFile($accessToken, $fileId)
130:     {
131:         $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.library_file'), $fileId);
132: 
133:         $request = parent::createBaseRequest($accessToken, 'DELETE', $baseUrl);
134: 
135:         try {
136:             $response = parent::getClient()->send($request);
137:         } catch (ClientException $e) {
138:             throw parent::convertException($e);
139:         }
140: 
141:         return ($response->getStatusCode() == 204) ? true : false;
142:     }
143: 
144:     /**
145:      * Get folders from the Library
146:      * @param string $accessToken - Constant Contact OAuth2 Access Token
147:      * @param array $params - associative array of query parameters and values to append to the request.
148:      *      Allowed parameters include:
149:      *      limit - Specifies the number of results displayed per page of output, from 1 - 1000, default = 50.
150:      *      sort_by - Specifies how the list of files is sorted; valid sort options are:
151:      *                CREATED_DATE, CREATED_DATE_DESC, MODIFIED_DATE, MODIFIED_DATE_DESC, NAME, NAME_DESC
152:      * @return ResultSet
153:      * @throws CtctException
154:      */
155:     public function getLibraryFolders($accessToken, Array $params = array())
156:     {
157:         $baseUrl = Config::get('endpoints.base_url') . Config::get('endpoints.library_folders');
158: 
159:         $request = parent::createBaseRequest($accessToken, 'GET', $baseUrl);
160:         if ($params) {
161:             $query = $request->getQuery();
162:             foreach ($params as $name => $value) {
163:                 $query->add($name, $value);
164:             }
165:         }
166: 
167:         try {
168:             $response = parent::getClient()->send($request);
169:         } catch (ClientException $e) {
170:             throw parent::convertException($e);
171:         }
172: 
173:         $body = $response->json();
174:         $libraryFolders = array();
175:         foreach ($body['results'] as $folder) {
176:             $libraryFolders[] = Folder::create($folder);
177:         }
178: 
179:         return new ResultSet($libraryFolders, $body['meta']);
180:     }
181: 
182:     /**
183:      * Get a specific Folder
184:      * @param string $accessToken - Constant Contact OAuth2 Access Token
185:      * @param string $folderId - ID of the Folder
186:      * @return Folder
187:      * @throws CtctException
188:      */
189:     public function getLibraryFolder($accessToken, $folderId)
190:     {
191:         $baseUrl = Config::get('endpoints.base_url') . Config::get(sprintf('endpoints.library_folder', $folderId));
192: 
193:         $request = parent::createBaseRequest($accessToken, 'GET', $baseUrl);
194: 
195:         try {
196:             $response = parent::getClient()->send($request);
197:         } catch (ClientException $e) {
198:             throw parent::convertException($e);
199:         }
200: 
201:         $body = $response->json();
202:         return Folder::create($body);
203:     }
204: 
205:     /**
206:      * Delete a Library Folder
207:      * @param string $accessToken - Constant Contact OAuth2 Access Token
208:      * @param string $folderId - ID of the Folder
209:      * @return boolean
210:      * @throws CtctException
211:      */
212:     public function deleteLibraryFolder($accessToken, $folderId)
213:     {
214:         $baseUrl = Config::get('endpoints.base_url') . Config::get(sprintf('endpoints.library_folder', $folderId));
215: 
216:         $request = parent::createBaseRequest($accessToken, 'DELETE', $baseUrl);
217: 
218:         try {
219:             $response = parent::getClient()->send($request);
220:         } catch (ClientException $e) {
221:             throw parent::convertException($e);
222:         }
223: 
224:         return ($response->getStatusCode() == 204) ? true : false;
225:     }
226: 
227:     /**
228:      * Upload a file to the Library. Must be one of PNG, JPG, JPEG, GIF, or PDF.
229:      * The server scans files for viruses, so this returns an ID for a FileUploadStatus.
230:      * @param string $accessToken - Constant Contact Oauth2 Access Token
231:      * @param string $fileName - Name of the file
232:      * @param string $fileLocation - Path to the location of the file on the server
233:      * @throws IllegalArgumentException if file type is not one listed in the description
234:      * @param string $description - Description of the file
235:      * @param string $source - Source
236:      * @param string $folderId - Folder ID to upload file to. Set as 0 for no folder.
237:      * @return string File upload status ID
238:      * @throws CtctException
239:      */
240:     public function uploadFile($accessToken, $fileName, $fileLocation, $description, $source, $folderId)
241:     {
242:         $finfo = finfo_open(FILEINFO_MIME_TYPE);
243:         $mime =  finfo_file($finfo, $fileLocation);
244:         finfo_close($finfo);
245: 
246:         if ($mime == "image/png") {
247:             $fileType = "PNG";
248:         } elseif ($mime = "image/jpeg") {
249:             $fileType = "JPG";
250:         } elseif ($mime = "image/gif") {
251:             $fileType = "GIF";
252:         } elseif ($mime ="application/pdf") {
253:             $fileType = "PDF";
254:         } else {
255:             throw new IllegalArgumentException(sprintf(Config::get('errors.file_extension'), "PNG, JPG, JPEG, GIF, PDF was " . $mime));
256:         }
257: 
258:         $baseUrl = Config::get('endpoints.base_url') . Config::get('endpoints.library_files');
259:         $request = parent::createBaseRequest($accessToken, "POST", $baseUrl);
260:         $request->setHeader("Content-Type", "multipart/form-data");
261: 
262:         $body = new PostBody();
263:         $body->setField("folderId", $folderId);
264:         $body->setField("file_name", $fileName);
265:         $body->setField("file_type", $fileType);
266:         $body->setField("description", $description);
267:         $body->setField("source", $source);
268:         $body->addFile(new PostFile("data", fopen($fileLocation, 'r'), $fileName));
269:         $request->setBody($body);
270: 
271:         try {
272:             $response = parent::getClient()->send($request);
273:         } catch (ClientException $e) {
274:             throw parent::convertException($e);
275:         }
276: 
277:         return $response->getHeader("Id");
278:     }
279: 
280:     /**
281:      * Get the status of a File upload
282:      * @param string $accessToken - Constant Contact OAuth2 token
283:      * @param string $uploadStatusIds - Single ID or ID's of statuses to check, separated by commas (no spaces)
284:      * @return FileUploadStatus[] - Array of FileUploadStatus
285:      * @throws CtctException
286:      */
287:     public function getFileUploadStatus($accessToken, $uploadStatusIds)
288:     {
289:         $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.library_file_upload_status'), $uploadStatusIds);
290:         $request = parent::createBaseRequest($accessToken, "GET", $baseUrl);
291: 
292:         try {
293:             $response = parent::getClient()->send($request);
294:         } catch (ClientException $e) {
295:             throw parent::convertException($e);
296:         }
297: 
298:         $fileUploadStatuses = array();
299:         foreach ($response->json() as $fileUploadStatus) {
300:             $fileUploadStatuses[] = FileUploadStatus::create($fileUploadStatus);
301:         }
302:         return $fileUploadStatuses;
303:     }
304: }
API documentation generated by ApiGen