This repository has been archived by the owner on Sep 24, 2019. It is now read-only.
/
Settings.php
84 lines (74 loc) · 2.36 KB
/
Settings.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
class CRM_Smartdebit_Settings {
CONST TITLE = 'Smart Debit';
/**
* Get settings prefix name for this extension
* @return string
*/
public static function getPrefix() {
return 'smartdebit_';
}
/**
* Get filter of valid settings for this extension
* @return array
*/
public static function getFilter() {
return array('group' => 'smartdebit');
}
/**
* Get name of setting
* @param: setting name
* @prefix: Boolean
* @return: string
*/
public static function getName($name, $prefix = false) {
$ret = str_replace(self::getPrefix(),'',$name);
if ($prefix) {
$ret = self::getPrefix().$ret;
}
return $ret;
}
/**
* Save settings. Accepts an array of name=>value pairs. Name can be with or without prefix (it will be added if missing).
* @param array $values Array of settings and values with or without prefix (eg. array(smartdebit_username => 'test')) to save
*/
public static function save($settings) {
foreach ($settings as $name => $value) {
$prefixedSettings[self::getName($name, TRUE)] = $value;
}
civicrm_api3('setting', 'create', $prefixedSettings);
}
/**
* Read setting that has prefix in database and return single value
* @param $name
* @return mixed
*/
public static function getValue($name) {
$settings = civicrm_api3('setting', 'get', array('return' => CRM_Smartdebit_Settings::getName($name,true)));
$domainID = CRM_Core_Config::domainID();
if (isset($settings['values'][$domainID][CRM_Smartdebit_Settings::getName($name,true)])) {
return $settings['values'][$domainID][CRM_Smartdebit_Settings::getName($name, true)];
}
return '';
}
/**
* Get settings
* @param array $settings of settings (eg. array(username, password))
*
* @return array
*/
public static function get($settings) {
$domainID = CRM_Core_Config::domainID();
foreach ($settings as $name) {
$prefixedSettings[] = self::getName($name, TRUE);
}
$settingsResult = civicrm_api3('setting', 'get', array('return' => $prefixedSettings));
if (isset($settingsResult['values'][$domainID])) {
foreach ($settingsResult['values'][$domainID] as $name => $value) {
$unprefixedSettings[self::getName($name)] = $value;
}
return empty($unprefixedSettings) ? NULL : $unprefixedSettings;
}
return array();
}
}