/**
  * Save Mailchimp sync settings.
  */
 static function saveSettings($params)
 {
     $transaction = new CRM_Core_Transaction();
     try {
         $existing_mailchimp_sync_setting = self::findByGroupId($params['civicrm_group_id']);
         if ($existing_mailchimp_sync_setting) {
             $params['id'] = $existing_mailchimp_sync_setting->id;
             CRM_CiviMailchimp_BAO_InterestGroupsSyncSettings::deleteAllForSyncSettingsId($existing_mailchimp_sync_setting->id);
         }
         $mailchimp_sync_setting = new CRM_CiviMailchimp_BAO_SyncSettings();
         $mailchimp_sync_setting->copyValues($params);
         $mailchimp_sync_setting->save();
         if (isset($params['mailchimp_interest_groups'])) {
             CRM_CiviMailchimp_BAO_InterestGroupsSyncSettings::saveSettings($mailchimp_sync_setting, $params['mailchimp_interest_groups']);
         }
         if (!$existing_mailchimp_sync_setting) {
             CRM_CiviMailchimp_Utils::addWebhookToMailchimpList($mailchimp_sync_setting->mailchimp_list_id);
         }
     } catch (Exception $e) {
         $transaction->rollback();
         throw $e;
     }
     $transaction->commit();
     return $mailchimp_sync_setting;
 }
 function testDeleteAllForSyncSettingsId()
 {
     $mailchimp_list_id = 'MailchimpListsTestListA';
     $mailchimp_interest_groups = array('MailchimpTestInterestGroupingA_MailchimpTestInterestGroupA', 'MailchimpTestInterestGroupingA_MailchimpTestInterestGroupC');
     $mailchimp_sync_setting = CRM_CiviMailchimp_BAO_SyncSettingsTest::createTestGroupAndSyncSettings('Test Group testDeleteAllForSyncSettingsId', $mailchimp_list_id, $mailchimp_interest_groups);
     CRM_CiviMailchimp_BAO_InterestGroupsSyncSettings::deleteAllForSyncSettingsId($mailchimp_sync_setting->id);
     $interest_groups = CRM_CiviMailchimp_BAO_InterestGroupsSyncSettings::findBySyncSettingsId($mailchimp_sync_setting->id);
     $this->assertEmpty($interest_groups);
 }
 static function saveSettings($mailchimp_sync_setting, $interest_groups)
 {
     // Get the interest groups from Mailchimp again so we can associate a
     // name with the interest group id.
     $mailchimp_interest_groups = CRM_CiviMailchimp_Utils::getInterestGroups($mailchimp_sync_setting->mailchimp_list_id);
     foreach ($interest_groups as $interest_group) {
         $interest_group = explode('_', $interest_group);
         $interest_grouping_id = $interest_group[0];
         $interest_group_id = $interest_group[1];
         // Mailchimp expects the interest group name rather than id when
         // making API subscription requests. However, since the name can be
         // changed and is not unique, we're storing both the id and name.
         $interest_group_name = $mailchimp_interest_groups[$interest_grouping_id][$interest_group_id];
         $mailchimp_interest_group_sync_setting = new CRM_CiviMailchimp_BAO_InterestGroupsSyncSettings();
         $mailchimp_interest_group_sync_setting->civimailchimp_sync_settings_id = $mailchimp_sync_setting->id;
         $mailchimp_interest_group_sync_setting->mailchimp_interest_grouping_id = $interest_grouping_id;
         $mailchimp_interest_group_sync_setting->mailchimp_interest_group_id = $interest_group_id;
         $mailchimp_interest_group_sync_setting->mailchimp_interest_group_name = $interest_group_name;
         $mailchimp_interest_group_sync_setting->save();
     }
 }