[BUGFIX] Support plugins in namespaced extensions
[Packages/TYPO3.CMS.git] / typo3 / sysext / extbase / Classes / Utility / ExtensionUtility.php
index d42a2e1..8cbe7db 100644 (file)
@@ -26,9 +26,6 @@ namespace TYPO3\CMS\Extbase\Utility;
 /**
  * Utilities to manage plugins and  modules of an extension. Also useful to auto-generate the autoloader registry
  * file ext_autoload.php.
- *
- * @package Extbase
- * @subpackage Utility
  */
 class ExtensionUtility {
 
@@ -85,7 +82,7 @@ class ExtensionUtility {
                        $extensionName = substr($extensionName, $delimiterPosition + 1);
                }
                $extensionName = str_replace(' ', '', ucwords(str_replace('_', ' ', $extensionName)));
-               $pluginSignature = (strtolower($extensionName) . '_') . strtolower($pluginName);
+               $pluginSignature = strtolower($extensionName) . '_' . strtolower($pluginName);
                if (!is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName])) {
                        $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName] = array();
                }
@@ -95,7 +92,7 @@ class ExtensionUtility {
                                $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName]['controllers'][$controllerName]['nonCacheableActions'] = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $nonCacheableControllerActions[$controllerName]);
                        }
                }
-               $pluginTemplate = ('plugin.tx_' . strtolower($extensionName)) . ' {
+               $pluginTemplate = 'plugin.tx_' . strtolower($extensionName) . ' {
        settings {
        }
        persistence {
@@ -111,9 +108,9 @@ class ExtensionUtility {
                defaultPid =
        }
 }';
