giobi
4/5/2018 - 6:17 PM

Mailchimp

Class for basic Mailchimp interaction, requires DCurl and Validator

<?php
require_once __DIR__.'/DCurl.php';
require_once __DIR__.'/Validator.php';

class Mailchimp {
    private $apiKey;
    private $server;
    private $root;

    public function __construct($apiKey) {
        $this->apiKey = $apiKey;
        $this->server = end(explode('-', $this->apiKey));
        $this->root = 'https://'.$this->server.'.api.mailchimp.com/3.0';

    }

    private function makeRequest($endpoint, $data, $method = 'GET') {
        $url = $this->root.$endpoint;
        $client = new DCurl($url, $method, $data);
        $client->setPassword($this->apiKey)
            ->run();

        return json_decode($client->getOutput());
    }

    public function registerAddress($list, $email, $name = '', $surname = '', $merge = []) {

        $merge_fields = [
            'FNAME' => $name,
            'LNAME' => $surname,
        ];

        $merge_fields = array_merge($merge_fields, $merge);

        $data = [
            'email_address' => $email,
            'status' => 'subscribed',
            'merge_fields' => $merge_fields,

        ];


        return $this->makeRequest('/lists/'.$list.'/members', $data, 'POST');


    }
}