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

Das könnte dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert