Maileon PHP client  1.5.5
Easily integrate your PHP application with Maileon.
MailingsService.php
1 <?php
2 
10 {
11 
25  function createMailing($name, $subject, $deprecatedParameter = false, $type = "regular")
26  {
27  $queryParameters = array(
28  'name' => urlencode($name),
29  'subject' => urlencode($subject),
30  'type' => urlencode($type),
31  );
32 
33  return $this->post('mailings', "", $queryParameters);
34  }
35 
39  function getMailingIdByName($mailingName)
40  {
41  return $this->get('mailings/name/' . rawurlencode($mailingName));
42  }
43 
47  function checkIfMailingExistsByName($mailingName)
48  {
49  $response = $this->get('mailings/name/' . rawurlencode($mailingName));
50  return ($response->isSuccess());
51  }
52 
56  function disableQosChecks($mailingId)
57  {
58  return $this->put('mailings/' . $mailingId . '/settings/disableQosChecks');
59  }
60 
67  function setIgnorePermission($mailingId, $ignorePermission)
68  {
69  if ($ignorePermission === true) {
70  $ignorePermission = "true";
71  } else if ($ignorePermission === false) {
72  $ignorePermission = "false";
73  }
74  return $this->post('mailings/' . $mailingId . '/settings/ignorepermission', "<ignore_permission>$ignorePermission</ignore_permission>");
75  }
76 
81  function isIgnorePermission($mailingId)
82  {
83  return $this->get('mailings/' . $mailingId . '/settings/ignorepermission');
84  }
85 
89  function setTriggerDispatchLogic($mailingId, $logic)
90  {
91  $queryParameters = array();
92  return $this->put('mailings/' . $mailingId . '/dispatching', $logic, $queryParameters);
93  }
94 
98  function setTriggerActive($mailingId)
99  {
100  return $this->post('mailings/' . $mailingId . '/dispatching/activate', "");
101  }
102 
110  function deleteActiveTriggerMailing($mailingId)
111  {
112  return $this->delete("mailings/" . $mailingId . "/dispatching");
113  }
114 
122  function deleteMailing($id)
123  {
124  return $this->delete("mailings/" . $id);
125  }
126 
143  function setHTMLContent($mailingId, $html, $doImageGrabbing = true, $doLinkTracking = false)
144  {
145  $queryParameters = array(
146  'doImageGrabbing' => ($doImageGrabbing == TRUE) ? "true" : "false",
147  'doLinkTracking' => ($doLinkTracking == TRUE) ? "true" : "false"
148  );
149  return $this->post('mailings/' . $mailingId . '/contents/html', $html, $queryParameters, "text/html");
150  }
151 
164  function setTextContent($mailingId, $text)
165  {
166  return $this->post('mailings/' . $mailingId . '/contents/text', $text, array(), "text/plain");
167  }
168 
180  function getHTMLContent($mailingId)
181  {
182  return $this->get('mailings/' . $mailingId . '/contents/html', null, "text/html");
183  }
184 
196  function getTextContent($mailingId)
197  {
198  return $this->get('mailings/' . $mailingId . '/contents/text', null, "text/plain");
199  }
200 
213  function setTargetGroupId($mailingId, $targetGroupId)
214  {
215  return $this->post('mailings/' . $mailingId . '/targetgroupid', "<targetgroupid>" . $targetGroupId . "</targetgroupid>");
216  }
217 
229  function getTargetGroupId($mailingId)
230  {
231  return $this->get('mailings/' . $mailingId . '/targetgroupid', null);
232  }
233 
247  function setSender($mailingId, $email)
248  {
249  return $this->post('mailings/' . $mailingId . '/contents/sender', "<sender>" . $email . "</sender>");
250  }
251 
263  function getSender($mailingId)
264  {
265  return $this->get('mailings/' . $mailingId . '/contents/sender');
266  }
267 
280  function setSubject($mailingId, $subject)
281  {
282  return $this->post('mailings/' . $mailingId . '/contents/subject', "<subject>" . $subject . "</subject>");
283  }
284 
296  function getSubject($mailingId)
297  {
298  return $this->get('mailings/' . $mailingId . '/contents/subject');
299  }
300 
313  function setPreviewText($mailingId, $previewText)
314  {
315  return $this->post('mailings/' . $mailingId . '/contents/previewtext', "<previewtext>" . $previewText . "</previewtext>");
316  }
317 
329  function getPreviewText($mailingId)
330  {
331  return $this->get('mailings/' . $mailingId . '/contents/previewtext');
332  }
333 
334 
335 
351  function setTemplate($mailingId, $template)
352  {
353  return $this->put('mailings/' . $mailingId . '/template', "<templateId>" . $template . "</templateId>");
354  }
355 
369  function getTemplate($mailingId)
370  {
371  return $this->get('mailings/' . $mailingId . '/template');
372  }
373 
374 
375 
387  function resetContentsToTemplate($mailingId)
388  {
389  return $this->put('mailings/' . $mailingId . '/contents/reset');
390  }
391 
404  function setSenderAlias($mailingId, $senderalias)
405  {
406  return $this->post('mailings/' . $mailingId . '/contents/senderalias', "<senderalias>" . $senderalias . "</senderalias>");
407  }
408 
420  function getSenderAlias($mailingId)
421  {
422  return $this->get('mailings/' . $mailingId . '/contents/senderalias');
423  }
424 
437  function setRecipientAlias($mailingId, $recipientalias)
438  {
439  return $this->post('mailings/' . $mailingId . '/contents/recipientalias', "<recipientalias>" . $recipientalias . "</recipientalias>");
440  }
441 
453  function getReplyToAddress($mailingId)
454  {
455  return $this->get('mailings/' . $mailingId . '/settings/replyto');
456  }
457 
470  function setReplyToAddress($mailingId, $auto = true, $customEmail = null)
471  {
472  $queryParameters = array(
473  'auto' => ($auto == TRUE) ? "true" : "false",
474  'customEmail' => $customEmail
475  );
476 
477  return $this->post('mailings/' . $mailingId . '/settings/replyto', null, $queryParameters);
478  }
479 
501  function getMailingsBySchedulingTime($scheduleTime, $beforeSchedulingTime = true, $fields = array(), $page_index = 1, $page_size = 100, $orderBy = "id", $order = "DESC")
502  {
503  $queryParameters = array(
504  'page_index' => $page_index,
505  'page_size' => $page_size,
506  'scheduleTime' => urlencode($scheduleTime),
507  'beforeSchedulingTime' => ($beforeSchedulingTime == TRUE) ? "true" : "false",
508  'orderBy' => $orderBy,
509  'order' => $order
510  );
511 
512  $queryParameters = $this->appendArrayFields($queryParameters, "fields", $fields);
513 
514  return $this->get('mailings/filter/scheduletime', $queryParameters);
515  }
516 
536  function getMailingsByTypes($types, $fields = array(), $page_index = 1, $page_size = 100)
537  {
538  $queryParameters = array(
539  'page_index' => $page_index,
540  'page_size' => $page_size,
541  'order' => "DESC"
542  );
543 
544  $queryParameters = $this->appendArrayFields($queryParameters, "types", $types);
545  $queryParameters = $this->appendArrayFields($queryParameters, "fields", $fields);
546 
547  return $this->get('mailings/filter/types', $queryParameters);
548  }
549 
569  function getMailingsByStates($states, $fields = array(), $page_index = 1, $page_size = 100)
570  {
571  $queryParameters = array(
572  'page_index' => $page_index,
573  'page_size' => $page_size,
574  'order' => "DESC"
575  );
576 
577  $queryParameters = $this->appendArrayFields($queryParameters, "states", $states);
578  $queryParameters = $this->appendArrayFields($queryParameters, "fields", $fields);
579 
580  return $this->get('mailings/filter/states', $queryParameters);
581  }
582 
591  function sendMailingNow($mailingId)
592  {
593  return $this->post('mailings/' . $mailingId . '/sendnow');
594  }
595 
610  function setMailingSchedule($mailingId, $date, $hours, $minutes)
611  {
612  $queryParameters = array(
613  'date' => $date,
614  'hours' => $hours,
615  'minutes' => $minutes
616  );
617 
618  return $this->put('mailings/' . $mailingId . '/schedule', "", $queryParameters);
619  }
620 
635  function updateMailingSchedule($mailingId, $date, $hours, $minutes)
636  {
637  $queryParameters = array(
638  'date' => $date,
639  'hours' => $hours,
640  'minutes' => $minutes
641  );
642 
643  return $this->post('mailings/' . $mailingId . '/schedule', "", $queryParameters);
644  }
645 
646 
658  function getDoiMailingKey($mailingId)
659  {
660  return $this->get('mailings/' . $mailingId . '/settings/doi_key', null, "text/html");
661  }
662 
673  function setDoiMailingKey($mailingId, $doiKey)
674  {
675  return $this->post('mailings/' . $mailingId . '/settings/doi_key', "<doi_key>$doiKey</doi_key>");
676  }
677 
685  function deactivateTriggerMailing($mailingId)
686  {
687  return $this->delete("mailings/${mailingId}/dispatching");
688  }
689 
690 
698  function getTriggerDispatchLogic($mailingId)
699  {
700  return $this->get("mailings/${mailingId}/dispatching");
701  }
702 
703 
711  function getSchedule($mailingId)
712  {
713  return $this->get("mailings/${mailingId}/schedule");
714  }
715 
723  function getArchiveUrl($mailingId)
724  {
725  return $this->get("mailings/${mailingId}/archiveurl");
726  }
727 
735  function getReportUrl($mailingId)
736  {
737  return $this->get("mailings/${mailingId}/reporturl");
738  }
739 
752  function setName($mailingId, $name)
753  {
754  return $this->post('mailings/' . $mailingId . '/name', "<name>" . $name . "</name>");
755  }
756 
764  function getName($mailingId)
765  {
766  return $this->get("mailings/${mailingId}/name");
767  }
768 
781  function setTags($mailingId, $tags)
782  {
783  return $this->post('mailings/' . $mailingId . '/settings/tags', "<tags>" . join("#", $tags) . "</tags>");
784  }
785 
793  function getTags($mailingId)
794  {
795  return $this->get("mailings/${mailingId}/settings/tags");
796  }
797 
810  function setLocale($mailingId, $locale)
811  {
812  return $this->post('mailings/' . $mailingId . '/settings/locale', "<locale>$locale</locale>");
813  }
814 
822  function getLocale($mailingId)
823  {
824  return $this->get("mailings/${mailingId}/settings/locale");
825  }
826 
835  function fillRssSmartContentTags($mailingId)
836  {
837  return $this->post("mailings/${mailingId}/contents/smartmailing/rss");
838  }
839 
847  function copyMailing($mailingId)
848  {
849  return $this->post("mailings/${mailingId}/copy");
850  }
851 
863  function addAttachmentFromFile($mailingId, $filename, $contentType, $attachmentFileName = null)
864  {
865  $handle = fopen($filename, "rb");
866  if (FALSE === $filename) {
867  throw new com_maileon_api_MaileonAPIException("Cannot read file " . $filename . ".");
868  }
869  $contents = '';
870  while (!feof($handle)) {
871  $contents .= fread($handle, 8192);
872  }
873  fclose($handle);
874  if ($attachmentFileName === null) {
875  $attachmentFileName = basename($filename);
876  }
877 
878  return $this->addAttachment($mailingId, $attachmentFileName, $contentType, $contents);
879  }
880 
891  function addAttachment($mailingId, $filename, $contentType, $contents)
892  {
893  $queryParameters = array('filename' => $filename);
894  return $this->post("mailings/${mailingId}/attachments", $contents, $queryParameters, null, null, $contentType, strlen($contents));
895  }
896 
903  function getAttachments($mailingId)
904  {
905  return $this->get("mailings/${mailingId}/attachments");
906  }
907 
915  function getAttachment($mailingId, $attachmentId)
916  {
917  return $this->get("mailings/${mailingId}/attachments/${attachmentId}");
918  }
919 
926  function getAttachmentsCount($mailingId)
927  {
928  return $this->get("mailings/${mailingId}/attachments/count");
929  }
930 
937  function deleteAttachments($mailingId)
938  {
939  return $this->delete("mailings/${mailingId}/attachments/");
940  }
941 
951  function deleteAttachment($mailingId, $attachmentId)
952  {
953  if (empty($attachmentId)) {
954  throw new com_maileon_api_MaileonAPIException("no attachment id specified");
955  }
956 
957  return $this->delete("mailings/${mailingId}/attachments/${attachmentId}");
958  }
959 
967  function copyAttachments($mailingId, $srcMailingId)
968  {
969  $queryParameters = array('src_mailing_id' => $srcMailingId);
970 
971  return $this->put("mailings/${mailingId}/attachments", "", $queryParameters);
972  }
973 
980  function getCustomProperties($mailingId)
981  {
982  return $this->get("mailings/${mailingId}/settings/properties");
983  }
984 
985 
993  function addCustomProperties($mailingId, $properties)
994  {
995 
996  $xml = new SimpleXMLElement("<?xml version=\"1.0\"?><properties></properties>");
997 
998  if (is_array($properties)) {
999  foreach ($properties as $property) {
1000  $this->sxml_append($xml, $property->toXML());
1001  }
1002  } else {
1003  $this->sxml_append($xml, $properties->toXML());
1004  }
1005 
1006  return $this->post("mailings/${mailingId}/settings/properties", $xml->asXML());
1007  }
1008 
1009 
1017  function updateCustomProperty($mailingId, $property)
1018  {
1019 
1020  $queryParameters = array(
1021  'name' => $property->key,
1022  'value' => $property->value
1023  );
1024 
1025  return $this->put("mailings/${mailingId}/settings/properties", "", $queryParameters);
1026  }
1027 
1028 
1036  function deleteCustomProperty($mailingId, $propertyName)
1037  {
1038 
1039  $queryParameters = array(
1040  'name' => $propertyName,
1041  );
1042 
1043  return $this->delete("mailings/${mailingId}/settings/properties", $queryParameters);
1044  }
1045 
1046 
1057  function sendTestMail($mailingId, $email)
1058  {
1059  $queryParameters = array(
1060  'email' => $email
1061  );
1062 
1063  return $this->post("mailings/${mailingId}/sendtestemail", "", $queryParameters);
1064  }
1065 
1073  function sendTestMailToTestTargetGroup($mailingId, $testTargetGroupId)
1074  {
1075  $queryParameters = array(
1076  'test_targetgroup_id' => $testTargetGroupId
1077  );
1078 
1079  return $this->post("mailings/${mailingId}/checks/testsendout", "", $queryParameters);
1080  }
1081 
1082  function sxml_append(SimpleXMLElement $to, SimpleXMLElement $from)
1083  {
1084  $toDom = dom_import_simplexml($to);
1085  $fromDom = dom_import_simplexml($from);
1086  $toDom->appendChild($toDom->ownerDocument->importNode($fromDom, true));
1087  }
1088 
1089 }
addCustomProperties($mailingId, $properties)
getAttachment($mailingId, $attachmentId)
deleteCustomProperty($mailingId, $propertyName)
setPreviewText($mailingId, $previewText)
setTargetGroupId($mailingId, $targetGroupId)
updateMailingSchedule($mailingId, $date, $hours, $minutes)
setMailingSchedule($mailingId, $date, $hours, $minutes)
getMailingsByTypes($types, $fields=array(), $page_index=1, $page_size=100)
createMailing($name, $subject, $deprecatedParameter=false, $type="regular")
deleteAttachment($mailingId, $attachmentId)
setSenderAlias($mailingId, $senderalias)
setIgnorePermission($mailingId, $ignorePermission)
getMailingsBySchedulingTime($scheduleTime, $beforeSchedulingTime=true, $fields=array(), $page_index=1, $page_size=100, $orderBy="id", $order="DESC")
setHTMLContent($mailingId, $html, $doImageGrabbing=true, $doLinkTracking=false)
getMailingsByStates($states, $fields=array(), $page_index=1, $page_size=100)
addAttachment($mailingId, $filename, $contentType, $contents)
copyAttachments($mailingId, $srcMailingId)
setRecipientAlias($mailingId, $recipientalias)
addAttachmentFromFile($mailingId, $filename, $contentType, $attachmentFileName=null)
sendTestMailToTestTargetGroup($mailingId, $testTargetGroupId)
post($resourcePath, $payload="", $queryParameters=array(), $mimeType= 'application/vnd.maileon.api+xml', $deserializationType=null, $contentType=null, $contentLength=null)
setReplyToAddress($mailingId, $auto=true, $customEmail=null)
put($resourcePath, $payload="", $queryParameters=array(), $mimeType= 'application/vnd.maileon.api+xml', $deserializationType=null)