%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/shaban/laviva/wp-content/themes/levelup/inc/ext/
Upload File :
Create Path :
Current File : /var/www/html/shaban/laviva/wp-content/themes/levelup/inc/ext/pagination.php

<?php

// File Security Check
if ( ! defined( 'ABSPATH' ) ) { exit; }


if ( !function_exists( 'levelup_paginator' ) ) {

    function levelup_paginator( $query = null, $opts = array(), $force = false ) {
        global $wpdb, $wp_query, $paged;

        if ( !is_single() || $force ) {
            $defaults = array(
                'wrap'              => '<ul class="%CLASS%">%LIST%</ul>',
                'item_wrap'         => '<li class="%ITEM_CLASS%%ACT_CLASS%"><a href="%HREF%">%TEXT%</a></li>',
                'first_wrap'        => '<li><a href="%HREF%">%TEXT%</a></li>',
                'last_wrap'         => '<li><a href="%HREF%">%TEXT%</a></li>',
                'pages_wrap'        => '<div class="paginator-r"><span class="pagin">%TOTAL_PAGES_TEXT%</spzn>%PREV%%NEXT%</div>',
                'next_page_wrap'    => '%LINK%',
                'prev_page_wrap'    => '%LINK%',
                'ajaxing'           => false,
                'class'             => 'paginator',
                'item_class'        => '',
                'act_class'         => ' act',
                'pages_prev_class'  => 'larr',
                'pages_next_class'  => 'rarr',
                'always_show'       => 0,
                'dotleft_wrap'      => '<span>%TEXT%</span>',
                'dotright_wrap'     => '<span>%TEXT%</span>',
                'pages_text'        => _x( 'Page %CURRENT_PAGE% of %TOTAL_PAGES%', 'pagination defaults', 'LEVELUP' ),
                'current_text'      => '%PAGE_NUMBER%',
                'page_text'         => '%PAGE_NUMBER%',
                'first_text'        => _x( 'First', 'pagination defaults', 'LEVELUP' ),
                'last_text'         => _x( 'Last', 'pagination defaults', 'LEVELUP' ),
                'prev_text'         => '<',
                'next_text'         => '>',
                'no_next'			=> '',
                'no_prev'			=> '',
                'dotright_text'     => '&#8230;',
                'dotleft_text'      => '&#8230;',
                'num_pages'         => 5,
                'total_pages'       => true,
                'first_is_first_mode'	=> false,
                'echo'	=> false,
                'query'             => is_object($query) ? $query : $wp_query
            );
            $opts = wp_parse_args( $opts, $defaults );
            $opts = apply_filters('levelup_paginator_args', $opts);

            // setup query
            $query = $opts['query'];
            if( !is_object($query) ) {
                $query = $wp_query;
            }

            $posts_per_page = intval(get_query_var('posts_per_page'));

            if( !$paged = intval(get_query_var('page'))) {
                $paged = intval(get_query_var('paged'));
            }

            $numposts = $query->found_posts;
            $max_page = $query->max_num_pages;

            if(empty($paged) || $paged == 0) {
                $paged = 1;
            }

            if ( $opts['num_pages'] <= 0 ) { $opts['num_pages'] = 1; }

            $pages_to_show = absint($opts['num_pages']);
            $pages_to_show_minus_1 = $pages_to_show-1;
            $half_page_start = floor($pages_to_show_minus_1/2);
            $half_page_end = ceil($pages_to_show_minus_1/2);
            $start_page = $paged - $half_page_start;

            if($start_page <= 0) {
                $start_page = 1;
            }

            $end_page = $paged + $half_page_end;

            if(($end_page - $start_page) != $pages_to_show_minus_1) {
                $end_page = $start_page + $pages_to_show_minus_1;
            }

            if($end_page > $max_page) {
                $start_page = $max_page - $pages_to_show_minus_1;
                $end_page = $max_page;
            }

            $end_page = absint( $end_page );

            if($start_page <= 0) {
                $start_page = 1;
            }

            if( $opts['ajaxing'] ) {
                add_filter( 'get_pagenum_link', 'levelup_ajax_paginator_filter', 10, 1);
            }

            $output = '';
            $pages_list = '';

            // add class to item wrap
            $opts['item_wrap'] = str_replace( '%ITEM_CLASS%', $opts['item_class'], $opts['item_wrap'] );

            if ( $max_page > 1 || intval($opts['always_show']) == 1) {

                add_filter( 'levelup_next_posts_link_attributes', 'levelup_paginator_add_posts_link_attr', 10, 2 );
                add_filter( 'levelup_previous_posts_link_attributes', 'levelup_paginator_add_posts_link_attr', 10, 2 );

                $pages_next = levelup_get_next_posts_link($opts['next_text'], $max_page, 'class="' . sanitize_html_class($opts['pages_next_class']) . '"');
                $pages_prev = levelup_get_previous_posts_link($opts['prev_text'], 'class="' . sanitize_html_class($opts['pages_prev_class']) . '"');

                remove_filter( 'levelup_next_posts_link_attributes', 'levelup_paginator_add_posts_link_attr', 10 );
                remove_filter( 'levelup_previous_posts_link_attributes', 'levelup_paginator_add_posts_link_attr', 10 );

                if ( ! $pages_next ) {
                    $pages_next = $opts['no_next'];
                } else {
                    $pages_next = str_replace('%LINK%', $pages_next, $opts['next_page_wrap']);
                }

                if ( ! $pages_prev ) {
                    $pages_prev = $opts['no_prev'];
                } else {
                    $pages_prev = str_replace('%LINK%', $pages_prev, $opts['prev_page_wrap']);
                }

                $loop_start = $start_page;
                $loop_end = $end_page;
                $dots_left_point = 1;
                $dots_right_point = $max_page;

                if ( $opts['first_is_first_mode'] ) {
                    if ( 1 == $start_page ) {
                        $loop_start++;
                    }

                    if ( $max_page == $end_page ) {
                        $loop_end--;
                    }

                    $dots_left_point++;
                    $dots_right_point--;

                }

                if( $paged > 1 || $opts['first_is_first_mode'] ) {

                    $act_class = $class_act = '';
                    if ( 1 == $paged ) {
                        $act_class = $opts['act_class'];
                        $class_act = 'class="' . esc_attr( $opts['act_class'] ) . '"';
                    }

                    $pages_list .= str_replace(
                        array(
                            '%HREF%',
                            '%TEXT%',
                            '%FIRST_PAGE%',
                            '%ACT_CLASS%',
                            '%CLASS_ACT%',
                            '%PAGE_NUM%'
                        ),
                        array(
                            esc_url( get_pagenum_link() ),
                            $opts['first_text'],
                            1,
                            $act_class,
                            $class_act,
                            1
                        ),
                        $opts['first_wrap']
                    );
                }

                if ( $start_page > $dots_left_point && $pages_to_show < $max_page ) {
                    if(!empty($opts['dotleft_text'])) {

                        if ( $opts['first_is_first_mode'] ) {
                            $class_act = $curr_class = '';
                            $pages_list .= '<div style="display: none;">';
                            for ( $i = 2; $i < $loop_start; $i++ ) {
                                $page_text = str_replace( "%PAGE_NUMBER%", number_format_i18n($i), $opts['page_text'] );
                                $pages_list .= str_replace(
                                    array(
                                        '%ITEM_CLASS%',
                                        '%HREF%',
                                        '%TEXT%',
                                        '%ACT_CLASS%',
                                        '%CLASS_ACT%',
                                        '%PAGE_NUM%'
                                    ),
                                    array(
                                        $opts['item_class'],
                                        esc_url(get_pagenum_link($i)),
                                        $page_text,
                                        $curr_class,
                                        $class_act,
                                        $i
                                    ),
                                    $opts['item_wrap']
                                );
                            }
                            $pages_list .= '</div>';
                        }

                        $pages_list .= str_replace( '%TEXT%', $opts['dotleft_text'], $opts['dotleft_wrap'] );
                    }
                }

                for($i = $loop_start; $i <= $loop_end; $i++) {
                    if ( $i == $paged ) {
                        $page_text = str_replace(
                            "%PAGE_NUMBER%",
                            number_format_i18n($i),
                            $opts['current_text']
                        );
                        $curr_class = $opts['act_class'];
                        $class_act = 'class="' . esc_attr( $opts['act_class'] ) . '"';
                    } else {
                        $page_text = str_replace(
                            "%PAGE_NUMBER%",
                            number_format_i18n($i),
                            $opts['page_text']
                        );
                        $curr_class = $class_act = '';
                    }
                    $pages_list .= str_replace(
                        array(
                            '%ITEM_CLASS%',
                            '%HREF%',
                            '%TEXT%',
                            '%ACT_CLASS%',
                            '%CLASS_ACT%',
                            '%PAGE_NUM%'
                        ),
                        array(
                            $opts['item_class'],
                            get_pagenum_link($i),
                            $page_text,
                            $curr_class,
                            $class_act,
                            $i
                        ),
                        $opts['item_wrap']
                    );
                }

                if ( $end_page < $dots_right_point ) {
                    if(!empty($opts['dotright_text'])) {
                        $pages_list .= str_replace( '%TEXT%', $opts['dotright_text'], $opts['dotright_wrap'] );

                        if ( $opts['first_is_first_mode'] ) {
                            $class_act = $curr_class = '';
                            $pages_list .= '<div style="display: none;">';
                            for ( $i = $loop_end+1; $i <= $dots_right_point; $i++ ) {
                                $page_text = str_replace( "%PAGE_NUMBER%", number_format_i18n($i), $opts['page_text'] );
                                $pages_list .= str_replace(
                                    array(
                                        '%ITEM_CLASS%',
                                        '%HREF%',
                                        '%TEXT%',
                                        '%ACT_CLASS%',
                                        '%CLASS_ACT%',
                                        '%PAGE_NUM%'
                                    ),
                                    array(
                                        $opts['item_class'],
                                        get_pagenum_link($i),
                                        $page_text,
                                        $curr_class,
                                        $class_act,
                                        $i
                                    ),
                                    $opts['item_wrap']
                                );
                            }
                            $pages_list .= '</div>';
                        }
                    }
                }

                if( $paged < $max_page || $opts['first_is_first_mode'] ) {

                    $act_class = $class_act = '';
                    if ( $max_page == $paged ) {
                        $act_class = $opts['act_class'];
                        $class_act = 'class="' . esc_attr( $opts['act_class'] ) . '"';
                    }

                    $pages_list .= str_replace(
                        array(
                            '%HREF%',
                            '%TEXT%',
                            '%LAST_PAGE%',
                            '%ACT_CLASS%',
                            '%CLASS_ACT%',
                            '%PAGE_NUM%'
                        ),
                        array(
                            get_pagenum_link($max_page),
                            $opts['last_text'],
                            $max_page,
                            $act_class,
                            $class_act,
                            $i
                        ),
                        $opts['last_wrap']
                    );
                }

                $pages_text = str_replace(
                    array( '%CURRENT_PAGE%', '%TOTAL_PAGES%' ),
                    array( number_format_i18n($paged), number_format_i18n($max_page) ),
                    $opts['pages_text']
                );

                $paginator_data = ' data-max-pages="'.$end_page.'"';

                $output = str_replace(
                    array( '%CLASS%', '%LIST%', '%TOTAL_PAGES_TEXT%', '%PREV%', '%NEXT%', '%DATA%' ),
                    array( $opts['class'], $pages_list, $pages_text, $pages_prev, $pages_next, $paginator_data ),
                    $opts['wrap'] . ( isset($opts['pages_wrap']) ? $opts['pages_wrap'] : '' )
                );

                if ($opts['echo']){
                    echo $output;
                }else{
                    return $output;
                }
            }

            remove_filter( 'get_pagenum_link', 'levelup_ajax_paginator_filter', 10);
        }

        return '';
    }

}


