Maileon PHP client  1.3.2
Easily integrate your PHP application with Maileon.
ContactsService.php
1 <?php
2 
10 {
11 
41  function createContact($contact, $syncMode, $src = "",
42  $subscriptionPage = "", $doi = FALSE, $doiPlus = FALSE, $doiMailingKey = "")
43  {
44  $queryParameters = array(
45  'sync_mode' => $syncMode->getCode(),
46  'src' => $src,
47  'subscription_page' => $subscriptionPage,
48  'doi' => ($doi == TRUE) ? "true" : "false",
49  'doiplus' => ($doiPlus == TRUE) ? "true" : "false"
50  );
51 
52 
53  if (!empty(trim($doiMailingKey))) {
54  $queryParameters['doimailing'] = trim($doiMailingKey);
55  }
56 
57  if (isset($contact->permission)) {
58  $queryParameters['permission'] = $contact->permission->getCode();
59  }
60 
61  // The API allows only some of the fields to be submitted
62  $contactToSend = new com_maileon_api_contacts_Contact(null, $contact->email, null, $contact->external_id, null, $contact->standard_fields, $contact->custom_fields);
63 
64  return $this->post("contacts/" . $contactToSend->email, $contactToSend->toXMLString(), $queryParameters);
65  }
66 
97  function createContactByExternalId($contact, $syncMode, $src = "",
98  $subscriptionPage = "", $doi = FALSE, $doiPlus = FALSE, $doiMailingKey = "")
99  {
100  $queryParameters = array(
101  'permission' => $contact->permission->getCode(),
102  'sync_mode' => $syncMode->getCode(),
103  'src' => $src,
104  'subscription_page' => $subscriptionPage,
105  'doi' => ($doi == TRUE) ? "true" : "false",
106  'doiplus' => ($doiPlus == TRUE) ? "true" : "false",
107  'doimailing' => trim($doiMailingKey)
108  );
109 
110  // The API allows only some of the fields to be submitted
111  $contactToSend = new com_maileon_api_contacts_Contact(null, $contact->email, null, $contact->external_id, null, $contact->standard_fields, $contact->custom_fields);
112 
113  return $this->post("contacts/externalid/" . $contactToSend->external_id, $contactToSend->toXMLString(), $queryParameters);
114  }
115 
139  function getContact($contactId, $checksum, $standard_fields = array(), $custom_fields = array(), $ignoreChecksum = false)
140  {
141  $queryParameters = array(
142  'id' => $contactId,
143  'checksum' => $checksum,
144  'standard_field' => $standard_fields,
145  'ignore_checksum' => $ignoreChecksum ? "true" : "false"
146  );
147 
148  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $custom_fields);
149 
150  return $this->get('contacts/contact', $queryParameters);
151  }
152 
162  function getContactsCount()
163  {
164  return $this->get('contacts/count');
165  }
166 
184  function getContacts($page_index = 1, $page_size = 100, $standard_fields = array(), $custom_fields = array())
185  {
186  $queryParameters = array(
187  'page_index' => $page_index,
188  'page_size' => $page_size,
189  'standard_field' => $standard_fields
190  );
191 
192  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $custom_fields);
193 
194  return $this->get('contacts', $queryParameters);
195  }
196 
212  function getContactByEmail($email, $standard_fields = array(), $custom_fields = array())
213  {
214  $queryParameters = array(
215  'standard_field' => $standard_fields
216  );
217 
218  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $custom_fields);
219 
220  return $this->get('contacts/email/' . utf8_encode($email), $queryParameters);
221  }
222 
238  function getContactsByEmail($email, $standard_fields = array(), $custom_fields = array())
239  {
240  $queryParameters = array(
241  'standard_field' => $standard_fields
242  );
243 
244  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $custom_fields);
245 
246  return $this->get('contacts/emails/' . utf8_encode($email), $queryParameters);
247  }
248 
261  function getContactsByExternalId($externalId, $standard_fields = array(), $custom_fields = array())
262  {
263  $queryParameters = array(
264  'standard_field' => $standard_fields
265  );
266 
267  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $custom_fields);
268 
269  return $this->get('contacts/externalid/' . utf8_encode($externalId), $queryParameters);
270  }
271 
284  function getContactsByFilterId($filterId, $page_index = 1, $page_size = 100, $standard_fields = array(), $custom_fields = array())
285  {
286  $queryParameters = array(
287  'page_index' => $page_index,
288  'page_size' => $page_size,
289  'standard_field' => $standard_fields
290  );
291  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $custom_fields);
292  return $this->get('contacts/filter/' . utf8_encode($filterId), $queryParameters);
293  }
294 
305  function getCountContactsByFilterId($filterId)
306  {
307  return $this->get('contacts/filter/' . utf8_encode($filterId) . '/count');
308  }
309 
321  {
322  return $this->get('contacts/filter/' . utf8_encode($filterId) . '/count/active');
323  }
324 
347  function updateContact($contact, $checksum = "", $src = null, $subscriptionPage = null, $triggerDoi = FALSE, $doiMailingKey = null, $ignoreChecksum = false)
348  {
349  $queryParameters = array(
350  'id' => $contact->id,
351  'checksum' => $checksum,
352  'triggerdoi' => ($triggerDoi == TRUE) ? "true" : "false",
353  'ignore_checksum' => $ignoreChecksum ? "true" : "false"
354  );
355 
356  if (isset($contact->permission)) $queryParameters['permission'] = $contact->permission->getCode();
357  if (isset($src)) $queryParameters['src'] = $src;
358  if (isset($subscriptionPage)) $queryParameters['page_key'] = $subscriptionPage;
359  if (!empty(trim($doiMailingKey))) $queryParameters['doimailing'] = trim($doiMailingKey);
360 
361  // The API allows only some of the fields to be submitted
362  $contactToSend = new com_maileon_api_contacts_Contact(null, $contact->email, null, $contact->external_id, null, $contact->standard_fields, $contact->custom_fields);
363 
364  return $this->put("contacts/contact", $contactToSend->toXMLString(), $queryParameters);
365  }
366 
398  function synchronizeContacts($contacts, $permission = null, $syncMode = null, $useExternalId = false, $ignoreInvalidContacts = false, $reimportUnsubscribedContacts = true, $overridePermission = true, $updateOnly = false, $preferMaileonId = false)
399  {
400  $queryParameters = array(
401  'permission' => ($permission == null) ? 1 : $permission->getCode(),
402  'sync_mode' => ($syncMode == null) ? 2 : $syncMode->getCode(),
403  'use_external_id' => ($useExternalId == TRUE) ? "true" : "false",
404  'ignore_invalid_contacts' => ($ignoreInvalidContacts == TRUE) ? "true" : "false",
405  'reimport_unsubscribed_contacts' => ($reimportUnsubscribedContacts == TRUE) ? "true" : "false",
406  'override_permission' => ($overridePermission == TRUE) ? "true" : "false",
407  'update_only' => ($updateOnly == TRUE) ? "true" : "false",
408  'prefer_maileon_id' => ($preferMaileonId == TRUE) ? "true" : "false"
409  );
410 
411  $cleanedContacts = new com_maileon_api_contacts_Contacts();
412  foreach ($contacts as $contact) {
413  $cleanedContact = new com_maileon_api_contacts_Contact($contact->id, $contact->email, null, $contact->external_id, null, $contact->standard_fields, $contact->custom_fields);
414  $cleanedContacts->addContact($cleanedContact);
415  }
416 
417  return $this->post("contacts", $cleanedContacts->toXMLString(), $queryParameters);
418  }
419 
433  function unsubscribeContactByEmail($email, $mailingId = "", $reasons = null)
434  {
435  $queryParameters = array();
436  if (!empty($mailingId)) {
437  $queryParameters['mailingId'] = $mailingId;
438  }
439 
440  if (!empty($reasons)) {
441  if (is_array($reasons)) {
442  $queryParameters = $this->appendArrayFields($queryParameters, 'reason', $reasons);
443  } else {
444  $queryParameters['reason'] = urlencode($reasons);
445  }
446  }
447 
448  $encodedEmail = utf8_encode($email);
449  return $this->delete("contacts/email/${encodedEmail}/unsubscribe", $queryParameters);
450  }
451 
467  function addUnsubscriptionReasonsToUnsubscribedContact($id, $checksum = null, $reasons = null, $ignore_checksum = false)
468  {
469  $queryParameters = array();
470  $queryParameters['id'] = $id;
471  if (!empty($checksum)) {
472  $queryParameters['checksum'] = $checksum;
473  }
474  if ($ignore_checksum===true) $queryParameters['ignore_checksum'] = "true";
475 
476  if (!empty($reasons)) {
477  if (is_array($reasons)) {
478  $queryParameters = $this->appendArrayFields($queryParameters, 'reason', $reasons);
479  } else {
480  $queryParameters['reason'] = urlencode($reasons);
481  }
482  }
483 
484  return $this->put("contacts/contact/unsubscribe/reasons", null, $queryParameters);
485  }
486 
500  function unsubscribeContactById($id, $mailingId = "", $reasons = null)
501  {
502  $queryParameters = array(
503  'id' => $id
504  );
505 
506  if (!empty($mailingId)) {
507  $queryParameters['mailingId'] = $mailingId;
508  }
509  if (!empty($reasons)) {
510  if (is_array($reasons)) {
511  $queryParameters = $this->appendArrayFields($queryParameters, 'reason', $reasons);
512  } else {
513  $queryParameters['reason'] = urlencode($reasons);
514  }
515  }
516 
517  return $this->delete("contacts/contact/unsubscribe", $queryParameters);
518  }
519 
533  function unsubscribeContactByExternalId($externalId, $mailingId = "", $reasons = null)
534  {
535  $queryParameters = array();
536  if (!empty($mailingId)) {
537  $queryParameters['mailingId'] = $mailingId;
538  }
539 
540  if (!empty($reasons)) {
541  if (is_array($reasons)) {
542  $queryParameters = $this->appendArrayFields($queryParameters, 'reason', $reasons);
543  } else {
544  $queryParameters['reason'] = urlencode($reasons);
545  }
546  }
547 
548  $encodedExternalId = utf8_encode($externalId);
549  return $this->delete("contacts/externalid/${encodedExternalId}/unsubscribe", $queryParameters);
550  }
551 
562  function unsubscribeContactByExternalIdFromMultipleAccounts($externalId, $nlAccountIds = array())
563  {
564  $queryParameters = array();
565  $queryParameters = $this->appendArrayFields($queryParameters, "nlaccountid", $nlAccountIds);
566 
567  $encodedExternalId = utf8_encode($externalId);
568  return $this->delete("contacts/externalid/${encodedExternalId}/unsubscribe", $queryParameters);
569  }
570 
592  function getBlockedContacts($standardFields = array(), $customFields = array(), $pageIndex = 1, $pageSize = 1000)
593  {
594  $queryParameters = array(
595  'standard_field' => $standardFields,
596  'page_index' => $pageIndex,
597  'page_size' => $pageSize
598  );
599 
600  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $customFields);
601 
602  return $this->get('contacts/blocked', $queryParameters);
603  }
604 
616  function deleteContact($id)
617  {
618  $queryParameters = array('id' => $id);
619  return $this->delete("contacts/contact", $queryParameters);
620  }
621 
633  function deleteContactByEmail($email)
634  {
635  return $this->delete("contacts/email/" . utf8_encode($email));
636  }
637 
649  function deleteContactsByExternalId($externalId)
650  {
651  return $this->delete("contacts/externalid/" . utf8_encode($externalId));
652  }
653 
663  function deleteAllContacts($authorized = "no")
664  {
665  $queryParameters = array(
666  'authorized' => $authorized
667  );
668  return $this->delete("contacts", $queryParameters);
669  }
670 
684  function createCustomField($name, $type = 'string')
685  {
686  $queryParameters = array('type' => $type);
687  $encodedName = urlencode(mb_convert_encoding($name, "UTF-8"));
688  return $this->post("contacts/fields/custom/${encodedName}", "", $queryParameters);
689  }
690 
700  function getCustomFields()
701  {
702  return $this->get('contacts/fields/custom');
703  }
704 
718  function renameCustomField($oldName, $newName)
719  {
720  $encodedOldName = urlencode(mb_convert_encoding($oldName, "UTF-8"));
721  $encodedNewName = urlencode(mb_convert_encoding($newName, "UTF-8"));
722  return $this->put("contacts/fields/custom/${encodedOldName}/${encodedNewName}");
723  }
724 
736  function deleteCustomField($name)
737  {
738  $encodedName = urlencode(mb_convert_encoding($name, "UTF-8"));
739  return $this->delete("contacts/fields/custom/{$encodedName}");
740  }
741 
753  {
754  $encodedName = urlencode(mb_convert_encoding($name, "UTF-8"));
755  return $this->delete("contacts/fields/standard/{$encodedName}/values");
756  }
757 
768  function deleteCustomFieldValues($name)
769  {
770  $encodedName = urlencode(mb_convert_encoding($name, "UTF-8"));
771  return $this->delete("contacts/fields/custom/{$encodedName}/values");
772  }
773 
774 }
unsubscribeContactByEmail($email, $mailingId="", $reasons=null)
addUnsubscriptionReasonsToUnsubscribedContact($id, $checksum=null, $reasons=null, $ignore_checksum=false)
updateContact($contact, $checksum="", $src=null, $subscriptionPage=null, $triggerDoi=FALSE, $doiMailingKey=null, $ignoreChecksum=false)
getContactsByExternalId($externalId, $standard_fields=array(), $custom_fields=array())
createContactByExternalId($contact, $syncMode, $src="", $subscriptionPage="", $doi=FALSE, $doiPlus=FALSE, $doiMailingKey="")
getContactsByEmail($email, $standard_fields=array(), $custom_fields=array())
synchronizeContacts($contacts, $permission=null, $syncMode=null, $useExternalId=false, $ignoreInvalidContacts=false, $reimportUnsubscribedContacts=true, $overridePermission=true, $updateOnly=false, $preferMaileonId=false)
unsubscribeContactByExternalIdFromMultipleAccounts($externalId, $nlAccountIds=array())
createContact($contact, $syncMode, $src="", $subscriptionPage="", $doi=FALSE, $doiPlus=FALSE, $doiMailingKey="")
getContacts($page_index=1, $page_size=100, $standard_fields=array(), $custom_fields=array())
getContactByEmail($email, $standard_fields=array(), $custom_fields=array())
getContact($contactId, $checksum, $standard_fields=array(), $custom_fields=array(), $ignoreChecksum=false)
getBlockedContacts($standardFields=array(), $customFields=array(), $pageIndex=1, $pageSize=1000)
unsubscribeContactById($id, $mailingId="", $reasons=null)
getContactsByFilterId($filterId, $page_index=1, $page_size=100, $standard_fields=array(), $custom_fields=array())
unsubscribeContactByExternalId($externalId, $mailingId="", $reasons=null)
post($resourcePath, $payload="", $queryParameters=array(), $mimeType= 'application/vnd.maileon.api+xml', $deserializationType=null, $contentType=null, $contentLength=null)
put($resourcePath, $payload="", $queryParameters=array(), $mimeType= 'application/vnd.maileon.api+xml', $deserializationType=null)