76 $pluginSignature = strtolower($extensionName .
'_' . $pluginName);
77 $defaultPluginNamespace =
'tx_' . $pluginSignature;
79 if (!isset($frameworkConfiguration[
'view'][
'pluginNamespace']) || empty($frameworkConfiguration[
'view'][
'pluginNamespace'])) {
80 return $defaultPluginNamespace;
82 return $frameworkConfiguration[
'view'][
'pluginNamespace'];
102 if (!empty($frameworkConfiguration[
'extensionName']) && $extensionName === $frameworkConfiguration[
'extensionName']) {
103 if (isset($frameworkConfiguration[
'controllerConfiguration'][$controllerName]) && in_array($actionName, $frameworkConfiguration[
'controllerConfiguration'][$controllerName][
'actions'])) {
104 return $frameworkConfiguration[
'pluginName'];
107 $plugins =
$GLOBALS[
'TYPO3_CONF_VARS'][
'EXTCONF'][
'extbase'][
'extensions'][$extensionName][
'plugins'] ??
false;
112 foreach ($plugins as $pluginName => $pluginConfiguration) {
113 foreach ($pluginConfiguration[
'controllers'] ?? [] as $pluginControllerName => $pluginControllerActions) {
114 if (strtolower($pluginControllerName) !== strtolower($controllerName)) {
117 if (in_array($actionName, $pluginControllerActions[
'actions'])) {
118 $pluginNames[] = $pluginName;
122 if (count($pluginNames) > 1) {
123 throw new \TYPO3\CMS\Extbase\Exception(
'There is more than one plugin that can handle this request (Extension: "' . $extensionName .
'", Controller: "' . $controllerName .
'", action: "' . $actionName .
'"). Please specify "pluginName" argument', 1280825466);
125 return !empty($pluginNames) ? $pluginNames[0] :
null;
137 public function isActionCacheable($extensionName, $pluginName, $controllerName, $actionName)
140 if (isset($frameworkConfiguration[
'controllerConfiguration'][$controllerName]) && is_array($frameworkConfiguration[
'controllerConfiguration'][$controllerName]) && is_array($frameworkConfiguration[
'controllerConfiguration'][$controllerName][
'nonCacheableActions']) && in_array($actionName, $frameworkConfiguration[
'controllerConfiguration'][$controllerName][
'nonCacheableActions'])) {
161 if (!isset($frameworkConfiguration[
'view'][
'defaultPid']) || empty($frameworkConfiguration[
'view'][
'defaultPid'])) {
164 $pluginSignature = strtolower($extensionName .
'_' . $pluginName);
165 if ($frameworkConfiguration[
'view'][
'defaultPid'] ===
'auto') {
166 if (!array_key_exists($pluginSignature, $this->targetPidPluginCache)) {
167 $languageId = GeneralUtility::makeInstance(Context::class)->getPropertyFromAspect(
'language',
'id', 0);
168 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
169 ->getQueryBuilderForTable(
'tt_content');
170 $queryBuilder->setRestrictions(GeneralUtility::makeInstance(FrontendRestrictionContainer::class));
172 $pages = $queryBuilder
176 $queryBuilder->expr()->eq(
178 $queryBuilder->createNamedParameter($pluginSignature, \PDO::PARAM_STR)
180 $queryBuilder->expr()->eq(
182 $queryBuilder->createNamedParameter(
'list', \PDO::PARAM_STR)
184 $queryBuilder->expr()->eq(
186 $queryBuilder->createNamedParameter($languageId, \PDO::PARAM_INT)
193 if (count($pages) > 1) {
194 throw new \TYPO3\CMS\Extbase\Exception(
'There is more than one "' . $pluginSignature .
'" plugin in the current page tree. Please remove one plugin or set the TypoScript configuration "plugin.tx_' . $pluginSignature .
'.view.defaultPid" to a fixed page id', 1280773643);
196 $this->targetPidPluginCache[$pluginSignature] = !empty($pages) ? $pages[0][
'pid'] :
null;
198 return $this->targetPidPluginCache[$pluginSignature];
200 return (
int)$frameworkConfiguration[
'view'][
'defaultPid'];
212 $controllers =
$GLOBALS[
'TYPO3_CONF_VARS'][
'EXTCONF'][
'extbase'][
'extensions'][$extensionName][
'plugins'][$pluginName][
'controllers'] ??
false;
213 return $controllers ? key($controllers) : null;
226 $actions =
$GLOBALS[
'TYPO3_CONF_VARS'][
'EXTCONF'][
'extbase'][
'extensions'][$extensionName][
'plugins'][$pluginName][
'controllers'][$controllerName][
'actions'] ??
false;
227 return $actions ? current($actions) : null;
241 if (isset($settings[
'view'][
'formatToPageTypeMapping']) && is_array($settings[
'view'][
'formatToPageTypeMapping'])) {
242 trigger_error(
'Extension "' . $extensionName .
'": Defining settings.view.formatToPageTypeMapping will be removed in TYPO3 10. Move definition to view.formatToPageTypeMapping.', E_USER_DEPRECATED);
243 $formatToPageTypeMapping = $settings[
'view'][
'formatToPageTypeMapping'];
247 if (isset($settings[
'view'][
'formatToPageTypeMapping']) && is_array($settings[
'view'][
'formatToPageTypeMapping'])) {
250 return $formatToPageTypeMapping[$format] ?? 0;