cms_filelist, fehler bei manueller zuweisung einer Datei

Alle bestätigten Fehler in CONTENIDO 4.9 (erledigte Fehler werden durch geschlossene Beiträge gekennzeichnet).
Gesperrt
chnussbaumer
Beiträge: 22
Registriert: Di 5. Aug 2014, 07:13
Kontaktdaten:

cms_filelist, fehler bei manueller zuweisung einer Datei

Beitrag von chnussbaumer » Mi 10. Feb 2016, 14:26

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

        }

frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: cms_filelist, fehler bei manueller zuweisung einer Datei

Beitrag von frederic.schneider_4fb » Do 11. Feb 2016, 08:57

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

}
Frederic Schneider
Entwickler bei der four for business AG

Gesperrt