%@page import="com.hanweb.common.util.NumberUtil"%>
<%@page import="com.hanweb.common.util.StringUtil"%> <%@page import="com.hanweb.jcms.util.SafeUtil"%>
<%@page import="com.hanweb.common.util.file.LocalFileUtil"%>
<%@page import="com.hanweb.common.util.mvc.Script"%>
<%@page contentType="text/html;charset=UTF-8" %>
<%@page import="com.hanweb.jcms.build.service.makepage.ModalFile"%>
<%@page import="com.hanweb.jcms.build.service.makeunit.ExtraModuleUnit"%>
<%@page import="com.hanweb.jcms.entity.Jcms_ModalobjectunitEntity"%>
<%@page import="com.hanweb.jcms.plugins.sitesearch.service.Jcms_Sitesearch_ModalBLF"%>
<%@page import="com.hanweb.jcms.service.website.Jcms_WebinfomationBLF"%>
<%@page import="com.hanweb.jcms.util.AccessUtil"%>
<%@page import="java.util.regex.Matcher"%>
<%@ page import="java.util.regex.Pattern" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.net.URLDecoder" %>
<%@ include file="config.jsp" %>
<%!
public boolean canAccess(String strPara) {
boolean bl = true;
if (strPara != null) {
strPara = strPara.toLowerCase();
if (strPara.contains("%") || strPara.contains("|") || strPara.contains("+")
|| strPara.contains("&") || strPara.contains("alert") || strPara.contains("script")
|| strPara.contains("\"") || strPara.contains("\'") || strPara.contains("<")
|| strPara.contains("set") || strPara.contains("exec") || strPara.contains("delete")
|| strPara.contains("update") || strPara.contains("declare") || strPara.contains("cast")) {
bl = false;
}
}
return bl;
}
public boolean isTimeIndex(String keyWord, String keyValue){
boolean bl = false;
if((StringUtil.equals(keyValue, "") || StringUtil.getString(keyValue).length()==0) && (StringUtil.equals(keyWord, "0") || StringUtil.equals(keyWord, "1")
|| StringUtil.equals(keyWord, "7") || StringUtil.equals(keyWord, "30") || StringUtil.equals(keyWord, "90") || StringUtil.equals(keyWord, "365"))){
bl = true;
}
return bl;
}
%>
<%
String jpageCss=""+
""+
"";
request.setCharacterEncoding("UTF-8");
Script script = Script.getInstanceOnly();
if(!AccessUtil.checkAccess(request)){ //阻止跨站点请求伪造
out.print(script.addScript("location.href='../../';").getScript());
return;
}
LocalFileUtil fileUtil = LocalFileUtil.getInstance();
//得到栏目IDs,可认是当前栏目ID也可以是ID的集合
String strColumnId = StringUtil.getString(SafeUtil.getSafeString(request.getParameter("columnid")));
int strWebId = NumberUtil.getInt(request.getParameter("webid"), 0);
String strClassWord =StringUtil.getString( SafeUtil.getSafeString(request.getParameter("classword")));
//查询的字段类型
String strKeyWord = StringUtil.getString(SafeUtil.getSafeString(request.getParameter("keyword")));
// if(!StringUtil.equals(strKeyWord, "vc_title") &&
// !StringUtil.equals(strKeyWord, "vc_keyword") &&
// !StringUtil.equals(strKeyWord, "vc_abs") &&
// !StringUtil.equals(strKeyWord, "vc_author") &&
// !StringUtil.equals(strKeyWord, "vc_source") &&
// !StringUtil.equals(strKeyWord, "vc_editor")){
// strKeyWord = "";
// }
//查询的关键字值
String strKeyValue = StringUtil.getString(SafeUtil.getSafeString(URLDecoder.decode(request.getParameter("keyvalue"), "UTF-8")));
//子栏目下信息类别id号
String loadsubid = StringUtil.getString(SafeUtil.getSafeString(request.getParameter("loadsubid")));
//模块单元id编号
String modalUnitId = StringUtil.getString(SafeUtil.getSafeString(request.getParameter("modalunitid")));
//当前页码
int nCurrentPage = NumberUtil.getInt(request.getParameter("currpage"), 1);
if( nCurrentPage < 1 ){
nCurrentPage = 1;
}
//得到网站域名
String strDomain = Jcms_WebinfomationBLF.modifyAndGetWebDomain("1", NumberUtil.getInt(strWebID));
//路径
String strSysPath = application.getRealPath("");
String strPath = strSysPath+"/jcms_files/jcms1/web"+strWebID +"/site/";
String strModulePath = fileUtil.getAbsolutePath("jcms_files/jcms1/web"+strWebID +"/site/module/sitesearch/");
String webtype = xmlFile.getContent("webtype", strModulePath+"config/config.xml");
String strUrl = "/";
if( webtype.trim().equals("2")){
strUrl = "/module/";
}
else{
strUrl = request.getContextPath() + "/jcms_files/jcms1/web"+strWebID+"/site/module/";
}
Jcms_Sitesearch_ModalBLF search = Jcms_Sitesearch_ModalBLF.getInstance().init(strAppID, NumberUtil.getInt(strWebID));
String strUnitPath = "";
if(modalUnitId == null || modalUnitId.equals("")){
strUnitPath = strModulePath + "config/unit.xml";
}else if(NumberUtil.getInt(modalUnitId) > 0){
strUnitPath = strModulePath + "config/unit_" + modalUnitId + ".xml";
}else{
out.println("模块单元id不正确");
return;
}
Jcms_ModalobjectunitEntity unitEntity = search.getUnitInfo(strUnitPath);
/*得到模板实例的ID*/
ExtraModuleUnit unit = ExtraModuleUnit.getInstance().init("1", NumberUtil.getInt(strWebID));
int nModalObjectID = NumberUtil.getInt(xmlFile.getContent( "sub_moduleid", strUnitPath ));
String strModalHtml = "";
String strImgPath = "";
String defaultModalHtml = "";
ModalFile mfile = ModalFile.getInstance().init("1");
if(nModalObjectID > 0){
mfile.setWebID( NumberUtil.getInt(strWebID));
mfile.setSysPath();
java.util.Hashtable htReturn = mfile.getModalHTML(nModalObjectID);
if( htReturn != null && htReturn.size()>0 ){
strModalHtml = htReturn.get("modalHTML").toString(); //板板文件
strImgPath = htReturn.get("imagePath").toString(); //图片路径
// 替换路径
strModalHtml = mfile.replaceImagePath(strModalHtml);
}
}else{
//默认模板读取
defaultModalHtml = strModulePath + "html/sitesearch.html";
strImgPath = strModulePath + "html/";
String strCssPath = strModulePath + "html/";
// 读取模板实例源文件
String strHTML = fileUtil.readFileToString(defaultModalHtml, "UTF-8");
strModalHtml = StringUtil.getString(strHTML);
//copy模板图片
mfile.copyImageFile(strImgPath, strModulePath + "images/", strModalHtml);
mfile.copyImageFile(strCssPath, strModulePath + "css/", strModalHtml);
}
long time = System.currentTimeMillis();
//得到每页显示的记录数
int nRow = unitEntity.getI_row();
int nCol = unitEntity.getI_col();
int nPageCount = nRow * nCol; //每页显示记录数
//得到总记录数
int nTotalCount = 0;
if("0".equals(strColumnId) || "".equals(strColumnId)){
if(isTimeIndex(strKeyWord, strKeyValue)){
nTotalCount = search.getSiteTotalCountByTime1(strColumnId, strClassWord, strKeyWord, loadsubid, strWebId);
}else{
nTotalCount = search.getSiteTotalCount1(strColumnId,strClassWord, strKeyWord, strKeyValue, loadsubid ,strWebId);
}
}else{
if(isTimeIndex(strKeyWord, strKeyValue)){
nTotalCount = search.getSiteTotalCountByTime2(strColumnId, strClassWord, strKeyWord, loadsubid);
}else{
nTotalCount = search.getSiteTotalCount2(strColumnId,strClassWord, strKeyWord, strKeyValue, loadsubid);
}
}
//得到总页数
int nTotalPage = nTotalCount / nPageCount;
if( nTotalCount % nPageCount != 0 ){
nTotalPage += 1;
}
if( nCurrentPage > nTotalPage ){
nCurrentPage = nTotalPage;
}
int nMin = (nCurrentPage-1) * nPageCount;
int nMax = nCurrentPage * nPageCount;
unit.setUnitInfo( unitEntity );
unit.setModalUnitID( ""+nModalObjectID );
unit.setAbsolutePath( strPath );
strDomain = Jcms_WebinfomationBLF.getInstance().fixDomain(strDomain);
if(!strDomain.endsWith("/")){
strDomain = strDomain + "/";
}
unit.setPath(strDomain);
//判断是否要高亮显示
String c_view = search.get_c_view();
boolean viewFlag = false;
if( c_view.trim().equals("1") && strKeyValue.trim().length() > 0 ){
viewFlag = true;
}
String strContent = "";
if(nTotalCount > 0){
if("0".equals(strColumnId) || "".equals(strColumnId)){
if(isTimeIndex(strKeyWord, strKeyValue)){
strContent = unit.getSiteSubjectLinkByTime(strColumnId, strClassWord, strKeyWord,strKeyValue,
nMin, nMax, viewFlag, loadsubid, unitEntity, strWebId+"");
}else{
strContent = unit.getSiteSubjectLink(strColumnId, strClassWord, strKeyWord, strKeyValue,
nMin, nMax, viewFlag, loadsubid, unitEntity, strWebId+"");
}
}else{
if(isTimeIndex(strKeyWord, strKeyValue)){
strContent = unit.getSiteSubjectLinkByTime(strColumnId, strClassWord, strKeyWord, strKeyValue,
nMin, nMax, viewFlag, loadsubid, unitEntity);
}else{
strContent = unit.getSiteSubjectLink(strColumnId, strClassWord, strKeyWord, strKeyValue,
nMin, nMax, viewFlag, loadsubid, unitEntity);
}
}
}
//模块的访问路径
String strModule = strUrl+ "sitesearch/index.jsp?classword=" + strClassWord
+ "&keyword=" + strKeyWord + "&columnid=" + strColumnId+"&webid="+strWebId+"&modalunitid="+modalUnitId;;
//得到检索的表单
String strSearchForm = search.getSearchModuleForm(strModule, strKeyValue);
// request,总记录,每页记录数,当前页码.表格样式,页码的hidden值
//页码的hidden值
String strHidden = "\n"
+ " \n"
+ ""
+ ""
+ ""
+ "";
String urlPage = "./index.jsp?keyword=" + strKeyWord + "&columnid=" + strColumnId + "&keyvalue=" + URLEncoder.encode(strKeyValue, "utf-8")+"&webid="+strWebId+"&modalunitid="+modalUnitId;
String strPages = search.getPaginationView(urlPage, nTotalCount, nPageCount, nCurrentPage, strHidden);
if("".equals(strContent)) {
strContent = "
没有发现任何记录";
}
time = System.currentTimeMillis() - time;
String cssstyle = "";
int endRecord = nPageCount * nCurrentPage;
if(endRecord > nTotalCount){
endRecord = nTotalCount;
}
int indexStartNum = nPageCount * (nCurrentPage - 1) + 1;
if(indexStartNum < 0){
indexStartNum = 0;
}
StringBuffer searchTip = new StringBuffer(cssstyle)
.append("")
.append("")
.append("搜索:").append(strKeyValue).append(" | ")
.append("共有 ").append(nTotalCount)
.append(" 条结果,这是 ").append(indexStartNum).append(" - ").append(endRecord)
.append(" 条。 | ")
.append("
")
.append("
");
strContent = strContent + "
" + searchTip.toString() + "
" + strPages;
//内外网路径判断
String strConfPath = strModulePath + "config/config.xml";
String strWebType = xmlFile.getContent("webtype", strConfPath); //获取内外网的标识
strWebType = strWebType == null ? "1" : strWebType;
String strAppPath = xmlFile.getContent("web_in_servername", strConfPath);
strAppPath = strAppPath == null ? "jcms" : strAppPath;
String strReplace = "/"+strAppPath+"/jcms_files/jcms1"+ "/web"+strWebID+"/site/";
if(strWebType.trim().equals("2")) { //外网
strContent = StringUtil.replace(strContent, strReplace , "/");
}
String regEx = "";
Pattern p1 = Pattern.compile(regEx);
Matcher m1 = p1.matcher(strModalHtml);
String tag1 = "";
if( strModalHtml.trim().length()> 0 ){
if(m1.find()){
tag1 = m1.group(); //标签和内容
strModalHtml = strModalHtml.replaceFirst(tag1,jpageCss);
}else{
strModalHtml =jpageCss+strModalHtml;
}
}else{
strContent =jpageCss+strContent;
}
if( strModalHtml.trim().length()> 0 ){
strModalHtml = unit.replaceUnitTag("站内检索表单",strModalHtml,strSearchForm);
strModalHtml = unit.replaceUnitTag("站内检索",strModalHtml,strContent);
out.println(strModalHtml);
}else{
strContent = StringUtil.replace(strContent,"\"","\\\"");
strContent = StringUtil.removeEnter(strContent);
String strAlter = " var content=\""+strContent+"\";";
strAlter += " document.write(content);";
out.println(script.addScript(strAlter).getScript());
}
%>