function views_handler_field_counter::render

Overrides views_handler_field::render

File

handlers/views_handler_field_counter.inc, line 57

Class

views_handler_field_counter
Field handler to show a counter of the current row.

Code

public function render($values) {
    $reverse = empty($this->options['reverse']) ? 1 : -1;
    // Note: 1 is subtracted from the counter start value below because the
    // counter value is incremented by 1 at the end of this function.
    $counter_start = is_numeric($this->options['counter_start']) ? $this->options['counter_start'] : 0;
    $count = $reverse == -1 ? count($this->view->result) + $counter_start : $counter_start - 1;
    $pager = $this->view->query->pager;
    // Get the base count of the pager.
    if ($pager->use_pager()) {
        if ($reverse == -1) {
            $count = $pager->total_items + $counter_start - $pager->get_current_page() * $pager->get_items_per_page() + $pager->get_offset();
        }
        else {
            $count += ($pager->get_items_per_page() * $pager->get_current_page() + $pager->get_offset()) * $reverse;
        }
    }
    // Add the counter for the current site.
    $count += ($this->view->row_index + 1) * $reverse;
    return $count;
}