public function parse(&$f_pszViewType = null, $f_arrContext = array()) { $page = $GLOBALS['page']; $szSnippetPath = PROJECT_SNIPPETS . '/' . $this->implementation_id . '.php'; $bOutput = false; if ($page === $this) { $bOutput = true; header('Content-Type: ' . $this->content_type); header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $this->modified_time) . ' GMT', true); /*$bValidCache = isset($_SERVER['HTTP_IF_NONE_MATCH']) && md5_file($szSnippetPath) == $_SERVER['HTTP_IF_NONE_MATCH']; header('Cache-Control: max-age=3600'); header('Etag: '.md5_file($szSnippetPath)); header('Expires: '.gmdate('D, d M Y H:i:s', strtotime('+7 days', $this->modified_time)).' GMT');*/ } $tpl = new SmartyTpl($page, $this, 'snippets'); if (is_array($f_arrContext)) { foreach ($f_arrContext as $k => $v) { $tpl->assign($k, $v); } } $szOutput = $tpl->fetch($szSnippetPath); if (!$bOutput) { return $szOutput; } echo $szOutput; }
/** * 更新页面缓存(纯静态和smarty缓存) * @author 肖飞 * @param int $id 记录ID数或者单页数组的KEY * @param int $type_id 栏目类型ID 便于清除列表页的缓存 * @param array $arrMOutput 输出到smartyd的数组 * @return void */ public function updateCache($id, $type_id = 1, $arrMOutput = array()) { global $arrGWeb, $arrGCache; if ($arrGWeb['file_static']) { //生成静态页面 $intID = intval($id); $strDir = ceil($intID / $arrGCache['cache_filenum']); if (empty($intID)) { //单页栏目 $intID = $id; $strCacheFile = $arrGCache['cache_root'] . '/' . $id . $arrGWeb['file_suffix']; @unlink($arrGCache['cache_root'] . '/' . $id . 'tw' . $arrGWeb['file_suffix']); } else { //其他栏目 $strCacheFile = $arrGCache['cache_root'] . '-' . $strDir . '/' . $intID . $arrGWeb['file_suffix']; @unlink($arrGCache['cache_root'] . '-' . $strDir . '/' . $intID . 'tw' . $arrGWeb['file_suffix']); } $objCache = new cache($strCacheFile, $arrGCache['cache_time']); $objCache->cache_start(); $strContents = @file_get_contents('http://' . $_SERVER["HTTP_HOST"] . $arrGWeb['WEB_ROOT_pre'] . '/' . $arrGWeb['module_id'] . '/detail.php?id=' . $intID); if ($strContents) { echo $strContents; } $objCache->cache_end(false); } if ($arrGWeb['URL_static']) { //更新smarty缓存 $objSmarty = new SmartyTpl(); if (empty($arrMOutput['template_dir'])) { $objSmarty->setTemplateDir($this->arrGSmarty['template_dir']); } else { $objSmarty->setTemplateDir($arrMOutput['template_dir']); } $objSmarty->setCompileDir($this->arrGSmarty['compile_dir']); $objSmarty->setCacheDir($this->arrGSmarty['cache_dir']); $objSmarty->plugins_dir = $this->arrGSmarty['plugins_dir']; $arrMOutput['smarty_debug'] = ''; $arrMOutput['smarty_debug'] ? $objSmarty->compile_check = true : ''; $arrMOutput['smarty_debug'] ? $objSmarty->debugging = true : ''; $objSmarty->caching = $this->arrGSmarty['caching']; if ($objSmarty->caching) { $objSmarty->cache_lifetime = isset($this->arrGSmarty['cache_lifetime']) ? $this->arrGSmarty['cache_lifetime'] : 3600; $objSmarty->cache_modified_check = isset($this->arrGSmarty['cache_modified_check']) ? $this->arrGSmarty['cache_modified_check'] : false; } if (!empty($arrMOutput['smarty_assign'])) { while (list($key, $value) = each($arrMOutput['smarty_assign'])) { $objSmarty->assign($key, $value); } } if ($_SESSION['langset'] == 'zh_tw') { $objSmarty->autoload_filters = array('output' => array('langset')); } $objSmarty->clearCache($arrMOutput['template_file'], $_SESSION['langset'] . '/'); $objSmarty->clearCache($arrMOutput['template_file'], $_SESSION['langset'] . '/index.php'); $objSmarty->clearCache($arrMOutput['template_file'], $_SESSION['langset'] . '/' . $arrGWeb['module_id'] . '/'); $objSmarty->clearCache($arrMOutput['template_file'], $_SESSION['langset'] . '/' . $arrGWeb['module_id'] . '/index.php'); $objSmarty->clearCache($arrMOutput['template_file'], $_SESSION['langset'] . '/' . $arrGWeb['module_id'] . '/list/'); $objSmarty->clearCache($arrMOutput['template_file'], $_SESSION['langset'] . '/' . $arrGWeb['module_id'] . '/list.php'); $objSmarty->clearCache($arrMOutput['template_file'], $_SESSION['langset'] . '/' . $arrGWeb['module_id'] . '/list/type_id-' . $type_id . $arrGWeb['file_suffix']); $objSmarty->clearCache($arrMOutput['template_file'], $_SESSION['langset'] . '/' . $arrGWeb['module_id'] . '/list.php/type_id-' . $type_id . $arrGWeb['file_suffix']); $objSmarty->clearCache($arrMOutput['template_file'], $_SESSION['langset'] . '/' . $arrGWeb['module_id'] . '/list.php?type_id=' . $type_id); } if ($arrGWeb['PDO_CACHE']) { if (!empty($this->arrGPdoDB['PDO_CACHE_ROOT'])) { check::delTreeDirs($this->arrGPdoDB['PDO_CACHE_ROOT']); } } }
public final function parseView($f_objView) { $tpl = new SmartyTpl($this, $this, 'views'); $tpl->display(PROJECT_VIEWS . '/' . $f_objView->id . '.php'); }