Direct Mail, Empfängerlisten im CSV-Format werden nicht erkannt
Nachdem wir ja nun das eine oder andere Mal Direct Mail einsetzen, stolpert man vielleicht irgendwann mal darüber, dass Direct Mail einfache Listen im CSV-Format nicht korrekt erkennt. Der Grund liegt hier in einer Unverträglichkeit von Direct Mail und gewissen PHP-Versionen, siehe Auszug aus typo3conf/ext/direct_mail/res/scripts/class.tx_directmail_static.php (Zeile 764ff.)
/**
* parsing csv-formated text to an array
*
* @param string $str: string in csv-format
* @param string $sep: separator
* @return array parsed csv in an array
*/
function getCsvValues($str,$sep=',') {
$fh=tmpfile();
fwrite ($fh, trim($str));
fseek ($fh,0);
$lines=array();
if ($sep == 'tab') $sep = chr(9);
while ($data = fgetcsv ($fh, 1000, $sep)) {
$lines[]=$data;
}
return $lines;
}
Der Aufruf der PHP-Methode tmpfile() schlägt aufgrund eines PHP-Bugs (das temporäre Verzeichnis ist falsch gemappt) u. U. fehl sodass die weiteren Funktionen ebenfalls vor die Wand fahren.
Ein Workaround hierfür wäre, die Klasse zu patchen:
/**
* parsing csv-formated text to an array
*
* @param string $str: string in csv-format
* @param string $sep: separator
* @return array parsed csv in an array
*/
function getCsvValues($str,$sep=',') {
$fh = fopen(realpath(dirname(__FILE__)).'/direct_mail','w+');
fwrite ($fh, trim($str));
fseek ($fh,0);
$lines=array();
if ($sep == 'tab') $sep = chr(9);
while ($data = fgetcsv ($fh, 1000, $sep)) {
$lines[]=$data;
}
return $lines;
}