HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/ideasforum.kaunokolegija.lt/wp-content/plugins/pagination/pagination.php
<?php
/*
Plugin Name: Pagination by BestWebSoft
Plugin URI: https://bestwebsoft.com/products/wordpress/plugins/pagination/
Description: Add customizable pagination to WordPress website. Split long content to multiple pages for better navigation.
Author: BestWebSoft
Text Domain: pagination
Domain Path: /languages
Version: 1.2.1
Author URI: https://bestwebsoft.com/
License: GPLv3 or later
*/

/*  © Copyright 2021  BestWebSoft  ( https://support.bestwebsoft.com )

	This program is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License, version 2, as
	published by the Free Software Foundation.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program; if not, write to the Free Software
	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

/**
 * Add Wordpress page 'bws_panel' and sub-page of this plugin to admin-panel.
* @return void
 */
if ( ! function_exists( 'pgntn_add_admin_menu' ) ) {
	function pgntn_add_admin_menu() {
		global $submenu, $pgntn_plugin_info, $wp_version;

		$settings = add_menu_page( __( 'Pagination Settings', 'pagination' ), 'Pagination', 'manage_options', 'pagination.php', 'pgntn_settings_page', 'none' );
		add_submenu_page( 'pagination.php', __( 'Pagination Settings', 'pagination' ), __( 'Settings', 'pagination' ), 'manage_options', 'pagination.php', 'pgntn_settings_page' );
		add_submenu_page( 'pagination.php', 'BWS Panel', 'BWS Panel', 'manage_options', 'pgntn-bws-panel', 'bws_add_menu_render' );

		if ( isset( $submenu['pagination.php'] ) )
			$submenu['pagination.php'][] = array(
				'<span style="color:#d86463"> ' . __( 'Upgrade to Pro', 'pagination' ) . '</span>',
				'manage_options',
				'https://bestwebsoft.com/products/wordpress/plugins/pagination/?k=5f3235c93ef4bd001abe4efd16530be0&pn=212&v=' . $pgntn_plugin_info["Version"] . '&wp_v=' . $wp_version );

		add_action( 'load-' . $settings, 'pgntn_add_tabs' );
	}
}

/**
 * Internationalization
 */
