You are here

function social_group_welcome_message_form_alter in Open Social 10.1.x

Same name and namespace in other branches
  1. 8.9 modules/social_features/social_group/modules/social_group_welcome_message/social_group_welcome_message.module \social_group_welcome_message_form_alter()
  2. 8.8 modules/social_features/social_group/modules/social_group_welcome_message/social_group_welcome_message.module \social_group_welcome_message_form_alter()
  3. 10.3.x modules/social_features/social_group/modules/social_group_welcome_message/social_group_welcome_message.module \social_group_welcome_message_form_alter()
  4. 10.0.x modules/social_features/social_group/modules/social_group_welcome_message/social_group_welcome_message.module \social_group_welcome_message_form_alter()
  5. 10.2.x modules/social_features/social_group/modules/social_group_welcome_message/social_group_welcome_message.module \social_group_welcome_message_form_alter()

Implements hook_form_FORM_ID_alter().

File

modules/social_features/social_group/modules/social_group_welcome_message/social_group_welcome_message.module, line 54
Primary module hooks for social_group_welcome_message module.

Code

function social_group_welcome_message_form_alter(array &$form, FormStateInterface $form_state, $form_id) {
  $social_group_types = [
    'open_group',
    'closed_group',
    'public_group',
  ];
  \Drupal::moduleHandler()
    ->alter('social_group_types', $social_group_types);
  $group_forms = [];
  foreach ($social_group_types as $social_group_type) {
    $group_forms[] = "group_{$social_group_type}_add_form";
    $group_forms[] = "group_{$social_group_type}_edit_form";
  }
  if (in_array($form_id, $group_forms)) {

    // Get group owner.
    $group = $form_state
      ->getFormObject()
      ->getEntity();
    if ($group instanceof GroupInterface) {
      $owner = $group
        ->getOwner();
    }
    else {
      $owner = \Drupal::currentUser();
    }

    // Deny access to welcome message if owner doesn't
    // have permission to create it.
    if (!$owner
      ->hasPermission('use private messaging system') || !$owner
      ->hasPermission('create private messages thread')) {
      unset($form['private_message_body']);
      unset($form['private_message_send']);
    }
    elseif (isset($form['private_message_body']) && isset($form['private_message_send'])) {
      $form['private_message_body']['#states'] = [
        'visible' => [
          ':input[name="private_message_send[value]"]' => [
            'checked' => TRUE,
          ],
        ],
      ];

      // Add new element to act as a new fieldgroup.
      $form['group_welcome_message'] = [
        '#type' => 'details',
        '#weight' => 1,
        '#title' => new TranslatableMarkup('Welcome message'),
      ];

      // Add both existing fields to this new element.
      $form['group_welcome_message'][] = $form['private_message_body'];
      $form['group_welcome_message'][] = $form['private_message_send'];
      unset($form['private_message_body']);
      unset($form['private_message_send']);

      // Add the new element to fieldgroups.
      $form['#fieldgroups']['group_settings']->children[] = 'group_welcome_message';
      $form['#group_children']['group_welcome_message'] = 'group_settings';
    }
  }
}