Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/classes/utilities/admin/wpml-admin-pagination.php
2023-09-12 21:41:04 +02:00

153 lines
2.9 KiB
PHP

<?php
/**
* Class WPML_Admin_Pagination
*
* @author OnTheGoSystems
*/
class WPML_Admin_Pagination {
/** @var int $items_per_page */
private $items_per_page;
/** @var int $total_items */
private $total_items;
/** @var int $current_page */
private $current_page;
/** @var string $current_url */
private $current_url;
/** @var string */
private $page_param_name = 'paged';
/**
* @param string $page_param_name
*/
public function set_page_param_name( $page_param_name ) {
$this->page_param_name = $page_param_name;
}
/**
* @return string
*/
public function get_page_param_name() {
return $this->page_param_name;
}
/**
* @param int $items_per_page
*/
public function set_items_per_page( $items_per_page ) {
$this->items_per_page = (int) $items_per_page;
}
/**
* @return int
*/
public function get_items_per_page() {
return $this->items_per_page;
}
/**
* @param int $total_items
*/
public function set_total_items( $total_items ) {
$this->total_items = (int) $total_items;
}
/**
* @return int
*/
public function get_total_items() {
return $this->total_items;
}
/**
* @return int
*/
public function get_total_pages() {
return ceil( $this->get_total_items() / $this->get_items_per_page() );
}
/**
* @param int $page
*/
public function set_current_page( $page ) {
$this->current_page = (int) $page;
}
/**
* @return int
*/
public function get_current_page() {
return $this->current_page;
}
/**
* @return null|string
*/
public function get_first_page_url() {
$url = null;
if ( 2 < $this->get_current_page() ) {
$url = remove_query_arg( $this->page_param_name, $this->get_current_url() );
}
return $url;
}
/**
* @return null|string
*/
public function get_previous_page_url() {
$url = null;
if ( 1 < $this->get_current_page() ) {
$url = add_query_arg( $this->page_param_name, $this->get_current_page() - 1, $this->get_current_url() );
}
return $url;
}
/**
* @return null|string
*/
public function get_next_page_url() {
$url = null;
if ( $this->get_current_page() < $this->get_total_pages() ) {
$url = add_query_arg( $this->page_param_name, $this->get_current_page() + 1, $this->get_current_url() );
}
return $url;
}
/**
* @return null|string
*/
public function get_last_page_url() {
$url = null;
if ( $this->get_current_page() < $this->get_total_pages() - 1 ) {
$url = add_query_arg( $this->page_param_name, $this->get_total_pages(), $this->get_current_url() );
}
return $url;
}
/**
* @return string
*/
private function get_current_url() {
if ( ! $this->current_url ) {
$removable_query_args = wp_removable_query_args();
$this->current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
$this->current_url = remove_query_arg( $removable_query_args, $this->current_url );
}
return $this->current_url;
}
}