class-wpml-tm-dashboard-pagination.php
2.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
/**
* Class WPML_TM_Dashboard_Pagination
*/
class WPML_TM_Dashboard_Pagination {
private $post_limit_number = 0;
public function add_hooks() {
add_action( 'wpml_tm_dashboard_pagination', array( $this, 'add_tm_dashboard_pagination' ), 10, 2 );
add_filter( 'wpml_tm_dashboard_post_query_args', array( $this, 'filter_dashboard_post_query_args_for_pagination' ), 10, 2 );
}
public function filter_dashboard_post_query_args_for_pagination( $query_args, $args ) {
if ( ! empty( $args['type'] ) ) {
unset( $query_args['no_found_rows'] );
}
}
/**
* Sets value for posts limit query to be used in post_limits filter
*
* @param int $value
*
* @see https://onthegosystems.myjetbrains.com/youtrack/issue/wpmldev-616
*/
public function setPostsLimitValue( $value ) {
$this->post_limit_number = ( is_int( $value ) && $value > 0 ) ? $value : $this->post_limit_number;
}
/**
* Resets value of posts limit variable.
*
* @see https://onthegosystems.myjetbrains.com/youtrack/issue/wpmldev-616
*/
public function resetPostsLimitValue() {
$this->post_limit_number = 0;
}
/**
* Custom callback that's hooked into 'post_limits' filter to set custom limit of retrieved posts.
*
* @see https://onthegosystems.myjetbrains.com/youtrack/issue/wpmldev-616
*
* @return string
*/
public function getPostsLimitQueryValue() {
return ( 0 === $this->post_limit_number ) ? '' : 'LIMIT ' . $this->post_limit_number;
}
/**
* @param integer $posts_per_page
* @param integer $found_documents
*/
public function add_tm_dashboard_pagination( $posts_per_page, $found_documents ) {
$found_documents = $found_documents;
$total_pages = ceil( $found_documents / $posts_per_page );
$paged = array_key_exists( 'paged', $_GET ) ? filter_var( $_GET['paged'], FILTER_SANITIZE_NUMBER_INT ) : false;
$paged = $paged ? $paged : 1;
$page_links = paginate_links(
array(
'base' => add_query_arg( 'paged', '%#%' ),
'format' => '',
'prev_text' => '«',
'next_text' => '»',
'total' => (int) $total_pages,
'current' => (int) $paged,
)
);
if ( $page_links ) {
?>
<div class="tablenav-pages">
<?php
$page_from = number_format_i18n( ( $paged - 1 ) * $posts_per_page + 1 );
$page_to = number_format_i18n( min( $paged * $posts_per_page, $found_documents ) );
$page_total = number_format_i18n( $found_documents );
?>
<span class="displaying-num">
<?php echo sprintf( esc_html__( 'Displaying %1$s–%2$s of %3$s', 'wpml-translation-management' ), $page_from, $page_to, $page_total ); ?>
</span>
<?php echo $page_links; ?>
</div>
<?php
}
}
}