/** * Implementation of hook_civicrm_validateForm */ function civimailchimp_civicrm_validateForm($formName, &$fields, &$files, &$form, &$errors) { if ($formName === "CRM_Group_Form_Edit") { if (!empty($fields['mailchimp_list'])) { $site_key = defined('CIVICRM_SITE_KEY') ? CIVICRM_SITE_KEY : NULL; if (!$site_key) { $doc_link = CRM_Utils_System::docURL2("Managing Scheduled Jobs", TRUE, NULL, NULL, NULL, "wiki"); $errors['mailchimp_list'] = ts("A valid CiviCRM site key in civicrm.settings.php is required to configure a Group to sync with Mailchimp. More info on generating a site key at %1.", array(1 => $doc_link)); } $mailchimp_sync_setting = CRM_CiviMailchimp_BAO_SyncSettings::findByListId($fields['mailchimp_list'], FALSE); if ($mailchimp_sync_setting) { $group_id = $form->getVar('_id'); if ($mailchimp_sync_setting->civicrm_group_id != $group_id) { $errors['mailchimp_list'] = ts("Another CiviCRM Group is already configured to sync to this Mailchimp list. Please select another list."); } } } } }
function testDeleteSettings() { $existing_mailchimp_sync_setting = self::createTestGroupAndSyncSettings('Test group testDeleteSettings'); $mailchimp_sync_setting = CRM_CiviMailchimp_BAO_SyncSettings::deleteSettings($existing_mailchimp_sync_setting); $deleted_mailchimp_sync_setting = CRM_CiviMailchimp_BAO_SyncSettings::findByListId($mailchimp_sync_setting->mailchimp_list_id, FALSE); $this->assertEquals($existing_mailchimp_sync_setting->id, $mailchimp_sync_setting->id); $this->assertNull($deleted_mailchimp_sync_setting); }
/** * Remove a given contact from the group set to sync with the given * Mailchimp list. */ static function removeContactFromGroup($contact, $mailchimp_list_id) { $contact_ids = array($contact->id); $mailchimp_sync_settings = CRM_CiviMailchimp_BAO_SyncSettings::findByListId($mailchimp_list_id); CRM_Contact_BAO_GroupContact::removeContactsFromGroup($contact_ids, $mailchimp_sync_settings->civicrm_group_id); self::markContactAsNoBulkEmailsIfSettingEnabled($contact); }