create own Configuration class to handle settings

This commit is contained in:
Marc Michalsky forumZFD 2020-11-13 10:27:45 +01:00
parent b1dd134d27
commit c4ea4a3953
Signed by untrusted user who does not match committer: marc.koch
GPG key ID: 12406554CFB028B9
2 changed files with 65 additions and 13 deletions

View file

@ -0,0 +1,60 @@
<?php
namespace CRM\TwingleCampaign\BAO;
use Civi;
class Configuration {
private static $settingsKeys = [
'twingle_api_key',
'twinglecampaign_xcm_profile',
'twinglecampaign_start_case',
];
/**
* Stores a setting in Civi::settings
*
* @param array $settings
* Expects an array with key => value for the setting
*/
public static function set(array $settings) {
Civi::settings()->add($settings);
}
/**
* Returns a specific value of a setting if the key is passed as parameter.
* Else all settings will be returned als associative array.
*
* @param null $key
* The name of the setting or NULL
*
* @return array|mixed|null
*/
public static function get($key = NULL) {
if ($key) {
return Civi::settings()->get($key);
}
else {
$settings = [];
foreach (self::$settingsKeys as $key) {
$settings[$key] = Civi::settings()->get($key);
}
return $settings;
}
}
/**
* Delete all settings of the TwingleCampaign extension
*/
public static function deleteAll() {
foreach (self::$settingsKeys as $key) {
Civi::settings()->set($key, NULL);
}
}
}

View file

@ -1,7 +1,10 @@
<?php
use CRM\TwingleCampaign\BAO\Configuration;
use CRM_TwingleCampaign_ExtensionUtil as E;
include_once E::path() . '/CRM/TwingleCampaign/BAO/Configuration.php';
/**
* Form controller class
*
@ -44,24 +47,13 @@ class CRM_TwingleCampaign_Form_Settings extends CRM_Core_Form {
}
public function setDefaultValues() {
$defaultValues['twingle_api_key'] =
Civi::settings()->get('twingle_api_key');
$defaultValues['twinglecampaign_xcm_profile'] =
Civi::settings()->get('twinglecampaign_xcm_profile');
$defaultValues['twinglecampaign_start_case'] =
Civi::settings()->get('twinglecampaign_start_case');
return $defaultValues;
return Configuration::get();
}
//TODO: validate Twingle API key
public function postProcess() {
$values = $this->exportValues();
Civi::settings()->set('twingle_api_key', $values['twingle_api_key']);
Civi::settings()
->set('twinglecampaign_xcm_profile', $values['twinglecampaign_xcm_profile']);
Civi::settings()
->set('twinglecampaign_start_case', $values['twinglecampaign_start_case']);
Configuration::set($this->exportValues());
parent::postProcess();
}