Exemple #1
0
 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;
 }