function views_refresh_shift_page_and_render in Views Refresh 7
Tries to load the previous page of the view if the current page is empty.
1 call to views_refresh_shift_page_and_render()
- views_refresh_ajax_handler in ./
views_refresh.module - Menu callback to reload a view via AJAX - modified copy of views_ajax().
File
- ./
views_refresh.module, line 187 - Views Refresh module.
Code
function views_refresh_shift_page_and_render($view, $name, $output, $display_id, $args, $pager_element, $dom_id) {
global $pager_page_array;
if (empty($pager_page_array)) {
$pager_page_array = array();
}
$page_array = isset($_GET['page']) ? explode(',', $_GET['page']) : array();
/** @var view $view */
$pager_id = $view->query->pager
->get_pager_id();
for ($i = 0; $i <= $pager_id || $i < count($pager_page_array); $i++) {
$pager_page_array[$i] = empty($page_array[$i]) ? 0 : $page_array[$i];
}
$page = intval($pager_page_array[$pager_id]);
if ($page < 0) {
$page = 0;
}
// Limit page decrement attempts to avoid DOS attacks.
$attempts = 5;
while ($page > 0 && empty($view->result) && $attempts > 0) {
$attempts--;
$page--;
$pager_page_array[$pager_id] = $page;
$_GET['page'] = implode(',', pager_load_array($page, $pager_id, $page_array));
$view = views_get_view($name);
$view
->init_display();
if (isset($pager_element)) {
$view->display[$display_id]->handler
->set_option('pager_element', $pager_element);
}
$view->dom_id = $dom_id;
$output = $view
->preview($display_id, $args);
}
return $output;
}