Seite 2 von 2

Re: Seiten Pagination

Verfasst: 30.12.2025 12:45
von chris1278
DAs könnte vielleicht hiermit zusammenhängen kirk:

Code: Alles auswählen

public function validate_start($start, $per_page, $num_items)
{
	if ($start < 0 || $start >= $num_items)
	{
		return ($start < 0 || $num_items <= 0) ? 0 : floor(($num_items - 1) / $per_page) * $per_page;
	}

	return $start;
}

bzw. wahrscheinlich eher dies hier:

Code: Alles auswählen

	public function on_page($num_items, $per_page, $start)
	{
		$on_page = $this->get_on_page($per_page, $start);
		return $this->user->lang('PAGE_OF', $on_page, max(ceil($num_items / $per_page), 1));
	}

Re: Seiten Pagination

Verfasst: 30.12.2025 14:10
von Mike-on-Tour
Ich habe das von Udo geschilderte Verhalten eben bei einer meiner Ext und im Forum nachvollzogen und kann das bestätigen. Der Grund liegt aber nicht in irgendeiner Funktion von pagination.php, sondern in einer verkehrten Reihenfolge des Aufrufes von $pagination->validate_start() und der DB-Abfrage $db->sql_query_limit().
Ich hatte in meiner Ext zuerst die DB-Abfrage und anschließend die Berechnung von $start mittels $pagination->validate_start(). Wenn man das Ganze umkehrt, dann funktioniert es.

Muss ich jetzt wohl mal meine Erweiterungen darauf hin überprüfen, die Arbeit reißt nicht ab.

Re: Seiten Pagination

Verfasst: 30.12.2025 16:12
von LukeWCS
Kirk hat geschrieben: 30.12.2025 11:31 Ich bin per Zufall auf was gestoßen wo ich nicht weiter komme.
Guter Fund Udo.

Kann das Problem ebenfalls bestätigen, bei RTNG. Lediglich das Symptom ist anders; bei RTNG wird keine Meldung bezüglich fehlender Beiträge angezeigt, sondern schlicht gar nichts mehr. Das sieht dann im Forenindex so aus, als ob RTNG gar nicht vorhanden wäre.
Mike-on-Tour hat geschrieben: 30.12.2025 14:10 mittels $pagination->validate_start()
Danke für den Hinweis Mike. Da ich bisher noch nicht mit der Pagination hantiert hatte, war das jetzt sehr hilfreich. Mit der besagten Funktion konnte ich auf die Schnelle das Problem auch schon beheben, denn das wurde bei RTNG bisher so gehandhabt, dass RTNG dann gar nichts gemacht hat und einfach die Kontrolle an phpBB zurückgab. Den Fix muss sich aber Thorsten anschauen, ob das so passt.

Re: Seiten Pagination

Verfasst: 30.12.2025 17:33
von IMC
LukeWCS hat geschrieben: 30.12.2025 16:12 Kann das Problem ebenfalls bestätigen, bei RTNG. Lediglich das Symptom ist anders; bei RTNG wird keine Meldung bezüglich fehlender Beiträge angezeigt, sondern schlicht gar nichts mehr. Das sieht dann im Forenindex so aus, als ob RTNG gar nicht vorhanden wäre.
Dann verhält sich RTNG bei dir anders als bei mir. Es wird in einem solchen Fall wird immer der letzte Topic angezeigt. Dies wird in diesen Codezeilen realisiert.
Beispiel (gibt es dreimal):
$rtng_start = min(count($unread_topics) - 1 , (int) $rtng_start);

Das hat mir schon länger nich gefallen. Hatte es aber wieder vergessen auf die ToDo-Liste zu setzen.

Die phpBB Funktion gefällt mir auch nicht besonderlich. Da auch Startwerte innerhalb einer Seite möglich sind (Zwischenwerte). Deshalb habe ich da mal was eigenes gemacht.

Code: Alles auswählen

	public function validate_start($start, $per_page, $num_items)
	{
		$start = max(0, $start);
		$start = $start >= $num_items ?  $num_items -1 : $start;
		$start = intdiv($start, $per_page) * $per_page;

		return $start;
	}

Re: Seiten Pagination

Verfasst: 30.12.2025 17:40
von chris1278
IMC aber mit der Variante wird doch dann nur die letzte variante genutzt.

Wenn ich das richtig sehe wird dann nur dies hier effektiv genutzt:

Code: Alles auswählen

$start = intdiv($start, $per_page) * $per_page;

Re: Seiten Pagination

Verfasst: 30.12.2025 17:45
von Kirk
Ich glaub das mein Code für die Seiten Pagination komplett veraltet ist. Hier mal die komplette PHP Datei.

Re: Seiten Pagination

Verfasst: 30.12.2025 18:04
von LukeWCS
IMC hat geschrieben: 30.12.2025 17:33 Dann verhält sich RTNG bei dir anders als bei mir. Es wird in einem solchen Fall wird immer der letzte Topic angezeigt.
Wie gesagt, RTNG zeigt gar nichts an, als ob es gar nicht vorhanden wäre. Zuverlässig reproduzierbar. Dann scheint die Art des Symptoms noch von irgendwas abhängig zu sein, eventuell von der Anzahl der verfügbaren Themen?

Okay, dann mache ich meinen Fix rückgängig und korrigiere nur dev10. Dann mach du den Pagination Fix wenn ich dev11 online habe.
chris1278 hat geschrieben: 30.12.2025 17:40 Wenn ich das richtig sehe wird dann nur dies hier effektiv genutzt:
Nee, guck dir den Code nochmal in Ruhe an. Zeile 2 nimmt Bezug auf Zeile 1 und 3 nimmt Bezug auf Zeile 2. Thorsten hat den ganzen Code einfach auf 3 Zeilen verteilt, damit er besser les- und wartbar ist.
Kirk hat geschrieben: 30.12.2025 17:45 Ich glaub das mein Code für die Seiten Pagination komplett veraltet ist.
Kann schon vorkommen, alleine weil Funktionen bei phpBB ja auch immer mal wieder angepackt und erweitert werden, oder neue Funktionen dazu kommen, die es bisher gar nicht gab. Deswegen ist es zwangsläufig und unvermeidbar, dass man früher oder später irgendwo "veralteten" Code in seinen Exts hat.

Re: Seiten Pagination

Verfasst: 30.12.2025 18:06
von chris1278
JA jetzt auch gesehen. Alles klar.