Maileon PHP client  1.2.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' => $src,
47  'subscription_page' => $subscriptionPage,
48  'doi' => ($doi == TRUE) ? "true" : "false",
49  'doiplus' => ($doiPlus == TRUE) ? "true" : "false"
50  );
51 
52 
53  if (!empty($doiMailingKey)) {
54  $queryParameters['doimailing'] = $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' => $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 (isset($doiMailingKey)) $queryParameters['doimailing'] = $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 
396  function synchronizeContacts($contacts, $permission = null, $syncMode = null, $useExternalId = false, $ignoreInvalidContacts = false, $reimportUnsubscribedContacts = true, $overridePermission = true, $updateOnly = false)
397  {
398  $queryParameters = array(
399  'permission' => ($permission == null) ? 1 : $permission->getCode(),
400  'sync_mode' => ($syncMode == null) ? 2 : $syncMode->getCode(),
401  'use_external_id' => ($useExternalId == TRUE) ? "true" : "false",
402  'ignore_invalid_contacts' => ($ignoreInvalidContacts == TRUE) ? "true" : "false",
403  'reimport_unsubscribed_contacts' => ($reimportUnsubscribedContacts == TRUE) ? "true" : "false",
404  'override_permission' => ($overridePermission == TRUE) ? "true" : "false",
405  'update_only' => ($updateOnly == TRUE) ? "true" : "false"
406  );
407 
408  $cleanedContacts = new com_maileon_api_contacts_Contacts();
409  foreach ($contacts as $contact) {
410  $cleanedContact = new com_maileon_api_contacts_Contact(null, $contact->email, null, $contact->external_id, null, $contact->standard_fields, $contact->custom_fields);
411  $cleanedContacts->addContact($cleanedContact);
412  }
413 
414  return $this->post("contacts", $cleanedContacts->toXMLString(), $queryParameters);
415  }
416 
430  function unsubscribeContactByEmail($email, $mailingId = "", $reasons = null)
431  {
432  $queryParameters = array();
433  if (!empty($mailingId)) {
434  $queryParameters['mailingId'] = $mailingId;
435  }
436 
437  if (!empty($reasons)) {
438  if (is_array($reasons)) {
439  $queryParameters = $this->appendArrayFields($queryParameters, 'reason', $reasons);
440  } else {
441  $queryParameters['reason'] = urlencode($reasons);
442  }
443  }
444 
445  $encodedEmail = utf8_encode($email);
446  return $this->delete("contacts/${encodedEmail}/unsubscribe", $queryParameters);
447  }
448 
464  function addUnsubscriptionReasonsToUnsubscribedContact($id, $checksum = null, $reasons = null, $ignore_checksum = false)
465  {
466  $queryParameters = array();
467  $queryParameters['id'] = $id;
468  if (!empty($checksum)) {
469  $queryParameters['checksum'] = $checksum;
470  }
471  if ($ignore_checksum===true) $queryParameters['ignore_checksum'] = "true";
472 
473  if (!empty($reasons)) {
474  if (is_array($reasons)) {
475  $queryParameters = $this->appendArrayFields($queryParameters, 'reason', $reasons);
476  } else {
477  $queryParameters['reason'] = urlencode($reasons);
478  }
479  }
480 
481  return $this->put("contacts/contact/unsubscribe/reasons", null, $queryParameters);
482  }
483 
497  function unsubscribeContactById($id, $mailingId = "", $reasons = null)
498  {
499  $queryParameters = array(
500  'id' => $id
501  );
502 
503  if (!empty($mailingId)) {
504  $queryParameters['mailingId'] = $mailingId;
505  }
506  if (!empty($reasons)) {
507  if (is_array($reasons)) {
508  $queryParameters = $this->appendArrayFields($queryParameters, 'reason', $reasons);
509  } else {
510  $queryParameters['reason'] = urlencode($reasons);
511  }
512  }
513 
514  return $this->delete("contacts/contact/unsubscribe", $queryParameters);
515  }
516 
530  function unsubscribeContactByExternalId($externalId, $mailingId = "", $reasons = null)
531  {
532  $queryParameters = array();
533  if (!empty($mailingId)) {
534  $queryParameters['mailingId'] = $mailingId;
535  }
536 
537  if (!empty($reasons)) {
538  if (is_array($reasons)) {
539  $queryParameters = $this->appendArrayFields($queryParameters, 'reason', $reasons);
540  } else {
541  $queryParameters['reason'] = urlencode($reasons);
542  }
543  }
544 
545  $encodedExternalId = utf8_encode($externalId);
546  return $this->delete("contacts/externalid/${encodedExternalId}/unsubscribe", $queryParameters);
547  }
548 
559  function unsubscribeContactByExternalIdFromMultipleAccounts($externalId, $nlAccountIds = array())
560  {
561  $queryParameters = array();
562  $queryParameters = $this->appendArrayFields($queryParameters, "nlaccountid", $nlAccountIds);
563 
564  $encodedExternalId = utf8_encode($externalId);
565  return $this->delete("contacts/externalid/${encodedExternalId}/unsubscribe", $queryParameters);
566  }
567 
589  function getBlockedContacts($standardFields = array(), $customFields = array(), $pageIndex = 1, $pageSize = 1000)
590  {
591  $queryParameters = array(
592  'standard_field' => $standardFields,
593  'page_index' => $pageIndex,
594  'page_size' => $pageSize
595  );
596 
597  $queryParameters = $this->appendArrayFields($queryParameters, 'custom_field', $customFields);
598 
599  return $this->get('contacts/blocked', $queryParameters);
600  }
601 
613  function deleteContact($id)
614  {
615  $queryParameters = array('id' => $id);
616  return $this->delete("contacts/contact", $queryParameters);
617  }
618 
630  function deleteContactByEmail($email)
631  {
632  return $this->delete("contacts/" . utf8_encode($email));
633  }
634 
646  function deleteContactsByExternalId($externalId)
647  {
648  return $this->delete("contacts/externalid/" . utf8_encode($externalId));
649  }
650 
660  function deleteAllContacts()
661  {
662  return $this->delete("contacts");
663  }
664 
678  function createCustomField($name, $type = 'string')
679  {
680  $queryParameters = array('type' => $type);
681  $encodedName = urlencode(mb_convert_encoding($name, "UTF-8"));
682  return $this->post("contacts/fields/custom/${encodedName}", "", $queryParameters);
683  }
684 
694  function getCustomFields()
695  {
696  return $this->get('contacts/fields/custom');
697  }
698 
712  function renameCustomField($oldName, $newName)
713  {
714  $encodedOldName = urlencode(mb_convert_encoding($oldName, "UTF-8"));
715  $encodedNewName = urlencode(mb_convert_encoding($newName, "UTF-8"));
716  return $this->put("contacts/fields/custom/${encodedOldName}/${encodedNewName}");
717  }
718 
730  function deleteCustomField($name)
731  {
732  $encodedName = urlencode(mb_convert_encoding($name, "UTF-8"));
733  return $this->delete("contacts/fields/custom/{$encodedName}");
734  }
735 
747  {
748  $encodedName = urlencode(mb_convert_encoding($name, "UTF-8"));
749  return $this->delete("contacts/fields/standard/{$encodedName}/values");
750  }
751 
762  function deleteCustomFieldValues($name)
763  {
764  $encodedName = urlencode(mb_convert_encoding($name, "UTF-8"));
765  return $this->delete("contacts/fields/custom/{$encodedName}/values");
766  }
767 
768 }
unsubscribeContactByEmail($email, $mailingId="", $reasons=null)
addUnsubscriptionReasonsToUnsubscribedContact($id, $checksum=null, $reasons=null, $ignore_checksum=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())
unsubscribeContactByExternalIdFromMultipleAccounts($externalId, $nlAccountIds=array())
updateContact($contact, $checksum, $src=null, $subscriptionPage=null, $triggerDoi=FALSE, $doiMailingKey=null, $ignoreChecksum=false)
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())
synchronizeContacts($contacts, $permission=null, $syncMode=null, $useExternalId=false, $ignoreInvalidContacts=false, $reimportUnsubscribedContacts=true, $overridePermission=true, $updateOnly=false)
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())
post($resourcePath, $payload="", $queryParameters=array(), $mimeType= 'application/vnd.maileon.api+xml', $deserializationType=null)
unsubscribeContactByExternalId($externalId, $mailingId="", $reasons=null)
put($resourcePath, $payload="", $queryParameters=array(), $mimeType= 'application/vnd.maileon.api+xml', $deserializationType=null)