[BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend
-
- Beiträge: 63
- Registriert: Fr 21. Jan 2011, 13:29
- Kontaktdaten:
[BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend
Hallo,
falls das noch jemand hier liest im Forum:
ab der Version 4.10.0 werden bei mir die Dateien im Dateimanager nur innerhalb einer Seite (Paging) sortiert. Es scheint so als ob Contenido z.B. auf der ersten Seite des Dateimanagers (wenn ein Paging von 100 eingestellt ist), die 100 ältesten (creation date) Dateien nimmt und diese alphabetisch sortiert zurück gibt. Logisch wäre aber, das sämtliche Dateien erst nach dem Alphabet sortiert werden und davon dann die ersten 100 ausgegeben werden.
Fehler tritt auf bei frisch installiertem Contenido:
Installierte Versionen
CONTENIDO Version 4.10.0
Webserver-Version Apache/2.4.37 (Win32) OpenSSL/1.1.1a PHP/7.3.1
Installierte PHP-Version 7.3.1
Datenbankserver-Version 5.5.5-10.1.37-MariaDB
PHP-Datenbankerweiterung mysqli
PHP-Einstellungen
date.timezone Europe/Berlin
include_path C:\xampp\php\PEAR
memory_limit 128M
upload_max_filesize 2M
post_max_size 8M
max_execution_time 30
max_file_uploads 20
max_input_time 60
sql.safe_mode Deaktiviert
disable_classes nichts deaktiviert
disable_functions nichts deaktiviert
Geladene Erweiterungen:
Core, PDO, Phar, Reflection, SPL, SimpleXML, apache2handler, bcmath, bz2, calendar, ctype, curl, date, dom, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, json, libxml, mbstring, mysqli, mysqlnd, openssl, pcre, pdo_mysql, pdo_sqlite, readline, session, standard, tokenizer, wddx, xml, xmlreader, xmlwriter, zip, zlib
falls das noch jemand hier liest im Forum:
ab der Version 4.10.0 werden bei mir die Dateien im Dateimanager nur innerhalb einer Seite (Paging) sortiert. Es scheint so als ob Contenido z.B. auf der ersten Seite des Dateimanagers (wenn ein Paging von 100 eingestellt ist), die 100 ältesten (creation date) Dateien nimmt und diese alphabetisch sortiert zurück gibt. Logisch wäre aber, das sämtliche Dateien erst nach dem Alphabet sortiert werden und davon dann die ersten 100 ausgegeben werden.
Fehler tritt auf bei frisch installiertem Contenido:
Installierte Versionen
CONTENIDO Version 4.10.0
Webserver-Version Apache/2.4.37 (Win32) OpenSSL/1.1.1a PHP/7.3.1
Installierte PHP-Version 7.3.1
Datenbankserver-Version 5.5.5-10.1.37-MariaDB
PHP-Datenbankerweiterung mysqli
PHP-Einstellungen
date.timezone Europe/Berlin
include_path C:\xampp\php\PEAR
memory_limit 128M
upload_max_filesize 2M
post_max_size 8M
max_execution_time 30
max_file_uploads 20
max_input_time 60
sql.safe_mode Deaktiviert
disable_classes nichts deaktiviert
disable_functions nichts deaktiviert
Geladene Erweiterungen:
Core, PDO, Phar, Reflection, SPL, SimpleXML, apache2handler, bcmath, bz2, calendar, ctype, curl, date, dom, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, json, libxml, mbstring, mysqli, mysqlnd, openssl, pcre, pdo_mysql, pdo_sqlite, readline, session, standard, tokenizer, wddx, xml, xmlreader, xmlwriter, zip, zlib
-
- Beiträge: 4256
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Kontaktdaten:
Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend
Servus,
gelesen...
Gruß aus Franken
Ortwin
gelesen...
Gruß aus Franken
Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
-
- Beiträge: 63
- Registriert: Fr 21. Jan 2011, 13:29
- Kontaktdaten:
Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend
Nach langer Suche habe ich (glaube ich) den Fehler gefunden in der contenido/includes/include.upl_files_overview.php.
In der Zeile 698 fehlte im dritten Parameter (orderBy) der Wert 'filename':
Ohne den Wert 'filename' richtet sich das Paging einfach nach einer willkürlichen Reihenfolge (Erstelldatum) und mit 'filename' werden erst alle Uploads alphabetisch sortiert und dann erst das Paging angewendet.
In der Zeile 698 fehlte im dritten Parameter (orderBy) der Wert 'filename':
Code: Alles auswählen
$uploads->select("idclient = '$client' AND dirname = '$qpath'", '', 'filename', $numpics * ($startpage - 1) . ", " . $numpics);
-
- Beiträge: 4256
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Kontaktdaten:
Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend
Hallo Bernbacher,
wobei in der Variablen $sortby der Standardwert 3 (ab Zeile 525) gesetzt sein sollte, oder eben die, durch Anklicken der Spaltenköpfe, alternativ gesetzte Sortierreihenfolge. Warum der Standardwert nicht greift müsste also geschaut werden, eventuell ein PHP-Versions Problem.
Gruß aus Franken
Ortwin
Nein, diese Stelle ist nicht korrekt. Die Datenbankabfrage holt einfach alle Datensätze aus der DB. Die eigentliche Sortierung wird dann in der Klasse UploadList gemacht.Bernbacher hat geschrieben: ↑Do 1. Aug 2019, 11:19Nach langer Suche habe ich (glaube ich) den Fehler gefunden in der contenido/includes/include.upl_files_overview.php.
In der Zeile 698 fehlte im dritten Parameter (orderBy) der Wert 'filename':
Code: Alles auswählen
# ab Zeile 630
// Object initializing
$list2 = new UploadList($startwrap, $endwrap, $itemwrap);
...
# ab Zeile 772
if ($sortmode == 'ASC') {
$list2->sort($sortby, SORT_ASC);
} else {
$list2->sort($sortby, SORT_DESC);
}
Gruß aus Franken
Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend
Das geht in der 4.10.0 tatsächlich schief...
und zwar in der include_upl_files_overview.php zwischen Zeile 698 und 775.
Da wird am Anfang (noch ohne Sortierung) die "korrekte" Anzahl an Treffern für die Seite X herausgezogen, und erst ab 772 wird dieses Exzerpt in sich sortiert. In der 4.9.x war der Code hier völlig anders aufgebaut und funktionierte korrekt. Dort wurde (laienhaft ausgedrückt) erst der KOMPLETTE Listenbereich für den Ordner geladen, dann sortiert, dann zurechtgestutzt. JETZT aber wird schon beim query die Anzahl eingegrenzt, und jemand müsste sich mal anschauen, ab das eigentlich gewünschte Verhalten mit dem select in Zeile 698 möglich ist.
und zwar in der include_upl_files_overview.php zwischen Zeile 698 und 775.
Da wird am Anfang (noch ohne Sortierung) die "korrekte" Anzahl an Treffern für die Seite X herausgezogen, und erst ab 772 wird dieses Exzerpt in sich sortiert. In der 4.9.x war der Code hier völlig anders aufgebaut und funktionierte korrekt. Dort wurde (laienhaft ausgedrückt) erst der KOMPLETTE Listenbereich für den Ordner geladen, dann sortiert, dann zurechtgestutzt. JETZT aber wird schon beim query die Anzahl eingegrenzt, und jemand müsste sich mal anschauen, ab das eigentlich gewünschte Verhalten mit dem select in Zeile 698 möglich ist.
-
- Beiträge: 4256
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Kontaktdaten:
Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend
Servus,
stimmt, da hat wohl einer dran rumgedoktert, der auch nicht so ganz verstanden hat, wie das Ganze gedacht und aufgebaut ist/war.
Da sind einige Dinge, auch in der Klasse UploadList geändert worden. Auch stellt sich mir die Frage, warum man, wenn man schon da schraubt, nicht auch gleich die Klasse aus der Datei in eine eigene Datei auslagert. Wie auch immer. Das ist kein "einfacher" Bug, das gehört komplett nochmal überarbeitet, also eine größere Baustelle.
Zumindest kann ich damit den Bug bestätigen
Gruß aus Franken
Ortwin
stimmt, da hat wohl einer dran rumgedoktert, der auch nicht so ganz verstanden hat, wie das Ganze gedacht und aufgebaut ist/war.
Da sind einige Dinge, auch in der Klasse UploadList geändert worden. Auch stellt sich mir die Frage, warum man, wenn man schon da schraubt, nicht auch gleich die Klasse aus der Datei in eine eigene Datei auslagert. Wie auch immer. Das ist kein "einfacher" Bug, das gehört komplett nochmal überarbeitet, also eine größere Baustelle.
Zumindest kann ich damit den Bug bestätigen
Gruß aus Franken
Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend
Ich habe gerade ein bisschen rumgespielt, und es scheint dank etwas Glück doch einfacher zu gehen... Ab Zeile 693 müsste der Code wie folgt geändert / ergänzt werden (vorgeschaltete sichere Vordefinition von $sortmode, und dann Erweiterung des select):
Code: Alles auswählen
if ($startpage < 1) {
$startpage = 1;
}
if ($sortmode != 'ASC') {
$sortmode = 'DESC';
}
$uploads->resetQuery();
$uploads->select("idclient = '$client' AND dirname = '$qpath'", '', "filename $sortmode", $numpics * ($startpage - 1) . ", " . $numpics);
-
- Beiträge: 4256
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Kontaktdaten:
Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend
Servus,
nur warum schon eine Sortierung nach filename und eine Begrenzung im Select, dann braucht es auch keine Sortierung mehr in der Klasse, die trifft dann nämlich bei Dateigröße oder anderen Sortierkriterien nicht mehr auf alle Daten zu, sondern nur auf die begrenzte Auswahl die ausgelesen wurde.
Nein, nein, das ist nicht komplett durchdacht.
Gruß aus Franken
Ortwin
nur warum schon eine Sortierung nach filename und eine Begrenzung im Select, dann braucht es auch keine Sortierung mehr in der Klasse, die trifft dann nämlich bei Dateigröße oder anderen Sortierkriterien nicht mehr auf alle Daten zu, sondern nur auf die begrenzte Auswahl die ausgelesen wurde.
Nein, nein, das ist nicht komplett durchdacht.
Gruß aus Franken
Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend
Auch wieder wahr. Das hatte ich übersehen, dass in der Backendliste ja auch noch andere Sortierkriterien anstehen...