public function pagination($params = null)
{
if (empty($params)) {
$params = array();
} elseif (!is_array($params)) {
$params = array('label' => $params);
}
$this->page_var = pods_var_raw('page_var', $params, $this->page_var);
$url = pods_query_arg(null, null, $this->page_var);
$append = '?';
if (false !== strpos($url, '?')) {
$append = '&';
}
$defaults = array('type' => 'advanced', 'label' => __('Go to page:', 'pods'), 'show_label' => true, 'first_text' => __('« First', 'pods'), 'prev_text' => __('‹ Previous', 'pods'), 'next_text' => __('Next ›', 'pods'), 'last_text' => __('Last »', 'pods'), 'prev_next' => true, 'first_last' => true, 'limit' => (int) $this->limit, 'offset' => (int) $this->offset, 'page' => max(1, (int) $this->page), 'mid_size' => 2, 'end_size' => 1, 'total_found' => $this->total_found(), 'page_var' => $this->page_var, 'base' => "{$url}{$append}%_%", 'format' => "{$this->page_var}=%#%", 'class' => '', 'link_class' => '');
$params = (object) array_merge($defaults, $params);
$params->total = $this->total_pages($params->limit, $params->offset, $params->total_found);
if ($params->limit < 1 || $params->total_found < 1 || 1 == $params->total || $params->total_found <= $params->offset) {
return $this->do_hook('pagination', $this->do_hook('pagination_' . $params->type, '', $params), $params);
}
$pagination = $params->type;
if (!in_array($params->type, array('simple', 'advanced', 'paginate', 'list'))) {
$pagination = 'advanced';
}
ob_start();
pods_view(PODS_DIR . 'ui/front/pagination/' . $pagination . '.php', compact(array_keys(get_defined_vars())));
$output = ob_get_clean();
return $this->do_hook('pagination', $this->do_hook('pagination_' . $params->type, $output, $params), $params);
}