if ( ! function_exists( 'pgntn_plugins_loaded' ) ) {
	function pgntn_plugins_loaded() {
		load_plugin_textdomain( 'pagination', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
	}
}

/**
 * Plugin initialization and language localization on backend and front end
 * @return void
 */
if ( ! function_exists ( 'pgntn_init' ) ) {
	function pgntn_init() {
		global $bws_plugin_info, $pgntn_plugin_info;

		require_once( dirname( __FILE__ ) . '/bws_menu/bws_include.php' );
		bws_include_init( plugin_basename( __FILE__ ) );

		/* Add variable for bws_menu */
		if ( empty( $pgntn_plugin_info ) ) {
			if ( ! function_exists( 'get_plugin_data' ) ) {
				require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
			}
			$pgntn_plugin_info = get_plugin_data( __FILE__ );
		}

		/* Function check if plugin is compatible with current WP version */
		bws_wp_min_version_check( plugin_basename( __FILE__ ), $pgntn_plugin_info, '4.5' );

		pgntn_settings();
		pgntn_display();
	}
}

/**
 * Plugin initialization on backend
 * @return void
 */
if ( ! function_exists ( 'pgntn_admin_init' ) ) {
	function pgntn_admin_init() {
		global $bws_plugin_info, $pgntn_plugin_info, $pagenow, $pgntn_options;

		if ( empty( $bws_plugin_info ) )
			$bws_plugin_info = array( 'id' => '212', 'version' => $pgntn_plugin_info["Version"] );

        if ( 'plugins.php' == $pagenow ) {
            /* show banner go settings pls*/
            if ( function_exists( 'bws_plugin_banner_go_pro' ) ) {
                pgntn_settings();
            bws_plugin_banner_go_pro( $pgntn_options, $pgntn_plugin_info, 'pgntn', 'pagination', 'de97a6f81981229376108a33685eb703', '212', '//ps.w.org/pagination/assets/icon-128x128.png' );
            }
        }

    }
}

/* Add settings page in admin area */
if ( ! function_exists( 'pgntn_settings_page' ) ) {
	function pgntn_settings_page() {
        if ( ! class_exists( 'Bws_Settings_Tabs' ) )
            require_once( dirname( __FILE__ ) . '/bws_menu/class-bws-settings.php' );
		require_once( dirname( __FILE__ ) . '/includes/class-pgntn-settings.php' );
		$page = new Pgntn_Settings_Tabs( plugin_basename( __FILE__ ) ); 
		if ( method_exists( $page, 'add_request_feature' ) )
            $page->add_request_feature(); ?>
		<!-- general -->
		<div id="pgntn_settings_form" class="wrap">
			<h1><?php _e( 'Pagination Settings', 'pagination' ); ?></h1>
			<noscript><div class="error below-h2"><p><strong><?php _e( "Please enable JavaScript in your browser.", 'pagination' ); ?></strong></p></div></noscript>
			<?php $page->display_content(); ?>
		</div>
	<?php }
}

if ( ! function_exists( 'pgntn_get_options_default' ) ) {
	function pgntn_get_options_default() {
		global $pgntn_options, $pgntn_plugin_info, $pgntn_option_defaults;

		if ( ! $pgntn_plugin_info )
			$pgntn_plugin_info = get_plugin_data( __FILE__ );

		$pgntn_option_defaults = array(
			'plugin_option_version'			=> $pgntn_plugin_info["Version"],
			'display_settings_notice'		=> 1,
			'suggest_feature_banner'		=> 1,
			'first_install'					=> strtotime( "now" ),
			'where_display'					=> array( 'everywhere' ),
			'loop_position'					=> 'bottom',
			'display_info'					=> 1,
			'display_next_prev'				=> 1,
			'prev_text'						=> __( '« Previous', 'pagination' ),
			'next_text'						=> __( 'Next »', 'pagination' ),
			'show_all'						=> 0,
			'display_count_page'			=> 2,
			'display_standard_pagination'	=> array( 'posts', 'multipage' , 'comments' ),
			'additional_pagination_style'	=> '',
			'display_custom_pagination'		=> 1,
			'add_appearance'				=> 1,
			'width'							=> '60',
			'align'							=> 'left',
			'background_color'				=> '#ffffff',
			'current_background_color'		=> '#efefef',
			'text_color'					=> '#1e14ca',
			'current_text_color'			=> '#000',
			'hover_color'					=> '#000',
			'border_color'					=> '#cccccc',
			'border_width'					=> 1,
			'border_radius'					=> 0,
			'padding_left'					=> 0,
			'padding_right'					=> 0,
			'nofollow_link'					=> 0
		);

		return $pgntn_option_defaults;
	}
}

/**
 * Write plugin settings in to database
 * @return void
 */
if ( ! function_exists( 'pgntn_settings' ) ) {
	function pgntn_settings() {
		global $pgntn_options, $pgntn_plugin_info, $pgntn_option_defaults;

		if ( ! $pgntn_plugin_info )
			$pgntn_plugin_info = get_plugin_data( __FILE__ );

		$pgntn_option_defaults = pgntn_get_options_default();

		if ( ! get_option( 'pgntn_options' ) )
			add_option( 'pgntn_options', $pgntn_option_defaults );

		$pgntn_options = get_option( 'pgntn_options' );

		if ( ! isset( $pgntn_options['plugin_option_version'] ) || $pgntn_options['plugin_option_version'] != $pgntn_plugin_info["Version"] ) {
			pgntn_plugin_activate();
			$pgntn_option_defaults['display_settings_notice'] = 0;
			$pgntn_options = array_merge( $pgntn_option_defaults, $pgntn_options );
			/* show pro features */
			$pgntn_options['hide_premium_options'] = array();

			$pgntn_options['plugin_option_version'] = $pgntn_plugin_info["Version"];
			update_option( 'pgntn_options', $pgntn_options );
		}
	}
}

/**
 * Function for activation
 */
if ( ! function_exists( 'pgntn_plugin_activate' ) ) {
	function pgntn_plugin_activate() {
		/* registering uninstall hook */
		if ( is_multisite() ) {
			switch_to_blog( 1 );
			register_uninstall_hook( __FILE__, 'pgntn_delete_options' );
			restore_current_blog();
		} else {
			register_uninstall_hook( __FILE__, 'pgntn_delete_options' );
		}
	}
}

/**
 * Include necessary css- and js-files in admin panel
 * @return void
 */
if ( ! function_exists( 'pgntn_admin_head' ) ) {
	function pgntn_admin_head() {
		wp_enqueue_style( 'pgntn_icon', plugins_url( 'css/icon.css', __FILE__ ), array( 'wp-color-picker' ) );
		if ( isset( $_REQUEST['page'] ) && 'pagination.php' == $_REQUEST['page'] ) {
			wp_enqueue_style( 'pgntn_stylesheet', plugins_url( 'css/style.css', __FILE__ ), array( 'wp-color-picker' ) );
			wp_enqueue_script( 'pgntn_script', plugins_url( 'js/script.js', __FILE__ ), array( 'jquery', 'wp-color-picker' ), false, true );
			bws_enqueue_settings_scripts();
			bws_plugins_include_codemirror();
		}
	}
}

/**
 * Include necessary css- and js-files in front-end
 * @return void
 */
if ( ! function_exists( 'pgntn_wp_footer' ) ) {
	function pgntn_wp_footer() {
		wp_enqueue_style( 'pgntn_stylesheet', plugins_url( 'css/nav-style.css', __FILE__ ) );
		wp_enqueue_style( 'pgntn_styles', pgntn_print_style() );
	}
}

/**
 * Include styles for displaying block of page pagination
 * @return void
 */
if ( ! function_exists ( 'pgntn_print_style' ) ) {
	function pgntn_print_style() {
		global $pgntn_options; ?>
		<style type="text/css">
			<?php if ( 1 == $pgntn_options['add_appearance'] ) { ?>
				.pgntn-page-pagination {
					text-align: <?php echo $pgntn_options['align']; ?> !important;
				}
				.pgntn-page-pagination-block {
					width: <?php echo $pgntn_options['width']; ?>% !important;
					padding: 0 <?php echo $pgntn_options['padding_right'] != 0 ? $pgntn_options['padding_right'] . 'px' : '0'; ?> 0 <?php echo $pgntn_options['padding_left'] != 0 ? $pgntn_options['padding_left'] . 'px' : '0'; ?>;
					<?php if ( 'center' == $pgntn_options['align'] ) { ?>
							margin: 0 auto;
					<? } elseif ( 'right' == $pgntn_options['align'] ) { ?>
							float: right;
					<?php } ?>
				}
				.pgntn-page-pagination a {
					color: <?php echo $pgntn_options['text_color']; ?> !important;
					background-color: <?php echo $pgntn_options['background_color']; ?> !important;
					text-decoration: none !important;
					border: <?php echo 0 < intval( $pgntn_options['border_width'] ) ? $pgntn_options['border_width'] . "px solid " . $pgntn_options['border_color'] : 'none'; ?> !important;
					<?php if ( ! empty( $pgntn_options['border_radius'] ) ) { ?>
						-webkit-border-radius: <?php echo $pgntn_options['border_radius']; ?>px;
						-moz-border-radius: <?php echo $pgntn_options['border_radius']; ?>px;
						border-radius: <?php echo $pgntn_options['border_radius']; ?>px;
					<?php } ?>
				}
				.pgntn-page-pagination a:hover {
					color: <?php echo $pgntn_options['hover_color']; ?> !important;
				}
				.pgntn-page-pagination-intro,
				.pgntn-page-pagination .current {
					background-color: <?php echo $pgntn_options['current_background_color']; ?> !important;
					color: <?php echo $pgntn_options['current_text_color']; ?> !important;
					border: <?php echo 0 < intval( $pgntn_options['border_width'] ) ? $pgntn_options['border_width'] . "px solid " . $pgntn_options['border_color'] : 'none'; ?> !important;
					<?php if ( ! empty( $pgntn_options['border_radius'] ) ) { ?>
						-webkit-border-radius: <?php echo $pgntn_options['border_radius']; ?>px;
						-moz-border-radius: <?php echo $pgntn_options['border_radius']; ?>px;
						border-radius: <?php echo $pgntn_options['border_radius']; ?>px;
					<?php } ?>
				}
			<?php }
			$classes = '';
			if ( ! empty( $pgntn_options['display_standard_pagination'] ) ) {
				$hide_comments	= ( in_array( 'comments', $pgntn_options['display_standard_pagination'] ) ) ? true : false ;
				$hide_multipage	= ( in_array( 'multipage', $pgntn_options['display_standard_pagination'] ) ) ? true : false ;
				$classes		.= ( in_array( 'posts', $pgntn_options['display_standard_pagination'] ) ) ?
					'.archive #nav-above,
					.archive #nav-below,
					.search #nav-above,
					.search #nav-below,
					.blog #nav-below,
					.blog #nav-above,
					.navigation.paging-navigation,
					.navigation.pagination,
					.pagination.paging-pagination,
					.pagination.pagination,
					.pagination.loop-pagination,
					.bicubic-nav-link,
					#page-nav,
					.camp-paging,
					#reposter_nav-pages,
					.unity-post-pagination,
					.wordpost_content .nav_post_link' : '';
				$classes .= ( ! empty( $classes ) ) && ( $hide_multipage ) ? ',' : '';
				$classes .= $hide_multipage ?
					'.page-link,
					.post-nav-links,
					.page-links' : '';
				$classes .= ( ! empty( $classes ) ) && $hide_comments ? ',' : '';
				$classes .= $hide_comments ?
					'#comments .navigation,
					#comment-nav-above,
					#comment-nav-below,
					#nav-single,
					.navigation.comment-navigation,
					comment-pagination' : '';
			}
			if ( ( ! empty( $pgntn_options['additional_pagination_style'] ) ) && '1' == $pgntn_options['display_custom_pagination'] ) {
				$classes .= ! empty( $classes ) ? ',' : '';
				$classes .= $pgntn_options['additional_pagination_style'];
			}
			if ( ! empty( $classes ) ) {
				echo $classes . ' {
						display: none !important;
					}
					.single-gallery .pagination.gllrpr_pagination {
						display: block !important;
					}';
			} ?>
		</style>
	<?php }
}

