[TASK] Reduce severity for set_no_cache() from core 20/17020/6
authorGeorg Ringer <georg.ringer@gmail.com>
Fri, 29 Mar 2013 07:48:34 +0000 (08:48 +0100)
committerJigal van Hemert <jigal@xs4all.nl>
Wed, 24 Apr 2013 18:42:52 +0000 (20:42 +0200)
Reduce the severity if an internal flag is set and the a backend user
is logged in.

Resolves: #43735
Related: #43506
Releases: 6.1, 6.0, 4.7, 4.5
Change-Id: Ifd78f67d38b87180ab60df05167974705ee90352
Reviewed-on: https://review.typo3.org/17020
Reviewed-by: Stefan Neufeind
Reviewed-by: Markus Klein
Reviewed-by: Jigal van Hemert
Tested-by: Jigal van Hemert
typo3/sysext/feedit/Classes/FrontendEditPanel.php
typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
typo3/sysext/frontend/Classes/View/AdminPanelView.php

index 81a292a..f94c2f8 100644 (file)
@@ -70,7 +70,7 @@ class FrontendEditPanel {
         */
        public function editPanel($content, array $conf, $currentRecord = '', array $dataArr = array(), $table = '', $allow = '', $newUID = 0, array $hiddenFields = array()) {
                // Special content is about to be shown, so the cache must be disabled.
-               $GLOBALS['TSFE']->set_no_cache('Frontend edit panel is shown');
+               $GLOBALS['TSFE']->set_no_cache('Frontend edit panel is shown', TRUE);
                $formName = 'TSFE_EDIT_FORM_' . substr($GLOBALS['TSFE']->uniqueHash(), 0, 4);
                $formTag = '<form name="' . $formName . '" id ="' . $formName . '" action="' . htmlspecialchars(\TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('REQUEST_URI')) . '" method="post" enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '" onsubmit="return TBE_EDITOR.checkSubmit(1);" style="margin: 0 0 0 0;">';
                $sortField = $GLOBALS['TCA'][$table]['ctrl']['sortby'];
@@ -186,7 +186,7 @@ class FrontendEditPanel {
         */
        public function editIcons($content, $params, array $conf = array(), $currentRecord = '', array $dataArr = array(), $addUrlParamStr = '', $table, $editUid, $fieldList) {
                // Special content is about to be shown, so the cache must be disabled.
-               $GLOBALS['TSFE']->set_no_cache('Display frontend edit icons');
+               $GLOBALS['TSFE']->set_no_cache('Display frontend edit icons', TRUE);
                $style = $conf['styleAttribute'] ? ' style="' . htmlspecialchars($conf['styleAttribute']) . '"' : '';
                $iconTitle = $this->cObj->stdWrap($conf['iconTitle'], $conf['iconTitle.']);
                $iconImg = $conf['iconImg'] ? $conf['iconImg'] : '<img  ' . \TYPO3\CMS\Backend\Utility\IconUtility::skinImg(TYPO3_mainDir, 'gfx/edit_fe.gif', 'width="11" height="12" border="0" align="top" ') . ' title="' . \TYPO3\CMS\Core\Utility\GeneralUtility::deHSCentities(htmlspecialchars($iconTitle)) . '"' . $style . ' class="frontEndEditIcons" alt="" />';
index 034a864..3095798 100644 (file)
@@ -3054,7 +3054,7 @@ class TypoScriptFrontendController {
                                // This is either the "Page is being generated" screen or it can be the final result.
                                // In any case we should not begin another rendering process also, so we silently disable caching and render the page ourselves and that's it.
                                // Actually $cachedRow contains content that we could show instead of rendering. Maybe we should do that to gain more performance but then we should set all the stuff done in $this->getFromCache()... For now we stick to this...
-                               $this->set_no_cache('Another process wrote into the cache since the beginning of the render process');
+                               $this->set_no_cache('Another process wrote into the cache since the beginning of the render process', TRUE);
                        } else {
                                $this->tempContent = TRUE;
                                // This flag shows that temporary content is put in the cache
@@ -3288,7 +3288,7 @@ class TypoScriptFrontendController {
        public function generatePage_postProcessing() {
                // This is to ensure, that the page is NOT cached if the no_cache parameter was set before the page was generated. This is a safety precaution, as it could have been unset by some script.
                if ($this->no_cacheBeforePageGen) {
-                       $this->set_no_cache('no_cache has been set before the page was generated - safety check');
+                       $this->set_no_cache('no_cache has been set before the page was generated - safety check', TRUE);
                }
                // Tidy up the code, if flag...
                if ($this->TYPO3_CONF_VARS['FE']['tidy_option'] == 'all') {
@@ -4382,10 +4382,17 @@ if (version == "n3") {
         * Sets the cache-flag to 1. Could be called from user-included php-files in order to ensure that a page is not cached.
         *
         * @param string $reason An optional reason to be written to the syslog.
+        * @param boolean $internal Whether the call is done from core itself (should only be used by core).
         * @return void
         * @todo Define visibility
         */
-       public function set_no_cache($reason = '') {
+       public function set_no_cache($reason = '', $internal = FALSE) {
+               if ($internal && isset($GLOBALS['BE_USER]'])) {
+                       $severity = \TYPO3\CMS\Core\Utility\GeneralUtility::SYSLOG_SEVERITY_NOTICE;
+               } else {
+                       $severity = \TYPO3\CMS\Core\Utility\GeneralUtility::SYSLOG_SEVERITY_WARNING;
+               }
+
                if (strlen($reason)) {
                        $warning = '$TSFE->set_no_cache() was triggered. Reason: ' . $reason . '.';
                } else {
@@ -4409,7 +4416,7 @@ if (version == "n3") {
                        $warning .= ' Caching is disabled!';
                        $this->disableCache();
                }
-               \TYPO3\CMS\Core\Utility\GeneralUtility::sysLog($warning, 'cms', \TYPO3\CMS\Core\Utility\GeneralUtility::SYSLOG_SEVERITY_WARNING);
+               \TYPO3\CMS\Core\Utility\GeneralUtility::sysLog($warning, 'cms', $severity);
        }
 
        /**
index 531c2f3..68140d6 100644 (file)
@@ -93,13 +93,11 @@ class AdminPanelView {
                        $this->ext_forcePreview = TRUE;
                }
                if ($GLOBALS['TSFE']->forceTemplateParsing) {
-                       $GLOBALS['TSFE']->set_no_cache('Admin Panel: Force template parsing');
-               }
-               if ($GLOBALS['TSFE']->displayEditIcons) {
-                       $GLOBALS['TSFE']->set_no_cache('Admin Panel: Display edit icons');
-               }
-               if ($GLOBALS['TSFE']->displayFieldEditIcons) {
-                       $GLOBALS['TSFE']->set_no_cache('Admin Panel: Display field edit icons');
+                       $GLOBALS['TSFE']->set_no_cache('Admin Panel: Force template parsing', TRUE);
+               } elseif ($GLOBALS['TSFE']->displayEditIcons) {
+                       $GLOBALS['TSFE']->set_no_cache('Admin Panel: Display edit icons', TRUE);
+               } elseif ($GLOBALS['TSFE']->displayFieldEditIcons) {
+                       $GLOBALS['TSFE']->set_no_cache('Admin Panel: Display field edit icons', TRUE);
                }
        }
 
@@ -163,7 +161,7 @@ class AdminPanelView {
                }
                $GLOBALS['TT']->LR = $this->extGetFeAdminValue('tsdebug', 'LR');
                if ($this->extGetFeAdminValue('cache', 'noCache')) {
-                       $GLOBALS['TSFE']->set_no_cache('Admin Panel: No Caching');
+                       $GLOBALS['TSFE']->set_no_cache('Admin Panel: No Caching', TRUE);
                }
        }