Bug #82528

SYS_LASTCHANGED value not being correctly set if RESTORE_REGISTER is used

Added by Presedo Roberto almost 4 years ago. Updated 19 days ago.

Status:
New
Priority:
Must have
Assignee:
-
Category:
Frontend
Start date:
2017-09-21
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
10
PHP Version:
7.0
Tags:
Complexity:
medium
Is Regression:
Sprint Focus:

Description

Each time TYPO3 renders a content element, it stores its timestamp value in SYS_LASTCHANGED in the REGISTER, keeping it warm until the end of the page rendering process
-> in \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::lastChanged

and then saving then value in the DB.
-> in \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::setSysLastChanged

If you use RESTORE_REGISTER cObject in your TS, it will reset the Register, setting it back to the previous values
-> in \TYPO3\CMS\Frontend\ContentObject\RestoreRegisterContentObject::render

So if RESTORE_REGISTER is used in a TYPOSCRIPT, the registered SYS_LASTCHANGED value is reset before being stored in the DB, so SYS_LASTCHANGED updates are may never be saved in DB.

SYS_LASTCHANGED temp value should not be set in Register in order to avoid it being reset.


Files

RestoreRegisterContentObject.php (1.34 KB) RestoreRegisterContentObject.php Reindl Bernd, 2021-05-28 07:02

Related issues

Related to TYPO3 Core - Bug #90827: If you edit the page content element, the "Last Mod." does not change.Needs Feedback2020-03-25

Actions
#1

Updated by Susanne Moog almost 4 years ago

  • Category set to TypoScript
#2

Updated by Christian Forgács over 2 years ago

This bug still exists in TYPO3 9

#3

Updated by Fabian Schöner over 2 years ago

This bug also exists in TYPO3 7.6.34.

#4

Updated by Guillaume Germain over 1 year ago

  • Target version set to Candidate for patchlevel

This bug also exists in TYPO3 9.5.13.

There is a problem with the Introduction Package because the "bootstrap_package" extension uses "RESTORE_REGISTER" in lib.dynamicContent.

#5

Updated by Guillaume Germain over 1 year ago

  • Category changed from TypoScript to Frontend

It concerns the TypoScriptFrontendController class.

#6

Updated by Petra Neumann 11 months ago

The problem still exists in TYPO3 v10.

If any RESTORE_REGISTER is called, the temp value for SYS_LASTCHANGED is gone. Since ext:fluid_styled_content suggests using RESTORE_REGISTER for inserting content in the page template based on FLUIDTEMPLATE (see lib.dynamicContent), a lot of site-package extensions make use of it (like the bootstrap package). So in many TYPO3 installations SYS_LASTCHANGED is only updated for changes of the page properties but not the page content. This might be a problem, since the ContentObjectRenderer.php reads "The SYS_LASTCHANGED timestamp can be used by various caching/indexing applications to determine if the page has new content." - which will not work as intended then. Also, some sites use SYS_LASTCHANGED to show a "Last Updated on ...", even though it is not intended for that originally - this also fails with the value not being written correctly.

#7

Updated by Reindl Bernd 4 months ago

If 'SYS_LASTCHANGED' is stored outside the $register variable, it's no longer available via 'data = register:SYS_LASTCHANGED' in TypoScript.

Quick solution:

@
public function render($conf = []) {
$SYS_LASTCHANGED = isset($GLOBALS['TSFE']->register['SYS_LASTCHANGED']) ? $GLOBALS['TSFE']->register['SYS_LASTCHANGED'] : false;
$GLOBALS['TSFE']->register = array_pop($GLOBALS['TSFE']->registerStack);
if($SYS_LASTCHANGED !== false)
$GLOBALS['TSFE']->register['SYS_LASTCHANGED'] = $SYS_LASTCHANGED;
return '';
}
@

So 'SYS_LASTCHANGED' is still available in register but is not restored when RESTORE_REGISTER is called.

#8

Updated by Daniel Lorenz 4 months ago

  • TYPO3 Version changed from 8 to 10

We have been able to successfully test this change in a current TYPO3 v10.4.

#9

Updated by Simon Gilli about 2 months ago

  • Related to Bug #90827: If you edit the page content element, the "Last Mod." does not change. added
#10

Updated by Ulrich Mathes 19 days ago

Daniel Lorenz wrote in #note-8:

We have been able to successfully test this change in a current TYPO3 v10.4.

We have the same problem. Especially with indexed_search which does not recognize changes to the page content.

Quickfix successfully tested under 10.4

Also available in: Atom PDF