/**
 * Display block of pagination
 * @return void
 */
if ( ! function_exists( 'pgntn_display' ) ) {
	function pgntn_display() {
		global $pgntn_options;
		if ( empty( $pgntn_options ) )
			$pgntn_options = get_option( 'pgntn_options' );
		if ( ! is_admin() ) {
			if ( 'top' == $pgntn_options['loop_position'] || 'both' == $pgntn_options['loop_position'] )
				add_filter( 'loop_start', 'pgntn_display_with_loop' );
			if ( 'bottom' == $pgntn_options['loop_position'] || 'both' == $pgntn_options['loop_position'] )
				add_filter( 'loop_end', 'pgntn_display_with_loop_bottom' );

			if ( 'function' != $pgntn_options['loop_position'] && ( in_array( 'everywhere', $pgntn_options['where_display'] ) || in_array( 'paginated_post', $pgntn_options['where_display'] ) ) )
				add_filter( 'wp_link_pages', 'pgntn_wp_link_pages', 10, 2 );
		}
	}
}

/**
 * Display pagination block in frontend above WordPress Loop
 * @param	array	$content	list with data of posts, which needs to displating in the loop
 * @return	void
 */
if ( ! function_exists( 'pgntn_display_with_loop' ) ) {
	function pgntn_display_with_loop( $content ) {
		if ( is_feed() )
			return $content;
		global $wp_query, $pgntn_display_top;
		if ( is_main_query() && $content === $wp_query && ! $pgntn_display_top ) { /* make sure that we display block of pagination only with main loop */
			$pgntn_display_top = true;
			pgntn_nav_display( 'posts', 'top' );
		}
	}
}

