/administrator/components/com_breezingforms/libraries/mailchimp/MCAPI.class.php
PHP | 1814 lines | 553 code | 90 blank | 1171 comment | 24 complexity | a37c7561e52348b21672e52378a0e55d MD5 | raw file
Possible License(s): LGPL-3.0, LGPL-2.0, JSON, GPL-2.0, BSD-3-Clause, LGPL-2.1, MIT
Large files files are truncated, but you can click here to view the full file
- <?php
- defined('_JEXEC') or die('Direct Access to this location is not allowed.');
- /**
- * BreezingForms - A Joomla Forms Application
- * @version 1.8
- * @package BreezingForms
- * @copyright (C) 2008-2012 by Markus Bopp
- * @license Released under the terms of the GNU General Public License
- **/
- class MCAPI {
- var $version = "1.2";
- 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 MCAPI($apikey, $secure=false) {
- //do more "caching" of the uuid for those people that keep instantiating this...
- $this->secure = $secure;
- $this->apiUrl = parse_url("http://api.mailchimp.com/" . $this->version . "/?output=php");
- if ( isset($GLOBALS["mc_api_key"]) && $GLOBALS["mc_api_key"]!="" ){
- $this->api_key = $GLOBALS["mc_api_key"];
- } else {
- $this->api_key = $GLOBALS["mc_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;
- }
- }
-
- /**
- * Unschedule a campaign that is scheduled to be sent in the future
- *
- * @section Campaign Related
- * @example mcapi_campaignUnschedule.php
- * @example xml-rpc_campaignUnschedule.php
- *
- * @param string $cid the id of the campaign to unschedule
- * @return boolean true on success
- */
- function campaignUnschedule($cid) {
- $params = array();
- $params["cid"] = $cid;
- return $this->callServer("campaignUnschedule", $params);
- }
- /**
- * Schedule a campaign to be sent in the future
- *
- * @section Campaign Related
- * @example mcapi_campaignSchedule.php
- * @example xml-rpc_campaignSchedule.php
- *
- * @param string $cid the id of the campaign to schedule
- * @param string $schedule_time the time to schedule the campaign. For A/B Split "schedule" campaigns, the time for Group A - in YYYY-MM-DD HH:II:SS format in <strong>GMT</strong>
- * @param string $schedule_time_b optional -the time to schedule Group B of an A/B Split "schedule" campaign - in YYYY-MM-DD HH:II:SS format in <strong>GMT</strong>
- * @return boolean true on success
- */
- function campaignSchedule($cid, $schedule_time, $schedule_time_b=NULL) {
- $params = array();
- $params["cid"] = $cid;
- $params["schedule_time"] = $schedule_time;
- $params["schedule_time_b"] = $schedule_time_b;
- return $this->callServer("campaignSchedule", $params);
- }
- /**
- * Resume sending an AutoResponder or RSS campaign
- *
- * @section Campaign Related
- *
- * @param string $cid the id of the campaign to pause
- * @return boolean true on success
- */
- function campaignResume($cid) {
- $params = array();
- $params["cid"] = $cid;
- return $this->callServer("campaignResume", $params);
- }
- /**
- * Pause an AutoResponder orRSS campaign from sending
- *
- * @section Campaign Related
- *
- * @param string $cid the id of the campaign to pause
- * @return boolean true on success
- */
- function campaignPause($cid) {
- $params = array();
- $params["cid"] = $cid;
- return $this->callServer("campaignPause", $params);
- }
- /**
- * Send a given campaign immediately
- *
- * @section Campaign Related
- *
- * @example mcapi_campaignSendNow.php
- * @example xml-rpc_campaignSendNow.php
- *
- * @param string $cid the id of the campaign to resume
- * @return boolean true on success
- */
- function campaignSendNow($cid) {
- $params = array();
- $params["cid"] = $cid;
- return $this->callServer("campaignSendNow", $params);
- }
- /**
- * Send a test of this campaign to the provided email address
- *
- * @section Campaign Related
- *
- * @example mcapi_campaignSendTest.php
- * @example xml-rpc_campaignSendTest.php
- *
- * @param string $cid the id of the campaign to test
- * @param array $test_emails an array of email address to receive the test message
- * @param string $send_type optional by default (null) both formats are sent - "html" or "text" send just that format
- * @return boolean true on success
- */
- function campaignSendTest($cid, $test_emails=array (
- ), $send_type=NULL) {
- $params = array();
- $params["cid"] = $cid;
- $params["test_emails"] = $test_emails;
- $params["send_type"] = $send_type;
- return $this->callServer("campaignSendTest", $params);
- }
- /**
- * Retrieve all templates defined for your user account
- *
- * @section Campaign Related
- * @example mcapi_campaignTemplates.php
- * @example xml-rpc_campaignTemplates.php
- *
- * @return array An array of structs, one for each template (see Returned Fields for details)
- * @returnf integer id Id of the template
- * @returnf string name Name of the template
- * @returnf string layout Layout of the template - "basic", "left_column", "right_column", or "postcard"
- * @returnf string preview_image If we've generated it, the url of the preview image for the template
- * @returnf array sections associative array of editable sections in the template that can accept custom HTML when sending a campaign
- */
- function campaignTemplates() {
- $params = array();
- return $this->callServer("campaignTemplates", $params);
- }
- /**
- * Allows one to test their segmentation rules before creating a campaign using them
- *
- * @section Campaign Related
- * @example mcapi_campaignSegmentTest.php
- * @example xml-rpc_campaignSegmentTest.php
- *
- * @param string $list_id the list to test segmentation on - get lists using lists()
- * @param array $options with 2 keys:
- string "match" controls whether to use AND or OR when applying your options - expects "<strong>any</strong>" (for OR) or "<strong>all</strong>" (for AND)
- array "conditions" - up to 10 different criteria to apply while segmenting. Each criteria row must contain 3 keys - "<strong>field</strong>", "<strong>op</strong>", and "<strong>value</strong>" - and possibly a fourth, "<strong>extra</strong>", based on these definitions:
-
- Field = "<strong>date</strong>" : Select based on various dates we track
- Valid Op(eration): <strong>eq</strong> (is) / <strong>gt</strong> (after) / <strong>lt</strong> (before)
- Valid Values:
- string last_campaign_sent uses the date of the last campaign sent
- string campaign_id - uses the send date of the campaign that carriers the Id submitted - see campaigns()
- string YYYY-MM-DD - any date in the form of YYYY-MM-DD - <em>note:</em> anything that appears to start with YYYY will be treated as a date
-
- Field = "<strong>interests</strong>":
- Valid Op(erations): <strong>one</strong> / <strong>none</strong> / <strong>all</strong>
- Valid Values: a comma delimited of interest groups for the list - see listInterestGroups()
-
- Field = "<strong>aim</strong>"
- Valid Op(erations): <strong>open</strong> / <strong>noopen</strong> / <strong>click</strong> / <strong>noclick</strong>
- Valid Values: "<strong>any</strong>" or a valid AIM-enabled Campaign that has been sent
-
- Field = "<strong>rating</strong>" : allows matching based on list member ratings
- Valid Op(erations): <strong>eq</strong> (=) / <strong>ne</strong> (!=) / <strong>gt</strong> (>) / <strong>lt</strong> (<)
- Valid Values: a number between 0 and 5
-
- Field = "<strong>ecomm_prod</strong>" or "<strong>ecomm_prod</strong>": allows matching product and category names from purchases
- Valid Op(erations):
- <strong>eq</strong> (=) / <strong>ne</strong> (!=) / <strong>gt</strong> (>) / <strong>lt</strong> (<) / <strong>like</strong> (like '%blah%') / <strong>nlike</strong> (not like '%blah%') / <strong>starts</strong> (like 'blah%') / <strong>ends</strong> (like '%blah')
- Valid Values: any string
-
- Field = "<strong>ecomm_spent_one</strong>" or "<strong>ecomm_spent_all</strong>" : allows matching purchase amounts on a single order or all orders
- Valid Op(erations): <strong>gt</strong> (>) / <strong>lt</strong> (<)
- Valid Values: a number
-
- Field = "<strong>ecomm_date</strong>" : allow matching based on order dates
- Valid Op(eration): <strong>eq</strong> (is) / <strong>gt</strong> (after) / <strong>lt</strong> (before)
- Valid Values:
- string YYYY-MM-DD - any date in the form of YYYY-MM-DD
-
- Field = An <strong>Address</strong> Merge Var. Use <strong>Merge0-Merge30</strong> or the <strong>Custom Tag</strong> you've setup for your merge field - see listMergeVars(). Note, Address fields can still be used with the default operations below - this section is broken out solely to highlight the differences in using the geolocation routines.
- Valid Op(erations): <strong>geoin</strong>
- Valid Values: The number of miles an address should be within
- Extra Value: The Zip Code to be used as the center point
-
- Default Field = A Merge Var. Use <strong>Merge0-Merge30</strong> or the <strong>Custom Tag</strong> you've setup for your merge field - see listMergeVars()
- Valid Op(erations):
- <strong>eq</strong> (=) / <strong>ne</strong> (!=) / <strong>gt</strong> (>) / <strong>lt</strong> (<) / <strong>like</strong> (like '%blah%') / <strong>nlike</strong> (not like '%blah%') / <strong>starts</strong> (like 'blah%') / <strong>ends</strong> (like '%blah')
- Valid Values: any string
- * @return integer total The total number of subscribers matching your segmentation options
- */
- function campaignSegmentTest($list_id, $options) {
- $params = array();
- $params["list_id"] = $list_id;
- $params["options"] = $options;
- return $this->callServer("campaignSegmentTest", $params);
- }
- /**
- * Create a new draft campaign to send
- *
- * @section Campaign Related
- * @example mcapi_campaignCreate.php
- * @example xml-rpc_campaignCreate.php
- * @example xml-rpc_campaignCreateABSplit.php
- * @example xml-rpc_campaignCreateRss.php
- *
- * @param string $type the Campaign Type to create - one of "regular", "plaintext", "absplit", "rss", "trans", "auto"
- * @param array $options a hash of the standard options for this campaign :
- string list_id the list to send this campaign to- get lists using lists()
- string subject the subject line for your campaign message
- string from_email the From: email address for your campaign message
- string from_name the From: name for your campaign message (not an email address)
- string to_email the To: name recipients will see (not email address)
- integer template_id optional - use this template to generate the HTML content of the campaign
- integer folder_id optional - automatically file the new campaign in the folder_id passed
- array tracking optional - set which recipient actions will be tracked, as a struct of boolean values with the following keys: "opens", "html_clicks", and "text_clicks". By default, opens and HTML clicks will be tracked.
- string title optional - an internal name to use for this campaign. By default, the campaign subject will be used.
- boolean authenticate optional - set to true to enable SenderID, DomainKeys, and DKIM authentication, defaults to false.
- array analytics optional - if provided, use a struct with "service type" as a key and the "service tag" as a value. For Google, this should be "google"=>"your_google_analytics_key_here". Note that only "google" is currently supported - a Google Analytics tags will be added to all links in the campaign with this string attached. Others may be added in the future
- boolean auto_footer optional Whether or not we should auto-generate the footer for your content. Mostly useful for content from URLs or Imports
- boolean inline_css optional Whether or not css should be automatically inlined when this campaign is sent, defaults to false.
- boolean generate_text optional Whether of not to auto-generate your Text content from the HTML content. Note that this will be ignored if the Text part of the content passed is not empty, defaults to false.
- boolean auto_tweet optional If set, this campaign will be auto-tweeted when it is sent - defaults to false. Note that if a Twitter account isn't linked, this will be silently ignored.
-
- * @param array $content the content for this campaign - use a struct with the following keys:
- "html" for pasted HTML content
- "text" for the plain-text version
- "url" to have us pull in content from a URL. Note, this will override any other content options - for lists with Email Format options, you'll need to turn on generate_text as well
- "archive" to send a Base64 encoded archive file for us to import all media from. Note, this will override any other content options - for lists with Email Format options, you'll need to turn on generate_text as well
- "archive_type" optional - only necessary for the "archive" option. Supported formats are: zip, tar.gz, tar.bz2, tar, tgz, tbz . If not included, we will default to zip
-
-
- If you chose a template instead of pasting in your HTML content, then use "html_" followed by the template sections as keys - for example, use a key of "html_MAIN" to fill in the "MAIN" section of a template. Supported template sections include: "html_HEADER", "html_MAIN", "html_SIDECOLUMN", and "html_FOOTER"
- * @param array $segment_opts optional - if you wish to do Segmentation with this campaign this array should contain: see campaignSegmentTest(). It's suggested that you test your options against campaignSegmentTest(). Also, "trans" campaigns <strong>do not</strong> support segmentation.
- * @param array $type_opts optional -
- For RSS Campaigns this, array should contain:
- string url the URL to pull RSS content from - it will be verified and must exist
- string schedule optional one of "daily", "weekly", "monthly" - defaults to "daily"
- string schedule_hour optional an hour between 0 and 24 - default to 4 (4am <em>local time</em>) - applies to all schedule types
- string schedule_weekday optional for "weekly" only, a number specifying the day of the week to send: 0 (Sunday) - 6 (Saturday) - defaults to 1 (Monday)
- string schedule_monthday optional for "monthly" only, a number specifying the day of the month to send (1 - 28) or "last" for the last day of a given month. Defaults to the 1st day of the month
-
- For A/B Split campaigns, this array should contain:
- string split_test The values to segment based on. Currently, one of: "subject", "from_name", "schedule". NOTE, for "schedule", you will need to call campaignSchedule() separately!
- string pick_winner How the winner will be picked, one of: "opens" (by the open_rate), "clicks" (by the click rate), "manual" (you pick manually)
- integer wait_units optional the default time unit to wait before auto-selecting a winner - use "3600" for hours, "86400" for days. Defaults to 86400.
- integer wait_time optional the number of units to wait before auto-selecting a winner - defaults to 1, so if not set, a winner will be selected after 1 Day.
- integer split_size optional this is a percentage of what size the Campaign's List plus any segmentation options results in. "schedule" type forces 50%, all others default to 10%
- string from_name_a optional sort of, required when split_test is "from_name"
- string from_name_b optional sort of, required when split_test is "from_name"
- string from_email_a optional sort of, required when split_test is "from_name"
- string from_email_b optional sort of, required when split_test is "from_name"
- string subject_a optional sort of, required when split_test is "subject"
- string subject_b optional sort of, required when split_test is "subject"
-
- For AutoResponder campaigns, this array should contain:
- string offset-units one of "day", "week", "month", "year" - required
- string offset-time the number of units, must be a number greater than 0 - required
- string offset-dir either "before" or "after"
- string event optional "signup" (default) to base this on double-optin signup, "date" or "annual" to base this on merge field in the list
- string event-datemerge optional sort of, this is required if the event is "date" or "annual"
-
- *
- * @return string the ID for the created campaign
- */
- function campaignCreate($type, $options, $content, $segment_opts=NULL, $type_opts=NULL) {
- $params = array();
- $params["type"] = $type;
- $params["options"] = $options;
- $params["content"] = $content;
- $params["segment_opts"] = $segment_opts;
- $params["type_opts"] = $type_opts;
- return $this->callServer("campaignCreate", $params);
- }
- /** Update just about any setting for a campaign that has <em>not</em> been sent. See campaignCreate() for details.
- *
- *
- * Caveats:<br/><ul>
- * <li>If you set list_id, all segmentation options will be deleted and must be re-added.</li>
- * <li>If you set template_id, you need to follow that up by setting it's 'content'</li>
- * <li>If you set segment_opts, you should have tested your options against campaignSegmentTest() as campaignUpdate() will not allow you to set a segment that includes no members.</li></ul>
- * @section Campaign Related
- *
- * @example mcapi_campaignUpdate.php
- * @example mcapi_campaignUpdateAB.php
- * @example xml-rpc_campaignUpdate.php
- * @example xml-rpc_campaignUpdateAB.php
- *
- * @param string $cid the Campaign Id to update
- * @param string $name the parameter name ( see campaignCreate() ). For items in the <strong>options</strong> array, this will be that parameter's name (subject, from_email, etc.). Additional parameters will be that option name (content, segment_opts). "type_opts" will be the name of the type - rss, auto, trans, etc.
- * @param mixed $value an appropriate value for the parameter ( see campaignCreate() ). For items in the <strong>options</strong> array, this will be that parameter's value. For additional parameters, this is the same value passed to them.
- * @return boolean true if the update succeeds, otherwise an error will be thrown
- */
- function campaignUpdate($cid, $name, $value) {
- $params = array();
- $params["cid"] = $cid;
- $params["name"] = $name;
- $params["value"] = $value;
- return $this->callServer("campaignUpdate", $params);
- }
- /** Replicate a campaign.
- *
- * @section Campaign Related
- *
- * @example mcapi_campaignReplicate.php
- *
- * @param string $cid the Campaign Id to replicate
- * @return string the id of the replicated Campaign created, otherwise an error will be thrown
- */
- function campaignReplicate($cid) {
- $params = array();
- $params["cid"] = $cid;
- return $this->callServer("campaignReplicate", $params);
- }
- /** Delete a campaign. Seriously, "poof, gone!" - be careful!
- *
- * @section Campaign Related
- *
- * @example mcapi_campaignDelete.php
- *
- * @param string $cid the Campaign Id to delete
- * @return boolean true if the delete succeeds, otherwise an error will be thrown
- */
- function campaignDelete($cid) {
- $params = array();
- $params["cid"] = $cid;
- return $this->callServer("campaignDelete", $params);
- }
- /**
- * Get the list of campaigns and their details matching the specified filters
- *
- * @section Campaign Related
- * @example mcapi_campaigns.php
- * @example xml-rpc_campaigns.php
- *
- * @param array $filters a hash of filters to apply to this query - all are optional:
- string campaign_id optional - return a single campaign using a know campaign_id
- string list_id optional - the list to send this campaign to- get lists using lists()
- integer folder_id optional - only show campaigns from this folder id - get folders using campaignFolders()
- string status optional - return campaigns of a specific status - one of "save", "paused", "schedule", "sending"
- string type optional - return campaigns of a specific type - one of "regular", "plaintext", "absplit", "rss", "trans", "auto"
- string from_name optional - only show campaigns that have this "From Name"
- string from_email optional - only show campaigns that have this "Reply-to Email"
- string title optional - only show campaigns that have this title
- string subject optional - only show campaigns that have this subject
- string sendtime_start optional - only show campaigns that have been sent since this date/time (in GMT) - format is YYYY-MM-DD HH:mm:ss (24hr)
- string sendtime_end optional - only show campaigns that have been sent before this date/time (in GMT) - format is YYYY-MM-DD HH:mm:ss (24hr)
- boolean exact optional - flag for whether to filter on exact values when filtering, or search within content for filter values - defaults to true
- * @param integer $start optional - control paging of campaigns, start results at this campaign #, defaults to 1st page of data (page 0)
- * @param integer $limit optional - control paging of campaigns, number of campaigns to return with each call, defaults to 25 (max=1000)
- * @return array list of campaigns and their associated information (see Returned Fields for description)
- * @returnf string id Campaign Id (used for all other campaign functions)
- * @returnf integer web_id The Campaign id used in our web app, allows you to create a link directly to it
- * @returnf string title Title of the campaign
- * @returnf string type The type of campaign this is (regular,plaintext,absplit,rss,inspection,trans,auto)
- * @returnf date create_time Creation time for the campaign
- * @returnf date send_time Send time for the campaign - also the scheduled time for scheduled campaigns.
- * @returnf integer emails_sent Number of emails email was sent to
- * @returnf string status Status of the given campaign (save,paused,schedule,sending,sent)
- * @returnf string from_name From name of the given campaign
- * @returnf string from_email Reply-to email of the given campaign
- * @returnf string subject Subject of the given campaign
- * @returnf string to_email Custom "To:" email string using merge variables
- * @returnf string archive_url Archive link for the given campaign
- * @returnf boolean inline_css Whether or not the campaigns content auto-css-lined
- * @returnf string analytics Either "google" if enabled or "N" if disabled
- * @returnf string analytcs_tag The name/tag the campaign's links were tagged with if analytics were enabled.
- * @returnf boolean track_clicks_text Whether or not links in the text version of the campaign were tracked
- * @returnf boolean track_clicks_html Whether or not links in the html version of the campaign were tracked
- * @returnf boolean track_opens Whether or not opens for the campaign were tracked
- * @returnf string segment_text a string marked-up with HTML explaining the segment used for the campaign in plain English
- * @returnf array segment_opts the segment used for the campaign - can be passed to campaignSegmentTest() or campaignCreate()
- */
- function campaigns($filters=array (
- ), $start=0, $limit=25) {
- $params = array();
- $params["filters"] = $filters;
- $params["start"] = $start;
- $params["limit"] = $limit;
- return $this->callServer("campaigns", $params);
- }
- /**
- * List all the folders for a user account
- *
- * @section Campaign Related
- * @example mcapi_campaignFolders.php
- * @example xml-rpc_campaignFolders.php
- *
- * @return array Array of folder structs (see Returned Fields for details)
- * @returnf integer folder_id Folder Id for the given folder, this can be used in the campaigns() function to filter on.
- * @returnf string name Name of the given folder
- */
- function campaignFolders() {
- $params = array();
- return $this->callServer("campaignFolders", $params);
- }
- /**
- * Given a list and a campaign, get all the relevant campaign statistics (opens, bounces, clicks, etc.)
- *
- * @section Campaign Stats
- *
- * @example mcapi_campaignStats.php
- * @example xml-rpc_campaignStats.php
- *
- * @param string $cid the campaign id to pull stats for (can be gathered using campaigns())
- * @return array struct of the statistics for this campaign
- * @returnf integer syntax_errors Number of email addresses in campaign that had syntactical errors.
- * @returnf integer hard_bounces Number of email addresses in campaign that hard bounced.
- * @returnf integer soft_bounces Number of email addresses in campaign that soft bounced.
- * @returnf integer unsubscribes Number of email addresses in campaign that unsubscribed.
- * @returnf integer abuse_reports Number of email addresses in campaign that reported campaign for abuse.
- * @returnf integer forwards Number of times email was forwarded to a friend.
- * @returnf integer forwards_opens Number of times a forwarded email was opened.
- * @returnf integer opens Number of times the campaign was opened.
- * @returnf date last_open Date of the last time the email was opened.
- * @returnf integer unique_opens Number of people who opened the campaign.
- * @returnf integer clicks Number of times a link in the campaign was clicked.
- * @returnf integer unique_clicks Number of unique recipient/click pairs for the campaign.
- * @returnf date last_click Date of the last time a link in the email was clicked.
- * @returnf integer users_who_clicked Number of unique recipients who clicked on a link in the campaign.
- * @returnf integer emails_sent Number of email addresses campaign was sent to.
- */
- function campaignStats($cid) {
- $params = array();
- $params["cid"] = $cid;
- return $this->callServer("campaignStats", $params);
- }
- /**
- * Get an array of the urls being tracked, and their click counts for a given campaign
- *
- * @section Campaign Stats
- *
- * @example mcapi_campaignClickStats.php
- * @example xml-rpc_campaignClickStats.php
- *
- * @param string $cid the campaign id to pull stats for (can be gathered using campaigns())
- * @return struct urls will be keys and contain their associated statistics:
- * @returnf integer clicks Number of times the specific link was clicked
- * @returnf integer unique Number of unique people who clicked on the specific link
- */
- function campaignClickStats($cid) {
- $params = array();
- $params["cid"] = $cid;
- return $this->callServer("campaignClickStats", $params);
- }
- /**
- * Get the top 5 performing email domains for this campaign. Users want more than 5 should use campaign campaignEmailStatsAIM()
- * or campaignEmailStatsAIMAll() and generate any additional stats they require.
- *
- * @section Campaign Stats
- *
- * @example mcapi_campaignEmailDomainPerformance.php
- *
- * @param string $cid the campaign id to pull email domain performance for (can be gathered using campaigns())
- * @return array domains email domains and their associated stats
- * @returnf string domain Domain name or special "Other" to roll-up stats past 5 domains
- * @returnf integer total_sent Total Email across all domains - this will be the same in every row
- * @returnf integer emails Number of emails sent to this domain
- * @returnf integer bounces Number of bounces
- * @returnf integer opens Number of opens
- * @returnf integer clicks Number of clicks
- * @returnf integer unsubs Number of unsubs
- * @returnf integer delivered Number of deliveries
- * @returnf integer emails_pct Percentage of emails that went to this domain (whole number)
- * @returnf integer bounces_pct Percentage of bounces from this domain (whole number)
- * @returnf integer opens_pct Percentage of opens from this domain (whole number)
- * @returnf integer clicks_pct Percentage of clicks from this domain (whole number)
- * @returnf integer unsubs_pct Percentage of unsubs from this domain (whole number)
- */
- function campaignEmailDomainPerformance($cid) {
- $params = array();
- $params["cid"] = $cid;
- return $this->callServer("campaignEmailDomainPerformance", $params);
- }
- /**
- * Get all email addresses with Hard Bounces for a given campaign
- *
- * @section Campaign Stats
- *
- * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns())
- * @param integer $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
- * @param integer $limit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
- * @return array Arrays of email addresses with Hard Bounces
- */
- function campaignHardBounces($cid, $start=0, $limit=1000) {
- $params = array();
- $params["cid"] = $cid;
- $params["start"] = $start;
- $params["limit"] = $limit;
- return $this->callServer("campaignHardBounces", $params);
- }
- /**
- * Get all email addresses with Soft Bounces for a given campaign
- *
- * @section Campaign Stats
- *
- * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns())
- * @param integer $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
- * @param integer $limit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
- * @return array Arrays of email addresses with Soft Bounces
- */
- function campaignSoftBounces($cid, $start=0, $limit=1000) {
- $params = array();
- $params["cid"] = $cid;
- $params["start"] = $start;
- $params["limit"] = $limit;
- return $this->callServer("campaignSoftBounces", $params);
- }
- /**
- * Get all unsubscribed email addresses for a given campaign
- *
- * @section Campaign Stats
- *
- * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns())
- * @param integer $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
- * @param integer $limit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
- * @return array list of email addresses that unsubscribed from this campaign
- */
- function campaignUnsubscribes($cid, $start=0, $limit=1000) {
- $params = array();
- $params["cid"] = $cid;
- $params["start"] = $start;
- $params["limit"] = $limit;
- return $this->callServer("campaignUnsubscribes", $params);
- }
- /**
- * Get all email addresses that complained about a given campaign
- *
- * @section Campaign Stats
- *
- * @example mcapi_campaignAbuseReports.php
- *
- * @param string $cid the campaign id to pull abuse reports for (can be gathered using campaigns())
- * @param integer $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
- * @param integer $limit optional for large data sets, the number of results to return - defaults to 500, upper limit set at 1000
- * @param string $since optional pull only messages since this time - use YYYY-MM-DD HH:II:SS format in <strong>GMT</strong>
- * @return array reports the abuse reports for this campaign
- * @returnf string date date/time the abuse report was received and processed
- * @returnf string email the email address that reported abuse
- * @returnf string type an internal type generally specifying the orginating mail provider - may not be useful outside of filling report views
- */
- function campaignAbuseReports($cid, $since=NULL, $start=0, $limit=500) {
- $params = array();
- $params["cid"] = $cid;
- $params["since"] = $since;
- $params["start"] = $start;
- $params["limit"] = $limit;
- return $this->callServer("campaignAbuseReports", $params);
- }
- /**
- * Retrieve the text presented in our app for how a campaign performed and any advice we may have for you - best
- * suited for display in customized reports pages. Note: some messages will contain HTML - clean tags as necessary
- *
- * @section Campaign Stats
- *
- * @example mcapi_campaignAdvice.php
- *
- * @param string $cid the campaign id to pull advice text for (can be gathered using campaigns())
- * @return array advice on the campaign's performance
- * @returnf msg the advice message
- * @returnf type the "type" of the message. one of: negative, positive, or neutral
- */
- function campaignAdvice($cid) {
- $params = array();
- $params["cid"] = $cid;
- return $this->callServer("campaignAdvice", $params);
- }
- /**
- * Retrieve the Google Analytics data we've collected for this campaign. Note, requires Google Analytics Add-on to be installed and configured.
- *
- * @section Campaign Stats
- *
- * @example mcapi_campaignAnalytics.php
- *
- * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns())
- * @return array analytics we've collected for the passed campaign.
- * @returnf integer visits number of visits
- * @returnf integer pages number of page views
- * @returnf integer new_visits new visits recorded
- * @returnf integer bounces vistors who "bounced" from your site
- * @returnf double time_on_site
- * @returnf integer goal_conversions number of goals converted
- * @returnf double goal_value value of conversion in dollars
- * @returnf double revenue revenue generated by campaign
- * @returnf integer transactions number of transactions tracked
- * @returnf integer ecomm_conversions number Ecommerce transactions tracked
- * @returnf array goals an array containing goal names and number of conversions
- */
- function campaignAnalytics($cid) {
- $params = array();
- $params["cid"] = $cid;
- return $this->callServer("campaignAnalytics", $params);
- }
- /**
- * Retrieve the countries and number of opens tracked for each. Email address are not returned.
- *
- * @section Campaign Stats
- *
- *
- * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns())
- * @return array countries an array of countries where opens occurred
- * @returnf string code The ISO3166 2 digit country code
- * @returnf string name A version of the country name, if we have it
- * @returnf int opens The total number of opens that occurred in the country
- * @returnf bool region_detail Whether or not a subsequent call to campaignGeoOpensByCountry() will return anything
- */
- function campaignGeoOpens($cid) {
- $params = array();
- $params["cid"] = $cid;
- return $this->callServer("campaignGeoOpens", $params);
- }
- /**
- * Retrieve the regions and number of opens tracked for a certain country. Email address are not returned.
- *
- * @section Campaign Stats
- *
- *
- * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns())
- * @param string $code An ISO3166 2 digit country code
- * @return array regions an array of regions within the provided country where opens occurred.
- * @returnf string code An internal code for the region. When this is blank, it indicates we know the country, but not the region
- * @returnf string name The name of the region, if we have one. For blank "code" values, this will be "Rest of Country"
- * @returnf int opens The total number of opens that occurred in the country
- */
- function campaignGeoOpensForCountry($cid, $code) {
- $params = array();
- $params["cid"] = $cid;
- $params["code"] = $code;
- return $this->callServer("campaignGeoOpensForCountry", $params);
- }
- /**
- * Retrieve the tracked eepurl mentions on Twitter
- *
- * @section Campaign Stats
- *
- *
- * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns())
- * @return array stats an array containing tweets and retweets including the campaign's eepurl
- * @returnf int tweets Total number of tweets seen
- * @returnf string first_tweet date and time of the first tweet seen
- * @returnf string last_tweet date and time of the last tweet seen
- * @returnf int retweets Total number of retweets seen
- * @returnf string first_retweet date and time of the first retweet seen
- * @returnf string last_retweet date and time of the last retweet seen
- * @returnf array statuses an array of statuses recorded inclduing the status, screen_name, status_id, and datetime fields plus an is_retweet flag
- */
- function campaignEepUrlStats($cid) {
- $params = array();
- $params["cid"] = $cid;
- return $this->callServer("campaignEepUrlStats", $params);
- }
- /**
- * Retrieve the full bounce messages for the given campaign. Note that this can return very large amounts
- * of data depending on how large the campaign was and how much cruft the bounce provider returned. Also,
- * message over 30 days old are subject to being removed
- *
- * @section Campaign Stats
- *
- * @example mcapi_campaignBounceMessages.php
- *
- * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns())
- * @param integer $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
- * @param integer $limit optional for large data sets, the number of results to return - defaults to 25, upper limit set at 50
- * @param string $since optional pull only messages since this time - use YYYY-MM-DD format in <strong>GMT</strong> (we only store the date, not the time)
- * @return array bounces the full bounce messages for this campaign
- * @returnf string date date/time the bounce was received and processed
- * @returnf string email the email address that bounced
- * @returnf string message the entire bounce message received
- */
- function campaignBounceMessages($cid, $start=0, $limit=25, $since=NULL) {
- $params = array();
- $params["cid"] = $cid;
- $params["start"] = $start;
- $params["limit"] = $limit;
- $params["since"] = $since;
- return $this->callServer("campaignBounceMessages", $params);
- }
- /**
- * Retrieve the Ecommerce Orders tracked by campaignEcommAddOrder()
- *
- * @section Campaign Stats
- *
- * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns())
- * @param integer $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
- * @param integer $limit optional for large data sets, the number of results to return - defaults to 100, upper limit set at 500
- * @param string $since optional pull only messages since this time - use YYYY-MM-DD HH:II:SS format in <strong>GMT</strong>
- * @return array orders the orders and their details that we've collected for this campaign
- * @returnf store_id string the store id generated by the plugin used to uniquely identify a store
- * @returnf store_name string the store name collected by the plugin - often the domain name
- * @returnf order_id string the internal order id the store tracked this order by
- * @returnf email string the email address that received this campaign and is associated with this order
- * @returnf order_total double the order total
- * @returnf tax_total double the total tax for the order (if collected)
- * @returnf ship_total double the shipping total for the order (if collected)
- * @returnf order_date string the date the order was tracked - from the store if possible, otherwise the GMT time we recieved it
- * @returnf lines array containing detail of the order - product, category, quantity, item cost
- */
- function campaignEcommOrders($cid, $start=0, $limit=100, $since=NULL) {
- $params = array();
- $params["cid"] = $cid;
- $params["start"] = $start;
- $params["limit"] = $limit;
- $params["since"] = $since;
- return $this->callServer("campaignEcommOrders", $params);
- }
- /**
- * Get the URL to a customized <a href="http://eepurl.com/gKmL" target="_blank">VIP Report</a> for the specified campaign and optionally send an email to someone with links to it. Note subsequent calls will overwrite anything already set for the same campign (eg, the password)
- *
- * @section Campaign Related
- *
- * @param string $cid the campaign id to share a report for (can be gathered using campaigns())
- * @param array $opts optional various parameters which can be used to configure the shared report
- string header_type optional - "text" or "image', defaults to "text'
- string header_data optional - if "header_type" is text, the text to display. if "header_type" is "image" a valid URL to an image file. Note that images will be resized to be no more than 500x150. Defaults to the Accounts Company Name.
- boolean secure optional - whether to require a password for the shared report. defaults to "true"
- string password optional - if secure is true and a password is not included, we will generate one. It is always returned.
- string to_email optional - optional, email address to share the report with - no value means an email will not be sent
- array theme optional - an array containing either 3 or 6 character color code values for: "bg_color", "header_color", "current_tab", "current_tab_text", "normal_tab", "normal_tab_text", "hover_tab", "hover_tab_text"
- string css_url optional - a link to an external CSS file to be included after our default CSS (http://vip-reports.net/css/vip.css) <strong>only if</strong> loaded via the "secure_url" - max 255 characters
- * @return struct Struct containing details for the shared report
- * @returnf string title The Title of the Campaign being shared
- * @returnf string url The URL to the shared report
- * @returnf string secure_url The URL to the shared report, including the password (good for loading in an IFRAME). For non-secure reports, this will not be returned
- * @returnf string password If secured, the password for the report, otherwise this field will not be returned
- */
- function campaignShareReport($cid, $opts=array (
- )) {
- $params = array();
- $params["cid"] = $cid;
- $params["opts"] = $opts;
- return $this->callServer("campaignShareReport", $params);
- }
- /**
- * Get the content (both html and text) for a campaign either as it would appear in the campaign archive or as the raw, original content
- *
- * @section Campaign Related
- *
- * @param string $cid the campaign id to get content for (can be gathered using campaigns())
- * @param bool $for_archive optional controls whether we return the Archive version (true) or the Raw version (false), defaults to true
- * @return struct Struct containing all content for the campaign (see Returned Fields for details
- * @returnf string html The HTML content used for the campgain with merge tags intact
- * @returnf string text The Text content used for the campgain with merge tags intact
- */
- function campaignContent($cid, $for_archive=true) {
- $params = array();
- $params["cid"] = $cid;
- $params["for_archive"] = $for_archive;
- return $this->callServer("campaignContent", $params);
- }
- /**
- * Retrieve the list of email addresses that opened a given campaign with how many times they opened - note: this AIM function is free and does
- * not actually require the AIM module to be installed
- *
- * @section Campaign AIM
- *
- * @param string $cid the campaign id to get opens for (can be gathered using campaigns())
- * @param integer $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
- * @param integer $limit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
- * @return array Array of structs containing email addresses and open counts
- * @returnf string email Email address that opened the campaign
- * @returnf integer open_count Total number of times the campaign was opened by this email address
- */
- function campaignOpenedAIM($cid, $start=0, $limit=1000) {
- $params = array();
- $params["cid"] = $cid;
- $params["start"] = $start;
- $params["limit"] = $limit;
- return $this->callServer("campaignOpenedAIM", $params);
- }
- /**
- * Retrieve the list of email addresses that did not open a given campaign
- *
- * @section Campaign AIM
- *
- * @param string $cid the campaign id to get no opens for (can be gathered using campaigns())
- * @param integer $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
- * @param integer $limit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
- * @return array list of email addresses that did not open a campaign
- */
- function campaignNotOpenedAIM($cid, $start=0, $limit=1000) {
- $params = array();
- $params["cid"] = $cid;
- $params["start"] = $start;
- $params["limit"] = $limit;
- return $this->callServer("campaignNotOpenedAIM", $params);
- }
- /**
- * Return the list of email addresses that clicked on a given url, and how many times they clicked
- *
- * @section Campaign AIM
- *
- * @param string $cid the campaign id to get click stats for (can be gathered using campaigns())
- * @param string $url the URL of the link that was clicked on
- * @param integer $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
- * @param integer $limit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
- * @return array Array of structs containing email addresses and click counts
- * @returnf string email Email address that opened the campaign
- * @returnf integer clicks Total number of times the URL was clicked on by this email address
- */
- function campaignClickDetailAIM($cid, $url, $start=0, $limit=1000) {
- $params = array();
- $params["cid"] = $cid;
- $params["url"] = $url;
- $params["start"] = $start;
- $params["limit"] = $limit;
- return $this->callServer("campaignClickDetailAIM", $params);
- }
- /**
- * Given a campaign and email address, return the entire click and open history with timestamps, ordered by time
- *
- * @section Campaign AIM
- *
- * @param string $cid the campaign id to get stats for (can be gathered using campaigns())
- * @param string $email_address the email address to check OR the email "id" returned from listMemberInfo, Webhooks, and Campaigns
- * @return array Array of structs containing the actions (opens and clicks) that the email took, with timestamps
- * @returnf string action The action taken (open or click)
- * @returnf d…
Large files files are truncated, but you can click here to view the full file