Zum Inhalt springen

Hook wird (vermutlich) nicht jedes Mal aufgerufen

Erstellt am 15. Januar 2007 · 1 Antwort · letzte Antwort am 16. Januar 2007

Tags: PHP, Frage

updatestage ·

Hallo,

ich habe folgendes Problem: In einer Event-Datenbank gibt es Eingabefelder für Datum und Uhrzeit. Ich benötige aber zusätzlich den Timestamp dieser Verantaltung. Dazu habe ich einen Hook verwendet:

class.tx_sgsimpleevent_tcemainprocdm.php

<?
class tx_sgsimpleevent_tcemainprocdm{

	function processDatamap_preProcessFieldArray (&$fieldArray, $table, $id, &$reference) {
		$row = t3lib_BEfunc::getRecord ($table, $id);

		$date = explode(".", $row['date']);
	
		if (empty($row['time'])) $time = array('0','0');
		else $time = explode(":", $row['time']);
		
		$ts = mktime($time[0], $time[1], "00", $date[1], $date[0], $date[2]);
		$fieldArray['ts'] = $ts;
	}
}
}
?>

localconf.php

$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'typo3conf/ext/sg_simpleevent/class.tx_sgsimpleevent_tcemainprocdm.php:tx_sgsimpleevent_tcemainprocdm';

Leider funktioniert das nur bei jedem 2.Speichern des Datensatzes. Hat jemand eine Idee, was dafür die Ursache sein könnte?

PS: ich habe auch schon die function processDatamap_postProcessFieldArray versucht, da ist es das selbe.

updatestage ·

Problem gelöst:

$row = t3lib_BEfunc::getRecord ($table, $id);

liest den Datensatz aus der Datenbank aus (der zur Zeit des Aufrufs noch nicht aktualisiert ist). Mit

$row = $reference->datamap[$table][$id];

funktioniert es.