Maileon PHP client  1.5.5
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' => urlencode($src),
47  'subscription_page' => urlencode($subscriptionPage),
48  'doi' => ($doi == TRUE) ? "true" : "false",
49  'doiplus' => ($doiPlus == TRUE) ? "true" : "false"
50  );
51 
52 
53  // As empty does not work with return values (sometimes?), first trim the variable, then check it
54  $doiMailingKey = trim($doiMailingKey);
55  if (!empty($doiMailingKey)) {
56  $queryParameters['doimailing'] = $doiMailingKey;
57  }
58 
59  if (isset($contact->permission)) {
60  $queryParameters['permission'] = $contact->permission->getCode();
61  }
62 
63  // The API allows only some of the fields to be submitted
64  $contactToSend = new com_maileon_api_contacts_Contact(null, $contact->email, null, $contact->external_id, null, $contact->standard_fields, $contact->custom_fields);
65 
66  return $this->post("contacts/email/" . $contactToSend->email, $contactToSend->toXMLString(), $queryParameters);
67  }
68 
99  function createContactByExternalId($contact, $syncMode, $src = "",
100  $subscriptionPage = "", $doi = FALSE, $doiPlus = FALSE, $doiMailingKey = "")
101  {
102  $queryParameters = array(
103  'permission' => $contact->permission->getCode(),
104  'sync_mode' => $syncMode->getCode(),
105  'src' => urlencode($src),
106  'subscription_page' => urlencode($subscriptionPage),
107  'doi' => ($doi == TRUE) ? "true" : "false",
108  'doiplus' => ($doiPlus == TRUE) ? "true" : "false",
109  'doimailing' => trim($doiMailingKey)
110  );
111 
112  // The API allows only some of the fields to be submitted
113  $contactToSend = new com_maileon_api_contacts_Contact(null, $contact->email, null, $contact->external_id, null, $contact->standard_fields, $contact->custom_fields);
114 
115  return $this->post("contacts/externalid/" . $contactToSend->external_id, $contactToSend->toXMLString(), $queryParameters);
116  }
117 
141  function getContact($contactId, $checksum, $standard_fields = array(), $custom_fields = array(), $ignoreChecksum = false)
142  {
143  $queryParameters = array(
144  'id' => $contactId,
145  'checksum' => $checksum,
146  'standard_field' => $standard_fields,
147  'ignore_checksum' => $ignoreChecksum ? "true" : "false"
148  );
149 
150  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $custom_fields);
151 
152  return $this->get('contacts/contact', $queryParameters);
153  }
154 
164  function getContactsCount()
165  {
166  return $this->get('contacts/count');
167  }
168 
186  function getContacts($page_index = 1, $page_size = 100, $standard_fields = array(), $custom_fields = array())
187  {
188  $queryParameters = array(
189  'page_index' => $page_index,
190  'page_size' => $page_size,
191  'standard_field' => $standard_fields
192  );
193 
194  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $custom_fields);
195 
196  return $this->get('contacts', $queryParameters);
197  }
198 
214  function getContactByEmail($email, $standard_fields = array(), $custom_fields = array())
215  {
216  $queryParameters = array(
217  'standard_field' => $standard_fields
218  );
219 
220  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $custom_fields);
221 
222  return $this->get('contacts/email/' . utf8_encode($email), $queryParameters);
223  }
224 
240  function getContactsByEmail($email, $standard_fields = array(), $custom_fields = array())
241  {
242  $queryParameters = array(
243  'standard_field' => $standard_fields
244  );
245 
246  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $custom_fields);
247 
248  return $this->get('contacts/emails/' . utf8_encode($email), $queryParameters);
249  }
250 
263  function getContactsByExternalId($externalId, $standard_fields = array(), $custom_fields = array())
264  {
265  $queryParameters = array(
266  'standard_field' => $standard_fields
267  );
268 
269  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $custom_fields);
270 
271  return $this->get('contacts/externalid/' . utf8_encode($externalId), $queryParameters);
272  }
273 
286  function getContactsByFilterId($filterId, $page_index = 1, $page_size = 100, $standard_fields = array(), $custom_fields = array())
287  {
288  $queryParameters = array(
289  'page_index' => $page_index,
290  'page_size' => $page_size,
291  'standard_field' => $standard_fields
292  );
293  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $custom_fields);
294  return $this->get('contacts/filter/' . utf8_encode($filterId), $queryParameters);
295  }
296 
307  function getCountContactsByFilterId($filterId)
308  {
309  return $this->get('contacts/filter/' . utf8_encode($filterId) . '/count');
310  }
311 
323  {
324  return $this->get('contacts/filter/' . utf8_encode($filterId) . '/count/active');
325  }
326 
349  function updateContact($contact, $checksum = "", $src = null, $subscriptionPage = null, $triggerDoi = FALSE, $doiMailingKey = null, $ignoreChecksum = false)
350  {
351  $queryParameters = array(
352  'id' => $contact->id,
353  'checksum' => $checksum,
354  'triggerdoi' => ($triggerDoi == TRUE) ? "true" : "false",
355  'ignore_checksum' => $ignoreChecksum ? "true" : "false"
356  );
357 
358  if (isset($contact->permission)) $queryParameters['permission'] = $contact->permission->getCode();
359  if (isset($src)) $queryParameters['src'] = $src;
360  if (isset($subscriptionPage)) $queryParameters['page_key'] = $subscriptionPage;
361  $doiMailingKey = trim($doiMailingKey);
362  if (!empty($doiMailingKey)) $queryParameters['doimailing'] = $doiMailingKey;
363 
364  // The API allows only some of the fields to be submitted
365  $contactToSend = new com_maileon_api_contacts_Contact(null, $contact->email, null, $contact->external_id, null, $contact->standard_fields, $contact->custom_fields);
366 
367  return $this->put("contacts/contact", $contactToSend->toXMLString(), $queryParameters);
368  }
369 
401  function synchronizeContacts($contacts, $permission = null, $syncMode = null, $useExternalId = false, $ignoreInvalidContacts = false, $reimportUnsubscribedContacts = true, $overridePermission = true, $updateOnly = false, $preferMaileonId = false)
402  {
403  $queryParameters = array(
404  'permission' => ($permission == null) ? 1 : $permission->getCode(),
405  'sync_mode' => ($syncMode == null) ? 2 : $syncMode->getCode(),
406  'use_external_id' => ($useExternalId == TRUE) ? "true" : "false",
407  'ignore_invalid_contacts' => ($ignoreInvalidContacts == TRUE) ? "true" : "false",
408  'reimport_unsubscribed_contacts' => ($reimportUnsubscribedContacts == TRUE) ? "true" : "false",
409  'override_permission' => ($overridePermission == TRUE) ? "true" : "false",
410  'update_only' => ($updateOnly == TRUE) ? "true" : "false",
411  'prefer_maileon_id' => ($preferMaileonId == TRUE) ? "true" : "false"
412  );
413 
414  $cleanedContacts = new com_maileon_api_contacts_Contacts();
415  foreach ($contacts as $contact) {
416  $cleanedContact = new com_maileon_api_contacts_Contact($contact->id, $contact->email, null, $contact->external_id, null, $contact->standard_fields, $contact->custom_fields);
417  $cleanedContacts->addContact($cleanedContact);
418  }
419 
420  return $this->post("contacts", $cleanedContacts->toXMLString(), $queryParameters);
421  }
422 
437  function unsubscribeContactByEmail($email, $mailingId = "", $reasons = null, $nlAccountIds = array())
438  {
439  $queryParameters = array();
440  if (!empty($mailingId)) {
441  $queryParameters['mailingId'] = $mailingId;
442  }
443 
444  if (!empty($reasons)) {
445  if (is_array($reasons)) {
446  $queryParameters = $this->appendArrayFields($queryParameters, 'reason', $reasons);
447  } else {
448  $queryParameters['reason'] = urlencode($reasons);
449  }
450  }
451 
452  if (!empty($nlAccountIds)) {
453  if (is_array($nlAccountIds)) {
454  $queryParameters = $this->appendArrayFields($queryParameters, 'nlaccountid', $nlAccountIds);
455  } else {
456  $queryParameters['nlaccountid'] = urlencode($nlAccountIds);
457  }
458  }
459 
460  $queryParameters = $this->appendArrayFields($queryParameters, "nlaccountid", $nlAccountIds);
461 
462  $encodedEmail = utf8_encode($email);
463  return $this->delete("contacts/email/${encodedEmail}/unsubscribe", $queryParameters);
464  }
465 
481  function addUnsubscriptionReasonsToUnsubscribedContact($id, $checksum = null, $reasons = null, $ignore_checksum = false)
482  {
483  $queryParameters = array();
484  $queryParameters['id'] = $id;
485  if (!empty($checksum)) {
486  $queryParameters['checksum'] = $checksum;
487  }
488  if ($ignore_checksum===true) $queryParameters['ignore_checksum'] = "true";
489 
490  if (!empty($reasons)) {
491  if (is_array($reasons)) {
492  $queryParameters = $this->appendArrayFields($queryParameters, 'reason', $reasons);
493  } else {
494  $queryParameters['reason'] = urlencode($reasons);
495  }
496  }
497 
498  return $this->put("contacts/contact/unsubscribe/reasons", null, $queryParameters);
499  }
500 
514  function unsubscribeContactById($id, $mailingId = "", $reasons = null)
515  {
516  $queryParameters = array(
517  'id' => $id
518  );
519 
520  if (!empty($mailingId)) {
521  $queryParameters['mailingId'] = $mailingId;
522  }
523  if (!empty($reasons)) {
524  if (is_array($reasons)) {
525  $queryParameters = $this->appendArrayFields($queryParameters, 'reason', $reasons);
526  } else {
527  $queryParameters['reason'] = urlencode($reasons);
528  }
529  }
530 
531  return $this->delete("contacts/contact/unsubscribe", $queryParameters);
532  }
533 
547  function unsubscribeContactByExternalId($externalId, $mailingId = "", $reasons = null)
548  {
549  $queryParameters = array();
550  if (!empty($mailingId)) {
551  $queryParameters['mailingId'] = $mailingId;
552  }
553 
554  if (!empty($reasons)) {
555  if (is_array($reasons)) {
556  $queryParameters = $this->appendArrayFields($queryParameters, 'reason', $reasons);
557  } else {
558  $queryParameters['reason'] = urlencode($reasons);
559  }
560  }
561 
562  $encodedExternalId = utf8_encode($externalId);
563  return $this->delete("contacts/externalid/${encodedExternalId}/unsubscribe", $queryParameters);
564  }
565 
576  function unsubscribeContactByExternalIdFromMultipleAccounts($externalId, $nlAccountIds = array())
577  {
578  $queryParameters = array();
579  $queryParameters = $this->appendArrayFields($queryParameters, "nlaccountid", $nlAccountIds);
580 
581  $encodedExternalId = utf8_encode($externalId);
582  return $this->delete("contacts/externalid/${encodedExternalId}/unsubscribe", $queryParameters);
583  }
584 
606  function getBlockedContacts($standardFields = array(), $customFields = array(), $pageIndex = 1, $pageSize = 1000)
607  {
608  $queryParameters = array(
609  'standard_field' => $standardFields,
610  'page_index' => $pageIndex,
611  'page_size' => $pageSize
612  );
613 
614  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $customFields);
615 
616  return $this->get('contacts/blocked', $queryParameters);
617  }
618 
630  function deleteContact($id)
631  {
632  $queryParameters = array('id' => $id);
633  return $this->delete("contacts/contact", $queryParameters);
634  }
635 
647  function deleteContactByEmail($email)
648  {
649  return $this->delete("contacts/email/" . utf8_encode($email));
650  }
651 
663  function deleteContactsByExternalId($externalId)
664  {
665  return $this->delete("contacts/externalid/" . utf8_encode($externalId));
666  }
667 
677  function deleteAllContacts($authorized = "no")
678  {
679  $queryParameters = array(
680  'authorized' => $authorized
681  );
682  return $this->delete("contacts", $queryParameters);
683  }
684 
698  function createCustomField($name, $type = 'string')
699  {
700  $queryParameters = array('type' => $type);
701  $encodedName = rawurlencode(mb_convert_encoding($name, "UTF-8"));
702  return $this->post("contacts/fields/custom/${encodedName}", "", $queryParameters);
703  }
704 
714  function getCustomFields()
715  {
716  return $this->get('contacts/fields/custom');
717  }
718 
732  function renameCustomField($oldName, $newName)
733  {
734  $encodedOldName = rawurlencode(mb_convert_encoding($oldName, "UTF-8"));
735  $encodedNewName = rawurlencode(mb_convert_encoding($newName, "UTF-8"));
736  return $this->put("contacts/fields/custom/${encodedOldName}/${encodedNewName}");
737  }
738 
750  function deleteCustomField($name)
751  {
752  $encodedName = rawurlencode(mb_convert_encoding($name, "UTF-8"));
753  return $this->delete("contacts/fields/custom/{$encodedName}");
754  }
755 
767  {
768  $encodedName = urlencode(mb_convert_encoding($name, "UTF-8"));
769  return $this->delete("contacts/fields/standard/{$encodedName}/values");
770  }
771 
782  function deleteCustomFieldValues($name)
783  {
784  $encodedName = rawurlencode(mb_convert_encoding($name, "UTF-8"));
785  return $this->delete("contacts/fields/custom/{$encodedName}/values");
786  }
787 
788 }
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="")
unsubscribeContactByEmail($email, $mailingId="", $reasons=null, $nlAccountIds=array())
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)