1st brainstorming stuff:
t3lib_utility_HookDispatcher::executeFunction($name, $this, $params)
// Call hook when a page is retrieved from cache:
if (is_array($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['pageLoadedFromCache'])) {
$_params = array('pObj' => &$this, 'cache_pages_row' => &$row);
foreach($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['pageLoadedFromCache'] as $_funcRef) {
t3lib_div::callUserFunction($_funcRef,$_params,$this);
}
}
// possibility to use closures here
t3lib_utility_HookDispatcher::executeInterface($name, $this, $interface, $param1, $param2,$..., $timestamp)
if (is_array($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['getData'])) {
foreach ($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['getData'] as $classData) {
$hookObject = t3lib_div::getUserObj($classData);
if (!($hookObject instanceof tslib_content_getDataHook)) {
throw new UnexpectedValueException('$hookObject must implement interface tslib_content_getDataHook', 1195044480);
}
$retVal = $hookObject->getDataExtension($string, $fieldArray, $secVal, $retVal, $this);
}
}
t3lib_utility_HookDispatcher::executeObject($name, $this, $method, $param1, $param2,$...)
if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'])) {
foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'] as $classRef) {
$hookObjectsArr[] = t3lib_div::getUserObj($classRef);
}
}
foreach ($hookObjectsArr as $hookObj) {
if (method_exists($hookObj, 'processDatamap_afterDatabaseOperations')) {
$hookObj->processDatamap_afterDatabaseOperations($status, $table, $id, $fieldArray, $this);
}
}