* @link http://www.opensource-socialnetwork.org/licence */ $pages = range(1, $params['total']); //unset non-required vars unset($_GET['h']); unset($_GET['p']); unset($_GET['offset']); $args_url = OssnPagination::constructUrlArgs(); //if there is only one page don't show pagination if (count($pages) !== 1) { $spilt = array_chunk($pages, 4); $spilt = arraySerialize($spilt); foreach ($spilt as $page) { $serialized_pages[] = arraySerialize($page); } $serialized_pages = arraySerialize($serialized_pages); //get key by offset $key = ossn_recursive_array_search($params['offset'], $serialized_pages); $new_total = count($serialized_pages); //get last page $last = array_reverse($serialized_pages[$new_total]); $last = $last[0]; //get first page $first = $serialized_pages[1][1]; if (isset($serialized_pages[$key])) { if (isset($serialized_pages[$key + 1]) && isset($serialized_pages[$key - 1])) { $pages = array_merge($serialized_pages[$key - 1], $serialized_pages[$key], $serialized_pages[$key + 1]); } if (!isset($serialized_pages[$key + 1]) && $key > 1) { $pages = array_merge($serialized_pages[$key - 1], $serialized_pages[$key]); }
/** * Output pagination bar; * * @return html; */ public function pagination() { if (!isset($this->setItem)) { return false; } $item = $this->setItem; if (is_array($item)) { $newitem = array_chunk($item, $this->ppage); $newitem_total = count($newitem); $pages = arraySerialize($newitem); $offset = (int) input('offset'); if (!array_key_exists($offset, $pages)) { $view = 1; } elseif (array_key_exists($offset, $pages)) { $view = $offset; } $params['offset'] = $view; $params['total'] = $newitem_total; return $this->view($params); } }