diff --git a/CRM/TwingleCampaign/BAO/TwingleApiCall.php b/CRM/TwingleCampaign/BAO/TwingleApiCall.php index 08e1f5f..7f82be5 100644 --- a/CRM/TwingleCampaign/BAO/TwingleApiCall.php +++ b/CRM/TwingleCampaign/BAO/TwingleApiCall.php @@ -41,6 +41,9 @@ class CRM_TwingleCampaign_BAO_TwingleApiCall { curl_close($curl); if (empty($response)) { + // Delete api key from cache + Civi::cache()->delete('twinglecampaign_twingle_api'); + // Throw exception throw new API_Exception( "Twingle API call failed. Please check your api key."); } diff --git a/CRM/TwingleCampaign/Form/Settings.php b/CRM/TwingleCampaign/Form/Settings.php index 8c57906..3cad412 100644 --- a/CRM/TwingleCampaign/Form/Settings.php +++ b/CRM/TwingleCampaign/Form/Settings.php @@ -53,6 +53,11 @@ class CRM_TwingleCampaign_Form_Settings extends CRM_Core_Form { //TODO: validate Twingle API key public function postProcess() { + + // Delete api key from cache + Civi::cache()->delete('twinglecampaign_twingle_api'); + + // Set configuration values Configuration::set($this->exportValues()); parent::postProcess(); } diff --git a/api/v3/TwingleSync/Sync.php b/api/v3/TwingleSync/Sync.php index 7e098e9..ce8e895 100644 --- a/api/v3/TwingleSync/Sync.php +++ b/api/v3/TwingleSync/Sync.php @@ -77,7 +77,12 @@ function civicrm_api3_twingle_sync_Sync($params) { : trim($params['twingle_api_key']); // If function call does not provide a limit, set a default value $limit = ($params['limit']) ?? 20; - $twingleApi = new TwingleApiCall($apiKey, $limit); + + // Try to retrieve twingleApi from cache + $twingleApi = Civi::cache()->get('twinglecampaign_twingle_api'); + if (NULL === $twingleApi) { + $twingleApi = new TwingleApiCall($apiKey, $limit); + } if ($params['id'] && !$params['project_id']) { // Get single TwingleProject