@@ -206,7 +206,7 @@ public function setItems(array $items): InlineKeyboardPagination
206206 */
207207 public function getNumberOfPages (): int
208208 {
209- return (int )ceil (count ($ this ->items ) / $ this ->itemsPerPage );
209+ return (int ) ceil (count ($ this ->items ) / $ this ->itemsPerPage );
210210 }
211211
212212 /**
@@ -309,31 +309,28 @@ protected function generateRange(): array
309309 $ numberOfIntermediateButtons = $ this ->maxButtons - 2 ;
310310 $ numberOfPages = $ this ->getNumberOfPages ();
311311
312+ // @todo: Find a nicer solution for page 3
313+ $ from = $ this ->selectedPage - 1 ;
314+ $ to = $ this ->selectedPage + ($ this ->selectedPage === 3 ? $ numberOfIntermediateButtons - 1 : 2 );
315+
312316 if ($ this ->selectedPage === 1 ) {
313317 $ from = 2 ;
314318 $ to = $ this ->maxButtons ;
315319 } elseif ($ this ->selectedPage === $ numberOfPages ) {
316320 $ from = $ numberOfPages - $ numberOfIntermediateButtons ;
317321 $ to = $ numberOfPages ;
318- } else {
319- if ($ this ->selectedPage < 3 ) {
320- $ from = $ this ->selectedPage ;
321- $ to = $ this ->selectedPage + $ numberOfIntermediateButtons ;
322- } elseif (($ numberOfPages - $ this ->selectedPage ) < 3 ) {
323- $ from = $ numberOfPages - $ numberOfIntermediateButtons ;
324- $ to = $ numberOfPages ;
325- } else {
326- // @todo: Find a nicer solution for page 3
327- if ($ this ->forceButtonCount ) {
328- $ from = $ this ->selectedPage - floor ($ numberOfIntermediateButtons / 2 );
329- $ to = $ this ->selectedPage + ceil (
330- $ numberOfIntermediateButtons / 2
331- ) + ($ this ->selectedPage === 3 && $ this ->maxButtons > 5 );
332- } else {
333- $ from = $ this ->selectedPage - 1 ;
334- $ to = $ this ->selectedPage + ($ this ->selectedPage === 3 ? $ numberOfIntermediateButtons - 1 : 2 );
335- }
336- }
322+ } elseif ($ this ->selectedPage < 3 ) {
323+ $ from = $ this ->selectedPage ;
324+ $ to = $ this ->selectedPage + $ numberOfIntermediateButtons ;
325+ } elseif (($ numberOfPages - $ this ->selectedPage ) < 3 ) {
326+ $ from = $ numberOfPages - $ numberOfIntermediateButtons ;
327+ $ to = $ numberOfPages ;
328+ } elseif ($ this ->forceButtonCount ) {
329+ $ from = $ this ->selectedPage -
330+ floor ($ numberOfIntermediateButtons / 2 );
331+ $ to = $ this ->selectedPage +
332+ ceil ($ numberOfIntermediateButtons / 2 ) +
333+ (int ) ($ this ->selectedPage === 3 && $ this ->maxButtons > 5 );
337334 }
338335
339336 return compact ('from ' , 'to ' );
@@ -349,7 +346,7 @@ protected function generateRange(): array
349346 protected function generateButton (int $ page ): array
350347 {
351348 return [
352- 'text ' => (string )$ page ,
349+ 'text ' => (string ) $ page ,
353350 'callback_data ' => $ this ->generateCallbackData ($ page ),
354351 ];
355352 }
@@ -393,10 +390,11 @@ protected function getOffset(): int
393390 /**
394391 * Get the parameters from the callback query.
395392 *
393+ * @todo Possibly make it work for custom formats too?
394+ *
396395 * @param string $data
397396 *
398397 * @return array
399- * @todo Possibly make it work for custom formats too?
400398 */
401399 public static function getParametersFromCallbackData (string $ data ): array
402400 {
0 commit comments