diff --git a/t3lib/class.t3lib_extmgm.php b/t3lib/class.t3lib_extmgm.php index 868df02282ff483e498121a088ed2455e3371910..e2b0250337e79041c9c76c124a9af74fbe8ec5da 100644 --- a/t3lib/class.t3lib_extmgm.php +++ b/t3lib/class.t3lib_extmgm.php @@ -472,7 +472,7 @@ class t3lib_extMgm { * * @param string Extension key * @param string Service type, cannot be prefixed "tx_" - * @param string Service key, must be prefixed "tx_" + * @param string Service key, must be prefixed "tx_" or "user_" * @param array Service description array * @return void * @author René Fritz <r.fritz@colorcube.de> @@ -483,7 +483,10 @@ class t3lib_extMgm { // even not available services will be included to make it possible to give the admin a feedback of non-available services. // but maybe it's better to move non-available services to a different array?? - if ($serviceType AND substr($serviceType,0,3)!='tx_' AND substr($serviceKey,0,3)=='tx_' AND is_array($info)) { + if ($serviceType AND + !t3lib_div::isFirstPartOfStr($serviceType, 'tx_') AND + (t3lib_div::isFirstPartOfStr($serviceKey, 'tx_') OR t3lib_div::isFirstPartOfStr($serviceKey, 'user_')) AND + is_array($info)) { $info['priority'] = max(0,min(100,$info['priority'])); @@ -543,7 +546,7 @@ class t3lib_extMgm { * @author René Fritz <r.fritz@colorcube.de> */ function findService($serviceType, $serviceSubType='', $excludeServiceKeys=array()) { - global $T3_SERVICES, $TYPO3_CONF_VARS; + global $T3_SERVICES, $T3_VAR, $TYPO3_CONF_VARS; $serviceKey = FALSE; $serviceInfo = FALSE; @@ -947,26 +950,27 @@ tt_content.'.$key.$prefix.' { foreach($temp_extensions as $temp_extKey) { // Check local, global and system locations: if (@is_dir(PATH_site.'typo3conf/ext/'.$temp_extKey.'/')) { - $extensions[$temp_extKey] = array('type'=>'L', 'siteRelPath'=>'typo3conf/ext/'.$temp_extKey.'/', 'typo3RelPath'=>'../typo3conf/ext/'.$temp_extKey.'/'); + $extensions[$temp_extKey]=array('type'=>'L','siteRelPath'=>'typo3conf/ext/'.$temp_extKey.'/','typo3RelPath'=>'../typo3conf/ext/'.$temp_extKey.'/'); } elseif (@is_dir(PATH_site.TYPO3_mainDir.'ext/'.$temp_extKey.'/')) { - $extensions[$temp_extKey] = array('type'=>'G', 'siteRelPath'=>TYPO3_mainDir.'ext/'.$temp_extKey.'/', 'typo3RelPath'=>'ext/'.$temp_extKey.'/'); + $extensions[$temp_extKey]=array('type'=>'G','siteRelPath'=>TYPO3_mainDir.'ext/'.$temp_extKey.'/','typo3RelPath'=>'ext/'.$temp_extKey.'/'); } elseif (@is_dir(PATH_site.TYPO3_mainDir.'sysext/'.$temp_extKey.'/')) { - $extensions[$temp_extKey] = array('type'=>'S', 'siteRelPath'=>TYPO3_mainDir.'sysext/'.$temp_extKey.'/', 'typo3RelPath'=>'sysext/'.$temp_extKey.'/'); + $extensions[$temp_extKey]=array('type'=>'S','siteRelPath'=>TYPO3_mainDir.'sysext/'.$temp_extKey.'/','typo3RelPath'=>'sysext/'.$temp_extKey.'/'); } // If extension was found, check for reserved filenames: if (isset($extensions[$temp_extKey])) { foreach($files as $fName) { - $temp_filename = PATH_site.$extensions[$temp_extKey]['siteRelPath'].trim($fName); - if (is_array($extensions[$temp_extKey]) && @is_file($temp_filename)) { - $extensions[$temp_extKey][$fName] = $temp_filename; - } + $temp_filename = PATH_site.$extensions[$temp_extKey]['siteRelPath'].trim($fName); + if (is_array($extensions[$temp_extKey]) && @is_file($temp_filename)) { + $extensions[$temp_extKey][$fName]=$temp_filename; } } } + } unset($extensions['_CACHEFILE']); - // write cache? + + // write cache? if ($TYPO3_CONF_VARS['EXT']['extCache'] && @is_dir(PATH_site.TYPO3_mainDir.'sysext/') && @is_dir(PATH_site.TYPO3_mainDir.'ext/')) { // Must also find global and system extension directories to exist, otherwise caching cannot be allowed (since it is most likely a temporary server problem). This might fix a rare, unrepeatable bug where global/system extensions are not loaded resulting in fatal errors if that is cached! @@ -974,7 +978,7 @@ tt_content.'.$key.$prefix.' { if ($wrError) { $TYPO3_CONF_VARS['EXT']['extCache']=0; } else { - // Write cache files: + // Write cache files: $extensions = t3lib_extMgm::writeCacheFiles($extensions,$cacheFilePrefix); } }