55namespace FriendsOfTYPO3 \Crowdin ;
66
77use TYPO3 \CMS \Core \Configuration \ConfigurationManager ;
8+ use TYPO3 \CMS \Core \Information \Typo3Version ;
89use TYPO3 \CMS \Core \Utility \GeneralUtility ;
910
1011/**
1516 */
1617class Setup
1718{
19+ private readonly string $ overrideNamespace ;
20+
21+ public function __construct ()
22+ {
23+ $ typo3Version = (new Typo3Version ())->getMajorVersion ();
24+ if ($ typo3Version >= 14 ) {
25+ $ this ->overrideNamespace = 'FriendsOfTYPO3 \\Crowdin \\ViewHelpers \\Override \\V14 ' ;
26+ } else {
27+ $ this ->overrideNamespace = 'FriendsOfTYPO3 \\Crowdin \\ViewHelpers \\Override \\V12 ' ;
28+ }
29+ }
30+
1831 public function enable (): void
1932 {
2033 $ configurationManager = GeneralUtility::makeInstance (ConfigurationManager::class);
@@ -26,14 +39,15 @@ public function enable(): void
2639 $ changesToBeWritten = true ;
2740 }
2841
29- if (!in_array ('FriendsOfTYPO3 \\Crowdin \\ViewHelpers \\Override ' , $ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ] ?? [], true )) {
42+ $ changesToBeWritten |= $ this ->disableLegacyOverrides ($ localConfiguration );
43+ if (!in_array ($ this ->overrideNamespace , $ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ] ?? [], true )) {
3044 if (!in_array ('TYPO3 \\CMS \\Fluid \\ViewHelpers ' , $ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ] ?? [], true )) {
3145 $ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ][] = 'TYPO3 \\CMS \\Fluid \\ViewHelpers ' ;
3246 }
3347 if (!in_array ('TYPO3Fluid \\Fluid \\ViewHelpers ' , $ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ] ?? [], true )) {
3448 $ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ][] = 'TYPO3Fluid \\Fluid \\ViewHelpers ' ;
3549 }
36- $ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ][] = ' FriendsOfTYPO3 \\ Crowdin \\ ViewHelpers \\ Override ' ;
50+ $ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ][] = $ this -> overrideNamespace ;
3751 $ changesToBeWritten = true ;
3852 }
3953
@@ -47,14 +61,17 @@ public function disable(): void
4761 {
4862 $ configurationManager = GeneralUtility::makeInstance (ConfigurationManager::class);
4963 $ localConfiguration = $ configurationManager ->getLocalConfiguration ();
64+
5065 $ changesToBeWritten = false ;
5166 if (isset ($ localConfiguration ['SYS ' ]['localization ' ]['locales ' ]['user ' ]['t3 ' ])) {
5267 unset($ localConfiguration ['SYS ' ]['localization ' ]['locales ' ]['user ' ]['t3 ' ]);
5368 $ changesToBeWritten = true ;
5469 }
55- if (in_array ('FriendsOfTYPO3 \\Crowdin \\ViewHelpers \\Override ' , $ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ] ?? [], true )) {
70+
71+ $ changesToBeWritten |= $ this ->disableLegacyOverrides ($ localConfiguration );
72+ if (in_array ($ this ->overrideNamespace , $ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ] ?? [], true )) {
5673 foreach ($ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ] as $ k => $ v ) {
57- if ($ v === ' FriendsOfTYPO3 \\ Crowdin \\ ViewHelpers \\ Override ' ) {
74+ if ($ v === $ this -> overrideNamespace ) {
5875 unset($ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ][$ k ]);
5976 $ changesToBeWritten = true ;
6077 }
@@ -63,9 +80,38 @@ public function disable(): void
6380 unset($ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ]);
6481 }
6582 }
83+
6684 if ($ changesToBeWritten ) {
6785 $ configurationManager ->writeLocalConfiguration ($ localConfiguration );
6886 }
6987 }
7088
89+ /**
90+ * Disables the legacy overrides from the configuration.
91+ *
92+ * @param array $localConfiguration
93+ * @return bool
94+ * @todo can be removed once v4.0 is "largely" in use
95+ */
96+ private function disableLegacyOverrides (array &$ localConfiguration ): bool
97+ {
98+ $ legacyOverrideNamespaces = [
99+ // Version 3.x
100+ 'FriendsOfTYPO3 \\Crowdin \\ViewHelpers \\Override ' ,
101+ // Version 2.x or below
102+ 'GeorgRinger \\Crowdin \\ViewHelpers \\Override ' ,
103+ ];
104+ $ changesToBeWritten = false ;
105+ foreach ($ legacyOverrideNamespaces as $ legacyOverrideNamespace ) {
106+ if (in_array ($ legacyOverrideNamespace , $ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ] ?? [], true )) {
107+ foreach ($ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ] as $ k => $ v ) {
108+ if ($ v === $ legacyOverrideNamespace ) {
109+ unset($ localConfiguration ['SYS ' ]['fluid ' ]['namespaces ' ]['f ' ][$ k ]);
110+ $ changesToBeWritten = true ;
111+ }
112+ }
113+ }
114+ }
115+ return $ changesToBeWritten ;
116+ }
71117}
0 commit comments