You are here

function opigno_messaging_form_private_message_add_form_alter in Opigno messaging 8

Same name and namespace in other branches
  1. 3.x opigno_messaging.module \opigno_messaging_form_private_message_add_form_alter()

Implements hook_form_alter().

File

./opigno_messaging.module, line 52
Contains opigno_messaging.module.

Code

function opigno_messaging_form_private_message_add_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  $thread_members = $form_state
    ->get('thread_members');

  // Only add the select if we are in the context
  // of a new message (not in a tread context).
  if (!isset($thread_members)) {
    $current_user = \Drupal::currentUser();
    $uid = $current_user
      ->id();
    $current_user = User::load($uid);

    // Add the subject.
    $form['subject'] = [
      '#type' => 'textfield',
      '#title' => t('Subject'),
      '#placeholder' => t('Enter a subject'),
      '#default_value' => "",
      '#size' => 60,
      '#maxlength' => 128,
      '#required' => FALSE,
      '#weight' => -3,
    ];

    // Hide the default messaging to field.
    $form['members']['#type'] = 'hidden';
    $plugin_service = \Drupal::service('opigno_learning_path.members.manager');
    $plugin_instance = $plugin_service
      ->createInstance('recipients_plugin');
    $plugin_instance
      ->getMembersForm($form, $form_state, $current_user);
    unset($form['message']['widget']['#title']);
    unset($form['message']['widget'][0]['#title']);
    $form['message']['widget']['#placeholder'] = t('your message');
    $form['actions']['submit']['#value'] = t('Send');

    // Validation function so we can move the values of the users_to_send
    // to the default messaging module field.
    $form['#validate'][] = 'opigno_messaging_private_message_add_form_validate_replace_to';
  }

  // Remove default & set custom submit handler.
  $form['#submit'] = [
    'opigno_messaging_private_message_add_form_submit',
  ];
  $form['actions']['submit']['#submit'] = [
    'opigno_messaging_private_message_add_form_submit',
  ];
  $form['actions']['submit']['#value'] = t('Send');
  $route_name = \Drupal::routeMatch()
    ->getRouteName();
  if ($route_name == 'private_message.private_message_page') {

    // Save current thread id in form storage.
    // For "private_messages" page (not PM thread page).
    $user = \Drupal::currentUser();
    $db_connection = \Drupal::service('database');
    $pm_mapper = new PrivateMessageMapper($db_connection, $user);
    $user = User::load($user
      ->id());
    $thread_id = $pm_mapper
      ->getFirstThreadIdForUser($user);
    $form_state
      ->set('thread_id', $thread_id);
  }
}