/**
 * Display pagination block in frontend below WordPress Loop
 * @param	array	$content	list with data of posts, which needs to displating in the loop
 * @return	void
 */
if ( ! function_exists( 'pgntn_display_with_loop_bottom' ) ) {
	function pgntn_display_with_loop_bottom( $content ) {
		if ( is_feed() )
			return $content;
		global $wp_query, $pgntn_display_bottom;
		if ( is_main_query() && $content === $wp_query && ! $pgntn_display_bottom ) { /* make sure that we display block of pagination only with main loop */
			$pgntn_display_bottom = true;
			pgntn_nav_display( 'posts', 'bottom' );
		}
	}
}

/**
 * Display pagination block on paginated posts or pages
 * @param	string	$output	HTML output of paginated posts' page links.
 * @param	array	$args	An array of arguments.
 * @return	string	$output
 */
if ( ! function_exists( 'pgntn_wp_link_pages' ) ) {
	function pgntn_wp_link_pages( $output, $args ) {
		ob_start();
		pgntn_nav_display( 'multipage', 'bottom' );
		$pagination_output = ob_get_clean();
		return $output . $pagination_output;
	}
}

/**
 * Display pagination block in the function call
 * @param	string	$what	type of pagination ( posts, multipage, comments, custom )
 * @return void
 */
if ( ! function_exists( 'pgntn_display_pagination' ) ) {
	function pgntn_display_pagination( $what = 'posts', $custom_query = '' ) {
		pgntn_nav_display( $what, false, $custom_query );
	}
}

