protected function AjaxController::getNewInboxThreads in Private Message 8
Same name and namespace in other branches
- 8.2 src/Controller/AjaxController.php \Drupal\private_message\Controller\AjaxController::getNewInboxThreads()
Creates an Ajax Command with new threads for the private message inbox.
Parameters
Drupal\Core\Ajax\AjaxResponse $response: The response to which any commands should be attached.
1 call to AjaxController::getNewInboxThreads()
- AjaxController::ajaxCallback in src/
Controller/ AjaxController.php - Create AJAX responses for JavaScript requests.
File
- src/
Controller/ AjaxController.php, line 277
Class
- AjaxController
- Controller to handle Ajax requests.
Namespace
Drupal\private_message\ControllerCode
protected function getNewInboxThreads(AjaxResponse $response) {
$info = $this->requestStack
->getCurrentRequest()
->get('ids');
// Check to see if any thread IDs were POSTed.
if (is_array($info) && count($info)) {
// Get new inbox information based on the posted IDs.
$inbox_threads = $this->privateMessageService
->getUpdatedInboxThreads($info);
}
else {
// No IDs were posted, so the maximum possible number of threads to be
// returned is retrieved from the block settings.
$thread_count = $this->configFactory
->get('block.block.privatemessageinbox')
->get('settings.thread_count');
$inbox_threads = $this->privateMessageService
->getUpdatedInboxThreads([], $thread_count);
}
// Only need to do something if any thread IDS were found.
if (count($inbox_threads['thread_ids'])) {
$view_builder = $this->entityManager
->getViewBuilder('private_message_thread');
// Render any new threads as HTML to be sent to the browser.
$rendered_threads = [];
foreach (array_keys($inbox_threads['new_threads']) as $thread_id) {
if ($inbox_threads['new_threads'][$thread_id]
->access('view', $this->currentUser)) {
$renderable = $view_builder
->view($inbox_threads['new_threads'][$thread_id], 'inbox');
$rendered_threads[$thread_id] = $this->renderer
->renderRoot($renderable);
}
}
// Add the command that will tell the inbox which thread items to update.
$response
->addCommand(new PrivateMessageInboxUpdateCommand($inbox_threads['thread_ids'], $rendered_threads));
}
}