Sindbad~EG File Manager
<?php
/**
* Pagination helpers
*
* @copyright 2019-present Creative Themes
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
* @package Blocksy
*/
/**
* Dispaly post pagination.
*
* @param array $args Pagination config.
*/
if (! function_exists('blocksy_display_posts_pagination')) {
function blocksy_display_posts_pagination($args = []) {
global $wp_query;
$allowed_prefixes_args = [
'allowed_prefixes' => [
'blog',
'woo_categories'
],
'default_prefix' => 'blog'
];
$args = wp_parse_args(
$args,
[
'query' => $wp_query,
'prefix' => blocksy_manager()->screen->get_prefix(
$allowed_prefixes_args
),
'has_pagination' => '__DEFAULT__',
'pagination_type' => '__DEFAULT__',
'last_page_text' => __('No more posts to load', 'blocksy'),
'total_pages' => null,
'current_page' => null,
'format' => null,
'base' => null,
'query_var' => ''
]
);
$args['prefix'] = blocksy_manager()->screen->process_allowed_prefixes(
$args['prefix'],
$allowed_prefixes_args
);
if ($args['has_pagination'] === '__DEFAULT__') {
$args['has_pagination'] = blocksy_get_theme_mod(
$args['prefix'] . '_has_pagination',
'yes'
) === 'yes';
}
if ($args['pagination_type'] === '__DEFAULT__') {
$args['pagination_type'] = blocksy_get_theme_mod(
$args['prefix'] . '_pagination_global_type',
'simple'
);
}
if ($args['prefix'] === 'woo_categories') {
$args['last_page_text'] = __('No more products to load', 'blocksy');
}
if (! $args['has_pagination']) {
return '';
}
if (! $args['total_pages'] || ! $args['current_page']) {
$args['current_page'] = $args['query']->get('paged');
$args['total_pages'] = $args['query']->max_num_pages;
if (! $args['current_page']) {
$args['current_page'] = 1;
}
}
if ($args['total_pages'] <= 1 ) {
return '';
}
$button_output = '';
if (
$args['pagination_type'] === 'load_more'
&&
intval($args['current_page']) !== intval($args['total_pages'])
) {
$label_button = blocksy_get_theme_mod(
$args['prefix'] . '_load_more_label',
__('Load More', 'blocksy')
);
$button_output = '<button class="wp-element-button ct-load-more">' . $label_button . '</button>';
}
if (
$args['pagination_type'] !== 'simple'
&&
$args['pagination_type'] !== 'next_prev'
) {
if (intval($args['current_page']) === intval($args['total_pages'])) {
return '';
}
$button_output = '<div class="ct-load-more-helper">' . $button_output;
$button_output .= '<span class="ct-ajax-loader">
<svg viewBox="0 0 24 24">
<circle cx="12" cy="12" r="10" opacity="0.2" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="2"/>
<path d="m12,2c5.52,0,10,4.48,10,10" fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2">
<animateTransform
attributeName="transform"
attributeType="XML"
type="rotate"
dur="0.6s"
from="0 12 12"
to="360 12 12"
repeatCount="indefinite"
/>
</path>
</svg>
</span>';
$button_output .= '<div class="ct-last-page-text">' . $args['last_page_text'] . '</div>';
$button_output .= '</div>';
}
$pagination_class = 'ct-pagination';
$divider_output = '';
$divider = blocksy_get_theme_mod(
$args['prefix'] . '_paginationDivider',
[
'width' => 1,
'style' => 'none',
'color' => [
'color' => 'rgba(224, 229, 235, 0.5)',
]
]
);
$numbers_visibility = blocksy_get_theme_mod(
$args['prefix'] . '_numbers_visibility',
[
'desktop' => true,
'tablet' => true,
'mobile' => false
]
);
$arrows_visibility = blocksy_get_theme_mod(
$args['prefix'] . '_arrows_visibility',
[
'desktop' => true,
'tablet' => true,
'mobile' => true
]
);
if (
$divider['style'] !== 'none'
&&
$args['pagination_type'] !== 'infinite_scroll'
) {
$divider_output = 'data-divider';
}
$prefix = blocksy_manager()->screen->get_prefix();
$deep_link_args = [];
if (! is_singular()) {
$deep_link_args['suffix'] = $prefix . '_has_pagination';
}
$template = '
<nav class="' . $pagination_class . '" data-pagination="' . $args['pagination_type'] . '" ' . $divider_output . ' ' . blocksy_generic_get_deep_link($deep_link_args) . '>
%1$s
%2$s
</nav>';
$paginate_links_args = [
'mid_size' => 3,
'end_size' => 0,
'type' => 'array',
'total' => $args['total_pages'],
'current' => $args['current_page'],
'prev_text' => '<svg width="9px" height="9px" viewBox="0 0 15 15" fill="currentColor"><path d="M10.9,15c-0.2,0-0.4-0.1-0.6-0.2L3.6,8c-0.3-0.3-0.3-0.8,0-1.1l6.6-6.6c0.3-0.3,0.8-0.3,1.1,0c0.3,0.3,0.3,0.8,0,1.1L5.2,7.4l6.2,6.2c0.3,0.3,0.3,0.8,0,1.1C11.3,14.9,11.1,15,10.9,15z"/></svg>' . __('Prev', 'blocksy'),
'next_text' => __('Next', 'blocksy') . ' <svg width="9px" height="9px" viewBox="0 0 15 15" fill="currentColor"><path d="M4.1,15c0.2,0,0.4-0.1,0.6-0.2L11.4,8c0.3-0.3,0.3-0.8,0-1.1L4.8,0.2C4.5-0.1,4-0.1,3.7,0.2C3.4,0.5,3.4,1,3.7,1.3l6.1,6.1l-6.2,6.2c-0.3,0.3-0.3,0.8,0,1.1C3.7,14.9,3.9,15,4.1,15z"/></svg>',
];
if ($args['format']) {
$paginate_links_args['format'] = $args['format'];
}
if ($args['base']) {
$paginate_links_args['base'] = $args['base'];
}
if ($args['query_var']) {
$paginate_links_args['format'] = '?' . $args['query_var'] . '=%#%';
if (isset($_GET[$args['query_var']])) {
$paginate_links_args['current'] = intval(sanitize_text_field(
$_GET[$args['query_var']]
));
}
}
$links = paginate_links($paginate_links_args);
$arrow_links = ['', ''];
$proper_links = [];
foreach ($links as $link) {
preg_match('/class="[^"]+"/', $link, $matches);
if (count($matches) === 0) {
continue;
}
if (strpos($matches[0], 'next') !== false) {
$link = str_replace(
'page-numbers"',
'page-numbers" rel="next"',
$link
);
}
if (strpos($matches[0], 'prev') !== false) {
$link = str_replace(
'page-numbers"',
'page-numbers" rel="prev"',
$link
);
}
if (
$args['pagination_type'] === 'next_prev'
&&
strpos($matches[0], 'next') === false
&&
strpos($matches[0], 'prev') === false
) {
continue;
}
if (
$args['pagination_type'] === 'simple'
&&
(
strpos($matches[0], 'next') !== false
||
strpos($matches[0], 'prev') !== false
)
) {
$link = str_replace(
'page-numbers',
trim('page-numbers ' . blocksy_visibility_classes(
$arrows_visibility
)),
$link
);
}
if (
strpos($matches[0], 'next') !== false
||
strpos($matches[0], 'prev') !== false
) {
$arrow_links[strpos($matches[0], 'next') !== false ? 1 : 0] = $link;
} else {
$proper_links[] = $link;
}
}
$proper_links = join("\n", $proper_links);
if ($args['pagination_type'] === 'simple') {
$proper_links = '<div class="' . blocksy_visibility_classes(
$numbers_visibility
) . '">' . $proper_links . '</div>';
}
return blocksy_safe_sprintf(
$template,
$arrow_links[0] . $proper_links . $arrow_links[1],
$button_output
);
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists