$names = $this->_itemsToGet('name');
$filter = $names ? ['name' => $names] : [];
$settings = \Civi\Core\SettingsMetadata::getMetadata($filter, $this->domainId, $this->loadOptions);
+ $getReadonly = $this->_isFieldSelected('readonly');
foreach ($settings as $index => $setting) {
// Unserialize default value
if (!empty($setting['serialize']) && !empty($setting['default']) && is_string($setting['default'])) {
if (!isset($setting['options'])) {
$setting['options'] = !empty($setting['pseudoconstant']);
}
+ if ($getReadonly) {
+ $setting['readonly'] = \Civi::settings()->getMandatory($setting['name']) !== NULL;
+ }
// Filter out deprecated properties
$settings[$index] = array_intersect_key($setting, array_column($this->fields(), NULL, 'name'));
}
'name' => 'data_type',
'data_type' => 'Integer',
],
+ [
+ 'name' => 'readonly',
+ 'data_type' => 'Boolean',
+ 'description' => 'True if value is set in code and cannot be overridden.',
+ ],
];
}
[
'name' => 'readonly',
'data_type' => 'Boolean',
+ 'description' => 'True for auto-increment, calculated, or otherwise non-editable fields.',
],
[
'name' => 'output_formatters',