-               \TYPO3\CMS\Core\Extension\ExtensionManager::addTypoScript($extensionName, 'setup', (('
-# Setting ' . $extensionName) . ' plugin TypoScript
-') . $pluginTemplate);
+               \TYPO3\CMS\Core\Extension\ExtensionManager::addTypoScript($extensionName, 'setup', '
+# Setting ' . $extensionName . ' plugin TypoScript
+' . $pluginTemplate);
                switch ($pluginType) {
                case self::PLUGIN_TYPE_PLUGIN:
                        $pluginContent = trim('
@@ -138,12 +135,12 @@ tt_content.' . $pluginSignature . ' {
 }');
                        break;
                default:
-                       throw new \InvalidArgumentException(('The pluginType "' . $pluginType) . '" is not suported', 1289858856);
+                       throw new \InvalidArgumentException('The pluginType "' . $pluginType . '" is not suported', 1289858856);
                }
                $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName]['pluginType'] = $pluginType;
-               \TYPO3\CMS\Core\Extension\ExtensionManager::addTypoScript($extensionName, 'setup', (('
-# Setting ' . $extensionName) . ' plugin TypoScript
-') . $pluginContent, 43);
+               \TYPO3\CMS\Core\Extension\ExtensionManager::addTypoScript($extensionName, 'setup', '
+# Setting ' . $extensionName . ' plugin TypoScript
+' . $pluginContent, 43);
        }
 
        /**
@@ -164,8 +161,11 @@ tt_content.' . $pluginSignature . ' {
                if (empty($extensionName)) {
                        throw new \InvalidArgumentException('The extension name was invalid (must not be empty and must match /[A-Za-z][_A-Za-z0-9]/)', 1239891989);
                }
+               if (FALSE !== $delimiterPosition = strrpos($extensionName, '.')) {
+                       $extensionName = substr($extensionName, $delimiterPosition + 1);
+               }
                $extensionName = str_replace(' ', '', ucwords(str_replace('_', ' ', $extensionName)));
-               $pluginSignature = (strtolower($extensionName) . '_') . strtolower($pluginName);
+               $pluginSignature = strtolower($extensionName) . '_' . strtolower($pluginName);
                \TYPO3\CMS\Core\Extension\ExtensionManager::addPlugin(array($pluginTitle, $pluginSignature, $pluginIconPathAndFilename), $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName]['pluginType']);
        }
 
@@ -296,20 +296,20 @@ tt_content.' . $pluginSignature . ' {
                if ($errors) {
                        return $errors;
                }
-               $globalPrefix = ('$extensionClassesPath = TYPO3\\CMS\\Core\\Extension\\ExtensionManager::extPath(\'' . $extensionKey) . '\') . \'Classes/\';';
+               $globalPrefix = '$extensionClassesPath = TYPO3\\CMS\\Core\\Extension\\ExtensionManager::extPath(\'' . $extensionKey . '\') . \'Classes/\';';
                $errors = array();
                foreach ($classNameToFileMapping as $className => $fileName) {
                        if (!(strpos($className, 'tx_' . strtolower($extensionName)) === 0)) {
-                               $errors[] = (($className . ' does not start with Tx_') . $extensionName) . ' and was not added to the autoloader registry.';
+                               $errors[] = $className . ' does not start with Tx_' . $extensionName . ' and was not added to the autoloader registry.';
                                unset($classNameToFileMapping[$className]);
                        }
                }
                $classNameToFileMapping = array_merge($classNameToFileMapping, $additionalAutoloadClasses);
                $autoloadFileString = self::generateAutoloadPhpFileData($classNameToFileMapping, $globalPrefix);
                if (!@file_put_contents(($extensionPath . 'ext_autoload.php'), $autoloadFileString)) {
-                       $errors[] = ('<b>' . $extensionPath) . 'ext_autoload.php could not be written!</b>';
+                       $errors[] = '<b>' . $extensionPath . 'ext_autoload.php could not be written!</b>';
                }
-               $errors[] = ('Wrote the following data: <pre>' . htmlspecialchars($autoloadFileString)) . '</pre>';
+               $errors[] = 'Wrote the following data: <pre>' . htmlspecialchars($autoloadFileString) . '</pre>';
                return implode('<br />', $errors);
        }
 
@@ -325,12 +325,12 @@ tt_content.' . $pluginSignature . ' {
        protected function generateAutoloadPhpFileData($classNameToFileMapping, $globalPrefix = '') {
                $output = '<?php' . PHP_EOL;
                $output .= '// DO NOT CHANGE THIS FILE! It is automatically generated by TYPO3\\CMS\\Extbase\\Utility\\ExtensionUtility::createAutoloadRegistryForExtension.' . PHP_EOL;
-               $output .= ('// This file was generated on ' . date('Y-m-d H:i')) . PHP_EOL;
+               $output .= '// This file was generated on ' . date('Y-m-d H:i') . PHP_EOL;
                $output .= PHP_EOL;
                $output .= $globalPrefix . PHP_EOL;
                $output .= 'return array(' . PHP_EOL;
                foreach ($classNameToFileMapping as $className => $quotedFileName) {
-                       $output .= (((('        \'' . $className) . '\' => ') . $quotedFileName) . ',') . PHP_EOL;
+                       $output .= '    \'' . $className . '\' => ' . $quotedFileName . ',' . PHP_EOL;
                }
                $output .= ');' . PHP_EOL;
                $output .= '?>';
@@ -387,7 +387,7 @@ tt_content.' . $pluginSignature . ' {
                                $token = self::findToken($tokens, array(T_STRING), array(T_WHITESPACE, T_COMMENT, T_DOC_COMMENT));
                                if ($token === false) {
                                        // unexpected end of file or token: remove found names because of parse error
-                                       \TYPO3\CMS\Core\Utility\GeneralUtility::sysLog(('Parse error in "' . $filePath) . '".', 'Core', 2);
+                                       \TYPO3\CMS\Core\Utility\GeneralUtility::sysLog('Parse error in "' . $filePath . '".', 'Core', 2);
                                        $classNames = array();
                                        break;
                                }
@@ -511,4 +511,4 @@ tt_content.' . $pluginSignature . ' {
 }
 
 
-?>
\ No newline at end of file
+?>