HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/intranet.kauko.lt/wp-content/plugins/dpProEventCalendar/mailchimp/miniMCAPI.class.php
<?php

/**

This is a subset of the Actual MCAPI and miniMCAPI classes for v1.3 that includes the list related methods and support for PHP4

DOWNLOAD A NEW VERSION IF YOU WANT THE FULL, CORRECT WRAPPER.

**/

if(!class_exists('mailchimpSF_MCAPI')) {

	class mailchimpSF_MCAPI {

		var $version = "1.3";

		var $errorMessage;

		var $errorCode;

		

		/**

		 * Cache the information on the API location on the server

		 */

		var $apiUrl;

		

		/**

		 * Default to a 300 second timeout on server calls

		 */

		var $timeout = 300; 

		

		/**

		 * Default to a 8K chunk size

		 */

		var $chunkSize = 8192;

		

		/**

		 * Cache the user api_key so we only have to log in once per client instantiation

		 */

		var $api_key;

	

		/**

		 * Cache the user api_key so we only have to log in once per client instantiation

		 */

		var $secure = false;

		

		/**

		 * Connect to the MailChimp API for a given list.

		 * 

		 * @param string $apikey Your MailChimp apikey

		 * @param string $secure Whether or not this should use a secure connection

		 */

		function mailchimpSF_MCAPI($apikey, $secure=false) {

			$this->secure = $secure;

			$this->apiUrl = parse_url("http://api.mailchimp.com/" . $this->version . "/?output=php");

			$this->api_key = $apikey;

		}

		function setTimeout($seconds){

			if (is_int($seconds)){

				$this->timeout = $seconds;

				return true;

			}

		}

		function getTimeout(){

			return $this->timeout;

		}

		function useSecure($val){

			if ($val===true){

				$this->secure = true;

			} else {

				$this->secure = false;

			}

		}

	

		function lists($filters=array (

	), $start=0, $limit=25) {

			$params = array();

			$params["filters"] = $filters;

			$params["start"] = $start;

			$params["limit"] = $limit;

			return $this->callServer("lists", $params);

		}

	

		function listMergeVars($id) {

			$params = array();

			$params["id"] = $id;

			return $this->callServer("listMergeVars", $params);

		}

	

	

		function listMergeVarAdd($id, $tag, $name, $options=array (

	)) {

			$params = array();

			$params["id"] = $id;

			$params["tag"] = $tag;

			$params["name"] = $name;

			$params["options"] = $options;

			return $this->callServer("listMergeVarAdd", $params);

		}

	

		function listMergeVarUpdate($id, $tag, $options) {

			$params = array();

			$params["id"] = $id;

			$params["tag"] = $tag;

			$params["options"] = $options;

			return $this->callServer("listMergeVarUpdate", $params);

		}

	

		function listMergeVarDel($id, $tag) {

			$params = array();

			$params["id"] = $id;

			$params["tag"] = $tag;

			return $this->callServer("listMergeVarDel", $params);

		}

	

	

		function listInterestGroupings($id) {

			$params = array();

			$params["id"] = $id;

			return $this->callServer("listInterestGroupings", $params);

		}

	

		function listInterestGroupAdd($id, $group_name, $grouping_id=NULL) {

			$params = array();

			$params["id"] = $id;

			$params["group_name"] = $group_name;

			$params["grouping_id"] = $grouping_id;

			return $this->callServer("listInterestGroupAdd", $params);

		}

	

		function listInterestGroupDel($id, $group_name, $grouping_id=NULL) {

			$params = array();

			$params["id"] = $id;

			$params["group_name"] = $group_name;

			$params["grouping_id"] = $grouping_id;

			return $this->callServer("listInterestGroupDel", $params);

		}

	

		function listInterestGroupUpdate($id, $old_name, $new_name, $grouping_id=NULL) {

			$params = array();

			$params["id"] = $id;

			$params["old_name"] = $old_name;

			$params["new_name"] = $new_name;

			$params["grouping_id"] = $grouping_id;

			return $this->callServer("listInterestGroupUpdate", $params);

		}

	

		function listInterestGroupingAdd($id, $name, $type, $groups) {

			$params = array();

			$params["id"] = $id;

			$params["name"] = $name;

			$params["type"] = $type;

			$params["groups"] = $groups;

			return $this->callServer("listInterestGroupingAdd", $params);

		}

	

		function listInterestGroupingUpdate($grouping_id, $name, $value) {

			$params = array();

			$params["grouping_id"] = $grouping_id;

			$params["name"] = $name;

			$params["value"] = $value;

			return $this->callServer("listInterestGroupingUpdate", $params);

		}

	

	

		function listInterestGroupingDel($grouping_id) {

			$params = array();

			$params["grouping_id"] = $grouping_id;

			return $this->callServer("listInterestGroupingDel", $params);

		}

	

		function listSubscribe($id, $email_address, $merge_vars=NULL, $email_type='html', $double_optin=true, $update_existing=false, $replace_interests=true, $send_welcome=false) {

			$params = array();

			$params["id"] = $id;

			$params["email_address"] = $email_address;

			$params["merge_vars"] = $merge_vars;

			$params["email_type"] = $email_type;

			$params["double_optin"] = $double_optin;

			$params["update_existing"] = $update_existing;

			$params["replace_interests"] = $replace_interests;

			$params["send_welcome"] = $send_welcome;

			return $this->callServer("listSubscribe", $params);

		}

	

		function listUnsubscribe($id, $email_address, $delete_member=false, $send_goodbye=true, $send_notify=true) {

			$params = array();

			$params["id"] = $id;

			$params["email_address"] = $email_address;

			$params["delete_member"] = $delete_member;

			$params["send_goodbye"] = $send_goodbye;

			$params["send_notify"] = $send_notify;

			return $this->callServer("listUnsubscribe", $params);

		}

	

	

		function listUpdateMember($id, $email_address, $merge_vars, $email_type='', $replace_interests=true) {

			$params = array();

			$params["id"] = $id;

			$params["email_address"] = $email_address;

			$params["merge_vars"] = $merge_vars;

			$params["email_type"] = $email_type;

			$params["replace_interests"] = $replace_interests;

			return $this->callServer("listUpdateMember", $params);

		}

	

		function listBatchSubscribe($id, $batch, $double_optin=true, $update_existing=false, $replace_interests=true) {

			$params = array();

			$params["id"] = $id;

			$params["batch"] = $batch;

			$params["double_optin"] = $double_optin;

			$params["update_existing"] = $update_existing;

			$params["replace_interests"] = $replace_interests;

			return $this->callServer("listBatchSubscribe", $params);

		}

	

		function listBatchUnsubscribe($id, $emails, $delete_member=false, $send_goodbye=true, $send_notify=false) {

			$params = array();

			$params["id"] = $id;

			$params["emails"] = $emails;

			$params["delete_member"] = $delete_member;

			$params["send_goodbye"] = $send_goodbye;

			$params["send_notify"] = $send_notify;

			return $this->callServer("listBatchUnsubscribe", $params);

		}

	

		function listMembers($id, $status='subscribed', $since=NULL, $start=0, $limit=100) {

			$params = array();

			$params["id"] = $id;

			$params["status"] = $status;

			$params["since"] = $since;

			$params["start"] = $start;

			$params["limit"] = $limit;

			return $this->callServer("listMembers", $params);

		}

	

	

		function listMemberInfo($id, $email_address) {

			$params = array();

			$params["id"] = $id;

			$params["email_address"] = $email_address;

			return $this->callServer("listMemberInfo", $params);

		}

	

		function listMemberActivity($id, $email_address) {

			$params = array();

			$params["id"] = $id;

			$params["email_address"] = $email_address;

			return $this->callServer("listMemberActivity", $params);

		}

	

		function getAccountDetails() {

			$params = array();

			return $this->callServer("getAccountDetails", $params);

		}

	

		function listsForEmail($email_address) {

			$params = array();

			$params["email_address"] = $email_address;

			return $this->callServer("listsForEmail", $params);

		}

	

	

		function campaignsForEmail($email_address) {

			$params = array();

			$params["email_address"] = $email_address;

			return $this->callServer("campaignsForEmail", $params);

		}

	

	

		/**

		 * "Ping" the MailChimp API - a simple method you can call that will return a constant value as long as everything is good. Note

		 * than unlike most all of our methods, we don't throw an Exception if we are having issues. You will simply receive a different

		 * string back that will explain our view on what is going on.

		 *

		 * @section Helper

		 * @example xml-rpc_ping.php

		 *

		 * @return string returns "Everything's Chimpy!" if everything is chimpy, otherwise returns an error message

		 */

		function ping() {

			$params = array();

			return $this->callServer("ping", $params);

		}

	

		/**

		 * Internal function - proxy method for certain XML-RPC calls | DO NOT CALL

		 * @param mixed Method to call, with any parameters to pass along

		 * @return mixed the result of the call

		 */

		function callMethod() {

			$params = array();

			return $this->callServer("callMethod", $params);

		}

		

		/**

		 * Actually connect to the server and call the requested methods, parsing the result

		 * You should never have to call this function manually

		 */

		function callServer($method, $params) {

			$dc = "us1";

			if (strstr($this->api_key,"-")){

				list($key, $dc) = explode("-",$this->api_key,2);

				if (!$dc) $dc = "us1";

			}

			$host = $dc.".".$this->apiUrl["host"];

			$params["apikey"] = $this->api_key;

	

			$this->errorMessage = "";

			$this->errorCode = "";

			$sep_changed = false;

			//sigh, apparently some distribs change this to &amp; by default

			if (ini_get("arg_separator.output")!="&"){

				$sep_changed = true;

				$orig_sep = ini_get("arg_separator.output");

				ini_set("arg_separator.output", "&");

			}

			$post_vars = $this->httpBuildQuery($params);

			if ($sep_changed){

				ini_set("arg_separator.output", $orig_sep);

			}

			

			$payload = "POST " . $this->apiUrl["path"] . "?" . $this->apiUrl["query"] . "&method=" . $method . " HTTP/1.0\r\n";

			$payload .= "Host: " . $host . "\r\n";

			$payload .= "User-Agent: MCAPIwp/" . $this->version ."\r\n";

			$payload .= "Content-type: application/x-www-form-urlencoded\r\n";

			$payload .= "Content-length: " . strlen($post_vars) . "\r\n";

			$payload .= "Connection: close \r\n\r\n";

			$payload .= $post_vars;

			

			ob_start();

			if ($this->secure){

				$sock = @fsockopen("ssl://".$host, 443, $errno, $errstr, 30);

			} else {

				$sock = @fsockopen($host, 80, $errno, $errstr, 30);

			}

			if(!$sock) {

				$this->errorMessage = "Could not connect (ERR $errno: $errstr)";

				$this->errorCode = "-99";

				ob_end_clean();

				return false;

			}

			

			$response = "";

			fwrite($sock, $payload);

			stream_set_timeout($sock, $this->timeout);

			$info = stream_get_meta_data($sock);

			while ((!feof($sock)) && (!$info["timed_out"])) {

				$response .= fread($sock, $this->chunkSize);

				$info = stream_get_meta_data($sock);

			}

			fclose($sock);

			ob_end_clean();

			if ($info["timed_out"]) {

				$this->errorMessage = "Could not read response (timed out)";

				$this->errorCode = -98;

				return false;

			}

	

			list($headers, $response) = explode("\r\n\r\n", $response, 2);

			$headers = explode("\r\n", $headers);

			$errored = false;

			foreach($headers as $h){

				if (substr($h,0,26)==="X-MailChimp-API-Error-Code"){

					$errored = true;

					$error_code = trim(substr($h,27));

					break;

				}

			}

			if (version_compare(PHP_VERSION, '5.3.0', '<')) {

				if(ini_get("magic_quotes_runtime")) $response = stripslashes($response);

			}

			$serial = unserialize($response);

			if($response && $serial === false) {

				$response = array("error" => "Bad Response.  Got This: " . $response, "code" => "-99");

			} else {

				$response = $serial;

			}

			if($errored && is_array($response) && isset($response["error"])) {

				$this->errorMessage = $response["error"];

				$this->errorCode = $response["code"];

				return false;

			} elseif($errored){

				$this->errorMessage = "No error message was found";

				$this->errorCode = $error_code;

				return false;

			}

			

			return $response;

		}

		

		/**

		 * Re-implement http_build_query for systems that do not already have it

		 */

		function httpBuildQuery($params, $key=null) {

			$ret = array();

			

			foreach((array) $params as $name => $val) {

				$name = urlencode($name);

				if($key !== null) {

					$name = $key . "[" . $name . "]";

				}

				

				if(is_array($val) || is_object($val)) {

					$ret[] = $this->httpBuildQuery($val, $name);

				} elseif($val !== null) {

					$ret[] = $name . "=" . urlencode($val);

				}

			}

			

			return implode("&", $ret);

		}

	

	}

}

?>