Index: branches/unlabeled/unlabeled-1.14.2/core/kernel/parser/template.php =================================================================== diff -u -r5566 -r5726 --- branches/unlabeled/unlabeled-1.14.2/core/kernel/parser/template.php (.../template.php) (revision 5566) +++ branches/unlabeled/unlabeled-1.14.2/core/kernel/parser/template.php (.../template.php) (revision 5726) @@ -175,6 +175,49 @@ $real_file = $this->GetRealFilename($filename); return file_exists($real_file); } + + + function GetPreParsed($template) + { + $real_name = $this->GetRealFilename($template); + $fname = $real_name.'.php'; + $fname = str_replace(FULL_PATH, FULL_PATH.'/kernel/cache', $fname); + + $tname = $real_name.'.tpl'; + if (defined('SAFE_MODE') && SAFE_MODE) { + $conn =& $this->Application->GetADODBConnection(); + $cached = $conn->GetRow('SELECT * FROM '.TABLE_PREFIX.'Cache WHERE VarName = "'.$fname.'"'); + if ($cached !== false && $cached['Cached'] > filemtime($tname)) { + return array('active' => 1, 'fname' => $fname, 'tname' => $tname, 'mode' => 'db', 'content' => $cached['Data']); + } + } + else { + if (file_exists($fname) && file_exists($tname) && filemtime($fname) > filemtime($tname)) { + return array('active' => 1, 'fname' => $fname, 'tname' => $tname, 'mode' => 'file'); + } + if (!file_exists($fname)) $this->CheckDir(dirname($fname)); //make sure to create directory if pre-parsed file does not exist + } + return array('active' => 0, 'fname' => $fname, 'tname' => $tname); + } + + function CheckDir($dir) + { + if (file_exists($dir)) { + return; + } + else { + $segments = explode('/', $dir); + $cur_path = ''; + foreach ($segments as $segment) { + // do not add leading / for windows paths (c:\...) + $cur_path .= preg_match('/^[a-zA-Z]{1}:/', $segment) ? $segment : '/'.$segment; + if (!file_exists($cur_path)) { + mkdir($cur_path); + } + } + } + } + }