You are here

function views_litepager_views_pre_execute in Views Litepager 6.2

Implement hook_views_pre_execute().

File

./views_litepager.module, line 6

Code

function views_litepager_views_pre_execute(&$view) {
  if ($view->pager['use_pager'] === 'lite') {

    // Prevent views from executing a count query
    $view->get_total_rows = FALSE;
    $view->pager['use_pager'] = FALSE;

    // Enable flag so we can theme the Lite pager later
    $view->pager['litepager'] = TRUE;
    global $pager_page_array, $pager_total, $pager_total_items;

    // What page was requested:
    $pager_page_array = isset($_GET['page']) ? explode(',', $_GET['page']) : array();
    $current_page = !empty($pager_page_array) ? $pager_page_array[$view->pager['element']] : 0;
    $min_pages = max($current_page + 1, 2);

    // total rows in query
    $pager_total_items[$view->pager['element']] = $view->pager['items_per_page'] * $min_pages + 1;

    // total pages
    $pager_total[$view->pager['element']] = (int) ceil($pager_total_items[$view->pager['element']] / $view->pager['items_per_page']);

    // If the requested page was within range. $this->pager['current_page']
    // defaults to 0 so we don't need to set it in an out-of-range condition.
    if (!empty($pager_page_array[$view->pager['element']])) {
      $page = intval($pager_page_array[$view->pager['element']]);
      if ($page > 0 && $page < $pager_total[$view->pager['element']]) {
        $view->pager['current_page'] = $page;
      }
    }
    $pager_page_array[$view->pager['element']] = $view->pager['current_page'];
  }
}