Index: branches/RC/core/kernel/nparser/nparser.php =================================================================== diff -u -N -r11214 -r11297 --- branches/RC/core/kernel/nparser/nparser.php (.../nparser.php) (revision 11214) +++ branches/RC/core/kernel/nparser/nparser.php (.../nparser.php) (revision 11297) @@ -56,11 +56,17 @@ } // saving compiled version (only when compilation was successful) - $compiled = fopen($pre_parsed['fname'], 'w'); - if (!fwrite($compiled, $this->Buffers[0])) { - trigger_error('Saving compiled template failed', E_USER_ERROR); + if (defined('SAFE_MODE') && SAFE_MODE) { // store cache files in database since can't save on filesystem + if (!isset($conn)) $conn =& $this->Application->GetADODBConnection(); + $conn->Query('REPLACE INTO '.TABLE_PREFIX.'Cache (VarName, Data, Cached) VALUES ('.$conn->qstr($pre_parsed['fname']).','.$conn->qstr($this->Buffers[0]).','.adodb_mktime().')'); } - fclose($compiled); + else { + $compiled = fopen($pre_parsed['fname'], 'w'); + if (!fwrite($compiled, $this->Buffers[0])) { + trigger_error('Saving compiled template failed', E_USER_ERROR); + } + fclose($compiled); + } return true; } @@ -325,11 +331,20 @@ ob_start(); $_parser =& $this; - if ($pre_parsed['mode'] == 'file') { - include($pre_parsed['fname']); + if (defined('SAFE_MODE') && SAFE_MODE) { // read cache files from database since can't save on filesystem + $conn =& $this->Application->GetADODBConnection(); + $cached = $conn->GetRow('SELECT * FROM '.TABLE_PREFIX.'Cache WHERE VarName = "'.$pre_parsed['fname'].'"'); + if ($cached !== false && $cached['Cached'] > filemtime($pre_parsed['tname'])) { + eval('?'.'>'.$cached['Data']); + } } else { - eval('?'.'>'.$pre_parsed['content']); + if ($pre_parsed['mode'] == 'file') { + include($pre_parsed['fname']); + } + else { + eval('?'.'>'.$pre_parsed['content']); + } } $output = ob_get_contents(); ob_end_clean();