function levelup_ajax_paginator_filter( $result ) {
    global $wp_rewrite;

    $page_permalink = get_permalink();
    $admin_url = admin_url( 'admin-ajax.php' );

    $search = array(
        '&paged=',
        '?paged=',
        '/page/'
    );

    $pagenum = 1;

    foreach( $search as $exp ) {
        $str = explode( $exp, $result );

        if ( isset($str[1]) ) {
            $pagenum = $str[1];
            break;
        }
    }

    $pagenum = (int) $pagenum;

    $request = remove_query_arg( 'paged' );

    $home_root = parse_url(home_url());
    $home_root = ( isset($home_root['path']) ) ? $home_root['path'] : '';
    $home_root = preg_quote( $home_root, '|' );

    $request = preg_replace('|^'. $home_root . '|i', '', $request);
    $request = preg_replace('|^/+|', '', $request);

    if ( !$wp_rewrite->using_permalinks() ) {
        $base = home_url( '/' );

        if ( $pagenum > 1 ) {
            $result = add_query_arg( 'paged', $pagenum, $base . $request );
        } else {
            $result = $base . $request;
        }
    } else {
        $qs_regex = '|\?.*?$|';
        preg_match( $qs_regex, $request, $qs_match );

        if ( !empty( $qs_match[0] ) ) {
            $query_string = $qs_match[0];
            $request = preg_replace( $qs_regex, '', $request );
        } else {
            $query_string = '';
        }

        $request = preg_replace( "|$wp_rewrite->pagination_base/\d+/?$|", '', $request );
        $request = preg_replace( '|^' . preg_quote( $wp_rewrite->index, '|' ) . '|i', '', $request );
        $request = ltrim( $request, '/' );

        $base = home_url( '/' );

        if ( $wp_rewrite->using_index_permalinks() && ( $pagenum > 1 || '' != $request ) ) {
            $base .= $wp_rewrite->index . '/';
        }

        if ( $pagenum > 1 ) {
            $request = ( ( !empty( $request ) ) ? trailingslashit( $request ) : $request ) . user_trailingslashit( $wp_rewrite->pagination_base . "/" . $pagenum, 'paged' );
        }

        $result = $base . $request . $query_string;
    }

    $result = str_replace( array( trailingslashit($admin_url), $admin_url ), $page_permalink, $result );

    return $result;
}


