2021-09-07 12:33:18 +00:00
|
|
|
<?php
|
2023-10-15 18:49:39 +00:00
|
|
|
|
2023-08-24 11:55:44 +00:00
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
namespace Dotclear\Plugin\cinecturlink2;
|
|
|
|
|
2023-10-15 18:49:39 +00:00
|
|
|
use Dotclear\App;
|
2023-08-24 11:55:44 +00:00
|
|
|
|
2023-10-15 18:49:39 +00:00
|
|
|
/**
|
|
|
|
* @brief cinecturlink2 frontend contxt class.
|
|
|
|
* @ingroup cinecturlink2
|
|
|
|
*
|
|
|
|
* @author Jean-Christian Denis (author)
|
|
|
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
|
|
*/
|
2023-08-24 11:55:44 +00:00
|
|
|
class FrontendContext
|
2021-09-07 12:33:18 +00:00
|
|
|
{
|
2023-10-23 20:54:27 +00:00
|
|
|
public static function PaginationNbPages(): int
|
2021-09-07 13:21:38 +00:00
|
|
|
{
|
2023-10-15 18:49:39 +00:00
|
|
|
if (App::frontend()->context()->c2_pagination === null) {
|
2023-10-23 20:54:27 +00:00
|
|
|
return 0;
|
2021-09-07 13:21:38 +00:00
|
|
|
}
|
2023-10-15 18:49:39 +00:00
|
|
|
$nb_posts = App::frontend()->context()->c2_pagination->f(0);
|
|
|
|
$nb_per_page = App::frontend()->context()->c2_params['limit'][1];
|
2021-11-02 22:55:41 +00:00
|
|
|
$nb_pages = ceil($nb_posts / $nb_per_page);
|
2021-09-07 12:33:18 +00:00
|
|
|
|
2023-10-23 20:54:27 +00:00
|
|
|
return (int) $nb_pages;
|
2021-09-07 13:21:38 +00:00
|
|
|
}
|
2021-09-07 12:33:18 +00:00
|
|
|
|
2023-10-23 20:54:27 +00:00
|
|
|
public static function PaginationPosition(string|int $offset = 0): int
|
2021-09-07 13:21:38 +00:00
|
|
|
{
|
|
|
|
if (isset($GLOBALS['c2_page_number'])) {
|
|
|
|
$p = $GLOBALS['c2_page_number'];
|
2021-09-07 23:47:45 +00:00
|
|
|
} else {
|
2021-09-07 13:21:38 +00:00
|
|
|
$p = 1;
|
|
|
|
}
|
2023-10-23 20:54:27 +00:00
|
|
|
$p = (int) $p + (int) $offset;
|
2021-09-07 13:21:38 +00:00
|
|
|
$n = self::PaginationNbPages();
|
|
|
|
if (!$n) {
|
|
|
|
return $p;
|
|
|
|
}
|
2021-11-02 22:55:41 +00:00
|
|
|
|
2021-09-07 13:21:38 +00:00
|
|
|
return $p > $n || $p <= 0 ? 1 : $p;
|
|
|
|
}
|
2021-09-07 12:33:18 +00:00
|
|
|
|
2023-10-23 20:54:27 +00:00
|
|
|
public static function PaginationStart(): bool
|
2021-09-07 13:21:38 +00:00
|
|
|
{
|
2023-10-23 20:54:27 +00:00
|
|
|
return isset($GLOBALS['c2_page_number']) ? self::PaginationPosition() == 1 : true;
|
2021-09-07 13:21:38 +00:00
|
|
|
}
|
2021-09-07 12:33:18 +00:00
|
|
|
|
2023-10-23 20:54:27 +00:00
|
|
|
public static function PaginationEnd(): bool
|
2021-11-02 22:55:41 +00:00
|
|
|
{
|
2023-10-23 20:54:27 +00:00
|
|
|
return isset($GLOBALS['c2_page_number']) ? self::PaginationPosition() == self::PaginationNbPages() : false;
|
2021-09-07 13:21:38 +00:00
|
|
|
}
|
2021-09-07 12:33:18 +00:00
|
|
|
|
2023-10-23 20:54:27 +00:00
|
|
|
public static function PaginationURL(int|string $offset = 0): string
|
2021-09-07 13:21:38 +00:00
|
|
|
{
|
|
|
|
$args = $_SERVER['URL_REQUEST_PART'];
|
2021-09-07 12:33:18 +00:00
|
|
|
|
2021-09-07 13:21:38 +00:00
|
|
|
$n = self::PaginationPosition($offset);
|
2021-09-07 12:33:18 +00:00
|
|
|
|
2021-09-07 13:21:38 +00:00
|
|
|
$args = preg_replace('#(^|/)c2page/([0-9]+)$#', '', $args);
|
2021-09-07 12:33:18 +00:00
|
|
|
|
2023-10-15 18:49:39 +00:00
|
|
|
$url = App::blog()->url() . $args;
|
2021-09-07 12:33:18 +00:00
|
|
|
|
2021-09-07 13:21:38 +00:00
|
|
|
if ($n > 1) {
|
2021-09-07 23:47:45 +00:00
|
|
|
$url = preg_replace('#/$#', '', $url);
|
|
|
|
$url .= '/c2page/' . $n;
|
2021-09-07 13:21:38 +00:00
|
|
|
}
|
|
|
|
# If search param
|
|
|
|
if (!empty($_GET['q'])) {
|
2021-11-02 22:55:41 +00:00
|
|
|
$s = strpos($url, '?') !== false ? '&' : '?';
|
2021-09-07 23:47:45 +00:00
|
|
|
$url .= $s . 'q=' . rawurlencode($_GET['q']);
|
2021-09-07 13:21:38 +00:00
|
|
|
}
|
2021-11-02 22:55:41 +00:00
|
|
|
|
2021-09-07 13:21:38 +00:00
|
|
|
return $url;
|
|
|
|
}
|
2021-09-07 12:33:18 +00:00
|
|
|
|
2023-10-23 20:54:27 +00:00
|
|
|
public static function categoryCurrent(): bool
|
2021-09-07 13:21:38 +00:00
|
|
|
{
|
2023-10-15 18:49:39 +00:00
|
|
|
if (!isset(App::frontend()->context()->c2_page_params['cat_id'])
|
|
|
|
&& !isset(App::frontend()->context()->c2_page_params['cat_title'])
|
2021-09-07 23:47:45 +00:00
|
|
|
) {
|
2021-09-07 13:21:38 +00:00
|
|
|
return false;
|
|
|
|
}
|
2023-10-15 18:49:39 +00:00
|
|
|
if (isset(App::frontend()->context()->c2_page_params['cat_id'])
|
|
|
|
&& App::frontend()->context()->c2_page_params['cat_id'] == App::frontend()->context()->c2_categories->cat_id
|
2021-09-07 23:47:45 +00:00
|
|
|
) {
|
2021-09-07 13:21:38 +00:00
|
|
|
return true;
|
|
|
|
}
|
2023-10-15 18:49:39 +00:00
|
|
|
if (isset(App::frontend()->context()->c2_page_params['cat_title'])
|
|
|
|
&& App::frontend()->context()->c2_page_params['cat_title'] == App::frontend()->context()->c2_categories->cat_title
|
2021-09-07 23:47:45 +00:00
|
|
|
) {
|
2021-09-07 13:21:38 +00:00
|
|
|
return true;
|
|
|
|
}
|
2021-11-02 22:55:41 +00:00
|
|
|
|
2021-09-07 13:21:38 +00:00
|
|
|
return false;
|
|
|
|
}
|
2021-11-02 22:55:41 +00:00
|
|
|
}
|