/** * Create concatenated ext_tables.php cache file * * @return void */ protected static function createExtTablesCacheEntry() { $extensionInformation = $GLOBALS['TYPO3_LOADED_EXT']; $phpCodeToCache = array(); // Set same globals as in loadSingleExtTablesFiles() $phpCodeToCache[] = '/**'; $phpCodeToCache[] = ' * Compiled ext_tables.php cache file'; $phpCodeToCache[] = ' */'; $phpCodeToCache[] = ''; $phpCodeToCache[] = 'global $T3_SERVICES, $T3_VAR, $TYPO3_CONF_VARS;'; $phpCodeToCache[] = 'global $TBE_MODULES, $TBE_MODULES_EXT, $TCA;'; $phpCodeToCache[] = 'global $PAGES_TYPES, $TBE_STYLES, $FILEICONS;'; $phpCodeToCache[] = 'global $_EXTKEY;'; $phpCodeToCache[] = ''; // Iterate through loaded extensions and add ext_tables content foreach ($extensionInformation as $extensionKey => $extensionDetails) { if (isset($extensionDetails['ext_tables.php']) && $extensionDetails['ext_tables.php']) { // Include a header per extension to make the cache file more readable $phpCodeToCache[] = '/**'; $phpCodeToCache[] = ' * Extension: ' . $extensionKey; $phpCodeToCache[] = ' * File: ' . $extensionDetails['ext_tables.php']; $phpCodeToCache[] = ' */'; $phpCodeToCache[] = ''; // Set $_EXTKEY and $_EXTCONF for this extension $phpCodeToCache[] = '$_EXTKEY = \'' . $extensionKey . '\';'; $phpCodeToCache[] = '$_EXTCONF = $GLOBALS[\'TYPO3_CONF_VARS\'][\'EXT\'][\'extConf\'][$_EXTKEY];'; $phpCodeToCache[] = ''; // Add ext_tables.php content of extension $phpCodeToCache[] = trim(GeneralUtility::getUrl($extensionDetails['ext_tables.php'])); $phpCodeToCache[] = ''; $phpCodeToCache[] = '\\TYPO3\\CMS\\Core\\Utility\\ExtensionManagementUtility::loadNewTcaColumnsConfigFiles();'; $phpCodeToCache[] = ''; } } $phpCodeToCache = implode(LF, $phpCodeToCache); // Remove all start and ending php tags from content $phpCodeToCache = preg_replace('/<\\?php|\\?>/is', '', $phpCodeToCache); self::getCacheManager()->getCache('cache_core')->set(self::getExtTablesCacheIdentifier(), $phpCodeToCache); }