You are here

function social_group_form_node_form_alter in Open Social 8.9

Same name and namespace in other branches
  1. 8 modules/social_features/social_group/social_group.module \social_group_form_node_form_alter()
  2. 8.2 modules/social_features/social_group/social_group.module \social_group_form_node_form_alter()
  3. 8.3 modules/social_features/social_group/social_group.module \social_group_form_node_form_alter()
  4. 8.4 modules/social_features/social_group/social_group.module \social_group_form_node_form_alter()
  5. 8.5 modules/social_features/social_group/social_group.module \social_group_form_node_form_alter()
  6. 8.6 modules/social_features/social_group/social_group.module \social_group_form_node_form_alter()
  7. 8.7 modules/social_features/social_group/social_group.module \social_group_form_node_form_alter()
  8. 8.8 modules/social_features/social_group/social_group.module \social_group_form_node_form_alter()
  9. 10.3.x modules/social_features/social_group/social_group.module \social_group_form_node_form_alter()
  10. 10.0.x modules/social_features/social_group/social_group.module \social_group_form_node_form_alter()
  11. 10.1.x modules/social_features/social_group/social_group.module \social_group_form_node_form_alter()
  12. 10.2.x modules/social_features/social_group/social_group.module \social_group_form_node_form_alter()

Implements hook_form_FORM_ID_alter().

Make sure the correct group is saved when group is selected on node form.

File

modules/social_features/social_group/social_group.module, line 1642
The Social group module.

Code

function social_group_form_node_form_alter(&$form, FormStateInterface $form_state) {
  if (isset($form['#entity_type']) && $form['#entity_type'] === 'node') {
    if (isset($form['groups'])) {

      // Check if we are adding a translation or it's the default being editted.

      /** @var \Drupal\Core\Entity\EntityForm $form_object */
      $form_object = $form_state
        ->getFormObject();

      /** @var \Drupal\social_node\Entity\Node $node */
      $node = $form_object
        ->getEntity();
      $is_original_language = (bool) $node
        ->getFieldValue('default_langcode', 'value');

      // If it's not the original, we can safely say its a translation being
      // added or editted. In that case we don't want users to override the
      // group or visibility. We only allow those changes on the default as
      // these can not change per language for now.
      if (!$is_original_language) {
        $form['field_content_visibility']['widget']['#disabled'] = TRUE;
        $form['field_content_visibility']['widget']['#description'] = t('Changing visibility is disabled when translating.');
        $form['groups']['widget']['#disabled'] = TRUE;
        $form['groups']['widget']['#description'] = t('Changing groups is disabled when translating.');
      }
      $change_fieldgroup_titles = [
        'group_topic_visibility',
        'group_event_visibility',
      ];
      foreach ($change_fieldgroup_titles as $fieldgroup_title) {
        if (isset($form['#fieldgroups'][$fieldgroup_title])) {
          $form['#fieldgroups'][$fieldgroup_title]->label = (string) t('Group and visibility');
        }
      }

      // Lets remove the original submit function in favor of this submit.
      foreach ($form['actions']['submit']['#submit'] as $submit_key => $submit_function) {
        if ($submit_function === 'group_content_entity_submit') {
          unset($form['actions']['submit']['#submit'][$submit_key]);
        }
      }

      /* @var \Drupal\node\Entity\Node $node */
      $node = $form_state
        ->getFormObject()
        ->getEntity();

      // Store if the node is new or not.
      $form['is_new'] = [
        '#type' => 'value',
        '#value' => $node
          ->isNew(),
      ];
      $form['actions']['submit']['#submit'][] = 'social_group_save_group_from_node';
    }
  }
}