public function PrivateMessageService::getPreviousMessages in Private Message 8
Same name and namespace in other branches
- 8.2 src/Service/PrivateMessageService.php \Drupal\private_message\Service\PrivateMessageService::getPreviousMessages()
Retrieve old messages for a user that were created before the given ID.
Parameters
int $threadId: The ID of the thread from which messages should be retrieved.
int $messageId: The ID before which messages should be retrieved.
Return value
array An array containing the following to keys:
- messages: an array of \Drupal\private_message\Entity\PrivateMessage
- next_exists: a boolean indicating whether or not any messages appear in the thread before the first message returned
Overrides PrivateMessageServiceInterface::getPreviousMessages
File
- src/
Service/ PrivateMessageService.php, line 191
Class
- PrivateMessageService
- The Private Message service for the private message module.
Namespace
Drupal\private_message\ServiceCode
public function getPreviousMessages($threadId, $messageId) {
$return = [];
$private_message_thread = $this->pmThreadManager
->load($threadId);
if ($private_message_thread && $private_message_thread
->isMember($this->currentUser
->id())) {
$user = $this->userManager
->load($this->currentUser
->id());
$messages = $private_message_thread
->filterUserDeletedMessages($user);
$start_index = FALSE;
$settings = $this->configFactory
->get('core.entity_view_display.private_message_thread.private_message_thread.default')
->get('content.private_messages.settings');
$count = $settings['ajax_previous_load_count'];
foreach ($messages as $index => $message) {
if ($message
->id() >= $messageId) {
$start_index = $index - $count >= 0 ? $index - $count : 0;
$slice_count = $index > $count ? $count : $index;
break;
}
}
if ($start_index !== FALSE) {
$messages = array_splice($messages, $start_index, $slice_count);
if (count($messages)) {
$order = $settings['message_order'];
if ($order == 'desc') {
$messages = array_reverse($messages);
}
$return = $messages;
}
}
}
return $return;
}