<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.5 |
+ | CiviCRM version 4.6 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2014 |
+--------------------------------------------------------------------+
/**
* Various predefined settings that have been migrated to the setting table
*/
- CONST
+ const
ADDRESS_STANDARDIZATION_PREFERENCES_NAME = 'Address Standardization Preferences',
CAMPAIGN_PREFERENCES_NAME = 'Campaign Preferences',
DEVELOPER_PREFERENCES_NAME = 'Developer Preferences',
/**
* Checks whether an item is present in the in-memory cache table
*
- * @param string $group (required) The group name of the item
- * @param string $name (required) The name of the setting
- * @param int $componentID The optional component ID (so components can share the same name space)
- * @param int $contactID If set, this is a contactID specific setting, else its a global setting
+ * @param string $group
+ * (required) The group name of the item.
+ * @param string $name
+ * (required) The name of the setting.
+ * @param int $componentID
+ * The optional component ID (so components can share the same name space).
+ * @param int $contactID
+ * If set, this is a contactID specific setting, else its a global setting.
* @param bool|int $load if true, load from local cache (typically memcache)
*
* @param int $domainID
*
* @return boolean true if item is already in cache
* @static
- * @access public
*/
static function inCache(
$group,
* Allow key o be cleared
* @param string $cacheKey
*/
- static function flushCache($cacheKey){
+ public static function flushCache($cacheKey) {
unset(self::$_cache[$cacheKey]);
$globalCache = CRM_Utils_Cache::singleton();
$globalCache->delete($cacheKey);
*
* @return string
*/
- static function setCache($values,
+ static function setCache(
+ $values,
$group,
$componentID = NULL,
$contactID = NULL,
*
* @return CRM_Core_DAO_Domain|CRM_Core_DAO_Setting
*/
- static function dao($group,
+ static function dao(
+ $group,
$name = NULL,
$componentID = NULL,
$contactID = NULL,
/**
* Retrieve the value of a setting from the DB table
*
- * @param string $group (required) The group name of the item
- * @param string $name (required) The name under which this item is stored
- * @param int $componentID The optional component ID (so componenets can share the same name space)
- * @param string $defaultValue The default value to return for this setting if not present in DB
- * @param int $contactID If set, this is a contactID specific setting, else its a global setting
+ * @param string $group
+ * (required) The group name of the item.
+ * @param string $name
+ * (required) The name under which this item is stored.
+ * @param int $componentID
+ * The optional component ID (so componenets can share the same name space).
+ * @param string $defaultValue
+ * The default value to return for this setting if not present in DB.
+ * @param int $contactID
+ * If set, this is a contactID specific setting, else its a global setting.
*
* @param int $domainID
*
* @return mixed The data if present in the setting table, else null
* @static
- * @access public
*/
static function getItem(
$group,
/**
* Store multiple items in the setting table
*
- * @param array $params (required) An api formatted array of keys and values
+ * @param array $params
+ * (required) An api formatted array of keys and values.
* @param null $domains
* @param $settingsToReturn
*
* @domains array an array of domains to get settings for. Default is the current domain
* @return void
* @static
- * @access public
*/
- static function getItems(&$params, $domains = NULL, $settingsToReturn) {
+ public static function getItems(&$params, $domains = NULL, $settingsToReturn) {
$originalDomain = CRM_Core_Config::domainID();
if (empty($domains)) {
$domains[] = $originalDomain;
$fields = $result = array();
$fieldsToGet = self::validateSettingsInput(array_flip($settingsToReturn), $fields, FALSE);
foreach ($domains as $domainID) {
- if($domainID != CRM_Core_Config::domainID()){
+ if ($domainID != CRM_Core_Config::domainID()) {
$reloadConfig = TRUE;
CRM_Core_BAO_Domain::setDomain($domainID);
}
$config = CRM_Core_Config::singleton($reloadConfig, $reloadConfig);
$result[$domainID] = array();
foreach ($fieldsToGet as $name => $value) {
- if(!empty($fields['values'][$name]['prefetch'])){
- if(isset($params['filters']) && isset($params['filters']['prefetch'])
- && $params['filters']['prefetch'] == 0){
+ if (!empty($fields['values'][$name]['prefetch'])) {
+ if (isset($params['filters']) && isset($params['filters']['prefetch'])
+ && $params['filters']['prefetch'] == 0) {
// we are filtering out the prefetches from the return array
// so we will skip
continue;
}
$configKey = CRM_Utils_Array::value('config_key', $fields['values'][$name], $name);
- if(isset($config->$configKey)){
+ if (isset($config->$configKey)) {
$setting = $config->$configKey;
}
}
*
* _setItem() is the common logic shared by setItem() and setItems().
*
- * @param object $value (required) The value that will be serialized and stored
- * @param string $group (required) The group name of the item
- * @param string $name (required) The name of the setting
- * @param int $componentID The optional component ID (so componenets can share the same name space)
+ * @param object $value
+ * (required) The value that will be serialized and stored.
+ * @param string $group
+ * (required) The group name of the item.
+ * @param string $name
+ * (required) The name of the setting.
+ * @param int $componentID
+ * The optional component ID (so componenets can share the same name space).
* @param int $contactID
- * @param int $createdID An optional ID to assign the creator to. If not set, retrieved from session
+ * @param int $createdID
+ * An optional ID to assign the creator to. If not set, retrieved from session.
*
* @param int $domainID
*
* @return void
* @static
- * @access public
*/
static function setItem(
$value,
*
* _setItem() is the common logic shared by setItem() and setItems().
*
- * @param array $metadata metadata describing this field
+ * @param array $metadata
+ * Metadata describing this field.
* @param $value
* @param $group
* @param string $name
*
* _setItem() is the common logic shared by setItem() and setItems().
*
- * @param array $params (required) An api formatted array of keys and values
+ * @param array $params
+ * (required) An api formatted array of keys and values.
* @param null $domains
*
* @throws api_Exception
* @domains array an array of domains to get settings for. Default is the current domain
* @return array
* @static
- * @access public
*/
- static function setItems(&$params, $domains = NULL) {
+ public static function setItems(&$params, $domains = NULL) {
$originalDomain = CRM_Core_Config::domainID();
if (empty($domains)) {
$domains[] = $originalDomain;
}
foreach ($domains as $domainID) {
- if($domainID != CRM_Core_Config::domainID()){
+ if ($domainID != CRM_Core_Config::domainID()) {
$reloadConfig = TRUE;
CRM_Core_BAO_Domain::setDomain($domainID);
}
$result[$domainID] = array();
foreach ($fieldsToSet as $name => $value) {
- if(empty($fields['values'][$name]['config_only'])){
+ if (empty($fields['values'][$name]['config_only'])) {
CRM_Core_BAO_Setting::_setItem(
$fields['values'][$name],
$value,
$domainID
);
}
- if(!empty($fields['values'][$name]['prefetch'])){
- if(!empty($fields['values'][$name]['config_key'])){
+ if (!empty($fields['values'][$name]['prefetch'])) {
+ if (!empty($fields['values'][$name]['config_key'])) {
$name = $fields['values'][$name]['config_key'];
}
$config_keys[$name] = $value;
}
$result[$domainID][$name] = $value;
}
- if($reloadConfig){
+ if ($reloadConfig) {
CRM_Core_Config::singleton($reloadConfig, $reloadConfig);
}
- if(!empty($config_keys)){
+ if (!empty($config_keys)) {
CRM_Core_BAO_ConfigSetting::create($config_keys);
}
- if($reloadConfig){
+ if ($reloadConfig) {
CRM_Core_BAO_Domain::resetDomain();
}
}
*
* This function filters on the fields like 'version' & 'debug' that are not settings
*
- * @param array $params Parameters as passed into API
- * @param array $fields empty array to be populated with fields metadata
+ * @param array $params
+ * Parameters as passed into API.
+ * @param array $fields
+ * Empty array to be populated with fields metadata.
* @param bool $createMode
*
* @throws api_Exception
* @return array $fieldstoset name => value array of the fields to be set (with extraneous removed)
*/
- static function validateSettingsInput($params, &$fields, $createMode = TRUE) {
+ public static function validateSettingsInput($params, &$fields, $createMode = TRUE) {
$group = CRM_Utils_Array::value('group', $params);
$ignoredParams = array(
'IDS_user_agent',
'check_permissions',
'options',
+ 'prettyprint',
);
$settingParams = array_diff_key($params, array_fill_keys($ignoredParams, TRUE));
$getFieldsParams = array('version' => 3);
- if (count($settingParams) ==1) {
+ if (count($settingParams) == 1) {
// ie we are only setting one field - we'll pass it into getfields for efficiency
list($name) = array_keys($settingParams);
$getFieldsParams['name'] = $name;
$fields = civicrm_api3('setting','getfields', $getFieldsParams);
$invalidParams = (array_diff_key($settingParams, $fields['values']));
if (!empty($invalidParams)) {
- throw new api_Exception(implode(',', $invalidParams) . " not valid settings");
+ throw new api_Exception(implode(',', array_keys($invalidParams)) . " not valid settings");
}
if (!empty($settingParams)) {
$filteredFields = array_intersect_key($settingParams, $fields['values']);
* @value mixed value of the setting to be set
* @fieldSpec array Metadata for given field (drawn from the xml)
*/
- static function validateSetting(&$value, $fieldSpec) {
- if($fieldSpec['type'] == 'String' && is_array($value)){
+ public static function validateSetting(&$value, $fieldSpec) {
+ if ($fieldSpec['type'] == 'String' && is_array($value)) {
$value = CRM_Core_DAO::VALUE_SEPARATOR . implode(CRM_Core_DAO::VALUE_SEPARATOR,$value) . CRM_Core_DAO::VALUE_SEPARATOR;
}
if (empty($fieldSpec['validate_callback'])) {
* @value mixed value of the setting to be set
* @fieldSpec array Metadata for given field (drawn from the xml)
*/
- static function validateBoolSetting(&$value, $fieldSpec) {
+ public static function validateBoolSetting(&$value, $fieldSpec) {
if (!CRM_Utils_Rule::boolean($value)) {
throw new api_Exception("Boolean value required for {$fieldSpec['name']}");
}
*
* The following params will filter the result. If none are passed all settings will be returns
*
- * @param int $componentID id of relevant component
+ * @param int $componentID
+ * Id of relevant component.
* @param array $filters
* @param int $domainID
* @param null $profile
$settingsMetadata = CRM_Core_BAO_Cache::getItem('CiviCRM setting Spec', 'All', $componentID);
if (empty($settingsMetadata)) {
global $civicrm_root;
- $metaDataFolders = array($civicrm_root. '/settings');
+ $metaDataFolders = array($civicrm_root . '/settings');
CRM_Utils_Hook::alterSettingsFolders($metaDataFolders);
$settingsMetadata = self::loadSettingsMetaDataFolders($metaDataFolders);
CRM_Core_BAO_Cache::setItem($settingsMetadata,'CiviCRM setting Spec', 'All', $componentID);
/**
* Load the settings files defined in a series of folders
- * @param array $metaDataFolders list of folder paths
+ * @param array $metaDataFolders
+ * List of folder paths.
* @return array
*/
public static function loadSettingsMetaDataFolders($metaDataFolders) {
/**
* Load up settings metadata from files
*/
- static function loadSettingsMetadata($metaDataFolder) {
+ public static function loadSettingsMetadata($metaDataFolder) {
$settingMetaData = array();
$settingsFiles = CRM_Utils_File::findFiles($metaDataFolder, '*.setting.php');
foreach ($settingsFiles as $file) {
* Filter the settings metadata according to filters passed in. This is a convenience filter
* and allows selective reverting / filling of settings
*
- * @param array $filters Filters to match against data
- * @param array $settingSpec metadata to filter
+ * @param array $filters
+ * Filters to match against data.
+ * @param array $settingSpec
+ * Metadata to filter.
*/
- static function _filterSettingsSpecification($filters, &$settingSpec) {
+ public static function _filterSettingsSpecification($filters, &$settingSpec) {
if (empty($filters)) {
return;
}
- else if (array_keys($filters) == array('name')) {
+ elseif (array_keys($filters) == array('name')) {
$settingSpec = array($filters['name'] => CRM_Utils_Array::value($filters['name'], $settingSpec, ''));
return;
}
* Multisites have often been overlooked in upgrade scripts so can be expected to be missing
* a number of settings
*/
- static function updateSettingsFromMetaData() {
+ public static function updateSettingsFromMetaData() {
$apiParams = array(
'version' => 3,
'domain_id' => 'all',
*
* Note that where the key name is being changed the 'legacy_key' will give us the old name
*/
- static function convertConfigToSetting($name, $domainID = NULL) {
+ public static function convertConfigToSetting($name, $domainID = NULL) {
// we have to force this here in case more than one domain is in play.
// whenever there is a possibility of more than one domain we must force it
$config = CRM_Core_Config::singleton();
if (empty($domainID)) {
- $domainID= CRM_Core_Config::domainID();
+ $domainID = CRM_Core_Config::domainID();
}
$domain = new CRM_Core_DAO_Domain();
$domain->id = $domainID;
$domain->find(TRUE);
if ($domain->config_backend) {
$values = unserialize($domain->config_backend);
- } else {
+ }
+ else {
$values = array();
}
$spec = self::getSettingSpecification(NULL, array('name' => $name), $domainID);
$configKey = CRM_Utils_Array::value('config_key', $spec[$name], CRM_Utils_Array::value('legacy_key', $spec[$name], $name));
//if the key is set to config_only we don't need to do anything
- if(empty($spec[$name]['config_only'])){
+ if (empty($spec[$name]['config_only'])) {
if (!empty($values[$configKey])) {
civicrm_api('setting', 'create', array('version' => 3, $name => $values[$configKey], 'domain_id' => $domainID));
}
*
* @return array
*/
- static function valueOptions($group,
+ static function valueOptions(
+ $group,
$name,
$system = TRUE,
$userID = NULL,
* @param int $userID
* @param string $keyField
*/
- static function setValueOption($group,
+ static function setValueOption(
+ $group,
$name,
$value,
$system = TRUE,
* @param array $params
* @param int $domainID
*/
- static function fixAndStoreDirAndURL(&$params, $domainID = NULL) {
+ public static function fixAndStoreDirAndURL(&$params, $domainID = NULL) {
if (self::isUpgradeFromPreFourOneAlpha1()) {
return;
}
* @param array $params
* @param $group
*/
- static function storeDirectoryOrURLPreferences(&$params, $group) {
+ public static function storeDirectoryOrURLPreferences(&$params, $group) {
foreach ($params as $name => $value) {
// always try to store relative directory or url from CMS root
$value = ($group == self::DIRECTORY_PREFERENCES_NAME) ? CRM_Utils_File::relativeDirectory($value) : CRM_Utils_System::relativeURL($value);
* @param array $params
* @param bool $setInConfig
*/
- static function retrieveDirectoryAndURLPreferences(&$params, $setInConfig = FALSE) {
+ public static function retrieveDirectoryAndURLPreferences(&$params, $setInConfig = FALSE) {
if (CRM_Core_Config::isUpgradeMode()) {
$isJoomla = (defined('CIVICRM_UF') && CIVICRM_UF == 'Joomla') ? TRUE : FALSE;
// hack to set the resource base url so that js/ css etc is loaded correctly
*
* @return boolean
*/
- static function isUpgradeFromPreFourOneAlpha1() {
+ public static function isUpgradeFromPreFourOneAlpha1() {
if (CRM_Core_Config::isUpgradeMode()) {
$currentVer = CRM_Core_BAO_Domain::version();
if (version_compare($currentVer, '4.1.alpha1') < 0) {