function levelup_paginator_add_posts_link_attr( $attr, $nextpage = 0 ) {
    if ( $nextpage ) {
        $attr .= ' data-page-num="' . absint($nextpage) . '"';
    }
    return $attr;
}


function levelup_get_next_posts_link($label = null, $max_page = 0, $attr = '' ) {
    global $paged, $wp_query;

    if ( !$max_page ) {
        $max_page = $wp_query->max_num_pages;
    }

    if ( !$paged ) {
        $paged = 1;
    }

    $nextpage = intval($paged) + 1;

    if ( null === $label ) {
        $label = '';
    }

    if ( !is_single() && ( $nextpage <= $max_page ) ) {
        $attr = apply_filters( 'levelup_next_posts_link_attributes', $attr, $nextpage, $max_page );
        return '<a href="' . next_posts( $max_page, false ) . "\" $attr>" . preg_replace('/&([^#])(?![a-z]{1,8};)/i', '&#038;$1', $label) . '</a>';
    }
    return '';
}


function levelup_get_previous_posts_link($label = null, $attr = '' ) {
    global $paged;

    if ( null === $label ) {
        $label = '';
    }

    $nextpage = intval($paged) - 1;
    if ( $nextpage < 1 ) {
        $nextpage = 1;
    }

    if ( !is_single() && $paged > 1 ) {
        $attr = apply_filters( 'levelup_previous_posts_link_attributes', $attr, $nextpage );
        return '<a href="' . previous_posts( false ) . "\" $attr>". preg_replace( '/&([^#])(?![a-z]{1,8};)/i', '&#038;$1', $label ) .'</a>';
    }
    return '';
}

Zerion Mini Shell 1.0