You are here

function _social_flexible_group_edit_submit in Open Social 8.8

Same name and namespace in other branches
  1. 8.9 modules/social_features/social_group/modules/social_group_flexible_group/social_group_flexible_group.module \_social_flexible_group_edit_submit()
  2. 8.6 modules/social_features/social_group/modules/social_group_flexible_group/social_group_flexible_group.module \_social_flexible_group_edit_submit()
  3. 8.7 modules/social_features/social_group/modules/social_group_flexible_group/social_group_flexible_group.module \_social_flexible_group_edit_submit()
  4. 10.3.x modules/social_features/social_group/modules/social_group_flexible_group/social_group_flexible_group.module \_social_flexible_group_edit_submit()
  5. 10.0.x modules/social_features/social_group/modules/social_group_flexible_group/social_group_flexible_group.module \_social_flexible_group_edit_submit()
  6. 10.1.x modules/social_features/social_group/modules/social_group_flexible_group/social_group_flexible_group.module \_social_flexible_group_edit_submit()
  7. 10.2.x modules/social_features/social_group/modules/social_group_flexible_group/social_group_flexible_group.module \_social_flexible_group_edit_submit()

Custom form submit handler for editing a flexible group.

Parameters

array $form: The form array.

\Drupal\Core\Form\FormStateInterface $form_state: Form state.

Throws

\Drupal\Core\Entity\EntityStorageException

1 string reference to '_social_flexible_group_edit_submit'
social_group_flexible_group_form_group_flexible_group_edit_form_alter in modules/social_features/social_group/modules/social_group_flexible_group/social_group_flexible_group.module
Implements hook_form_FORM_ID_form_alter().

File

modules/social_features/social_group/modules/social_group_flexible_group/social_group_flexible_group.module, line 73
The Social Group Flexible Group module.

Code

function _social_flexible_group_edit_submit(array $form, FormStateInterface $form_state) {

  // Check if the visibility changed.
  $default_visibility = $form['field_group_allowed_visibility']['widget']['#default_value'];
  $new_visibility = $form_state
    ->getValue('field_group_allowed_visibility');
  $changed_visibility = [];

  // If there was a visibility that we don't have anymore after editting
  // all the content that was inside the group with this visibility
  // will get the lowest visibility that is still checked.
  foreach ($default_visibility as $key => $option) {
    if (array_search($option, array_column($new_visibility, 'value')) === FALSE) {
      $changed_visibility[] = $option;
    }
  }

  // So there is now a visibility setting we don't support anymore
  // after editing. Make sure we update all the content that has this
  // to the next best optin.
  if (!empty($changed_visibility)) {
    $group = _social_group_get_current_group();

    // Update the default visibility of all the content.
    FlexibleGroupContentVisibilityUpdate::batchUpdateGroupContentVisibility($group, $changed_visibility, $new_visibility);

    // Make sure we clear cache tags accordingly.
    $cache_tags = _social_group_cache_tags($group);
    foreach ($cache_tags as $cache_tag) {
      Cache::invalidateTags([
        $cache_tag,
      ]);
    }
  }
}