function _social_profile_privacy_fields_submit in Open Social 10.2.x
Same name and namespace in other branches
- 10.3.x modules/social_features/social_profile/modules/social_profile_privacy/social_profile_privacy.module \_social_profile_privacy_fields_submit()
- 10.0.x modules/social_features/social_profile/modules/social_profile_privacy/social_profile_privacy.module \_social_profile_privacy_fields_submit()
- 10.1.x modules/social_features/social_profile/modules/social_profile_privacy/social_profile_privacy.module \_social_profile_privacy_fields_submit()
Save fields visibility options for a user.
1 string reference to '_social_profile_privacy_fields_submit'
- social_profile_privacy_form_user_form_alter in modules/
social_features/ social_profile/ modules/ social_profile_privacy/ social_profile_privacy.module - Implements hook_form_FORM_ID_alter().
File
- modules/
social_features/ social_profile/ modules/ social_profile_privacy/ social_profile_privacy.module, line 274 - The Social profile privacy module file.
Code
function _social_profile_privacy_fields_submit($form, FormStateInterface $form_state) {
/** @var \Drupal\user\UserDataInterface $user_data */
$user_data = \Drupal::service('user.data');
$uid = $form_state
->get('account_id');
$values = (array) $user_data
->get('social_profile_privacy', $uid, 'fields');
// An array with fields, visibility settings that have been changed.
$updated_fields = [];
foreach ($form_state
->getValue([
'profile_privacy',
'fields',
]) as $field => $value) {
if (!$form['profile_privacy']['fields'][$field]['#disabled']) {
// We need to check if the setting of the current field was changed and
// add the field to the appropriate array if so.
if (!isset($values[$field]) || $values[$field] !== $value) {
$updated_fields[] = $field;
}
$values[$field] = $value;
}
}
$user_data
->set('social_profile_privacy', $uid, 'fields', $values);
$tags = [
'user:' . $uid,
];
$profiles = \Drupal::entityQuery('profile')
->condition('uid', $uid)
->execute();
if ($profiles) {
$profile = reset($profiles);
$tags[] = 'profile:' . $profile;
$tags[] = 'entity_view:profile:' . $profile;
}
\Drupal::service('cache_tags.invalidator')
->invalidateTags($tags);
if (!isset($profile) || empty($updated_fields) || empty(array_intersect(SocialProfileNameService::getProfileNameFields(), $updated_fields))) {
return;
}
/** @var \Drupal\profile\ProfileStorageInterface $profile_storage */
$profile_storage = \Drupal::entityTypeManager()
->getStorage('profile');
if (!empty($profile_storage)) {
$profile = $profile_storage
->load($profile);
if ($profile instanceof ProfileInterface) {
SocialProfilePrivacyBatchHelper::updateProfileName($profile);
}
}
}