Hello,
My Mailing provider has API stuff to let me retrieve data from my account into php.
I never used it, but maybe if it can be cenverted to FWH it becomes interesting.
Has someone done something simular once ?
This is the class :
My Mailing provider has API stuff to let me retrieve data from my account into php.
I never used it, but maybe if it can be cenverted to FWH it becomes interesting.
Has someone done something simular once ?
<?php
require_once 'YMLP_API.class.php';
// variables: your key & username
$ApiKey = "YourAPIKey";
$ApiUsername = "YourUsername";
// create API class
$api = new YMLP_API($ApiKey,$ApiUsername);
// run command
$NewsletterID = '123';
$UniqueOpens = '';
$Page = '';
$NumberPerPage = '';
$Sorting = '';
$output=$api->ArchiveGetOpens($NewsletterID , $UniqueOpens , $Page , $NumberPerPage , $Sorting);
// output results
if ( $api->ErrorMessage ) {
  echo "There's a connection problem: " . $api->ErrorMessage;
}
else {
  if ( isset($output["Code"]) ) {
    echo "{$output["Code"]} => {$output["Output"]}";
  }
  elseif (!count($output)) {
    echo "No data available";
    }
  else {
    foreach ($output as $item) {
      foreach ($item as $key=>$value) {
        echo $key . ":". $value . ",";
        }
      echo "<br>";
    }
  }
}
?>This is the class :
<?php
class YMLP_API {
  var $ErrorMessage;
  var $ApiUrl = "www.ymlp.com/api/";
  var $ApiUsername;
  var $ApiKey;
  var $Secure = false;
  var $Curl = true;
  var $CurlAvailable = true;
  function __construct($ApiKey=null,$ApiUsername=null,$secure=false) {
    $this->ApiKey = $ApiKey;
    $this->ApiUsername = $ApiUsername;
    $this->Secure = $secure;
    $this->CurlAvailable = function_exists( 'curl_init' ) && function_exists( 'curl_setopt' );
  }
  function useSecure($val) {
    if ($val===true){
      $this->Secure = true;
    } else {
      $this->Secure = false;
    }
  }
  function doCall($method = '',$params = array()) {
    $params["key"] = $this->ApiKey;
    $params["username"] = $this->ApiUsername;
    $params["output"] = "PHP";
    $this->ErrorMessage = "";
    if (!isset($postdata)) {$postdata = '';}
    foreach ( $params as $k => $v )
      $postdata .= '&' . $k . '=' .rawurlencode(utf8_encode($v));
    if ( $this->Curl && $this->CurlAvailable )  {
      $ch = curl_init();
      curl_setopt( $ch, CURLOPT_POST, 1 );
      curl_setopt( $ch, CURLOPT_POSTFIELDS, $postdata );
      curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
      if ($this->Secure){
        curl_setopt( $ch, CURLOPT_URL, "https://" .$this->ApiUrl . $method );
      } else {
        curl_setopt( $ch, CURLOPT_URL, "http://" .$this->ApiUrl . $method );
      }     Â
      $response = curl_exec( $ch );
      if(curl_errno($ch)) {
        $this->ErrorMessage = curl_error($ch);
        return false;
        }
      }
    else {
      $this->ApiUrl = parse_url( "http://" .$this->ApiUrl . $method);
      $payload = "POST " . $this->ApiUrl["path"] . "?" . $this->ApiUrl["query"] . " HTTP/1.0\r\n";
      $payload .= "Host: " . $this->ApiUrl["host"] . "\r\n";
      $payload .= "User-Agent: YMLP_API\r\n";
      $payload .= "Content-type: application/x-www-form-urlencoded\r\n";
      $payload .= "Content-length: " . strlen($postdata) . "\r\n";
      $payload .= "Connection: close \r\n\r\n";
      $payload .= $postdata;
      ob_start();
      if ($this->Secure){
        $sock = fsockopen("ssl://".$this->ApiUrl["host"], 443, $errno, $errstr);
      } else {
        $sock = fsockopen($this->ApiUrl["host"], 80, $errno, $errstr);
      }
      if(!$sock) {
        $this->ErrorMessage = "ERROR $errno: $errstr";
        ob_end_clean();
        return false;
      }
   Â
      $response = "";
      fwrite($sock, $payload);
      while(!feof($sock)) {
        $response .= fread($sock,8192);
      }
      fclose($sock);
      ob_end_clean();
      list($throw, $response) = explode("\r\n\r\n", $response, 2);
    }
    if(ini_get("magic_quotes_runtime")) $response = stripslashes($response);
    if (strtoupper($params["output"]) == "PHP" ) {
      $serial = unserialize($response);
      if ($response && $serial === false) {
        $this->ErrorMessage = "Bad Response: " . $response;
        return false;
        }
      else {
         $response = $serial;
        }
      }
 Â
  return $response;
  }
  function Ping() {
    return $this->doCall("Ping");
  }
  //------------------------------------------------------------
  // GROUPS [begin]
  //------------------------------------------------------------
  function GroupsGetList() {
    return $this->doCall("Groups.GetList");
  }
  function GroupsAdd($GroupName = '') {
    $params = array();
    $params["GroupName"] = $GroupName;
    return $this->doCall("Groups.Add", $params);
  }
  function GroupsDelete($GroupId = '') {
    $params = array();
    $params["GroupId"] = $GroupId;
    return $this->doCall("Groups.Delete", $params);
  }
  function GroupsUpdate($GroupId = '', $GroupName = '') {
    $params = array();
    $params["GroupId"] = $GroupId;
    $params["GroupName"] = $GroupName;
    return $this->doCall("Groups.Update", $params);
  }
  function GroupsEmpty($GroupId = '') {
    $params = array();
    $params["GroupId"] = $GroupId;
    return $this->doCall("Groups.Empty", $params);
  }
  //------------------------------------------------------------
  // GROUPS [end]
  //------------------------------------------------------------
  //------------------------------------------------------------
  // FIELDS [begin]
  //------------------------------------------------------------
  function FieldsGetList() {
    return $this->doCall("Fields.GetList");
  }
  function FieldsAdd($FieldName = '', $Alias = '', $DefaultValue = '', $CorrectUppercase = '') {
    $params = array();
    $params["FieldName"] = $FieldName;
    $params["Alias"] = $Alias;
    $params["DefaultValue"] = $DefaultValue;
    $params["CorrectUppercase"] = $CorrectUppercase;
    return $this->doCall("Fields.Add", $params);
  }
  function FieldsDelete($FieldId = '') {
    $params = array();
    $params["FieldId"] = $FieldId;
    return $this->doCall("Fields.Delete", $params);
  }
  function FieldsUpdate($FieldId = '', $FieldName = '', $Alias = '', $DefaultValue = '', $CorrectUppercase = '') {
    $params = array();
    $params["FieldId"] = $FieldId;
    $params["FieldName"] = $FieldName;
    $params["Alias"] = $Alias;
    $params["DefaultValue"] = $DefaultValue;
    $params["CorrectUppercase"] = $CorrectUppercase;
    return $this->doCall("Fields.Update", $params);
  }
  //------------------------------------------------------------
  // FIELDS [end]
  //------------------------------------------------------------
  //------------------------------------------------------------
  // CONTACTS [begin]
  //------------------------------------------------------------
  function ContactsAdd($Email = '', $OtherFields = '', $GroupID = '', $OverruleUnsubscribedBounced = '') {
    $params = array();
    $params["Email"] = $Email;
    if (!is_array($OtherFields)) $OtherFields=array();
    foreach ($OtherFields as $key=>$value) {
      $params[$key] = $value;
      }
    $params["GroupID"] = $GroupID;
    $params["OverruleUnsubscribedBounced"] = $OverruleUnsubscribedBounced;
    return $this->doCall("Contacts.Add", $params);
  }
  function ContactsUnsubscribe($Email = '') {
    $params = array();
    $params["Email"] = $Email;
    return $this->doCall("Contacts.Unsubscribe", $params);
  }
  function ContactsDelete($Email = '', $GroupID = '') {
    $params = array();
    $params["Email"] = $Email;
    $params["GroupID"] = $GroupID;
    return $this->doCall("Contacts.Delete", $params);
  }
  function ContactsGetContact($Email = '') {
    $params = array();
    $params["Email"] = $Email;
    return $this->doCall("Contacts.GetContact", $params);
  }
  function ContactsGetList($GroupID = '', $FieldID = '', $Page = '', $NumberPerPage = '', $StartDate = '', $StopDate = '') {
    $params = array();
    $params["GroupID"] = $GroupID;
    $params["FieldID"] = $FieldID;
    $params["Page"] = $Page;
    $params["NumberPerPage"] = $NumberPerPage;
    $params["StartDate"] = $StartDate;
    $params["StopDate"] = $StopDate;
    return $this->doCall("Contacts.GetList", $params);
  }
  function ContactsGetUnsubscribed($FieldID = '', $Page = '', $NumberPerPage = '', $StartDate = '', $StopDate = '') {
    $params = array();
    $params["FieldID"] = $FieldID;
    $params["Page"] = $Page;
    $params["NumberPerPage"] = $NumberPerPage;
    $params["StartDate"] = $StartDate;
    $params["StopDate"] = $StopDate;
    return $this->doCall("Contacts.GetUnsubscribed", $params);
  }
  function ContactsGetDeleted($FieldID = '', $Page = '', $NumberPerPage = '', $StartDate = '', $StopDate = '') {
    $params = array();
    $params["FieldID"] = $FieldID;
    $params["Page"] = $Page;
    $params["NumberPerPage"] = $NumberPerPage;
    $params["StartDate"] = $StartDate;
    $params["StopDate"] = $StopDate;
    return $this->doCall("Contacts.GetDeleted", $params);
  }
  function ContactsGetBounced($FieldID = '', $Page = '', $NumberPerPage = '', $StartDate = '', $StopDate = '') {
    $params = array();
    $params["FieldID"] = $FieldID;
    $params["Page"] = $Page;
    $params["NumberPerPage"] = $NumberPerPage;
    $params["StartDate"] = $StartDate;
    $params["StopDate"] = $StopDate;
    return $this->doCall("Contacts.GetBounced", $params);
  }
  //------------------------------------------------------------
  // CONTACTS [end]
  //------------------------------------------------------------
  //------------------------------------------------------------
  // FILTERS [begin]
  //------------------------------------------------------------
  function FiltersGetList() {
    return $this->doCall("Filters.GetList");
  }
  function FiltersAdd($FilterName = '', $Field = '', $Operand = '', $Value = '') {
    $params = array();
    $params["FilterName"] = $FilterName;
    $params["Field"] = $Field;
    $params["Operand"] = $Operand;
    $params["Value"] = $Value;
    return $this->doCall("Filters.Add", $params);
  }
  function FiltersDelete($FilterId = '') {
    $params = array();
    $params["FilterId"] = $FilterId;
    return $this->doCall("Filters.Delete", $params);
  }
  //------------------------------------------------------------
  // FILTERS [end]
  //------------------------------------------------------------
  //------------------------------------------------------------
  // ARCHIVE [begin]
  //------------------------------------------------------------
  function ArchiveGetList($Page = '', $NumberPerPage = '', $StartDate = '', $StopDate = '', $Sorting = '', $ShowTestMessages = '') {
    $params = array();
    $params["Page"] = $Page;
    $params["NumberPerPage"] = $NumberPerPage;
    $params["StartDate"] = $StartDate;
    $params["StopDate"] = $StopDate;
    $params["Sorting"] = $Sorting;
    $params["ShowTestMessages"] = $ShowTestMessages;
    return $this->doCall("Archive.GetList", $params);
  }
  function ArchiveGetSummary($NewsletterID = '') {
    $params = array();
    $params["NewsletterID"] = $NewsletterID;
    return $this->doCall("Archive.GetSummary", $params);
  }
 Â
  function ArchiveGetContent($NewsletterID = '') {
    $params = array();
    $params["NewsletterID"] = $NewsletterID;
    return $this->doCall("Archive.GetContent", $params);
  }
 Â
  function ArchiveGetRecipients($NewsletterID = '', $Page = '', $NumberPerPage = '', $Sorting = '') {
    $params = array();
    $params["NewsletterID"] = $NewsletterID;
    $params["Page"] = $Page;
    $params["NumberPerPage"] = $NumberPerPage;
    $params["Sorting"] = $Sorting;
    return $this->doCall("Archive.GetRecipients", $params);
  }
 Â
  function ArchiveGetDelivered($NewsletterID = '', $Page = '', $NumberPerPage = '', $Sorting = '') {
    $params = array();
    $params["NewsletterID"] = $NewsletterID;
    $params["Page"] = $Page;
    $params["NumberPerPage"] = $NumberPerPage;
    $params["Sorting"] = $Sorting;
    return $this->doCall("Archive.GetDelivered", $params);
  }
 Â
  function ArchiveGetBounces($NewsletterID = '', $ShowHardBounces = '', $ShowSoftBounces = '', $Page = '', $NumberPerPage = '', $Sorting = '') {
    $params = array();
    $params["NewsletterID"] = $NewsletterID;
    $params["ShowHardBounces"] = $ShowHardBounces;
    $params["ShowSoftBounces"] = $ShowSoftBounces;
    $params["Page"] = $Page;
    $params["NumberPerPage"] = $NumberPerPage;
    $params["Sorting"] = $Sorting;
    return $this->doCall("Archive.GetBounces", $params);
  }
 Â
  function ArchiveGetOpens($NewsletterID = '', $UniqueOpens = '', $Page = '', $NumberPerPage = '', $Sorting = '') {
    $params = array();
    $params["NewsletterID"] = $NewsletterID;
    $params["UniqueOpens"] = $UniqueOpens;
    $params["Page"] = $Page;
    $params["NumberPerPage"] = $NumberPerPage;
    $params["Sorting"] = $Sorting;
    return $this->doCall("Archive.GetOpens", $params);
  }
 Â
  function ArchiveGetUnopened($NewsletterID = '', $Page = '', $NumberPerPage = '', $Sorting = '') {
    $params = array();
    $params["NewsletterID"] = $NewsletterID;
    $params["Page"] = $Page;
    $params["NumberPerPage"] = $NumberPerPage;
    $params["Sorting"] = $Sorting;
    return $this->doCall("Archive.GetUnopened", $params);
  }
 Â
  function ArchiveGetTrackedLinks($NewsletterID = '') {
    $params = array();
    $params["NewsletterID"] = $NewsletterID;
    return $this->doCall("Archive.GetTrackedLinks", $params);
  }
 Â
  function ArchiveGetClicks($NewsletterID = '', $LinkID = '', $UniqueClicks = '', $Page = '', $NumberPerPage = '', $Sorting = '') {
    $params = array();
    $params["NewsletterID"] = $NewsletterID;
    $params["LinkID"] = $LinkID;
    $params["UniqueClicks"] = $UniqueClicks;
    $params["Page"] = $Page;
    $params["NumberPerPage"] = $NumberPerPage;
    $params["Sorting"] = $Sorting;
    return $this->doCall("Archive.GetClicks", $params);
  }
 Â
  function ArchiveGetForwards($NewsletterID = '', $Page = '', $NumberPerPage = '', $Sorting = '') {
    $params = array();
    $params["NewsletterID"] = $NewsletterID;
    $params["Page"] = $Page;
    $params["NumberPerPage"] = $NumberPerPage;
    $params["Sorting"] = $Sorting;
    return $this->doCall("Archive.GetForwards", $params);
  }
  //------------------------------------------------------------
  // ARCHIVE [end]
  //------------------------------------------------------------
  //------------------------------------------------------------
  // NEWSLETTER [begin]
  //------------------------------------------------------------
  function NewsletterGetFroms() {
    return $this->doCall("Newsletter.GetFroms");
  }
  function NewsletterAddFrom($FromEmail = '', $FromName = '') {
    $params = array();
    $params["FromEmail"] = $FromEmail;
    $params["FromName"] = $FromName;
    return $this->doCall("Newsletter.AddFrom", $params);
  }
 Â
  function NewsletterDeleteFrom($FromID = '') {
    $params = array();
    $params["FromID"] = $FromID;
    return $this->doCall("Newsletter.DeleteFrom", $params);
  }
 Â
  function NewsletterSend($Subject = '', $HTML = '', $Text = '', $DeliveryTime = '',
              $FromID = '', $TrackOpens = '', $TrackClicks = '', $TestMessage = '',
              $GroupID = '', $FilterID = '', $CombineFilters = '') {
    $params = array();
    $params["Subject"] = $Subject;
    $params["HTML"] = $HTML;
    $params["Text"] = $Text;
    $params["DeliveryTime"] = $DeliveryTime;
    $params["FromID"] = $FromID;
    $params["TrackOpens"] = $TrackOpens;
    $params["TrackClicks"] = $TrackClicks;
    $params["TestMessage"] = $TestMessage;
    $params["GroupID"] = $GroupID;
    $params["FilterID"] = $FilterID;
    $params["CombineFilters"] = $CombineFilters;
    return $this->doCall("Newsletter.Send", $params);
  }
  //------------------------------------------------------------
  // NEWSLETTER [end]
  //------------------------------------------------------------
 Â
}Marc Venken
Using: FWH 23.08 with Harbour
Using: FWH 23.08 with Harbour