Bug #87982

Insert Records now only inserts records, if in the same language or if sys_language_uid = -1 - up to 8LTS it inserted records independent of sys_language_uid

Added by Daxboeck no-lastname-given 8 months ago. Updated 5 months ago.

Status:
New
Priority:
Should have
Assignee:
-
Category:
Content Rendering
Start date:
2019-03-22
Due date:
% Done:

0%

TYPO3 Version:
9
PHP Version:
7.2
Tags:
Insert Records
Complexity:
Is Regression:
Yes
Sprint Focus:

Description

Dear Ladies and Gentlemen,

up to 8LTS, when selecting the "Insert Records" content element, TYPO3 just did show the inserted records on the target page without any language check.
with 9LTS, "Insert Records" performs a language check requiring the source content to be either of the same sys_language_uid or of -1.
It is my opionion that this breaks compatibility and that the language check in this case should be removed.

Next week I will investigate the core together with my developers to find a solution.

Best regards,

Patrick

History

#1 Updated by Daxboeck no-lastname-given 8 months ago

Dear Ladies and Gentlemen,

I found a fix:

--- RecordsContentObject.php-2019-03-22-dax 2019-03-22 08:57:14.250440251 0100
+
+ RecordsContentObject.php 2019-03-22 11:54:13.442445523 0100
@ -95,9 +95,9 @
// Versioning preview
$this->getPageRepository()->versionOL($val['table'], $row);
// Language overlay
- if (is_array($row)) {
- $row = $this->getPageRepository()->getLanguageOverlay($val['table'], $row);
- }
// if (is_array($row)) {
// $row = $this->getPageRepository()->getLanguageOverlay($val['table'], $row);
// }
}
// Might be unset during the overlay process
if (is_array($row)) {

The LanguageOverlay check in this case is unnecessary as the records are inserted by uid and the language check is also incompatible with 8LTS.
However I am currently testing in my upgrade testing site clone.

Have a nice weekend and best regards,

Patrick

#2 Updated by Benni Mack 7 months ago

Hello Patrick,

I now rechecked this with various v8 installations we have:

On L=0
- Only L=-1 or L=0 records are shown, if you have selected other translated records, they are not rendered.

On L=2 (greek e.g.)
- If you reference a content element with L=0, then the translation gets shown
- If you reference a content element with language that does not match the current language (e.g. L=3) then it does NOT show up.

So, the current 9.5.6 behaviour (see my previous) comment allows this setup as well.

#3 Updated by Benni Mack 7 months ago

  • Target version changed from next-patchlevel to Candidate for patchlevel

#4 Updated by Daxboeck no-lastname-given 5 months ago

Dear Benni,

In my opinion "Insert Records" does not need a sys_language_uid check.
If I want to insert a record intentionally of a different language, that check blocks it and it removes the option to do so for whatever reason.

But here an example: Assume I create an Address element which is in Language 0 in Latin characters and in Language 27 in Cyrillic Characters.
Now I have a site with English (sys_language_uid = 0), Ukrainian (sys_language_uid = 27) and Russian (sys_language_uid = 22) and then for my lazyness, I refer to the Latin version of the content element in the whole english site by "insert records", but for Ukrainian and Russian I use the same cyrillic version which is the Ukrainian version of that address.

For me the language check is unnecessary, as it gives no benefit at all.
Do you see a need to protect people from inserting records of another language ? Do you know a case ?

Alternatively, a configuration option could be introduced:
e.g. something like: insert_records.strict_language_check

For now I will keep my core patched to remove that check.

Best regards,

Patrick

Also available in: Atom PDF