_settings. * * @return array */ protected function getSettingsMetaData() { if (empty($this->settingsMetadata)) { $allSettingMetaData = civicrm_api3('setting', 'getfields', []); $this->settingsMetadata = array_intersect_key($allSettingMetaData['values'], $this->_settings); // This array_merge re-orders to the key order of $this->_settings. $this->settingsMetadata = array_merge($this->_settings, $this->settingsMetadata); } return $this->settingsMetadata; } /** * Get the settings which can be stored based on metadata. * * @param array $params * @return array */ protected function getSettingsToSetByMetadata($params) { return array_intersect_key($params, $this->_settings); } /** * @param $params */ protected function filterParamsSetByMetadata(&$params) { foreach ($this->getSettingsToSetByMetadata($params) as $setting => $settingGroup) { //@todo array_diff this unset($params[$setting]); } } }