[BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend

Fragen zur Installation von CONTENIDO 4.10? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
Bernbacher
Beiträge: 63
Registriert: Fr 21. Jan 2011, 13:29
Kontaktdaten:

[BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend

Beitrag von Bernbacher » Di 30. Jul 2019, 11:09

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

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend

Beitrag von Oldperl » Mi 31. Jul 2019, 08:05

Servus,

gelesen... :roll:

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

Bernbacher
Beiträge: 63
Registriert: Fr 21. Jan 2011, 13:29
Kontaktdaten:

Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend

Beitrag von Bernbacher » Do 1. Aug 2019, 11:19

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':

Code: Alles auswählen

$uploads->select("idclient = '$client' AND dirname = '$qpath'", '', 'filename', $numpics * ($startpage - 1) . ", " .  $numpics);
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.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend

Beitrag von Oldperl » Do 1. Aug 2019, 12:38

Hallo Bernbacher,
Bernbacher hat geschrieben:
Do 1. Aug 2019, 11:19
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':
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.

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);
}

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
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

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend

Beitrag von homtata » Do 1. Aug 2019, 13:12

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.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend

Beitrag von Oldperl » Do 1. Aug 2019, 13:27

Servus,

stimmt, da hat wohl einer dran rumgedoktert, der auch nicht so ganz verstanden hat, wie das Ganze gedacht und aufgebaut ist/war. :roll:
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

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend

Beitrag von homtata » Do 1. Aug 2019, 13:53

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);

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend

Beitrag von Oldperl » Do 1. Aug 2019, 14:16

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
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

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [BUG 4.10.0] Dateimanager Sortierung ist nicht seitenübergreifend

Beitrag von homtata » Do 1. Aug 2019, 16:42

Auch wieder wahr. Das hatte ich übersehen, dass in der Backendliste ja auch noch andere Sortierkriterien anstehen...

Antworten