function social_profile_privacy_update_8002 in Open Social 10.1.x
Same name and namespace in other branches
- 10.3.x modules/social_features/social_profile/modules/social_profile_privacy/social_profile_privacy.install \social_profile_privacy_update_8002()
- 10.0.x modules/social_features/social_profile/modules/social_profile_privacy/social_profile_privacy.install \social_profile_privacy_update_8002()
- 10.2.x modules/social_features/social_profile/modules/social_profile_privacy/social_profile_privacy.install \social_profile_privacy_update_8002()
Prepare settings of fields based on settings of groups of fields.
File
- modules/
social_features/ social_profile/ modules/ social_profile_privacy/ social_profile_privacy.install, line 182 - The social profile privacy install file.
Code
function social_profile_privacy_update_8002() {
$config = \Drupal::configFactory()
->getEditable('social_profile_privacy.settings');
$fields_groups = [];
$disclaimer = array_fill_keys([
'title',
'text.value',
'text.format',
], NULL);
foreach ([
'user',
'profile',
] as $entity_type_id) {
if ($config
->get($form = $entity_type_id . '_form_display')) {
foreach (array_filter((array) $config
->get($form . '_field_groups')) as $fields_group) {
$fields_groups[] = $fields_group;
}
}
foreach ($disclaimer as $key => &$value) {
if ($form_value = $config
->get($form . '_disclaimer.' . $key)) {
$value = $form_value;
}
}
foreach ([
'',
'_field_groups',
'_disclaimer',
] as $suffix) {
$config
->clear($form . $suffix);
}
}
$text = '';
if ($disclaimer['title']) {
$text .= '<strong>' . $disclaimer['title'] . ':</strong>';
}
if ($disclaimer['text.value']) {
$text .= ($text ? "\r\n" : '') . $disclaimer['text.value'];
}
if ($text) {
$config
->set('disclaimer', [
'value' => $text,
'format' => $disclaimer['text.format'] ?: 'basic_html',
]);
}
if ($fields_groups) {
/** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $display */
$display = \Drupal::entityTypeManager()
->getStorage('entity_form_display')
->load('profile.profile.default');
$states = [];
foreach (array_unique($fields_groups) as $fields_group) {
$settings = $display
->getThirdPartySetting('field_group', $fields_group);
foreach ($settings['children'] as $field) {
$states[$field] = SocialProfilePrivacyHelperInterface::CONFIGURABLE;
}
}
$config
->set('fields', $states);
$output = t('The visibility option has been changed to configurable for the following fields: @list', [
'@list' => implode(', ', array_keys($states)),
]);
}
else {
$output = t('The visibility option for no one field has been changed.');
}
$config
->save();
return $output;
}