public function PrivateMessageMapper::getThreadIdsForUser in Private Message 8
Same name and namespace in other branches
- 8.2 src/Mapper/PrivateMessageMapper.php \Drupal\private_message\Mapper\PrivateMessageMapper::getThreadIdsForUser()
Retrieve a list of thread IDs for threads the user belongs to.
Parameters
\Drupal\user\UserInterface $user: The user whose most recently thread IDs should be retrieved.
int $count: The number of thread IDs to retrieve.
int $timestamp: A timestamp relative to which only thread IDs with an earlier timestamp should be returned.
Return value
array An array of thread IDs if any threads exist.
Overrides PrivateMessageMapperInterface::getThreadIdsForUser
File
- src/
Mapper/ PrivateMessageMapper.php, line 99
Class
- PrivateMessageMapper
- Interface for the Private Message Mapper class.
Namespace
Drupal\private_message\MapperCode
public function getThreadIdsForUser(UserInterface $user, $count, $timestamp = FALSE) {
$query = 'SELECT DISTINCT(thread.id), MAX(thread.updated) ' . 'FROM {private_message_threads} AS thread ' . 'JOIN {private_message_thread__members} AS member ' . 'ON member.entity_id = thread.id AND member.members_target_id = :uid ' . 'JOIN {private_message_thread__private_messages} AS thread_messages ' . 'ON thread_messages.entity_id = thread.id ' . 'JOIN {private_messages} AS messages ' . 'ON messages.id = thread_messages.private_messages_target_id ' . 'JOIN {private_message_thread__last_delete_time} AS thread_delete_time ' . 'ON thread_delete_time.entity_id = thread.id ' . 'JOIN {pm_thread_delete_time} as owner_delete_time ' . 'ON owner_delete_time.id = thread_delete_time.last_delete_time_target_id AND owner_delete_time.owner = :uid ' . 'WHERE owner_delete_time.delete_time <= messages.created ';
$vars = [
':uid' => $user
->id(),
];
if ($timestamp) {
$query .= 'AND updated < :timestamp ';
$vars[':timestamp'] = $timestamp;
}
$query .= 'GROUP BY thread.id ORDER BY MAX(thread.updated) DESC, thread.id';
$thread_ids = $this->database
->queryRange($query, 0, $count, $vars)
->fetchCol();
return is_array($thread_ids) ? $thread_ids : [];
}