/**
 * 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;
}
Example #2
0
$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]);