function privatemsg_view

1 privatemsg.module privatemsg_view($thread)
7-1 privatemsg.pages.inc privatemsg_view($thread)
7-2 privatemsg.pages.inc privatemsg_view($thread)
6-2 privatemsg.pages.inc privatemsg_view($thread)

Menu callback for viewing a thread.

Parameters

$thread: A array containing all information about a specific thread, generated by privatemsg_thread_load().

Return value

The page content.

See also

privatemsg_thread_load()

3 string references to 'privatemsg_view'

File

./privatemsg.pages.inc, line 841
User menu callbacks for Privatemsg.

Code

function privatemsg_view($thread) {
  drupal_set_title($thread['subject-tokenized']);

  $content = array('#thread' => $thread);

  if ($thread['to'] != $thread['message_count'] || !empty($thread['start'])) {
    // Generate paging links.
    $older = '';
    if (isset($thread['older_start'])) {
      $options = array(
        'query' => array('start' => $thread['older_start']),
        'attributes' => array('title' => t('Display older messages')),
      );
      $older = l(t('<<'), 'messages/view/' . $thread['thread_id'], $options);
    }
    $newer = '';
    if (isset($thread['newer_start'])) {
      $options = array(
        'query' => array('start' => $thread['newer_start']),
        'attributes' => array('title' => t('Display newer messages')),
      );
      $newer = l(t('>>'), 'messages/view/' . $thread['thread_id'], $options);
    }
    $substitutions = array(
      '@from' => $thread['from'],
      '@to' => $thread['to'],
      '@total' => $thread['message_count'],
      '!previous_link' => $older,
      '!newer_link' => $newer,
    );
    $title = t('!previous_link Displaying messages @from - @to of @total !newer_link', $substitutions);
    $content['pager'] = array(
      '#markup' => trim($title),
      '#prefix' => '<div class="privatemsg-view-pager">',
      '#suffix' => '</div>',
      '#weight' => 3,
    );
  }

  // Render the participants.
  $content['participants'] = array(
    '#markup' => theme('privatemsg_recipients', array('thread' => $thread)),
    '#weight' => -5,
    '#attached' => array('css' => array(drupal_get_path('module', 'privatemsg') . '/styles/privatemsg-recipients.css')),
  );

  // Render the messages.
  $content['messages']['#weight'] = 0;
  $i = 1;
  $count = count($thread['messages']);
  foreach ($thread['messages'] as $pmid => $message) {
    // Set message as read and theme it.
    // Add CSS classes.
    $message->classes = array('privatemsg-message', 'privatemsg-message-' . $i, $i % 2 == 1 ? 'privatemsg-message-even' : 'privatemsg-message-odd');
    if (!empty($message->is_new)) {
      // Mark message as read.
      privatemsg_message_change_status($pmid, PRIVATEMSG_READ, $thread['user']);
      $message->classes[] = 'privatemsg-message-new';
    }

    if ($i == 1) {
      $message->classes[] = 'privatemsg-message-first';
    }
    if ($i == $count) {
      $message->classes[] = 'privatemsg-message-last';
    }
    $i++;
    $content['messages'][$pmid] = array(
      '#markup' => theme('privatemsg_view', array('message' => $message)),
      '#attached' => array('css' => array(drupal_get_path('module', 'privatemsg') . '/styles/privatemsg-view.base.css', drupal_get_path('module', 'privatemsg') . '/styles/privatemsg-view.theme.css')),
    );
  }

  // Display the reply form if user is allowed to use it.
  if (privatemsg_user_access('write privatemsg') || privatemsg_user_access('reply only privatemsg')) {
    $content['reply'] = drupal_get_form('privatemsg_form_reply', $thread);
    $content['reply']['#weight'] = 5;
  }
  // Check after calling the privatemsg_new form so that this message is only
  // displayed when we are not sending a message.
  if ($thread['read_all']) {
    // User has permission to read all messages AND is not a participant of the current thread.
    drupal_set_message(t('This conversation is being viewed with escalated privileges and may not be the same as shown to normal users.'), 'warning');
  }

  drupal_alter('privatemsg_view', $content);

  return $content;
}