You are here

public function AnswersNewContentSinceLastLoginViewsHandler::render in Answers 7.4

Render the field.

Parameters

array $values: The values retrieved from the database.

Overrides views_handler_field::render

File

./answers_views_handler_new_content_since_last_login.inc, line 46
Definition of AnswersNewContentSinceLastLoginViewsHandler.

Class

AnswersNewContentSinceLastLoginViewsHandler
Field handler to display new content in question listing since last login.

Code

public function render(array $values) {
  global $user;
  if (!$user->uid) {
    return '';
  }
  $qid = $this
    ->get_value($values, 'nid');
  $created = $this
    ->get_value($values, 'created');
  $timestamp = node_last_viewed($qid);
  $output = '';

  // If the node was viewed or is a favorite.
  if ($timestamp) {
    $answers = db_query("SELECT nid FROM  {node} node LEFT JOIN {field_data_answers_related_question} field_data_answers_related_question ON node.nid = field_data_answers_related_question.entity_id AND field_data_answers_related_question.entity_type = 'node' AND field_data_answers_related_question.deleted = '0' WHERE field_data_answers_related_question.answers_related_question_target_id = :qid AND node.status = '1' AND node.created > :last_viewed_timestamp", array(
      ':qid' => $qid,
      ':last_viewed_timestamp' => $timestamp,
    ))
      ->fetchCol();
    if ($answers) {

      // Render as link will point to latest answer.
      $new_answer_text = format_plural(count($answers), "1 new answer", "@count new answers");
      $output = l($new_answer_text, 'node/' . $qid, array(
        'attributes' => array(
          'class' => 'answers-new',
        ),
        'fragment' => "node-" . end($answers),
      ));
    }
  }
  else {
    if ($created > $user->login) {
      $output = '<span class="answers-new">' . t('new') . '</span>';
    }
  }
  return $output;
}