/**
 * Display block of pagination with the Wordpress Loop
 * @param	string	$what	type of pagination ( posts, multipage, comments )
 * @return	void
 */
if ( ! function_exists( 'pgntn_nav_display' ) ) {
	function pgntn_nav_display( $what, $position = false, $custom_query = '' ) {
		global $pgntn_options;
		if ( empty( $pgntn_options ) )
			$pgntn_options = get_option( 'pgntn_options' );
		$display_info = 1 == $pgntn_options['display_info'] ? true : false;
		$nav_settings = array(
			'show_all'	=> '1' == $pgntn_options['show_all'] ? true : false,
			'mid_size'	=> $pgntn_options['display_count_page'],
			'prev_next'	=> '1' == $pgntn_options['display_next_prev'] ? true : false,
			'prev_text'	=> $pgntn_options['prev_text'],
			'next_text'	=> $pgntn_options['next_text'],
		);
		$show_block = false;
		switch ( $what ) {
			case 'posts':
				global $wp_query;
				if (
						( in_array( 'everywhere', $pgntn_options['where_display'] ) ||
							( in_array( 'home', $pgntn_options['where_display'] ) && is_front_page() ) ||
							( in_array( 'blog', $pgntn_options['where_display'] ) && pgntn_is_blog() ) ||
							( in_array( 'archives', $pgntn_options['where_display'] ) && is_archive() ) ||
							( in_array( 'search', $pgntn_options['where_display'] ) && is_search() )
						) &&
						! empty( $wp_query->max_num_pages )
				)
					$show_block = true;

				if ( $show_block ) {
					$nav_settings['base']		= str_replace( 999999999, '%#%', esc_url( get_pagenum_link( 999999999 ) ) );
					$nav_settings['format']		= '?paged=%#%';
					$nav_settings['current']	= max( 1, get_query_var( 'paged' ) );
					$nav_settings['total']		= $wp_query->max_num_pages;
					if ( 1 < intval( $nav_settings['total'] ) ) { ?>
						<div class='pgntn-page-pagination<?php if ( $position ) echo ' pgntn-' . $position; ?>'>
							<div class="pgntn-page-pagination-block">
								<?php if ( $display_info ) {
									/* display block "Page __ of __" */ ?>
									<div class='pgntn-page-pagination-intro'><?php echo __( 'Page', 'pagination' ) . ' ' . $nav_settings['current'] . ' ' . __( 'of', 'pagination' ) . ' ' . $nav_settings['total']; ?></div>
								<?php }
								echo pgntn_nofollow_link( paginate_links( $nav_settings ) ); ?>
							</div>
							<div class="clear"></div>
						</div>
					<?php }
				}
				break;
			case 'custom':
				if ( is_object( $custom_query ) && isset( $custom_query->max_num_pages ) ) {
					$nav_settings['base']		= str_replace( 999999999, '%#%', esc_url( get_pagenum_link( 999999999 ) ) );
					$nav_settings['format']		= '?paged=%#%';
					$nav_settings['current']	= max( 1, get_query_var( 'paged' ) );
					$nav_settings['total']		= $custom_query->max_num_pages;
					if ( 1 < intval( $nav_settings['total'] ) ) { ?>
						<div class='pgntn-page-pagination<?php if ( $position ) echo ' pgntn-' . $position; ?>'>
							<div class="pgntn-page-pagination-block">
								<?php if ( $display_info ) {
									/* display block "Page __ of __" */ ?>
									<div class='pgntn-page-pagination-intro'><?php echo __( 'Page', 'pagination' ) . ' ' . $nav_settings['current'] . ' ' . __( 'of', 'pagination' ) . ' ' . $nav_settings['total']; ?></div>
								<?php }
								echo pgntn_nofollow_link( paginate_links( $nav_settings ) ); ?>
							</div>
							<div class="clear"></div>
						</div>
					<?php }
				}
				break;
			case 'multipage':	
				global $page, $numpages, $pgntn_custom_num_pages;
				$classes = get_body_class();

				/* Compatibility with Gallery plugin */
				if ( is_object( $custom_query ) && isset( $custom_query->max_num_pages ) && isset( $custom_query->post_id ) && isset( $custom_query->case ) && 'bws-gallery' == $custom_query->case ) {
					$pgntn_query['type'] = 'gallery';
					$pgntn_query['post_id'] = $custom_query->post_id;

					if ( isset( $custom_query->gllr_id ) ) {
						/* For Gallery shortocode */
						$pgntn_query['gllr_id'] = $custom_query->gllr_id;
					}
					$pgntn_custom_num_pages = $numpages = $custom_query->max_num_pages;
					$current_page = isset( $custom_query->current_page ) ? $custom_query->current_page : 1;
				}
				if ( $numpages > 1 && is_array( $classes ) && ! in_array( 'home', $classes ) && is_singular() ) {
					$current_page = isset( $custom_query->current_page ) ? $custom_query->current_page : intval( $page );
					if ( empty( $current_page ) )
						$current_page = 1;

					$nav_settings['current']	= $current_page;
					$nav_settings['total']		= $numpages;

					if ( 1 < intval( $nav_settings['total'] ) ) { ?>
						<div class="pgntn-page-pagination pgntn-multipage">
							<div class="pgntn-page-pagination-block">
								<?php if ( $display_info ) {
									/* display block "Page __ of __" */ ?>
									<span class='pgntn-page-pagination-intro'><?php echo __( 'Pages', 'pagination' ) . ' ( ' . $nav_settings['current'] . ' ' . __( 'of', 'pagination' ) . ' ' . $nav_settings['total'] . ' ): '; ?></span>
								<?php }
								/* display "previous" link */
								if ( 1 != $nav_settings['current'] && '1' == $pgntn_options ['display_next_prev'] ) {
									$prev_link = $nav_settings['current'] - 1;
									$pgntn_query['i'] = $prev_link;
									echo pgntn_nofollow_link( pgntn_link_page( $pgntn_query ) . $nav_settings['prev_text'] . '</a>' );
								}

								if ( $nav_settings['show_all'] ) {
									for ( $i = 1; $i <= $nav_settings['total'] ; $i++ ) {
										if ( $i == $nav_settings['current'] ) { ?>
											<span class="page-numbers current"><?php echo $nav_settings['current']; ?></span>
										<?php } else {
											$pgntn_query['i'] = $i;
											echo pgntn_nofollow_link( pgntn_link_page( $pgntn_query ) . $i . '</a>' );
										}
									}
								} else {
									$start_number = $nav_settings['current'] - $nav_settings['mid_size'];
									if ( $start_number < 1 )
										$start_number = 1;
									$end_number = $nav_settings['current'] + $nav_settings['mid_size'];
									if ( $end_number > $nav_settings['total'] )
										$end_number = $nav_settings['total'];

									/* display first link */
									if ( $start_number >= 2 ) {
										$pgntn_query['i'] = 1;
										echo pgntn_nofollow_link( pgntn_link_page( $pgntn_query ) . 1 . '</a>' );
									}
									/* display ... */
									if ( $start_number >= 3 ) { ?>
										<span class="pgntn-elipses">...</span>
									<?php }
									/* display precurrent links */
									for ( $i = $start_number; $i < $nav_settings['current'] ; $i++ ) {
										$pgntn_query['i'] = $i;
										echo pgntn_nofollow_link( pgntn_link_page( $pgntn_query ) . $i . '</a>' );
									}
									/* display current link */ ?>
									<span class="page-numbers current"><?php echo $nav_settings['current']; ?></span>
									<?php /* display aftercurrent links */
									for ( $i = $nav_settings['current'] + 1; $i <= $end_number; $i++ ) {
										$pgntn_query['i'] = $i;
										echo pgntn_nofollow_link( pgntn_link_page( $pgntn_query ) . $i . '</a>' );
									}
									/* display ... */
									if ( $end_number < $nav_settings['total'] - 1 ) { ?>
										<span class="pgntn-elipses">...</span>
									<?php }
									/* display last link */
									if ( $end_number < $nav_settings['total'] ) {
										$pgntn_query['i'] = $nav_settings['total'];
										echo pgntn_nofollow_link( pgntn_link_page( $pgntn_query ) . $nav_settings['total'] . '</a>' );
									}
								}

							/* display "next" link */
							if ( $nav_settings['current'] < $nav_settings['total'] && '1' == $pgntn_options ['display_next_prev'] ) {
								$next_link = $nav_settings['current'] + 1;
								$pgntn_query['i'] = $next_link;
								echo pgntn_nofollow_link( pgntn_link_page( $pgntn_query ) . $nav_settings['next_text'] . '</a>' );
							} ?>
						</div><!-- .pgntn-page-pagination-block -->
						<div class="clear"></div>
					</div><!-- .pgntn-page-pagination -->
				<?php } 	
				}			
				break;
			case 'comments':
				global $wp_rewrite;
				$page_comments = get_comment_pages_count();
				if ( ( is_singular() || get_option( 'page_comments' ) ) && ! empty( $page_comments ) )
					$show_block = true;
				if ( $show_block ) {
					$current_page = get_query_var( 'cpage' );
					if ( ! $current_page )
						$current_page = 1;
					$nav_settings['base']		= $wp_rewrite->using_permalinks() ? user_trailingslashit( trailingslashit( get_permalink() ) . 'comment-page-%#%', 'commentpaged' ) : add_query_arg( 'cpage', '%#%' );
					$nav_settings['format']		= '';
					$nav_settings['current']	= $current_page;
					$nav_settings['total']		= $page_comments;
					$nav_settings['add_fragment'] = '#comments';
					if ( 1 < intval( $nav_settings['total'] ) ) { ?>
						<div class='pgntn-page-pagination pgntn-comments'>
							<div class="pgntn-page-pagination-block">
								<?php if ( $display_info ) {
									/* display block "Page __ of __" */ ?>
									<div class='pgntn-page-pagination-intro'><?php echo __( 'Comments Page', 'pagination' ) . ' ' . $nav_settings['current'] . ' ' . __( 'of', 'pagination' ) . ' ' . $nav_settings['total']; ?></div>
								<?php }
								echo pgntn_nofollow_link( paginate_links( $nav_settings ) ); ?>
							</div>
							<div class="clear"></div>
						</div><!-- .pgntn-page-pagination .pgntn-comments -->
					<?php }
				}
				break;

			default:
				break;
		}
	}
}

