You are here

protected function AjaxController::getOldPrivateMessages in Private Message 8.2

Same name and namespace in other branches
  1. 8 src/Controller/AjaxController.php \Drupal\private_message\Controller\AjaxController::getOldPrivateMessages()

Create an Ajax Command containing old private messages.

Parameters

Drupal\Core\Ajax\AjaxResponse $response: The response to which any commands should be attached.

1 call to AjaxController::getOldPrivateMessages()
AjaxController::ajaxCallback in src/Controller/AjaxController.php
Create AJAX responses for JavaScript requests.

File

src/Controller/AjaxController.php, line 242

Class

AjaxController
Controller to handle Ajax requests.

Namespace

Drupal\private_message\Controller

Code

protected function getOldPrivateMessages(AjaxResponse $response) {
  $current_request = $this->requestStack
    ->getCurrentRequest();
  $thread_id = $current_request
    ->get('threadid');
  $message_id = $current_request
    ->get('messageid');
  if (is_numeric($thread_id) && is_numeric($message_id)) {
    $message_info = $this->privateMessageService
      ->getPreviousMessages($thread_id, $message_id);
    if (count($message_info['messages'])) {
      $messages = [];
      $view_builder = $this->entityTypeManager
        ->getViewBuilder('private_message');
      $has_next = $message_info['next_exists'];
      foreach ($message_info['messages'] as $message) {
        if ($message
          ->access('view', $this->currentUser)) {
          $message_view = $view_builder
            ->view($message);
          $message_view['#prefix'] = '<div class="private-message-wrapper field__item">';
          $message_view['#suffix'] = '</div>';
          $messages[] = $message_view;
        }
      }
      $response
        ->addCommand(new PrivateMessageInsertPreviousMessagesCommand($this->renderer
        ->renderRoot($messages), count($message_info['messages']), $has_next));
    }
    else {
      $response
        ->addCommand(new PrivateMessageInsertPreviousMessagesCommand('', 0, FALSE));
    }
  }
}