TYPO3 Forge: Issueshttp://forge.typo3.org/http://forge.typo3.org/themes/typo3_forge/favicon/favicon.png?17058661692022-08-11T09:53:24ZTYPO3 Forge
Redmine TYPO3 Core - Bug #98122 (Closed): Fix felogin variable name in TypoScript setuphttp://forge.typo3.org/issues/981222022-08-11T09:53:24ZAndré Buchmann
<p>Seems like the <code>showForgotPasswordLink</code> setting was renamed to <code>showForgotPassword</code> during the refactoring to fluid templates. In the TypoScript setup it's still <code>showForgotPasswordLink</code> and therefore the setting is not applied to the template.</p>
<p>I would keep the constant with the "Link" at the end <code>$styles.content.loginform.showForgotPasswordLink</code> as it is for compatibility.</p>
<p><a href="https://docs.typo3.org/c/typo3/cms-felogin/11.5/en-us/Configuration/Index.html#showforgotpassword" class="external">Documentation</a>: showForgotPassword<br /><a href="https://github.com/TYPO3/typo3/blob/56fb16033a9cb064a86163d5ea5f4fa6d457ec8b/typo3/sysext/felogin/Resources/Private/Templates/Login/Login.html#L29" class="external">Template</a>: showForgotPassword<br /><a href="https://github.com/TYPO3/typo3/blob/56fb16033a9cb064a86163d5ea5f4fa6d457ec8b/typo3/sysext/felogin/Configuration/FlexForms/Login.xml#L10" class="external">Flexform</a>: showForgotPassword<br /><a href="https://github.com/TYPO3/typo3/blob/56fb16033a9cb064a86163d5ea5f4fa6d457ec8b/typo3/sysext/felogin/Configuration/TypoScript/setup.typoscript#L14" class="external">TypoScript Setup</a>: showForgotPasswordLink</p> TYPO3 Core - Bug #97993 (Closed): RTE.default.preset not applied on bodytext field of custom cont...http://forge.typo3.org/issues/979932022-07-21T16:14:31ZAndré Buchmann
<pre>
RTE.default.preset = foo_default
</pre>
<p>While Upgrading from TYPO3 9 to 11 we noticed, that the custom RTE configuration is no longer applied to our custom content elements. The default textmedia element uses the custom RTE configuration as expected.<br />All described content elements use the same <code>tt_content.bodytext</code> field. The custom content elements are loading the default ext:rte_ckeditor config (<code>$GLOBALS['TYPO3_CONF_VARS']['RTE']['Presets']['default'] = 'EXT:rte_ckeditor/Configuration/RTE/Default.yaml';</code>).</p>
<p>Adding <code>RTE.config.tt_content.bodytext.preset = foo_default</code> applies the custom RTE config for the custom content elements. But til TYPO3 10 it was enough to define only the RTE.default.preset.</p>
<p>We followed the <a href="https://docs.typo3.org/c/typo3/cms-rte-ckeditor/main/en-us/Configuration/Examples.html" class="external">docs</a> to create the RTE configuration. And the config itself is not the problem.</p> TYPO3 Core - Bug #97616 (Closed): Bodytext of default Language shown in Translation on NULLhttp://forge.typo3.org/issues/976162022-05-12T11:43:50ZAndré Buchmann
<p><strong>Problem:</strong></p>
<p>Translated content elements are showing the bodytext content of the default language instead of nothing when value is <code>NULL</code> instead of empty string <code>''</code></p>
<p><strong>Short:</strong></p>
<ul>
<li>Language is set to "strict" mode in site configuration.</li>
<li>Content element (= ce) is translated using the connected mode.</li>
<li>Bodytext field value of translation is <code>NULL</code> instead of empty string <code>''</code></li>
<li>Bodytext field of default language has some content.</li>
</ul>
<hr />
<p><strong>How to reproduce?</strong></p>
<ol>
<li>Setup TYPO3 10/11/main with at least two languages. Use strict mode.</li>
<li>Create a ce "Header". </li>
<li>Then translate this ce (connected mode).</li>
<li>Edit the ce in the default language:
<ul>
<li>Switch type to "Text & Media" </li>
<li>Add some content to the bodytext field</li>
</ul></li>
</ol>
<p>Optional Steps:</p>
<ul>
<li>Change the translated ce also to "Text & Media" and save. But DON'T touch the bodytext field!</li>
<li>Check your database: Is the bodytext value <code>NULL</code> or <code>''</code></li>
</ul>
<p>When you create a textmedia directly or delete text from the bodytext with the RTE, the field will be saved as empty string.</p>
<p>The field is defined as <code>bodytext mediumtext,</code> in the <code>ext_tables.sql</code>. Therefore IMHO <code>NULL</code> and empty string <code>''</code> should behave the same way.</p>
<p>--</p>
<p>You find example data for a very basic setup attached (Site config + Dump: sys_template, pages & tt_content)</p> TYPO3 Core - Bug #97098 (Closed): Undefined array key warnings in HMENU & TMENUhttp://forge.typo3.org/issues/970982022-03-04T07:55:52ZAndré Buchmann
<p>(1/1) #1476107295 TYPO3\CMS\Core\Error\Exception<br />PHP Warning: Undefined array key "isSpacer" in /var/www/html/typo3/sysext/frontend/Classes/ContentObject/Menu/TextMenuContentObject.php line 79</p>
<p>Setup for testing:</p>
<p>LocalConfiguration:<br />displayErrors = 1<br />exceptionalErrors = 12290</p>
<p>Setup a rootpage and add the following Typoscript. Try to load the root page in the FE. No subpages needed.</p>
<p><strong>TMENU error:</strong><br /><pre>
lib.pageBreadcrumb = COA
lib.pageBreadcrumb.100 = HMENU
lib.pageBreadcrumb.100 {
special = rootline
special.range = 0|-0
1 = TMENU
1 {
minItems = 2
wrap = <nav class="page__breadcrumb"><div class="breadcrumb__inner" ><ul class="breadcrumb__list" >|</ul></div></nav>
NO {
wrapItemAndSub = <li class="breadcrumb__item first">|</li>|*|<li class="breadcrumb__item">|</li>|*|<li class="breadcrumb__item last">|</li>
stdWrap.replacement < lib.softhyphen.replacement
ATagParams = class="breadcrumb__link"
}
}
}
page = PAGE
page.10 < lib.pageBreadcrumb
page.config.contentObjectExceptionHandler = 0
</pre></p>
<p><strong>HMENU Error</strong><br /><pre>
lib.pageBreadcrumb = COA
lib.pageBreadcrumb.100 = HMENU
lib.pageBreadcrumb.100 {
special = rootline
special.range = 0|-0
}
page = PAGE
page.10 < lib.pageBreadcrumb
page.config.contentObjectExceptionHandler = 0
</pre></p> TYPO3 Core - Bug #97095 (Closed): Undefined array key "class" in Html/HtmlParserhttp://forge.typo3.org/issues/970952022-03-03T16:35:47ZAndré Buchmann
<p>System: php 8.1 and TYPO3 main + 11.5.7</p>
<p>Use custom lib.parseFunc_RTE:</p>
<pre>
# Add default class to ul list
lib.parseFunc_RTE.externalBlocks.ul.stdWrap{
HTMLparser = 1
HTMLparser {
tags.ul.fixAttrib.class {
always = 1
list = ce-bullets
}
keepNonMatchedTags = 1
}
}
</pre>
<p>Error in FE when rendering an RTE Field with a ul/li list</p>
<p>(1/1) #1476107295 TYPO3\CMS\Core\Error\Exception<br />PHP Warning: Undefined array key "class" in /var/www/html/public/typo3/sysext/core/Classes/Html/HtmlParser.php line 532</p> TYPO3 Core - Bug #97087 (Closed): GifBuilder throws warnings with php 8http://forge.typo3.org/issues/970872022-03-03T09:55:00ZAndré Buchmann
<p>The following two warnings are thrown with php 8.1 in the GifBuilder:</p>
<p>(1/1) #1476107295 TYPO3\CMS\Core\Error\Exception<br />PHP Warning: Undefined array key "_GIFBUILDER." in /var/www/html/typo3/sysext/frontend/Classes/Imaging/GifBuilder.php line 140</p>
<p>(1/1) #1476107295 TYPO3\CMS\Core\Error\Exception<br />PHP Warning: Undefined array key "mask." in /var/www/html/typo3/sysext/frontend/Classes/Imaging/GifBuilder.php line 215</p>
<p>How to test:</p>
<p>LocalConfiguration:<br />displayErrors = 1<br />exceptionalErrors = 12290</p>
<p>Typoscript Setup:</p>
<pre>
lib.test = IMAGE
lib.test {
file = GIFBUILDER
file {
XY = 1024,768
format = jpg
quality = 88
10 = IMAGE
10.file = fileadmin/backimage.jpg
15 = IMAGE
15.offset = 420,18
15.file = fileadmin/overlay.png
15.mask = fileadmin/mask.png
}
}
page = PAGE
page.10 < lib.test
page.config.contentObjectExceptionHandler = 0
</pre>
<p>You can download the files to test from the documentation:<br /><a class="external" href="https://docs.typo3.org/m/typo3/reference-typoscript/11.5/en-us/Gifbuilder/Examples.html">https://docs.typo3.org/m/typo3/reference-typoscript/11.5/en-us/Gifbuilder/Examples.html</a></p> TYPO3 Core - Bug #94397 (Closed): Translation Button is shown in connected mode if l10n_source di...http://forge.typo3.org/issues/943972021-06-22T09:29:06ZAndré Buchmann
<p>If I translate a content element (in the backend) not from the standard language but from a translation, it always shows the translation button. So the issue is with translating from a translation where the `l18n_parend` is not equal to `l10n_source`. (See more details here: <a class="issue tracker-1 status-8 priority-4 priority-default" title="Bug: Translation wizard of tt_content having l10n_source = 0 shows too many items (Under Review)" href="http://forge.typo3.org/issues/92937#note-3">#92937-3</a>)</p>
<p>Example translated with the TYPO3 backend translation modal:<br />EN -> DA -> DE = Translation button is shown<br />EN -> DA = No translation button is shown<br />EN -> DE = Also no translation button is shown</p>
<p>By clicking the button again the wizard opens, finds nothing to translate and it will circle endlessly in the last step.</p>
<p>Tested with TYPO3 10.4.17 & 11.2.dev</p>
<p><img src="http://forge.typo3.org/attachments/download/36135/clipboard-202106221058-9drz9.png" alt="" loading="lazy" /></p> TYPO3 Core - Bug #94248 (Closed): #94057 breaks site configuration in 11.3http://forge.typo3.org/issues/942482021-06-01T13:04:14ZAndré Buchmann
<p>The Site Configuration Module of current 11.3-dev branch doesn't load the languages correctly (see screenshot).<br />In 11.2.0 it's working. I tracked the issue down to the changes applied in <a class="issue tracker-4 status-5 priority-4 priority-default closed" title="Task: PHP 8.0 Acceptance Tests (Closed)" href="http://forge.typo3.org/issues/94057">#94057</a> (<a class="external" href="https://review.typo3.org/c/Packages/TYPO3.CMS/+/69255">https://review.typo3.org/c/Packages/TYPO3.CMS/+/69255</a>)</p>
<p>Currently running with php 7.4 an introduction package. Tried also with php 8.0 which shows the same result and a warning.</p>
<p><img src="http://forge.typo3.org/attachments/download/36109/Bildschirmfoto%202021-06-01%20um%2014.51.56.png" alt="" loading="lazy" /></p>
<p>php 8.0 warning:</p>
<p>PHP Warning<br />Core: Error handler (BE): PHP Warning: Undefined array key "uid" in /var/www/html/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaInlineExpandCollapseState.php line 73</p> TYPO3 Core - Bug #94247 (Closed): Wrong value in DefaultConfigurationDescription.yaml for mail fo...http://forge.typo3.org/issues/942472021-06-01T09:31:48ZAndré Buchmann
<p>In the "Configure Installation-Wide Options" window is an select for the <code>$GLOBALS['TYPO3_CONF_VARS']['MAIL']['format']</code> variable. <br />"Send emails only in plain text format" sets the value to <code>txt</code>. On trying to send the testmail with this setting, an error is thrown:</p>
<p>Could not deliver mail<br />Please verify $GLOBALS['TYPO3_CONF_VARS']['MAIL'][*] settings are valid. Error message: Setting FluidEmail->format() must be either "html", "plain" or "both", no other formats are currently supported</p>
<p>Latest TYPO3 10 and 11 versions having this issue.</p> TYPO3 Core - Bug #94160 (Closed): ExtensionComposerStatus breaks in non-composer modehttp://forge.typo3.org/issues/941602021-05-19T14:40:46ZAndré Buchmann
<p>After upgrading some non-composer instances to 10.4.16 the t3monitoring_client begins to throw an TypeError on the eID request:</p>
<pre>
(1/1) TypeError
Return value of TYPO3\CMS\Extensionmanager\Report\ExtensionComposerStatus::getRequest() must implement interface Psr\Http\Message\ServerRequestInterface, null returned
in /****/typo3/sysext/extensionmanager/Classes/Report/ExtensionComposerStatus.php line 114
</pre>
<p>I debugged this issue a bit. Here are my findings:</p>
<p>The method getRequest simply returns <code>$GLOBALS['TYPO3_REQUEST']</code>.</p>
<p>Composer based projects are working fine, they are returning an ServerRequest object:</p>
<p><img src="http://forge.typo3.org/attachments/download/36086/clipboard-202105191634-obp2o.png" alt="" loading="lazy" /></p>
<p>Non-composer based projects and also the TYPO3-CMS 10.4 branch are returning <code>null</code>:</p>
<p><img src="http://forge.typo3.org/attachments/download/36087/clipboard-202105191636-krce8.png" alt="" loading="lazy" /></p>
<p>Testet the output of the global at Line 114 in typo3/sysext/extensionmanager/Classes/Report/ExtensionComposerStatus.php while using the t3monitoring_client extension downloaded via TER<br /><a class="external" href="https://github.com/TYPO3/TYPO3.CMS/blob/10.4/typo3/sysext/extensionmanager/Classes/Report/ExtensionComposerStatus.php#L114">https://github.com/TYPO3/TYPO3.CMS/blob/10.4/typo3/sysext/extensionmanager/Classes/Report/ExtensionComposerStatus.php#L114</a></p>
<p>Seems strange to me that the glob var behaves differently depending on the composer mode.</p> TYPO3 Core - Bug #93989 (Closed): Global Sysfolders + Contents are not translatable anymore since...http://forge.typo3.org/issues/939892021-04-26T14:22:24ZAndré Buchmann
<p>For multitree instances we often used a global sysfolder to store some global informations (cookie services, subsidiaries, news,...). Up until TYPO3 9 the sysfolder and its contents could be translated if there were language records on pid 0.<br />Starting form TYPO3 10, the site configuration is checked also for available translations. As there is no site configuration for the sysfolder it won't be translatable anymore.</p>
<p>Please see attached screenshots which are showing the difference.</p> TYPO3 Core - Bug #92987 (New): Preview of page from docheader button shows root page when startti...http://forge.typo3.org/issues/929872020-12-04T12:04:26ZAndré Buchmann
<p><strong>Description:</strong></p>
<p>When the preview button in the docheader is pressed, not the actual site is shown but the root page. The preview button in the page details or in the page-tree context menu shows the selected page. Buttons on language columns also show the root page.</p>
<p>Failing buttos are red, working buttons are green:</p>
<p><img src="http://forge.typo3.org/attachments/download/35650/preview-page-docheader_not-working.png" alt="" loading="lazy" /></p>
<p><img src="http://forge.typo3.org/attachments/download/35651/preview-pagetree-contextmenu_works.png" alt="" loading="lazy" /></p>
<p><img src="http://forge.typo3.org/attachments/download/35649/preview-page-detail-translation_works.png" alt="" loading="lazy" /></p>
<p>Typo3 Version: 9.5.23 and 10.4.10</p>
<p><strong>To test this:</strong></p>
<p>1. create a page and set starttime to a future date.<br />2. click on preview button in docheader while in column/language view</p>
<p><strong>Expected result:</strong></p>
<p>See the page content of the selected / current page</p>
<p><strong>What i can see:</strong></p>
<p>The root page is shown with the parameter "?ADMCMD_simTime=123456789"</p> TYPO3 Core - Bug #87619 (Closed): Hardened ImageService throws error in ImageViewHelperhttp://forge.typo3.org/issues/876192019-02-01T15:58:39ZAndré Buchmann
<p>With the merge of <a class="external" href="https://review.typo3.org/#/c/59594/">https://review.typo3.org/#/c/59594/</a> and an ImageViewHelper which sends <code>null</code> to ImageService::getImage() following error is thrown:</p>
<pre>
Argument 1 passed to TYPO3\CMS\Extbase\Service\ImageService::getImage() must be of the type string, null given, called in /var/www/html/typo3/sysext/fluid/Classes/ViewHelpers/Uri/ImageViewHelper.php on line 112
</pre> TYPO3 Core - Bug #87095 (Closed): Robots.txt not reachable if base is not "/"http://forge.typo3.org/issues/870952018-12-07T10:07:58ZAndré Buchmann
<p>If you don't have any language with <code>base: /</code> configured, the static route of <code>robots.txt</code> is no reachable.</p>
<p>In the example below I have two languages configured. Every language is prefixed with two letter country code. So <code>http://intro.ddev.local/</code> is redirected to <code>http://intro.ddev.local/en/</code> as it is the default language. Exectly the behavior I like to have for all pages.</p>
<p>Now there is the robots.txt in routes which doesn't have any language prefix (as it needs to be in the docroot). If I try to open <code>http://intro.ddev.local/robots.txt</code> i get redirected to <code>http://intro.ddev.local/en/</code>. And <code>http://intro.ddev.local/en/robots.txt</code> throws an page not found error.<br />I added two other Text routes which are prefixed with language codes and they are reachable: <code>http://intro.ddev.local/en/mytext.txt</code> <code>http://intro.ddev.local/de/meintext.txt</code></p>
<pre><code class="yaml syntaxhl" data-language="yaml"><span class="na">rootPageId</span><span class="pi">:</span> <span class="m">1</span>
<span class="na">base</span><span class="pi">:</span> <span class="s1">'</span><span class="s">http://intro.ddev.local/'</span>
<span class="na">languages</span><span class="pi">:</span>
<span class="pi">-</span>
<span class="na">title</span><span class="pi">:</span> <span class="s">English</span>
<span class="na">enabled</span><span class="pi">:</span> <span class="kc">true</span>
<span class="na">languageId</span><span class="pi">:</span> <span class="s1">'</span><span class="s">0'</span>
<span class="na">base</span><span class="pi">:</span> <span class="s">/en/</span>
<span class="na">typo3Language</span><span class="pi">:</span> <span class="s">default</span>
<span class="na">locale</span><span class="pi">:</span> <span class="s">en_US.UTF-8</span>
<span class="na">iso-639-1</span><span class="pi">:</span> <span class="s">en</span>
<span class="na">navigationTitle</span><span class="pi">:</span> <span class="s">English</span>
<span class="na">hreflang</span><span class="pi">:</span> <span class="s">en-US</span>
<span class="na">direction</span><span class="pi">:</span> <span class="s1">'</span><span class="s">'</span>
<span class="na">flag</span><span class="pi">:</span> <span class="s">us</span>
<span class="pi">-</span>
<span class="na">title</span><span class="pi">:</span> <span class="s">German</span>
<span class="na">enabled</span><span class="pi">:</span> <span class="kc">true</span>
<span class="na">languageId</span><span class="pi">:</span> <span class="s1">'</span><span class="s">2'</span>
<span class="na">base</span><span class="pi">:</span> <span class="s">/de/</span>
<span class="na">typo3Language</span><span class="pi">:</span> <span class="s">de</span>
<span class="na">locale</span><span class="pi">:</span> <span class="s">de_DE</span>
<span class="na">iso-639-1</span><span class="pi">:</span> <span class="s">de</span>
<span class="na">navigationTitle</span><span class="pi">:</span> <span class="s">Deutsch</span>
<span class="na">hreflang</span><span class="pi">:</span> <span class="s">de-DE</span>
<span class="na">direction</span><span class="pi">:</span> <span class="s1">'</span><span class="s">'</span>
<span class="na">fallbackType</span><span class="pi">:</span> <span class="s">strict</span>
<span class="na">flag</span><span class="pi">:</span> <span class="s">de</span>
<span class="na">errorHandling</span><span class="pi">:</span> <span class="pi">{</span> <span class="pi">}</span>
<span class="na">routes</span><span class="pi">:</span>
<span class="pi">-</span>
<span class="na">route</span><span class="pi">:</span> <span class="s">robots.txt</span>
<span class="na">type</span><span class="pi">:</span> <span class="s">staticText</span>
<span class="na">content</span><span class="pi">:</span> <span class="s2">"</span><span class="s">User-agent:</span><span class="nv"> </span><span class="s">*</span><span class="se">\r\n</span><span class="s">Disallow:</span><span class="nv"> </span><span class="s">/typo3/</span><span class="se">\r\n</span><span class="s">Disallow:</span><span class="nv"> </span><span class="s">/typo3_src/</span><span class="se">\r\n</span><span class="s">Allow:</span><span class="nv"> </span><span class="s">/typo3/sysext/frontend/Resources/Public/*"</span>
<span class="pi">-</span>
<span class="na">route</span><span class="pi">:</span> <span class="s">en/mytext.txt</span>
<span class="na">type</span><span class="pi">:</span> <span class="s">staticText</span>
<span class="na">content</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Static</span><span class="nv"> </span><span class="s">text</span><span class="nv"> </span><span class="s">EN"</span>
<span class="pi">-</span>
<span class="na">route</span><span class="pi">:</span> <span class="s">de/meintext.txt</span>
<span class="na">type</span><span class="pi">:</span> <span class="s">staticText</span>
<span class="na">content</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Static</span><span class="nv"> </span><span class="s">text</span><span class="nv"> </span><span class="s">DE"</span>
</code></pre> TYPO3 Core - Bug #87067 (Closed): Add support for language -1 to TCA field type slughttp://forge.typo3.org/issues/870672018-12-04T08:58:28ZAndré Buchmann
<p>Records with a TCA field from type slug can't be set to language -1:</p>
<pre>
#1522960188 InvalidArgumentException
Language -1 does not exist on site my-site.
</pre>
<p>As language -1 means all languages, I think the default language can used as a fallback to make the record editable again.<br />I found two possible locations to fix this issue:</p>
<p><strong>A: Fix in InputSlugElement class directly for the slug field only</strong></p>
<p><code>typo3/sysext/backend/Classes/Form/Element/InputSlugElement.php</code> Line 225</p>
<pre><code class="php syntaxhl" data-language="php"><span class="k">protected</span> <span class="k">function</span> <span class="n">getPrefix</span><span class="p">(</span><span class="kt">SiteInterface</span> <span class="nv">$site</span><span class="p">,</span> <span class="kt">int</span> <span class="nv">$requestLanguageId</span> <span class="o">=</span> <span class="mi">0</span><span class="p">):</span> <span class="kt">string</span>
<span class="p">{</span>
<span class="c1">// original code</span>
<span class="nv">$language</span> <span class="o">=</span> <span class="nv">$site</span><span class="o">-></span><span class="nf">getLanguageById</span><span class="p">(</span><span class="nv">$requestLanguageId</span><span class="p">);</span>
<span class="c1">// proposed fix</span>
<span class="nv">$language</span> <span class="o">=</span> <span class="p">(</span><span class="nv">$requestLanguageId</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> <span class="o">?</span> <span class="nv">$site</span><span class="o">-></span><span class="nf">getDefaultLanguage</span><span class="p">()</span> <span class="o">:</span> <span class="nv">$site</span><span class="o">-></span><span class="nf">getLanguageById</span><span class="p">(</span><span class="nv">$requestLanguageId</span><span class="p">);</span>
<span class="nv">$base</span> <span class="o">=</span> <span class="nv">$language</span><span class="o">-></span><span class="nf">getBase</span><span class="p">();</span>
<span class="nv">$baseUrl</span> <span class="o">=</span> <span class="p">(</span><span class="n">string</span><span class="p">)</span><span class="nv">$base</span><span class="p">;</span>
<span class="nv">$baseUrl</span> <span class="o">=</span> <span class="nb">rtrim</span><span class="p">(</span><span class="nv">$baseUrl</span><span class="p">,</span> <span class="s1">'/'</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">empty</span><span class="p">(</span><span class="nv">$baseUrl</span><span class="p">)</span> <span class="o">&&</span> <span class="k">empty</span><span class="p">(</span><span class="nv">$base</span><span class="o">-></span><span class="nf">getScheme</span><span class="p">())</span> <span class="o">&&</span> <span class="nv">$base</span><span class="o">-></span><span class="nf">getHost</span><span class="p">()</span> <span class="o">!==</span> <span class="s1">''</span><span class="p">)</span> <span class="p">{</span>
<span class="nv">$baseUrl</span> <span class="o">=</span> <span class="s1">'http:'</span> <span class="mf">.</span> <span class="nv">$baseUrl</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nv">$baseUrl</span><span class="p">;</span>
<span class="p">}</span>
</code></pre>
<p><strong>B: Fix in Site class</strong></p>
<p>This is the function where the error is initially thrown. But as it is used on multiple locations I think it may breaks other things.</p>
<p><code>typo3/sysext/core/Classes/Site/Entity/Site.php</code> Line 219</p>
<pre><code class="php syntaxhl" data-language="php"><span class="k">public</span> <span class="k">function</span> <span class="n">getLanguageById</span><span class="p">(</span><span class="kt">int</span> <span class="nv">$languageId</span><span class="p">):</span> <span class="kt">SiteLanguage</span>
<span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="k">isset</span><span class="p">(</span><span class="nv">$this</span><span class="o">-></span><span class="n">languages</span><span class="p">[</span><span class="nv">$languageId</span><span class="p">]))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nv">$this</span><span class="o">-></span><span class="n">languages</span><span class="p">[</span><span class="nv">$languageId</span><span class="p">];</span>
<span class="p">}</span> <span class="k">elseif</span> <span class="p">(</span><span class="nv">$languageId</span> <span class="o">===</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// handle all languages -1</span>
<span class="k">return</span> <span class="nv">$this</span><span class="o">-></span><span class="nf">getDefaultLanguage</span><span class="p">();</span>
<span class="p">}</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nc">\InvalidArgumentException</span><span class="p">(</span>
<span class="s1">'Language '</span> <span class="mf">.</span> <span class="nv">$languageId</span> <span class="mf">.</span> <span class="s1">' does not exist on site '</span> <span class="mf">.</span> <span class="nv">$this</span><span class="o">-></span><span class="n">identifier</span> <span class="mf">.</span> <span class="s1">'.'</span><span class="p">,</span>
<span class="mi">1522960188</span>
<span class="p">);</span>
<span class="p">}</span>
</code></pre>
<p>I prefer solution A, but maybe some core developer can evaluate this?<br />Thank you!</p>