/**
 * 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);
 }