function civimailchimp_civicrm_contact_updated($old_contact, $new_contact) { $mailchimp_sync_settings = CRM_CiviMailchimp_BAO_SyncSettings::findByContactId($new_contact->id); if ($mailchimp_sync_settings) { $old_contact_email = CRM_CiviMailchimp_Utils::determineMailchimpEmailForContact($old_contact); $new_contact_email = CRM_CiviMailchimp_Utils::determineMailchimpEmailForContact($new_contact); if ($old_contact_email === NULL && $new_contact_email !== NULL) { // Add contact to mailchimp list. CRM_CiviMailchimp_Utils::addUpdatedContactToMailchimpList($new_contact, $new_contact_email, $mailchimp_sync_settings); } elseif ($old_contact_email !== NULL && $new_contact_email === NULL) { // Remove contact from mailchimp list. CRM_CiviMailchimp_Utils::removeUpdatedContactFromMailchimpList($old_contact_email, $mailchimp_sync_settings); } elseif ($old_contact_email !== NULL && $new_contact_email !== NULL) { // Update contact record in mailcimp. CRM_CiviMailchimp_Utils::updateContactInMailchimpList($old_contact_email, $new_contact_email, $old_contact, $new_contact, $mailchimp_sync_settings); } } }
function testUpdateContactInMailchimpListNothingChanged() { $mailchimp_list_id = 'MailchimpListsTestListA'; $mailchimp_sync_setting = CRM_CiviMailchimp_BAO_SyncSettingsTest::createTestGroupAndSyncSettings('Test Group test_contact_removed_from_group_nothing_changed', $mailchimp_list_id); $mailchimp_sync_settings = array($mailchimp_sync_setting); $old_contact_params = CRM_CiviMailchimp_UtilsTest::sampleContactParams(); $new_contact_params = $old_contact_params; $old_contact_created = CRM_Contact_BAO_Contact::create($old_contact_params); $old_contact = CRM_CiviMailchimp_Utils::getContactById($old_contact_created->id); $old_contact_email = CRM_CiviMailchimp_Utils::determineMailchimpEmailForContact($old_contact); $contact_ids = array($old_contact->id); CRM_Contact_BAO_GroupContact::addContactsToGroup($contact_ids, $mailchimp_sync_setting->civicrm_group_id); $new_contact_params['contact_id'] = $old_contact->id; $new_contact_created = CRM_Contact_BAO_Contact::create($new_contact_params); $new_contact = CRM_CiviMailchimp_Utils::getContactById($new_contact_created->id); $new_contact_email = CRM_CiviMailchimp_Utils::determineMailchimpEmailForContact($new_contact); $queue = CRM_Queue_Service::singleton()->create(array('type' => 'Sql', 'name' => 'mailchimp-sync', 'reset' => TRUE)); CRM_CiviMailchimp_Utils::updateContactInMailchimpList($old_contact_email, $new_contact_email, $old_contact, $new_contact, $mailchimp_sync_settings); $this->assertEquals(0, $queue->numberOfItems()); }