if ( ! function_exists( 'pgntn_is_blog' ) ) {
	function pgntn_is_blog() {
		if ( is_front_page() && is_home() ) {
			/* Default homepage */
			return false;
		} elseif ( is_front_page() ) {
			/* static homepage */
			return false;
		} elseif ( is_home() ) {
			/* blog page */
			return true;
		} else {
			return false;
		}
	}
}
/**
 * Add link to plugin`s settings page on page with list of all installed plugins ( on table cell with plugin title )
 * @param	$links	array	links bellow plugin title
 * @param	$file	array	relative path to the plugin`s main file
 * @return	$links	array	links bellow plugin title
 */
if ( ! function_exists( 'pgntn_plugin_action_links' ) ) {
	function pgntn_plugin_action_links( $links, $file ) {
		if ( ! is_network_admin() ) {
			/* Static so we don't call plugin_basename on every plugin row. */
			static $this_plugin;
			if ( ! $this_plugin ) $this_plugin = plugin_basename( __FILE__ );

			if ( $file == $this_plugin ) {
				$settings_link = '<a href="admin.php?page=pagination.php">' . __( 'Settings', 'pagination' ) . '</a>';
				array_unshift( $links, $settings_link );
			}
		}
		return $links;
	}
}
/**
 * Add necessary links on page with list of all installed plugins ( on table cell with plugin description )
 * @param	$links	array	links bellow plugins description
 * @param	$file	array	relative path to the plugin`s main file
 * @return	$links	array	links bellow plugins description
 */
