From b4c04a42f842016c42127129999217175c2e9138 Mon Sep 17 00:00:00 2001 From: mercury Date: Sun, 16 Jul 2023 16:09:53 +0300 Subject: [PATCH] setting: limit items on page --- app/bot.php | 44 ++++++++++++++++++++++++++++++++++++++------ app/i18n.php | 4 ++++ 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/app/bot.php b/app/bot.php index 1b9a0fa..d221b01 100644 --- a/app/bot.php +++ b/app/bot.php @@ -15,6 +15,7 @@ class Bot $this->i18n = $i18n; $this->language = $this->getPacConf()['language'] ?: 'en'; $this->dns = '1.1.1.1, 8.8.8.8'; + $this->limit = $this->getPacConf()['limitpage'] ?: 5; } public function input() @@ -190,6 +191,9 @@ class Bot case preg_match('~^/addadmin$~', $this->input['callback'], $m): $this->enterAdmin(); break; + case preg_match('~^/enterPage$~', $this->input['callback'], $m): + $this->enterPage(); + break; case preg_match('~^/geodb$~', $this->input['callback'], $m): $this->geodb(); break; @@ -1371,6 +1375,27 @@ class Bot 'args' => [], ]; } + public function enterPage() + { + $r = $this->send( + $this->input['chat'], + "@{$this->input['username']} enter limit on page", + $this->input['message_id'], + reply: 'enter limit on page', + ); + $_SESSION['reply'][$r['result']['message_id']] = [ + 'start_message' => $this->input['message_id'], + 'callback' => 'setPage', + 'args' => [], + ]; + } + + public function setPage($text) { + $c = $this->getPacConf(); + $c['limitpage'] = (int) $text; + $this->setPacConf($c); + $this->menu('config'); + } public function addAdmin($id) { @@ -1773,10 +1798,10 @@ DNS-over-HTTPS with IP: $data = array_merge($data, $clients); } if (!empty($conf['peers'])) { - $all = (int) ceil(count($conf['peers']) / 5); + $all = (int) ceil(count($conf['peers']) / $this->limit); $page = min($page, $all - 1); $page = $page == -2 ? $all - 1 : $page; - $conf['peers'] = array_slice($conf['peers'], $page * 5, 5, true); + $conf['peers'] = array_slice($conf['peers'], $page * $this->limit, $this->limit, true); foreach ($conf['peers'] as $k => $v) { if (!empty($v['# PublicKey'])) { $conf['peers'][$k]['online'] = 'off'; @@ -1877,7 +1902,7 @@ DNS-over-HTTPS with IP: if ($subnets) { $c['subnets'] = array_merge($c['subnets'] ?: [], array_filter(array_map(fn ($e) => trim($e), $subnets))); $this->setPacConf($c); - $page = floor(count($c['subnets']) / 5); + $page = floor(count($c['subnets']) / $this->limit); } $this->subnet($wgpage, $page); } @@ -1945,7 +1970,8 @@ DNS-over-HTTPS with IP: public function subnet($wgpage = 0, $page = 0, $count = 5) { - $text = "Menu -> Wireguard -> " . $this->i18n('listSubnet') . "\n"; + $count = $this->limit; + $text = "Menu -> Wireguard -> " . $this->i18n('listSubnet') . "\n"; $data[] = [ [ 'text' => $this->i18n('calc'), @@ -2148,6 +2174,7 @@ DNS-over-HTTPS with IP: public function getClients(int $page, int $count = 5) { + $count = $this->limit; $clients = $this->readClients(); if (!empty($clients)) { $all = (int) ceil(count($clients) / $count); @@ -2338,8 +2365,9 @@ DNS-over-HTTPS with IP: public function pacList($type, int $page, int $count = 5) { - $name = str_replace('list', '', $type); - $text = "Menu -> pac -> {$name}list\n\n"; + $count = $this->limit; + $name = str_replace('list', '', $type); + $text = "Menu -> pac -> {$name}list\n\n"; $data[] = [ [ 'text' => $this->i18n('add'), @@ -2889,6 +2917,10 @@ DNS-over-HTTPS with IP: 'text' => $this->i18n('lang'), 'callback_data' => "/menu lang", ], + [ + 'text' => "{$this->i18n('page')}: {$conf['limitpage']}", + 'callback_data' => "/enterPage", + ], [ 'text' => $this->i18n($conf['blinkmenu'] ? 'blinkmenuon' : 'blinkmenuoff'), 'callback_data' => "/blinkmenuswitch", diff --git a/app/i18n.php b/app/i18n.php index 1c4a4d6..2364474 100644 --- a/app/i18n.php +++ b/app/i18n.php @@ -265,4 +265,8 @@ $i = [ 'en' => 'changeFakeDomain', 'ru' => 'установить фейковый домен', ], + 'page' => [ + 'en' => 'pagination', + 'ru' => 'пагинация', + ], ];