* @copyright 2007-2021 ETS-Soft * @license Valid for 1 website (or project) for each purchase of license * International Registered Trademark & Property of ETS-Soft */ if (!defined('_PS_VERSION_')) exit; class ETS_CFU_Pagination { public $total = 0; public $page = 1; public $limit = 20; public $num_links = 10; public $url = ''; public $text = 'Showing {start} to {end} of {total} ({pages} Page(s))'; public $text_first = '|<'; public $text_last = '>|'; public $text_next = '>'; public $text_prev = '<'; public $style_links = 'links'; public $style_results = 'results'; public $alias; public $friendly; public function __construct() { $this->alias = Configuration::get('YBC_BLOG_ALIAS'); $this->friendly = (int)Configuration::get('YBC_BLOG_FRIENDLY_URL') && (int)Configuration::get('PS_REWRITING_SETTINGS') ? true : false; } public function render() { $total = $this->total; if ($total <= 1) return false; if ($this->page < 1) { $page = 1; } else { $page = $this->page; } if (!(int)$this->limit) { $limit = 10; } else { $limit = $this->limit; } $num_links = $this->num_links; $num_pages = ceil($total / $limit); $output = ''; if ($page > 1) { $output .= ' ' . $this->text_first . ' '; } if ($num_pages > 1) { if ($num_pages <= $num_links) { $start = 1; $end = $num_pages; } else { $start = $page - floor($num_links / 2); $end = $page + floor($num_links / 2); if ($start < 1) { $end += abs($start) + 1; $start = 1; } if ($end > $num_pages) { $start -= ($end - $num_pages); $end = $num_pages; } } if ($start > 1) { $output .= ' .... '; } for ($i = $start; $i <= $end; $i++) { if ($page == $i) { $output .= ' ' . $i . ' '; } else { $output .= ' ' . $i . ' '; } } if ($end < $num_pages) { $output .= ' .... '; } } if ($page < $num_pages) { $output .= ' ' . $this->text_last . ' '; } $find = array( '{start}', '{end}', '{total}', '{pages}' ); $replace = array( ($total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($total - $limit)) ? $total : ((($page - 1) * $limit) + $limit), $total, $num_pages ); return ($output ? '' : '') . '
' . str_replace($find, $replace, $this->text) . '
'; } public function replacePage($page) { if ($page > 1) return str_replace('_page_', $page, $this->url); elseif ($this->friendly && $this->alias && Tools::getValue('controller') != 'AdminModules') return str_replace('/_page_', '', $this->url); else return str_replace('_page_', $page, $this->url); } } ?>