if ( ! function_exists( 'pgntn_register_plugin_links' ) ) {
	function pgntn_register_plugin_links( $links, $file ) {
		$base = plugin_basename( __FILE__ );
		if ( $file == $base ) {
			if ( ! is_network_admin() )
				$links[] = '<a href="admin.php?page=pagination.php">' . __( 'Settings', 'pagination' ) . '</a>';
			$links[] = '<a href="https://support.bestwebsoft.com/hc/en-us/sections/200995139" target="_blank">' . __( 'FAQ', 'pagination' ) . '</a>';
			$links[] = '<a href="https://support.bestwebsoft.com">' . __( 'Support', 'pagination' ) . '</a>';
		}
		return $links;
	}
}

/* add help tab */
if ( ! function_exists( 'pgntn_add_tabs' ) ) {
	function pgntn_add_tabs() {
		$screen = get_current_screen();
		$args = array(
			'id'			=> 'pgntn',
			'section'		=> '200995139'
		);
		bws_help_tab( $screen, $args );
	}
}

/* add admin notices */
if ( ! function_exists ( 'pgntn_admin_notices' ) ) {
	function pgntn_admin_notices() {
		global $hook_suffix, $pgntn_plugin_info;
		if ( 'plugins.php' == $hook_suffix && ! is_network_admin() ) {
			bws_plugin_banner_to_settings( $pgntn_plugin_info, 'pgntn_options', 'pagination', 'admin.php?page=pagination.php' );
		}
		if ( isset( $_REQUEST['page'] ) && 'pagination.php' == $_REQUEST['page'] ) {
			bws_plugin_suggest_feature_banner( $pgntn_plugin_info, 'pgntn_options', 'pagination' );
		}
	}
}

