Seite 1 von 1

kleiner Fehler in CMS_FILELIST (?)

Verfasst: Di 6. Dez 2016, 15:08
von MyWorker
Hallo,
ich glaube in der Datei: "class.content.type.filelist.php" von Contenido 4.9.12 ist ein kleine "Denkfehler" passiert.
Dies sind die Zeilen 419 bis 447 der Datei.

Code: Alles auswählen

                   if ($this->_applyDateFilters($fileStats)) {
                        $creationDate = $fileStats['ctime'];
                        $modifyDate = $fileStats['mtime'];
                        // conditional stuff is completed, start sorting
                        switch ($this->_settings['filelist_sort']) {
                            case 'filesize':
                                $indexName = $filesize;
                                break;
                            case 'createdate':
                                $indexName = $creationDate;
                                break;
                            case 'modifydate':
                                $indexName = $modifyDate;
                                break;
                            case 'filename':
                            default:
                                $indexName = strtolower($directoryName . $filename);
                        }

                        $files[$indexName] = array();
                        $files[$indexName]['filename'] = $filename;
                        $files[$indexName]['path'] = $directoryName;
                        $files[$indexName]['extension'] = $extensionName;
                        $files[$indexName]['filesize'] = $filesize;
                        $files[$indexName]['filemodifydate'] = $modifyDate;
                        $files[$indexName]['filecreationdate'] = $creationDate;
                    }
                }
            }
Wenn z.B. nach "creationDate" sortiert wird und zwei ausgewählte Dateien genau zur selben Zeit (selbe Sekunde) erzeugt wurden, wird der erste Eintrag in $files durch den zweiten ersetzt (selber $indexName). Das gleiche Problem wird wohl auch bei "fileSize" auftreten, wenn zwei Dateien die selbe Größe haben.
Ist ein "netter" Fehler. Hat ne Weile gedauert ihn zu finden.

Lg Udo

Re: kleiner Fehler in CMS_FILELIST (?)

Verfasst: Do 22. Dez 2016, 11:06
von frederic.schneider_4fb
Lieber Udo,

hier die Fehlerbehebung:
https://git.contenido.org/projects/CON/ ... 5698406d3e

Re: kleiner Fehler in CMS_FILELIST (?)

Verfasst: Do 16. Feb 2017, 16:19
von dermicha
Hallo zusammen,

wäre es nicht sinnvoller, statt des Zufallswerts einfach grundsätzlich (an alle anderen Sortierkriterien)

Code: Alles auswählen

strtolower($directoryName . $filename);
anzuhängen? Dann wären Dateien mit gleichen Werten automatisch nach Dateinamen und nicht beliebig sortiert und man könnte nebenbei auch auf die if-Abfragen verzichten...

Viele Grüße
Michael

Re: kleiner Fehler in CMS_FILELIST (?)

Verfasst: Do 16. Feb 2017, 16:51
von frederic.schneider_4fb
Das würde nicht jene - wenn auch in der Praxis eher unwahrscheinliche, aber eben nicht gänzlich auszuschließende, und gerade solche Fälle haben wir immer mal - Fälle berücksichtigen, wo Parameter, Ordner und Name dieselben sind. In der Tat war das aber, das möchte ich dazu sagen, keine perfekte Umsetzung was den Codeaufwand anbelangt. Ich hatte mit einem Kollegen mehrere Minuten diskutiert, wie wir am besten vorgehen. Falls jemand noch einen besseren Vorschlag hat, bin ich aber nach wie vor offen. Das einfach anzuhängen halte ich aber, wie eingangs erwähnt, für ebenso wenig "perfekt"

Re: kleiner Fehler in CMS_FILELIST (?)

Verfasst: Do 16. Feb 2017, 16:56
von dermicha
Das würde dann aber bei der standardmäßigen Sortierung nach filename noch eher passieren (und auch dort müsste es eine Zufallsfunktion geben).

Aber gibt es identische Dateinamen im gleichen Verzeichnis überhaupt? :shock: Aufgrund des strtolower eventuell noch mit Unterschieden in der Groß-/Kleinschreibung...

Was die Sortierung anbelangt wäre auch ein zusätzliches standardmäßiges Anhängen auf jeden Fall ein Fortschritt.