/** * ossn_recursive_array_search * Searches the array for a given value and returns the corresponding key if successful * @source: http://php.net/manual/en/function.array-search.php * * @param mixed $needle The searched value. If needle is a string, the comparison is done in a case-sensitive manner. * @param array $haystack The array * @return false|integer */ function ossn_recursive_array_search($needle, $haystack) { foreach ($haystack as $key => $value) { $current_key = $key; if ($needle === $value || is_array($value) && ossn_recursive_array_search($needle, $value)) { return $current_key; } } return false; }
$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]); } if ($key == 1 && $new_total > 1) { $pages = array_merge($serialized_pages[$key], $serialized_pages[$key + 1]);