* Fixed bug #6547: Allow ignoring of the the no_cache parameter using [FE][disableNoC...
authorMichael Stucki <michael.stucki@typo3.org>
Mon, 3 Mar 2008 17:10:52 +0000 (17:10 +0000)
committerMichael Stucki <michael.stucki@typo3.org>
Mon, 3 Mar 2008 17:10:52 +0000 (17:10 +0000)
* Report to t3lib_div::sysLog() whenever ->set_no_cache() is called

git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@3373 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/config_default.php
typo3/sysext/cms/tslib/class.tslib_fe.php

index f1ede82..33b638a 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -22,6 +22,8 @@
                - Convert various blob-fields (which are non-blobs actually) to text variants (exeptions are serialized fields and fields that contain XML data)
        * Fix DB field types for static_tsconfig_help
        * Fixed bug #7735: EM import was broken because of empty variable
+       * Fixed bug #6547: Allow ignoring of the the no_cache parameter using $TYPO3_CONF_VARS[FE][disableNoCacheParameter] (of course, this is disabled by default)
+       * Report to t3lib_div::sysLog() whenever $TSFE->set_no_cache() is called
 
 2008-03-03  Ingo Renner  <ingo@typo3.org>
 
index 7b44dd7..3e33b52 100755 (executable)
@@ -247,6 +247,7 @@ $TYPO3_CONF_VARS = Array(
                'hidePagesIfNotTranslatedByDefault' => FALSE,   // If TRUE, pages that has no translation will be hidden by default. Basically this will inverse the effect of the page localization setting "Hide page if no translation for current language exists" to "Show page even if no translation exists"
                'eID_include' => array(),                               // Array of key/value pairs where key is "tx_[ext]_[optional suffix]" and value is relative filename of class to include. Key is used as "?eID=" for index_ts.php to include the code file which renders the page from that point. (Useful for functionality that requires a low initialization footprint, eg. frontend ajax applications)
                'pageCacheToExternalFiles' => FALSE,    // If set, page cache entries will be stored in typo3temp/cache_pages/ab/ instead of the database. Still, "cache_pages" will be filled in database but the "HTML" field will be empty. When the cache is flushed the files in cache_pages/ab/ will not be flush - you will have to garbage clean manually once in a while.
+               'disableNoCacheParameter' => false,                             // Boolean. If set, the no_cache request parameter will become ineffective. This is currently still an experimental feature and will require a website only with plugins that don't use this parameter. However, using "&no_cache=1" should be avoided anyway because there are better ways to disable caching for a certain part of the website (see COA_INT/USER_INT documentation in TSref).
                'workspacePreviewLogoutTemplate' => '', // If set, points to an HTML file relative to the TYPO3_site root which will be read and outputted as template for this message. Example: fileadmin/templates/template_workspace_preview_logout.html. Inside you can put the marker %1$s to insert the URL to go back to. Use this in <a href="%1$s">Go back...</a> links
                'XCLASS' => Array(),                                    // See 'Inside TYPO3' document for more information.
        ),
index 490b1dd..50a1765 100755 (executable)
@@ -431,7 +431,16 @@ require_once (PATH_t3lib.'class.t3lib_lock.php');
                $this->TYPO3_CONF_VARS = $TYPO3_CONF_VARS;
                $this->id = $id;
                $this->type = $type;
-               $this->no_cache = $no_cache ? 1 : 0;
+               if ($no_cache) {
+                       if ($this->TYPO3_CONF_VARS['FE']['disableNoCacheParameter']) {
+                               $warning = '&no_cache=1 has been ignored because $TYPO3_CONF_VARS[\'FE\'][\'disableNoCacheParameter\'] is set!';
+                               $GLOBALS['TT']->setTSlogMessage($warning,2);
+                       } else {
+                               $warning = '&no_cache=1 has been supplied, so caching is disabled! URL: "'.t3lib_div::getIndpEnv('TYPO3_REQUEST_URL').'"';
+                               $this->no_cache = $no_cache ? 1 : 0;
+                       }
+                       t3lib_div::sysLog($warning, 'cms', 2);
+               }
                $this->cHash = $cHash;
                $this->jumpurl = $jumpurl;
                $this->MP = $this->TYPO3_CONF_VARS['FE']['enable_mount_pids'] ? (string)$MP : '';
@@ -4252,7 +4261,31 @@ if (version == "n3") {
         * @return      void
         */
        function set_no_cache() {
-               $this->no_cache = 1;
+               if (function_exists('debug_backtrace')) {
+                       $trace = debug_backtrace();
+                               // This is a hack to work around ___FILE___ resolving symbolic links
+                       $PATH_site_real = str_replace('t3lib','',realpath(PATH_site.'t3lib'));
+                       $file = $trace[0]['file'];
+                       if (substr($file,0,strlen($PATH_site_real))===$PATH_site_real) {
+                               $file = str_replace($PATH_site_real,'',$file);
+                       } else {
+                               $file = str_replace(PATH_site,'',$file);
+                       }
+                       $line = $trace[0]['line'];
+                       $trigger = $file.' on line '.$line;
+               } else {
+                       $trigger = '[unknown]';
+               }
+
+               $warning = '$TSFE->set_no_cache() was triggered by '.$trigger.'. ';
+               if ($this->TYPO3_CONF_VARS['FE']['disableNoCacheParameter']) {
+                       $warning.= 'However $TYPO3_CONF_VARS[\'FE\'][\'disableNoCacheParameter\'] is set, so it will be ignored!';
+                       $GLOBALS['TT']->setTSlogMessage($warning,2);
+               } else {
+                       $warning.= 'Caching is disabled!';
+                       $this->no_cache = 1;
+               }
+               t3lib_div::sysLog($warning, 'cms', 2);
        }
 
        /**