/** * 更新页面缓存(纯静态和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']); } } }
} } } foreach ($_POST as $k => $v) { if ($k == 'WEB_ROOT_pre') { if (!empty($v) && $v[0] != '/') { $v = '/' . $v; } } $arrGWeb[$k] = $v; } $somecontent = '<?php' . "\n" . '$arrGWeb = ' . var_export($arrGWeb, true) . ';' . "\n" . '$arrGMeta = ' . var_export($arrGMeta, true) . ';' . "\n" . '?>'; if (!($handle = fopen($strFilename, 'w'))) { check::AlertExit("错误:不能打开文件 {$strFilename} !", -1); } // 将$somecontent写入到我们打开的文件中。 if (fwrite($handle, $somecontent) === FALSE) { check::AlertExit("错误:不能写入到文件 {$strFilename} !", -1); } fclose($handle); @set_time_limit(0); check::delTreeDirs('../..' . $arrTemp['cache_url'] . '/', false); check::delTreeDirs($arrTemp['cache_dir'], false); check::delTreeDirs($arrTemp['compile_dir'], false); check::Alert("成功地写入到文件 {$strFilename} !"); } // 输出到模板 $arrMOutput["smarty_assign"]['strNav'] = '网站信息设置管理'; $arrMOutput["template_file"] = "admin.html"; $arrMOutput["smarty_assign"]['MAIN'] = $arrGSmarty['admin_main_dir'] . 'siteset/systemset.htm'; $objWebInit->output($arrMOutput);
check::AlertExit("设定栏目非法,不允许操作!", -1); } } if (strpos($_GET['id'], './') !== false) { check::AlertExit("设定栏目非法,不允许操作!", -1); } @set_time_limit(0); if ($_GET['id'] == 'all') { check::delTreeDirs('../..' . $arrGWeb['cache_url'] . '/', false); //check::delTreeDirs($arrGSmarty['cache_dir'],false); //check::delTreeDirs($arrGSmarty['compile_dir'],false); } else { if (empty($arrGMeta[$_GET['id']]['cache'])) { check::AlertExit("设定栏目不支持纯静态页面生成,不允许操作!", -1); } check::delTreeDirs('../..' . $arrGWeb['cache_url'] . '/' . $_GET['id'] . '/', false); } if ($_GET['ac'] == 'del') { check::AlertExit("网站静态页面更新成功 !", -1); } else { if ($_GET['id'] == 'all') { foreach ($arrModuleDirs as $val) { if ($val['id'] == 'archives') { $arrInfoList = check::getAPI($val['id'], "getInfoList", "where 1^^0^0^id,type_title_english^^0"); } else { $arrInfoList = check::getAPI($val['id'], "getInfoList", "where pass=1^^0^0^id^^0"); } if (!empty($arrInfoList)) { foreach ($arrInfoList as $v) { if ($val['id'] == 'archives') { if (empty($v['type_title_english'])) {
/** * 后台管理栏目清空静态页面文件 * * @author Arthur(ArthurXF@gmail.com) * @copyright (c) 2006 by bizeway.com * @version $Id$ * @package ArthurXF * @subpackage admin */ require_once '../config/config.inc.php'; require_once '../checklogin.php'; $objWebInit = new ArthurXF(); //smarty参数 $objWebInit->arrGSmarty = $arrGSmarty; //访问权限检查 if (!$objWebInit->checkPopedomG($_SESSION['user_id'], 'seo')) { check::AlertExit('对不起,您没有权限访问此页', -1); } if ($_SERVER["REQUEST_METHOD"] == "POST") { @set_time_limit(0); check::delTreeDirs('../..' . $arrGWeb['cache_url'] . '/', false); check::delTreeDirs($arrGSmarty['cache_dir'], false); check::delTreeDirs($arrGSmarty['compile_dir'], false); check::AlertExit("网站静态页面更新成功 !", -1); } // 输出到模板 $arrMOutput["smarty_assign"]['strNav'] = '静态页面更新'; $arrMOutput["template_file"] = "admin.html"; $arrMOutput["smarty_assign"]['MAIN'] = $arrGSmarty['admin_main_dir'] . 'seo/web_update.htm'; $objWebInit->output($arrMOutput);
/** * 删除指定目录(或其下的所有子目录) * @author 肖飞 * @param string $ddir 指定目录 * @param bool $path 删除指定目录还是删除指定目录下的所有子目录 * @return void */ static function delTreeDirs($ddir, $path = true) { $handle = opendir($ddir); while ($file = readdir($handle)) { $bdir = $ddir . $file; if (@filetype($bdir) == 'dir') { if ($file != '.' && $file != '..') { if (!check::is_empty_dir($bdir)) { check::delTreeDirs($bdir . '/'); } else { if ($path) { @rmdir($bdir); } } } } else { @unlink($bdir); } } closedir($handle); if ($path) { @rmdir($ddir); } }