class SocialPrivateMessageInboxBlock in Open Social 8
Provides a 'SocialPrivateMessageInboxBlock' block.
Plugin annotation
@Block(
  id = "social_private_message_inbox_block",
  admin_label = @Translation("Social Private Message Inbox"),
)
  Hierarchy
- class \Drupal\social_private_message\Plugin\Block\SocialPrivateMessageInboxBlock extends \Drupal\private_message\Plugin\Block\PrivateMessageInboxBlock
 
Expanded class hierarchy of SocialPrivateMessageInboxBlock
File
- modules/
social_features/ social_private_message/ src/ Plugin/ Block/ SocialPrivateMessageInboxBlock.php, line 16  
Namespace
Drupal\social_private_message\Plugin\BlockView source
class SocialPrivateMessageInboxBlock extends PrivateMessageInboxBlock {
  /**
   * {@inheritdoc}
   */
  public function build() {
    if ($this->currentUser
      ->isAuthenticated() && $this->currentUser
      ->hasPermission('use private messaging system')) {
      $config = $this
        ->getConfiguration();
      $thread_info = $this->privateMessageService
        ->getThreadsForUser($config['thread_count']);
      if (count($thread_info['threads'])) {
        $view_builder = $this->entityManager
          ->getViewBuilder('private_message_thread');
        $threads = $thread_info['threads'];
        /* @var \Drupal\private_message\Entity\PrivateMessageThread $thread */
        // This custom sort, sorts based on newestmessage timestamp in the
        // thread.
        uasort($threads, [
          $this,
          "customSort",
        ]);
        // The above sorts ascending... so:
        $threads = array_reverse($threads);
        foreach ($threads as $thread) {
          $block[$thread
            ->id()] = $view_builder
            ->view($thread, 'inbox');
        }
      }
      else {
        $block['no_threads'] = [
          '#prefix' => '<p>',
          '#suffix' => '</p>',
          '#markup' => $this
            ->t('You do not have any private messages yet. Click on the button on the right to start a new chat.'),
        ];
      }
      $new_url = Url::fromRoute('private_message.ajax_callback', [
        'op' => 'get_new_inbox_threads',
      ]);
      $new_token = $this->csrfToken
        ->get($new_url
        ->getInternalPath());
      $new_url
        ->setOptions([
        'absolute' => TRUE,
        'query' => [
          'token' => $new_token,
        ],
      ]);
      // Add the default classes, as these are not added when the block
      // output is overridden with a template.
      $block['#attributes']['class'][] = 'block';
      $block['#attributes']['class'][] = 'block-private-message';
      $block['#attributes']['class'][] = 'block-private-message-inbox-block';
      return $block;
    }
  }
  /**
   * {@inheritdoc}
   */
  public function getCacheContexts() {
    $cache_contexts = parent::getCacheContexts();
    $cache_contexts[] = 'user';
    return $cache_contexts;
  }
  /**
   * Sorts the inbox based on last updated time.
   */
  public function customSort($pmt1, $pmt2) {
    /* @var \Drupal\private_message\Entity\PrivateMessageThread $pmt1 */
    /* @var \Drupal\private_message\Entity\PrivateMessageThread $pmt2 */
    if ($pmt1
      ->getUpdatedTime() == $pmt2
      ->getUpdatedTime()) {
      return 0;
    }
    return $pmt1
      ->getUpdatedTime() < $pmt2
      ->getUpdatedTime() ? -1 : 1;
  }
}Members
| 
            Name | 
                  Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| 
            SocialPrivateMessageInboxBlock:: | 
                  public | function | ||
| 
            SocialPrivateMessageInboxBlock:: | 
                  public | function | Sorts the inbox based on last updated time. | |
| 
            SocialPrivateMessageInboxBlock:: | 
                  public | function |