Seite 1 von 1

cms_filelist, fehler bei manueller zuweisung einer Datei

Verfasst: Mi 10. Feb 2016, 14:26
von chnussbaumer
Hallo zusammen

Mir ist aufgefallen das bei der Version 4.9.6 in der Klasse /contenido/classes/content_types/class.content.type.fileList.php ein fehler besteht.
Wenn man eine Manuelle Dateiliste verwendet und nur eine Datei auswählt, wird diese nicht ausgegeben. Konnte das Problem ausfindig machen.

In der Funktion getConfiguredFiles wird die Anzahl der Files im Array $this->_settings['filelist_manual_files'] geprüft. Wenn nur ein File ausgewählt ist
wird aber kein Array gesetzt, sondern nur ein String auf die Datei. Somit ist die Prüfung mit Count() immer 0. Also wird keine Datei ausgegeben.

Schneller Bugfix:

in der Klasse: /contenido/classes/content_types/class.content.type.fileList.php Zeile 212
folgender Inhalt austauschen:

Code: Alles auswählen

if ($this->_settings['filelist_manual'] === 'true' && count($this->_settings['filelist_manual_files']) > 0) {
            $tempFileList = $this->_settings['filelist_manual_files'];

            // Check if manual selected file exists, otherwise ignore them
            // Write only existing files into fileList array
            foreach ($tempFileList as $filename) {
            	if (cFileHandler::exists($this->_uploadPath . $filename)) {
            		$fileList[] = $filename;
            	}
            }

        }
mit

Code: Alles auswählen

if ($this->_settings['filelist_manual'] === 'true' && !empty($this->_settings['filelist_manual_files'])) {
            if(!is_array($this->_settings['filelist_manual_files'])){
                $tempFileList[0] = $this->_settings['filelist_manual_files'];
            }else{
                $tempFileList = $this->_settings['filelist_manual_files'];
            }

            // Check if manual selected file exists, otherwise ignore them
            // Write only existing files into fileList array
            foreach ($tempFileList as $filename) {
            	if (cFileHandler::exists($this->_uploadPath . $filename)) {
            		$fileList[] = $filename;
            	}
            }

        }

Re: cms_filelist, fehler bei manueller zuweisung einer Datei

Verfasst: Do 11. Feb 2016, 08:57
von frederic.schneider_4fb
In der aktuellen CONTENIDO-Version sieht die Code-Stelle (jetzt ab Zeile 219) folgendermaßen aus:

Code: Alles auswählen

if ($this->_settings['filelist_manual'] === 'true' && count($this->_settings['filelist_manual_files']) > 0) {
            $tempFileList = $this->_settings['filelist_manual_files'];

            // Check if manual selected file exists, otherwise ignore them
            // Write only existing files into fileList array
            if (is_array($tempFileList)) {
                foreach ($tempFileList as $filename) {
                    if (cFileHandler::exists($this->_uploadPath . $filename)) {
                        $fileList[] = $filename;
                    }
                }
            } else {
                if (cFileHandler::exists($this->_uploadPath . $tempFileList)) {
                    $fileList[] = $tempFileList;
                }
            }

}