Index: t3lib/class.t3lib_extmgm.php =================================================================== --- t3lib/class.t3lib_extmgm.php (Revision 5714) +++ t3lib/class.t3lib_extmgm.php (Arbeitskopie) @@ -1202,8 +1202,20 @@ public static function typo3_loadExtensions() { global $TYPO3_CONF_VARS; + // Select mode how to load extensions in order to speed up the FE + if (TYPO3_MODE == 'FE') { + if (!($extLoadInContext = $TYPO3_CONF_VARS['EXT']['extList_FE'])) { + // fall back to standard 'extList' if 'extList_FE' is not (yet) set + $extLoadInContext = $TYPO3_CONF_VARS['EXT']['extList']; + } + $cacheFileSuffix = '_FE'; + } else { + $extLoadInContext = $TYPO3_CONF_VARS['EXT']['extList']; + // Works as before + $cacheFileSuffix = ''; + } // Full list of extensions includes both required and extList: - $rawExtList = $TYPO3_CONF_VARS['EXT']['requiredExt'].','.$TYPO3_CONF_VARS['EXT']['extList']; + $rawExtList = $TYPO3_CONF_VARS['EXT']['requiredExt'].','.$extLoadInContext; // Empty array as a start. $extensions = array(); @@ -1211,7 +1223,7 @@ // if ($rawExtList) { // The cached File prefix. - $cacheFilePrefix = 'temp_CACHED'; + $cacheFilePrefix = 'temp_CACHED' . $cacheFileSuffix; // Setting the name for the cache files: if (intval($TYPO3_CONF_VARS['EXT']['extCache'])==1) $cacheFilePrefix.= '_ps'.substr(t3lib_div::shortMD5(PATH_site.'|'.$GLOBALS['TYPO_VERSION']), 0, 4); if (intval($TYPO3_CONF_VARS['EXT']['extCache'])==2) $cacheFilePrefix.= '_'.t3lib_div::shortMD5($rawExtList); @@ -1223,8 +1235,7 @@ } else { // ... but if not, configure... // Prepare reserved filenames: - $files = t3lib_div::trimExplode(',', 'ext_localconf.php,ext_tables.php,ext_tables.sql,ext_tables_static+adt.sql,ext_typoscript_constants.txt,ext_typoscript_editorcfg.txt,ext_typoscript_setup.txt', 1); - + $files = array('ext_localconf.php','ext_tables.php','ext_tables.sql','ext_tables_static+adt.sql','ext_typoscript_constants.txt','ext_typoscript_editorcfg.txt','ext_typoscript_setup.txt'); // Traverse extensions and check their existence: clearstatcache(); // Clear file state cache to make sure we get good results from is_dir() $temp_extensions = array_unique(t3lib_div::trimExplode(',', $rawExtList, 1)); @@ -1348,15 +1359,20 @@ * @internal */ public static function currentCacheFiles() { - global $TYPO3_LOADED_EXT; - - if ($TYPO3_LOADED_EXT['_CACHEFILE']) { - if (t3lib_extMgm::isCacheFilesAvailable($TYPO3_LOADED_EXT['_CACHEFILE'])) { - return array( - PATH_typo3conf.$TYPO3_LOADED_EXT['_CACHEFILE'].'_ext_localconf.php', - PATH_typo3conf.$TYPO3_LOADED_EXT['_CACHEFILE'].'_ext_tables.php' - ); + if (($cacheFilePrefix = $GLOBALS['TYPO3_LOADED_EXT']['_CACHEFILE'])) { + $cacheFilePrefixFE = str_replace('temp_CACHED','temp_CACHED_FE',$cacheFilePrefix); + $files = array(); + if (t3lib_extMgm::isCacheFilesAvailable($cacheFilePrefix)) { + $files[] = PATH_typo3conf.$cacheFilePrefix.'_ext_localconf.php'; + $files[] = PATH_typo3conf.$cacheFilePrefix.'_ext_tables.php'; } + if (t3lib_extMgm::isCacheFilesAvailable($cacheFilePrefixFE)) { + $files[] = PATH_typo3conf.$cacheFilePrefixFE.'_ext_localconf.php'; + $files[] = PATH_typo3conf.$cacheFilePrefixFE.'_ext_tables.php'; + } + if (!empty($files)) { + return $files; + } } } Index: typo3/mod/tools/em/class.em_index.php =================================================================== --- typo3/mod/tools/em/class.em_index.php (Revision 5714) +++ typo3/mod/tools/em/class.em_index.php (Arbeitskopie) @@ -3958,6 +3958,8 @@ function writeNewExtensionList($newExtList) { global $TYPO3_CONF_VARS; + $strippedExtensionList = $this->stripNonFrontendExtensions($newExtList); + // Instance of install tool $instObj = new t3lib_install; $instObj->allowUpdateLocalConf =1; @@ -3966,13 +3968,34 @@ // Get lines from localconf file $lines = $instObj->writeToLocalconf_control(); $instObj->setValueInLocalconfFile($lines, '$TYPO3_CONF_VARS[\'EXT\'][\'extList\']', $newExtList); + $instObj->setValueInLocalconfFile($lines, '$TYPO3_CONF_VARS[\'EXT\'][\'extList_FE\']', $strippedExtensionList); $instObj->writeToLocalconf_control($lines); $TYPO3_CONF_VARS['EXT']['extList'] = $newExtList; + $TYPO3_CONF_VARS['EXT']['extList_FE'] = $strippedExtensionList; $this->removeCacheFiles(); } /** + * Removes unneeded extensions from the frontend based on + * EMCONF doNotLoadInFE = 1 + * + * @param string $extList + * @return string + */ + function stripNonFrontendExtensions($extList) { + $fullExtList = $this->getInstalledExtensions(); + $extListArray = t3lib_div::trimExplode(',', $extList); + foreach ($extListArray as $arrayKey => $extKey) { + if ($fullExtList[0][$extKey]['EM_CONF']['doNotLoadInFE'] == 1) { + unset($extListArray[$arrayKey]); + } + } + $nonFEList = implode(',', $extListArray); + return $nonFEList; + } + + /** * Writes the TSstyleconf values to "localconf.php" * Removes the temp_CACHED* files before return. *