/**
 * Function for delete plugin options
 * @return void
 */
if ( ! function_exists ( 'pgntn_delete_options' ) ) {
	function pgntn_delete_options() {
		global $wpdb;
		/* Delete options */
		$all_plugins = get_plugins();

		if ( ! array_key_exists( 'pagination-pro/pagination-pro.php', $all_plugins ) ) {
			if ( function_exists( 'is_multisite' ) && is_multisite() ) {
				$old_blog = $wpdb->blogid;
				/* Get all blog ids */
				$blogids = $wpdb->get_col( "SELECT `blog_id` FROM $wpdb->blogs" );
				foreach ( $blogids as $blog_id ) {
					switch_to_blog( $blog_id );
					delete_option( 'pgntn_options' );
				}
				switch_to_blog( $old_blog );
			} else {
				delete_option( 'pgntn_options' );
			}
		}
		require_once( dirname( __FILE__ ) . '/bws_menu/bws_include.php' );
		bws_include_init( plugin_basename( __FILE__ ) );
		bws_delete_plugin( plugin_basename( __FILE__ ) );
	}
}

if ( ! function_exists ( 'pgntn_nofollow_link' ) ) {
	function pgntn_nofollow_link( $link ) {
		global $pgntn_options;
		if ( 1 == $pgntn_options["nofollow_link"] ) {
			$link = str_replace( '<a ', '<a rel="nofollow" ', $link );
		}
		return $link;
	}
}
if ( ! function_exists ( 'pgntn_link_page' ) ) {
	function pgntn_link_page( $query ) {
        if ( isset( $query['type'] ) && $query['type'] == 'gallery' ) {
			$i = $query['i'];
			$permalink_post = get_permalink( intval( $query['post_id'] ) );
			$post = get_post( intval( $query['post_id'] ) );
			$query_args = array();

			if ( $i == 1 ) {
				$url = $permalink_post;
			} else {
				 if ( ! get_option( 'permalink_structure' ) || in_array( $post->post_status, array( 'draft', 'pending' ), true ) ) {
					$url = add_query_arg( 'gllr_paged', $i, $permalink_post );
				} elseif ( 'page' == get_option( 'show_on_front' ) && get_option( 'page_on_front' ) == $post->ID ) {
					$url = trailingslashit( $permalink_post ) . user_trailingslashit( "$wp_rewrite->pagination_base/" . $i, 'single_paged' );
				} else {
					$url = trailingslashit( $permalink_post ) . 'page/' . user_trailingslashit( $i, 'single_paged' );
				}
			}

			if ( is_preview() ) {
				if ( ( 'draft' != $post->post_status ) && isset( $_GET['preview_id'], $_GET['preview_nonce'] ) ) {
					$query_args['preview_id']    = wp_unslash( $_GET['preview_id'] );
					$query_args['preview_nonce'] = wp_unslash( $_GET['preview_nonce'] );
				}
		 
				$url = get_preview_post_link( $post, $query_args, $url );
			}
			if ( isset( $query['gllr_id'] ) ) {
				$url = add_query_arg( 'gllr_id', $query['gllr_id'], $url );
			}

			return '<a href="' . esc_url( $url ) . '" class="post-page-numbers">';	
		} 	
	 	return _wp_link_page( $query['i'] );
	}
}
/**
 * Add all hooks
 */
register_activation_hook( __FILE__, 'pgntn_plugin_activate' );

add_action( 'admin_menu', 'pgntn_add_admin_menu' );
add_action( 'init', 'pgntn_init' );
add_action( 'admin_init', 'pgntn_admin_init' );
add_action( 'plugins_loaded', 'pgntn_plugins_loaded' );
/* Additional links on the plugin page */
add_filter( 'plugin_action_links', 'pgntn_plugin_action_links', 10, 2 );
add_filter( 'plugin_row_meta', 'pgntn_register_plugin_links', 10, 2 );
/* Include necessary css- and js-files */
add_action( 'admin_enqueue_scripts', 'pgntn_admin_head' );
add_action( 'wp_footer', 'pgntn_wp_footer' );
/* add admin notices */
add_action( 'admin_notices', 'pgntn_admin_notices' );