public function process() { $errorMessage = $this->lexicon->getMsg('mc.subscription_failed'); if (!$this->getCFGDef('apiKey')) { $this->addMessage($errorMessage); return false; } $MailChimp = new \DrewM\MailChimp\MailChimp($this->getCFGDef('apiKey')); $list_id = $this->getCFGDef('listId'); if (!$list_id) { $this->addMessage($errorMessage); return false; } $MailChimp->post("lists/{$list_id}/members", array('email_address' => $this->getField('email'), 'merge_fields' => array('NAME' => $this->getField('name')), 'status' => 'pending')); if (!$MailChimp->getLastError()) { $this->addMessage($errorMessage); } else { $this->setFormStatus(true); $this->renderTpl = $this->getCFGDef('successTpl', $this->lexicon->getMsg('mc.default_successTpl')); return true; } }
/** * getMembersSync * Method to retrieve all members from MC list. * * @return false in case of an error, or an array of members and info. */ public static function getMembersSync() { global $CFG; require_once $CFG->dirroot . '/blocks/mailchimp/classes/MailChimp.php'; if (!isset($CFG->block_mailchimp_apicode) | !isset($CFG->block_mailchimp_listid)) { debugging("ERROR: API key or mailing list is not set."); return false; } $args['offset'] = '0'; $args['count'] = '367'; //Fails if more than 367 $args['fields'] = "members.id,members.email_address,total_items,members.email_type,members.status,members.last_changed,members.merge_fields,members.interests,total_items"; //Takes about 3 minutes with 367 count and 27408 members. $method = "lists/" . $CFG->block_mailchimp_listid . "/members"; if (!($api = new \DrewM\MailChimp\MailChimp($CFG->block_mailchimp_apicode))) { debugging("ERROR: Unable to create mailchimp wrapper object \\DrewM\\MailChimp\\MailChimp."); return false; } echo "Getting list of mailing list members.\n"; $newmemberlist['members'] = true; while (!empty($newmemberlist['members'])) { $newmemberlist = $api->get($method, $args); if (!$newmemberlist) { debugging("ERROR: Unable to get member list from mailchimp, method: " . $method); $memberlist = false; return false; } if (!empty($memberlist['members'])) { $memberlist['members'] = array_merge($memberlist['members'], $newmemberlist['members']); } else { $memberlist = $newmemberlist; } $args['offset'] += $args['count']; } if (!count($memberlist['members']) > 0) { debugging("ERROR: No members present in the mailchimp list. Unable to synchronize users."); return false; } echo "Returned with " . $memberlist['total_items'] . " members.\n"; return $memberlist; }