/** * Add a Mailchimp subscriber to a CiviCRM Group. */ static function mailchimpWebhookSubscribe($request_data) { $contacts = CRM_CiviMailchimp_Utils::getContactsWithPrimaryOrBulkEmail($request_data['email'], FALSE); if (empty($contacts)) { $mailchimp_contact = CRM_CiviMailchimp_Utils::createContactFromMailchimpRequest($request_data); } else { $mailchimp_contact = $contacts[0]; } CRM_CiviMailchimp_Utils::addContactToGroup($mailchimp_contact, $request_data['list_id']); }
function testMailchimpWebhookCleaned() { $sample_data = self::sampleRequestSubscribeOrProfileUpdate(); $contact = CRM_CiviMailchimp_Utils::createContactFromMailchimpRequest($sample_data); $sync_settings = CRM_CiviMailchimp_BAO_SyncSettingsTest::createTestGroupAndSyncSettings('test_group_mailchimp_webhook_cleaned'); CRM_Contact_BAO_GroupContact::addContactsToGroup(array($contact->id), $sync_settings->civicrm_group_id); $email2 = new CRM_Core_BAO_Email(); $email2->contact_id = $contact->id; $email2->email = 'civimailchimp_cleaned_test' . rand() . '@civimailchimp.org'; $email2->save(); $clean_request = self::getCleanRequestFromSampleProfileData($sample_data); CRM_CiviMailchimp_Page_Webhook::mailchimpWebhookCleaned($clean_request); $mailchimp_contact = CRM_CiviMailchimp_Utils::getContactById($contact->id); $this->assertEquals($mailchimp_contact->email[0]->on_hold, 1); $this->assertEquals($mailchimp_contact->email[1]->on_hold, 0); }
/** * Add a Mailchimp subscriber to a CiviCRM Group. */ static function mailchimpWebhookSubscribe($request_data) { $config = CRM_Core_Config::singleton(); if ($config->debug) { $request_data_log = print_r($request_data, TRUE); CRM_Core_Error::debug_log_message("Mailchimp Webhook Request [subscribe]: \nSearching for contacts with the following data.\n{$request_data_log}"); } $contacts = CRM_CiviMailchimp_Utils::getContactsWithPrimaryOrBulkEmail($request_data['email'], FALSE); if (empty($contacts)) { $mailchimp_contact = CRM_CiviMailchimp_Utils::createContactFromMailchimpRequest($request_data); if ($config->debug) { $request_data_log = print_r($mailchimp_contact, TRUE); CRM_Core_Error::debug_log_message("Mailchimp Webhook Request [subscribe]: \nExisting contact not found, so a new contact record was created with the following details.\n{$request_data_log}"); } } else { $mailchimp_contact = $contacts[0]; if ($config->debug) { $request_data_log = print_r($mailchimp_contact, TRUE); CRM_Core_Error::debug_log_message("Mailchimp Webhook Request [subscribe]: \nExisting contact found with the following details.\n{$request_data_log}"); } } CRM_CiviMailchimp_Utils::addContactToGroup($mailchimp_contact, $request_data['list_id']); }
function testUpdateContactFromMailchimpRequest() { $request_data = CRM_CiviMailchimp_Page_WebhookTest::sampleRequestSubscribeOrProfileUpdate(); $contact = CRM_CiviMailchimp_Utils::createContactFromMailchimpRequest($request_data); $rand = rand(); $request_data['merges']['FNAME'] = "CiviNew{$rand}"; $request_data['merges']['LNAME'] = "MailchimpNew{$rand}"; $updated_contact = CRM_CiviMailchimp_Utils::updateContactFromMailchimpRequest($request_data, $contact); $this->assertEquals($contact->id, $updated_contact->id); $this->assertEquals($request_data['merges']['FNAME'], $updated_contact->first_name); $this->assertEquals($request_data['merges']['LNAME'], $updated_contact->last_name); }