he_get($key); if (NULL === $r) { $r = flag_read($flagid); $r and cache_set($key, $r, 300); } } $cache[$key] = $r ? $r : NULL; return $cache[$key]; } // 获取版块展示的属性 0表示首页 已格式化 function flag_forum_show($fid = 0) { $arrlist = flag_get($fid); if (empty($arrlist)) return NULL; foreach ($arrlist as $key => &$val) { if (empty($val['display'])) { unset($arrlist[$key]); } } return $arrlist; } //--------------------------kv + cache-------------------------- // 从缓存中获取版块下100个最新的flag 已格式化 $fid = 0 为首页 首页的都丢在$config['index_flags']和$config['index_flagstr'] $g_flag = FALSE; function flag_get($fid) { global $forumlist, $g_flag, $config; FALSE === $g_flag and $g_flag = website_get('flag'); if (isset($g_flag[$fid])) return $g_flag[$fid]; empty($g_flag) and $g_flag = array(); if (empty($g_flag[$fid])) { if (empty($fid)) { // 首页 $pagesize = $config['index_flags']; } else { // 版块 $forumlist = empty($forumlist) ? forum_find() : $forumlist; $pagesize = $forumlist[$fid]['flags']; } if (empty($pagesize)) return NULL; $g_flag[$fid] = flag_find($fid, 1, $pagesize); $g_flag[$fid] and flag_set($fid, $g_flag[$fid]); } return $g_flag[$fid]; } // set kv cache function flag_set($key, $val) { global $g_flag; FALSE === $g_flag and $g_flag = website_get('flag'); empty($g_flag) and $g_flag = array(); $g_flag[$key] = $val; return website_set('flag', $g_flag); } // 删除版块下的flag缓存 function flag_delete_cache($fid) { global $g_flag; FALSE === $g_flag and $g_flag = website_get('flag'); empty($g_flag) and $g_flag = array(); if (isset($g_flag[$fid])) { unset($g_flag[$fid]); website_set('flag', $g_flag); } return TRUE; } // 删除对应flagid的缓存 function flag_delete_cache_by_flagid($fid, $flagid) { global $g_flag; FALSE === $g_flag and $g_flag = website_get('flag'); empty($g_flag) and $g_flag = array(); if (isset($g_flag[$fid][$flagid])) { unset($g_flag[$fid][$flagid]); website_set('flag', $g_flag); } return TRUE; } ?>tpw_complete': // 重置密码 $pre .= $default_pre .= 'user_resetpw_complete.htm'; break; case 'user_comment': // 我的首页评论 $pre .= $default_pre .= 'user_comment.htm'; break; case 'single_page': // 单页 $pre .= $default_pre .= 'single_page.htm'; break; case 'search': // 搜索 $pre .= $default_pre .= 'search.htm'; break; case 'operate_sticky': // 置顶 $pre .= $default_pre .= 'operate_sticky.htm'; break; case 'operate_close': // 关闭 $pre .= $default_pre .= 'operate_close.htm'; break; case 'operate_delete': // 删除 $pre .= $default_pre .= 'operate_delete.htm'; break; case 'operate_move': // 移动 $pre .= $default_pre .= 'operate_move.htm'; break; case '404': $pre .= $default_pre .= '404.htm'; break; case 'read_404': $pre .= $default_pre .= 'read_404.htm'; break; case 'list_404': $pre .= $default_pre .= 'list_404.htm'; break; default: // 首页 $pre .= $default_pre .= theme_mode_pre(); break; } if ($config['theme']) { $conffile = APP_PATH . 'view/template/' . $config['theme'] . '/conf.json'; $json = is_file($conffile) ? xn_json_decode(file_get_contents($conffile)) : array(); } // 加载绑定ID安装风格 !empty($json['installed']) and $path_file = APP_PATH . 'view/template/' . $config['theme'] . '/htm/' . ($id ? $id . '_' : '') . $pre; // 加载安装风格 (empty($path_file) || !is_file($path_file)) and $path_file = APP_PATH . 'view/template/' . $config['theme'] . '/htm/' . $pre; // 主风格下可安装多个子风格 if (!empty($config['theme_child']) && is_array($config['theme_child'])) { foreach ($config['theme_child'] as $theme) { if (empty($theme) || is_array($theme)) continue; // 加载绑定ID安装风格 $path_file = APP_PATH . 'view/template/' . $theme . '/htm/' . ($id ? $id . '_' : '') . $pre; // 加载安装风格 !is_file($path_file) and $path_file = APP_PATH . 'view/template/' . $theme . '/htm/' . $pre; } } // 风格不存在加载适配端 !is_file($path_file) and $path_file = APP_PATH . ($dir ? 'plugin/' . $dir . '/view/htm/' : 'view/htm/') . $default_pre; return $path_file; } // 依据模式返回适配文件 function theme_mode_pre($type = 0) { global $config; // 网站模式 $mode = $config['setting']['website_mode']; $pre = ''; // 首页文件前缀 if (1 == $mode) { // 门户模式 $pre .= 2 == $type ? 'portal_category.htm' : 'portal.htm'; } elseif (2 == $mode) { // 扁平模式 $pre .= 2 == $type ? 'flat_category.htm' : 'flat.htm'; } else { // 自定义模式 $pre .= 2 == $type ? 'index_category.htm' : 'index.htm'; } return $pre; } ?>