ActiveCampaign.class.php 6.21 KB
<?php

if (!defined("ACTIVECAMPAIGN_URL") || (!defined("ACTIVECAMPAIGN_API_KEY") && !defined("ACTIVECAMPAIGN_API_USER") && !defined("ACTIVECAMPAIGN_API_PASS"))) {
    require_once(dirname(__FILE__) . "/config.php");
}

require_once("Connector.class.php");

class ActiveCampaign extends AC_Connector {

    public $url_base;
    public $url;
    public $api_key;
    public $track_email;
    public $track_actid;
    public $track_key;
    public $version = 1;
    public $debug = false;
    public $curl_response_error = "";

    function __construct($url, $api_key, $api_user = "", $api_pass = "") {
        $this->url_base = $this->url = $url;
        $this->api_key = $api_key;
        parent::__construct($url, $api_key, $api_user, $api_pass);
    }

    function version($version) {
        $this->version = (int) $version;
        if ($version == 2) {
            $this->url_base = $this->url_base . "/2";
        }
    }

    function api($path, $post_data = array()) {
        // IE: "contact/view"
        $components = explode("/", $path);
        $component = $components[0];

        if (count($components) > 2) {
            // IE: "contact/tag/add?whatever"
            // shift off the first item (the component, IE: "contact").
            array_shift($components);
            // IE: convert to "tag_add?whatever"
            $method_str = implode("_", $components);
            $components = array($component, $method_str);
        }

        if (preg_match("/\?/", $components[1])) {
            // query params appended to method
            // IE: contact/edit?overwrite=0
            $method_arr = explode("?", $components[1]);
            $method = $method_arr[0];
            $params = $method_arr[1];
        } else {
            // just a method provided
            // IE: "contact/view
            if (isset($components[1])) {
                $method = $components[1];
                $params = "";
            } else {
                return "Invalid method.";
            }
        }

        // adjustments
        if ($component == "list") {
            // reserved word
            $component = "list_";
        } elseif ($component == "branding") {
            $component = "design";
        } elseif ($component == "sync") {
            $component = "contact";
            $method = "sync";
        } elseif ($component == "singlesignon") {
            $component = "auth";
        }

        $class = ucwords($component); // IE: "contact" becomes "Contact"
        $class = "AC_" . $class;
        // IE: new Contact();

        $add_tracking = false;
        if ($class == "AC_Tracking")
            $add_tracking = true;
        if ($class == "AC_Tags") {
            $class = "AC_Tag";
        }

        $class = new $class($this->version, $this->url_base, $this->url, $this->api_key);
        // IE: $contact->view()

        if ($add_tracking) {
            $class->track_email = $this->track_email;
            $class->track_actid = $this->track_actid;
            $class->track_key = $this->track_key;
        }

        if ($method == "list") {
            // reserved word
            $method = "list_";
        }

        $class->debug = $this->debug;

        $response = $class->$method($params, $post_data);
        return $response;
    }

    function fgc_api($path, $post_data = array()) {
        // IE: "contact/view"
        $components = explode("/", $path);
        $component = $components[0];
        if (count($components) > 2) {
            // IE: "contact/tag/add?whatever"
            // shift off the first item (the component, IE: "contact").
            array_shift($components);
            // IE: convert to "tag_add?whatever"
            $method_str = implode("_", $components);
            $components = array($component, $method_str);
        }

        if (preg_match("/\?/", $components[1])) {
            // query params appended to method
            // IE: contact/edit?overwrite=0
            $method_arr = explode("?", $components[1]);
            $method = $method_arr[0];
            $params = $method_arr[1];
        } else {
            // just a method provided
            // IE: "contact/view
            if (isset($components[1])) {
                $method = $components[1];
                $params = "";
            } else {
                return "Invalid method.";
            }
        }

        // adjustments
        if ($component == "list") {
            // reserved word
            $component = "list_";
        } elseif ($component == "branding") {
            $component = "design";
        } elseif ($component == "sync") {
            $component = "contact";
            $method = "sync";
        } elseif ($component == "singlesignon") {
            $component = "auth";
        }

        $class = ucwords($component); // IE: "contact" becomes "Contact"
        $class = "AC_" . $class;
        // IE: new Contact();

        $add_tracking = false;
        if ($class == "AC_Tracking")
            $add_tracking = true;
        if ($class == "AC_Tags") {
            $class = "AC_Tag";
        }

        $class = new $class($this->version, $this->url_base, $this->url, $this->api_key);
        // IE: $contact->view()

        if ($add_tracking) {
            $class->track_email = $this->track_email;
            $class->track_actid = $this->track_actid;
            $class->track_key = $this->track_key;
        }

        if ($method == "list") {
            // reserved word
            $method = "list_";
        }
//        var_dump($method);
//        exit();
        $method = 'fgc_' . $method;
        $class->debug = $this->debug;

        $response = $class->$method($params, $post_data);
        return $response;
    }

}

require_once("Account.class.php");
require_once("Auth.class.php");
require_once("Automation.class.php");
require_once("Campaign.class.php");
require_once("Contact.class.php");
require_once("Deal.class.php");
require_once("Design.class.php");
require_once("Form.class.php");
require_once("Group.class.php");
require_once("List.class.php");
require_once("Message.class.php");
require_once("Segment.class.php");
require_once("Settings.class.php");
require_once("Subscriber.class.php");
require_once("Tag.class.php");
require_once("Tracking.class.php");
require_once("User.class.php");
require_once("Webhook.class.php");
?>