using System;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.IO;
using System.Collections;
using System.Text.RegularExpressions;

namespace UUN
{
    /// <summary>
    /// 社区模板的贴子内容编译部分
    /// </summary>
    public class 编译扩展_社区模板_贴子内容 : 编译扩展接口
    {
        private SqlConnection 连接;
        private HttpContext HC;
        private 编译器 编译器;

        public 编译扩展_社区模板_贴子内容(SqlConnection 连接, HttpContext HC, 编译器 编译器)
        {
            this.连接 = 连接;
            this.HC = HC;
            this.编译器 = 编译器;
        }

        private int 贴子内容_一页显示记录数 = 0;
        private String 贴子内容_时间格式 = "yyyy-MM-dd HH:mm:ss";
        private String 贴子内容_范围ID;
        private String 贴子内容_查询字段 = "[ID],[作者ID],[所属版块],[附件内容],[投票选项]";
        private String 贴子内容_作者查询字段 = "[ID]";
        private void 增加查询字段(String 字段名称)
        {
            String[] 字段数组 = 字段名称.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < 字段数组.Length; i++)
                if (贴子内容_查询字段.IndexOf("[" + 字段数组[i] + "]") == -1)
                    贴子内容_查询字段 += ",[" + 字段数组[i] + "]";
        }
        private void 增加作者查询字段(String 字段名称)
        {
            String[] 字段数组 = 字段名称.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < 字段数组.Length; i++)
                if (贴子内容_作者查询字段.IndexOf("[" + 字段数组[i] + "]") == -1)
                    贴子内容_作者查询字段 += ",[" + 字段数组[i] + "]";
        }
        public string 开始执行代码()
        {
            if (编译器.是否WML网页)
                增加查询字段("模板_贴子内容");
            else
                增加查询字段("模板_3G贴子内容");
            编译器.方法库 += @"	private String 当前页面;
	//参数
	private int 所属版块;
	private int 排序;
	private bool 是否精华;
	private int 版块页码;
	private int 贴子ID;
	private int 是否余下全部;
	//其它
	private String 跳页表单项;
	private String _3G跳页表单项;
	private DataRow 论坛版块;
	private DataSet 论坛版主;
	private Hashtable 贴子作者;
	private Hashtable 贴子;
	private String 贴子正文;
	private String 查询字段;
	private String 作者查询字段;
	private String 范围ID;
	private String 时间格式;
	private String[] 附件数组;
	private String[] 投票数组;
	private int[] 投票数量数组;
	private int 投票总数;
	//列表分页
	private int 当前页;
	private int 总页数;
	private int 总记录数;
	private int 一页显示记录;
	private String 列表跳页(int 页码)
	{
		return Server.HtmlEncode(常用.处理地址(当前页面+""?BID=""+所属版块+""&border=""+排序+""&bpage=""+版块页码+""&bstate=""+是否精华+""&ID=""+贴子ID+""&page=""+页码,访问.用户[""标识""].ToString()));
	}
	private void 获取论坛版块()
	{
		DataSet 论坛版块=(DataSet)Application[""UUN_UUN3G_LunTanBanKuai""];
		for(int i=0;i<论坛版块.Tables[0].Rows.Count;i++)
		{
			DataRow 行=论坛版块.Tables[0].Rows[i];
			if(Convert.ToInt32(行[""ID""])==所属版块)
				this.论坛版块=行;
		}
	}
	private void 生成贴子内容()
	{
		SqlCommand 语句=new SqlCommand(""UPDATE [""+程序.数据表前缀+""社区_论坛_贴子] SET [点击数]=[点击数]+1 WHERE [是否删除]='0'""+(贴子ID==0?"""":"" AND [ID]=""+贴子ID),访问.连接);
		语句.ExecuteNonQuery();
		语句=new SqlCommand(""SELECT ""+查询字段+"" FROM [""+程序.数据表前缀+""社区_论坛_贴子] WHERE [是否删除]='0'""+(贴子ID==0?"""":"" AND [ID]=""+贴子ID),访问.连接);
		贴子=常用.SQL_获取(语句);
		if(贴子==null)
			throw new Exception(""贴子不存在"");
		贴子ID=Convert.ToInt32(贴子[""ID""]);
		所属版块=Convert.ToInt32(贴子[""所属版块""]);

		int 贴子模板=Convert.ToInt32(贴子[""模板_" + (编译器.是否WML网页?"":"3G")+ @"贴子内容""]);
		if(File.Exists(Server.MapPath(""~/Template/Club/""+程序.设置[""默认社区模板""]+""/Club_Aspx/""+贴子模板+"".aspx"")))
			Server.Transfer(""~/Template/Club/""+程序.设置[""默认社区模板""]+""/Club_Aspx/""+贴子模板+"".aspx"");
	}
	private void 获取贴子作者()
	{
		贴子作者=常用.SQL_获取(new SqlCommand(""SELECT ""+作者查询字段+"" FROM [""+程序.数据表前缀+""社区_用户_用户] WHERE [ID]=""+贴子[""作者ID""],访问.连接));
		if(贴子作者==null)
			throw new Exception(""贴子作者不存在"");
	}
	private void 获取论坛版主()
	{
		论坛版主=new DataSet();
		SqlCommand 语句=new SqlCommand(""SELECT * FROM [""+程序.数据表前缀+""社区_论坛_版主] WHERE [所属版块]=""+所属版块+"" ORDER BY [创建时间]"",访问.连接);
		SqlDataAdapter 填充=new SqlDataAdapter(语句);
		填充.Fill(论坛版主,""论坛版主"");
	}
	private bool 是否版主()
	{
		if(论坛版主==null)
			获取论坛版主();
		bool 返回值=false;
		for(int i=0;i<论坛版主.Tables[0].Rows.Count;i++)
			if(Convert.ToInt32(论坛版主.Tables[0].Rows[i][""版主ID""])==Convert.ToInt32(访问.用户[""ID""]))
				返回值=true;
		return 返回值;
	}
	private bool 是否允许回贴()
	{
		if(Convert.ToBoolean(贴子[""是否锁定""]))
			return false;
		switch(Convert.ToInt32(论坛版块[""回贴权限""]))
		{
			case 0:
				return true;
			case 1:
				return 访问.用户[""用户类型""].ToString()==""会员"";
			default:
				return 是否版主();
		}
	}
	private void 应用版块设置()
	{
		if(!Convert.ToBoolean(论坛版块[""版块状态""]))
			throw new Exception(论坛版块[""禁止访问提示""].ToString());
		switch(Convert.ToInt32(论坛版块[""访问权限""]))
		{
			case 0:
				break;
			case 1:
				访问.验证会员();
				break;
			default:
				if(!是否版主())
					throw new Exception(""此版块只允许版主访问"");
				break;
		}
	}
	private int 获取票数(String 投票项)
	{
		SqlCommand 语句=new SqlCommand(""SELECT COUNT(ID) FROM [""+程序.数据表前缀+""其它_投票] WHERE [内容类型]='贴子' AND [内容ID]=""+贴子ID+"" AND [投票项]=@投票项"",访问.连接);
		语句.Parameters.Add(""@投票项"",SqlDbType.NVarChar).Value=投票项;
		return Convert.ToInt32(语句.ExecuteScalar());
	}
	private void 生成投票数量()
	{
		投票数量数组=new int[投票数组.Length];
		for(int i=0;i<投票数组.Length;i++)
		{
			int 票数=获取票数(投票数组[i]);
			投票数量数组[i]=票数;
			投票总数+=票数;
		}
	}
	private void 生成贴子正文()
	{
		当前页=Convert.ToInt32(Request.QueryString[""page""]);
		String 贴子正文内容=File.ReadAllText(Server.MapPath(程序.安装位置+""Data/DT_TieZhi/""+(贴子ID/500)+""/""+贴子ID+"".txt""),Encoding.UTF8);
		总记录数=贴子正文内容.Length;
		总页数=常用.计算总页数(总记录数,一页显示记录);
		当前页=常用.计算当前页(总页数,当前页);
		贴子正文=常用.获取文章分页内容(贴子正文内容,当前页,总页数,一页显示记录,是否余下全部==1);
	}
	private String 生成余下全部地址()
	{
		return Server.HtmlEncode(常用.处理地址(当前页面+""?BID=""+所属版块+""&border=""+排序+""&bpage=""+版块页码+""&bstate=""+是否精华+""&ID=""+贴子ID+""&page=""+(当前页+1)+""&yx=1"",访问.用户[""标识""].ToString()));
	}
";
            String 返回值 = "";
            返回值 += @"	贴子ID=Convert.ToInt32(Request.QueryString[""ID""]);
	排序=Convert.ToInt32(Request.QueryString[""border""]);
	是否精华=Convert.ToBoolean(Request.QueryString[""bstate""]);
	版块页码=Convert.ToInt32(Request.QueryString[""bpage""]);
	是否余下全部=Convert.ToInt32(Request.QueryString[""yx""]);
	一页显示记录=获取一页显示记录数();
	时间格式=获取时间格式();
	范围ID=获取范围ID();
	查询字段=获取查询字段();
	作者查询字段=获取作者查询字段();
	生成贴子内容();
	当前页面=程序.安装位置+""Club/" + (编译器.是否WML网页?"":"3G_")+ @"Topic.aspx"";
	获取论坛版块();
	获取贴子作者();
	附件数组=贴子[""附件内容""].ToString().Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries);
	投票数组=贴子[""投票选项""].ToString().Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries);
	生成投票数量();
	跳页表单项=""<postfield name=\""border\"" value=\""""+排序+""\"" />""+
		""<postfield name=\""bpage\"" value=\""""+版块页码+""\"" />""+
		""<postfield name=\""BID\"" value=\""""+所属版块+""\"" />""+
		""<postfield name=\""bstate\"" value=\""""+是否精华+""\"" />""+
		""<postfield name=\""ID\"" value=\""""+贴子ID+""\"" />""+
		""<postfield name=\""yx\"" value=\""""+是否余下全部+""\"" />""+
		""<postfield name=\""""+程序.设置[""标识名称""]+""\"" value=\""""+访问.用户[""标识""]+""\"" />"";
	_3G跳页表单项=""<input type=\""hidden\"" name=\""border\"" value=\""""+排序+""\"" />""+
		""<input type=\""hidden\"" name=\""bpage\"" value=\""""+版块页码+""\"" />""+
		""<input type=\""hidden\"" name=\""BID\"" value=\""""+所属版块+""\"" />""+
		""<input type=\""hidden\"" name=\""bstate\"" value=\""""+是否精华+""\"" />""+
		""<input type=\""hidden\"" name=\""ID\"" value=\""""+贴子ID+""\"" />""+
		""<input type=\""hidden\"" name=\""yx\"" value=\""""+是否余下全部+""\"" />""+
		""<input type=\""hidden\"" name=\""""+程序.设置[""标识名称""]+""\"" value=\""""+访问.用户[""标识""]+""\"" />"";
	生成贴子正文();
";
            return 返回值;
        }

        public string 编译公共标签(string 代码)
        {
            switch (代码)
            {
                case "ID":
                    return "\t\t返回值.Append(贴子[\"ID\"]);\r\n";
                case "标题":
                    增加查询字段("标题");
                    return "\t\t返回值.Append(Server.HtmlEncode(贴子[\"标题\"].ToString()));\r\n";
                case "贴子简介":
                    增加查询字段("贴子简介");
                    return "\t\t返回值.Append(Server.HtmlEncode(贴子[\"贴子简介\"].ToString()));\r\n";
                case "作者ID":
                    增加查询字段("作者ID");
                    return "\t\t返回值.Append(贴子[\"作者ID\"]);\r\n";
                case "作者昵称":
                    增加查询字段("作者昵称");
                    return "\t\t返回值.Append(Server.HtmlEncode(贴子[\"作者昵称\"].ToString()));\r\n";
                case "贴子状态":
                    增加查询字段("是否置顶,是否精华,是否锁定,回贴数,发表时间,贴子类型");
                    return "\t\t返回值.Append(常用.贴子状态代码(贴子));\r\n";
                case "附件数量":
                    增加查询字段("附件内容");
                    return "\t\t返回值.Append(附件数组.Length);\r\n";
                case "投票选项数":
                    return "\t\t返回值.Append(投票数组.Length);\r\n";
                case "投票总数":
                    return "\t\t返回值.Append(投票总数);\r\n";
                case "所属版块":
                    增加查询字段("所属版块");
                    return "\t\t返回值.Append(贴子[\"所属版块\"]);\r\n";
                case "版块名称":
                    增加查询字段("所属版块");
                    return "\t\t返回值.Append(常用.获取版块名称(Convert.ToInt32(贴子[\"所属版块\"])));\r\n";
                case "点击数":
                    增加查询字段("点击数");
                    return "\t\t返回值.Append(贴子[\"点击数\"]);\r\n";
                case "回贴数":
                    增加查询字段("回贴数");
                    return "\t\t返回值.Append(贴子[\"回贴数\"]);\r\n";
                case "发表时间":
                    增加查询字段("发表时间");
                    return "\t\t返回值.Append(时间格式==null?贴子[\"发表时间\"].ToString():Convert.ToDateTime(贴子[\"发表时间\"]).ToString(时间格式));\r\n";
                case "最后回贴时间":
                    增加查询字段("最后回贴时间");
                    return "\t\t返回值.Append(时间格式==null?贴子[\"最后回贴时间\"].ToString():Convert.ToDateTime(贴子[\"最后回贴时间\"]).ToString(时间格式));\r\n";
                case "贴子内容":
                    return "\t\t返回值.Append(常用.UBB转换(Server.HtmlEncode(贴子正文),访问.用户));\r\n";
                case "作者_会员资料地址":
                    增加作者查询字段("ID");
                    return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"Club/"+(编译器.是否WML网页?"":"3G_")+"User.aspx?ID=\"+贴子作者[\"ID\"]+\"&rurl=\"+Server.UrlEncode(Request.Url.ToString()),访问.用户[\"标识\"].ToString())));\r\n";
                case "作者_手机号":
                    增加作者查询字段("手机号");
                    return "\t\t返回值.Append(Convert.ToInt64(贴子作者[\"手机号\"])==0?\"\":Convert.ToString(贴子作者[\"手机号\"]).Substring(0,7)+\"****\");\r\n";
                case "作者_性别":
                    增加作者查询字段("性别");
                    return "\t\t返回值.Append(Convert.ToBoolean(贴子作者[\"性别\"])?程序.设置[\"单位名词_男性名词\"].ToString():程序.设置[\"单位名词_女性名词\"].ToString());\r\n";
                case "作者_积分":
                    增加作者查询字段("积分");
                    return "\t\t返回值.Append(贴子作者[\"积分\"]);\r\n";
                case "作者_最后访问时间":
                    增加作者查询字段("最后访问时间");
                    return "\t\t返回值.Append(时间格式==null?贴子作者[\"最后访问时间\"].ToString():Convert.ToDateTime(贴子作者[\"最后访问时间\"]).ToString(时间格式));\r\n";
                case "作者_在线状态":
                    增加作者查询字段("最后访问时间");
                    return "\t\t返回值.Append(Convert.ToDateTime(贴子作者[\"最后访问时间\"])>(DateTime.Now-new TimeSpan(0,Convert.ToInt32(程序.设置[\"离线时间\"]),0))?\"在线\":\"离线\");\r\n";
                case "作者_最后登录时间":
                    增加作者查询字段("最后登录时间");
                    return "\t\t返回值.Append(时间格式==null?贴子作者[\"最后登录时间\"].ToString():Convert.ToDateTime(贴子作者[\"最后登录时间\"]).ToString(时间格式));\r\n";
                case "作者_最后登录IP":
                    增加作者查询字段("最后登录IP");
                    return "\t\t返回值.Append(Convert.ToString(贴子作者[\"最后登录IP\"])==\"\"?\"\":贴子作者[\"最后登录IP\"].ToString().Substring(0,贴子作者[\"最后登录IP\"].ToString().Length-4)+\"****\");\r\n";
                case "作者_最后登录地区":
                    增加作者查询字段("最后登录地区");
                    return "\t\t返回值.Append(贴子作者[\"最后登录地区\"]);\r\n";
                case "作者_等级":
                    增加作者查询字段("等级");
                    return "\t\t返回值.Append(贴子作者[\"等级\"]);\r\n";
                case "作者_所在位置":
                    增加作者查询字段("所在位置");
                    return "\t\t返回值.Append(Server.HtmlEncode(贴子作者[\"所在位置\"].ToString()));\r\n";
                case "作者_今日访问次数":
                    增加作者查询字段("今日访问次数");
                    return "\t\t返回值.Append(贴子作者[\"今日访问次数\"]);\r\n";
                case "作者_头像":
                    增加作者查询字段("头像");
                    return @"		返回值.Append(Convert.ToString(贴子作者[""头像""])==""""?"""":""<img src=\""""+贴子作者[""头像""]+""\"" alt=\""头像\"" />"");
";
                case "作者_勋章":
                    增加作者查询字段("勋章");
                    return "\t\t返回值.Append(常用.显示所有图片(贴子作者[\"勋章\"].ToString()));\r\n";
                case "作者_创建时间":
                    增加作者查询字段("创建时间");
                    return "\t\t返回值.Append(时间格式==null?贴子作者[\"创建时间\"].ToString():Convert.ToDateTime(贴子作者[\"创建时间\"]).ToString(时间格式));\r\n";
                case "当前页":
                    return "\t\t返回值.Append(当前页);\r\n";
                case "总页数":
                    return "\t\t返回值.Append(总页数);\r\n";
                case "总记录数":
                    return "\t\t返回值.Append(总记录数);\r\n";
                case "包含附件":
                    增加查询字段("贴子类型");
                    return @"		if(Convert.ToInt32(贴子[""贴子类型""])==1)
		{
";
                case "/包含附件":
                    return @"
		}
";
                case "是否置顶":
                    增加查询字段("是否置顶");
                    return @"		if(Convert.ToBoolean(贴子[""是否置顶""]))
		{
";
                case "/是否置顶":
                    return @"
		}
";
                case "是否精华":
                    增加查询字段("是否精华");
                    return @"		if(Convert.ToBoolean(贴子[""是否精华""]))
		{
";
                case "/是否精华":
                    return @"
		}
";
                case "是否锁定":
                    增加查询字段("是否锁定");
                    return @"		if(Convert.ToBoolean(贴子[""是否锁定""]))
		{
";
                case "/是否锁定":
                    return @"
		}
";
                case "是否投票":
                    增加查询字段("投票选项");
                    return @"		if(贴子[""投票选项""].ToString()!="""")
		{
";
                case "/是否投票":
                    return @"
		}
";
                case "是否版主":
                    return @"		if(是否版主())
		{
";
                case "/是否版主":
                    return @"
		}
";
                case "允许回贴":
                    return @"		if(是否允许回贴())
		{
";
                case "/允许回贴":
                    return @"
		}
";
                case "禁止回贴":
                    return @"		if(!是否允许回贴())
		{
";
                case "/禁止回贴":
                    return @"
		}
";
                case "包含回贴":
                    增加查询字段("回贴数");
                    return @"		if(Convert.ToInt32(贴子[""回贴数""])>0)
		{
";
                case "/包含回贴":
                    return @"
		}
";
                case "首页":
                    return @"		if(当前页==1)
		{
";
                case "/首页":
                    return @"
		}
";
                case "尾页":
                    return @"		if(当前页==总页数)
		{
";
                case "/尾页":
                    return @"
		}
";
                case "收藏地址":
                    return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"Club/" + (编译器.是否WML网页 ? "" : "3G_") + "Collection_Save.aspx?type=Topic&BID=\"+论坛版块[\"ID\"]+\"&ID=\"+贴子ID,访问.用户[\"标识\"].ToString())));\r\n";
                case "回贴地址":
                    return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"Club/" + (编译器.是否WML网页 ? "" : "3G_") + "Reply.aspx?BID=\"+论坛版块[\"ID\"]+\"&ID=\"+贴子ID,访问.用户[\"标识\"].ToString())));\r\n";
                case "鲜花数":
                    增加查询字段("鲜花数");
                    return "\t\t返回值.Append(贴子[\"鲜花数\"]);\r\n";
                case "鸡蛋数":
                    增加查询字段("鸡蛋数");
                    return "\t\t返回值.Append(贴子[\"鸡蛋数\"]);\r\n";
                case "鲜花地址":
                    return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"Club/" + (编译器.是否WML网页 ? "" : "3G_") + "Topic_Flower.aspx?BID=\"+论坛版块[\"ID\"]+\"&ID=\"+贴子ID,访问.用户[\"标识\"].ToString())));\r\n";
                case "鸡蛋地址":
                    return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"Club/" + (编译器.是否WML网页 ? "" : "3G_") + "Topic_Egg.aspx?BID=\"+论坛版块[\"ID\"]+\"&ID=\"+贴子ID,访问.用户[\"标识\"].ToString())));\r\n";
                case "上级版块地址":
                    return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"Club/" + (编译器.是否WML网页 ? "" : "3G_") + "Board.aspx?ID=\"+论坛版块[\"ID\"],访问.用户[\"标识\"].ToString())));\r\n";
                default:
                    return "";
            }
        }

        private String 编译模板方法_内容分页(int ID, String 无分页代码)
        {
            return 编译器.编译内容分页(
                "Club",
                "ContentPage", ID, 无分页代码);
        }

        private String 编译模板方法_上下贴子(String 格式, int 字数, String 时间格式, String 空记录代码,bool 上_下)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("贴子地址", "ID,所属版块");
            必须字段.Add("作者地址", "作者ID");
            必须字段.Add("贴子状态", "是否置顶,是否精华,是否锁定,回贴数,发表时间,贴子类型");
            必须字段.Add("版块名称", "所属版块");
            必须字段.Add("版块地址", "所属版块");
            必须字段.Add("回贴地址", "所属版块,ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("贴子地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"Topic.aspx?BID=""+行[""所属版块""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("标题", @"Server.HtmlEncode(行[""标题""].ToString())");
            字段代码.Add("贴子简介", @"Server.HtmlEncode(行[""贴子简介""].ToString())");
            字段代码.Add("作者地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"User.aspx?ID=""+行[""作者ID""]+""&rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("作者昵称", @"Server.HtmlEncode(行[""作者昵称""].ToString())");
            字段代码.Add("贴子状态", @"常用.贴子状态代码(行)");
            字段代码.Add("版块地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"Board.aspx?ID=""+行[""所属版块""],访问.用户[""标识""].ToString()))");
            字段代码.Add("版块名称", @"Server.HtmlEncode(常用.获取版块名称(Convert.ToInt32(行[""所属版块""])))");
            字段代码.Add("发表时间", @"Convert.ToDateTime(行[""发表时间""]).ToString(""" + 时间格式 + @""")");
            字段代码.Add("回贴地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"Reply.aspx?BID=""+行[""所属版块""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");

            String 查询字段, 行代码;
            查询字段 = 编译器.生成查询字段(格式, "", 必须字段, 字段代码, out 行代码);

            编译器.方法库 += @"	private void 上下贴子"+随机值+ @"()
	{
		String SQL=""SELECT "+查询字段+ @" FROM [""+程序.数据表前缀+""社区_论坛_贴子] WHERE [是否删除]='0'"";
		if(范围ID!=""""&&范围ID!=null)
		{
			String[] 范围ID数组=范围ID.Split(new char[]{'|'},StringSplitOptions.RemoveEmptyEntries);
			SQL+="" AND ("";
			for(int i=0;i<范围ID数组.Length;i++)
				if(i==0)
					SQL+=""[所属版块]=""+范围ID数组[i];
				else
					SQL+="" OR [所属版块]=""+范围ID数组[i];
			SQL+="")"";
		}
		else
			SQL+="" AND [所属版块]=""+所属版块;
";
            if (上_下)
                编译器.方法库 += "\t\tSQL+=\" AND [ID]<\"+贴子ID+\" ORDER BY [ID] DESC\";\r\n";
            else
                编译器.方法库 += "\t\tSQL+=\" AND [ID]>\"+贴子ID+\" ORDER BY [ID]\";\r\n";
            编译器.方法库 += @"		SqlCommand 语句=new SqlCommand(SQL,访问.连接);
		SqlDataReader 行=语句.ExecuteReader();
		if(行.Read())
		{
";
            编译器.方法库 += 编译器.生成代码项(字段代码,格式);
            编译器.方法库 += @"
		}
		else
		{
			返回值.Append(@""" + 空记录代码.Replace("\"", "\"\"") + @""");
		}
		行.Close();
	}
";
            String 返回值 = "";
            返回值 += "\t\t上下贴子" + 随机值 + "();\r\n";
            return 返回值;
        }

        private String 编译模板方法_贴子范围(String ID)
        {
            if (ID != "")
                贴子内容_范围ID = ID;
            return "";
        }

        private String 编译模板方法_格式设置(String 时间格式)
        {
            if (时间格式 != "")
                贴子内容_时间格式 = 时间格式;
            return "";
        }

        private String 编译模板方法_附件列表(String 格式,String 图片格式)
        {
            String 随机值 = 常用.随机字符(8);

            编译器.方法库 += @"		private void 附件列表"+随机值+ @"()
		{
			for(int i=0;i<附件数组.Length;i++)
			{
				String 文件地址=附件数组[i];
				FileInfo FI=new FileInfo(Server.MapPath(文件地址));
				if(常用.是否允许后缀(""gif,jpg,jpe,jpeg,png,tif,tiff,bmp"",FI.Extension.Substring(1)))
				{
";
            Hashtable 属性列表 = new Hashtable();
            属性列表.Add("序号", "i+1");
            属性列表.Add("图片地址", "文件地址");
            属性列表.Add("小图地址", "Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (编译器.是否WML网页 ? "" : "3G_") + "ImageZoom.aspx?type=small&img=\"+Server.UrlEncode(文件地址)+\"&rurl=\"+Server.UrlEncode(Request.Url.ToString()),访问.用户[\"标识\"].ToString()))");
            属性列表.Add("中图地址", "Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (编译器.是否WML网页 ? "" : "3G_") + "ImageZoom.aspx?type=middle&img=\"+Server.UrlEncode(文件地址)+\"&rurl=\"+Server.UrlEncode(Request.Url.ToString()),访问.用户[\"标识\"].ToString()))");
            属性列表.Add("大图地址", "Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (编译器.是否WML网页 ? "" : "3G_") + "ImageZoom.aspx?type=big&img=\"+Server.UrlEncode(文件地址)+\"&rurl=\"+Server.UrlEncode(Request.Url.ToString()),访问.用户[\"标识\"].ToString()))");
            属性列表.Add("图片缩放地址", "Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (编译器.是否WML网页 ? "" : "3G_") + "ImageZoom.aspx?type=null&img=\"+Server.UrlEncode(文件地址)+\"&rurl=\"+Server.UrlEncode(Request.Url.ToString()),访问.用户[\"标识\"].ToString()))");
            属性列表.Add("图片格式", "FI.Extension.Substring(1)");
            属性列表.Add("图片大小", "常用.计算文件大小(FI.Length)");
            编译器.方法库 += 编译器.生成代码项(属性列表, 图片格式);
            编译器.方法库 += @"
				}
				else
				{
";
            属性列表 = new Hashtable();
            属性列表.Add("序号", "i+1");
            属性列表.Add("附件地址", "文件地址");
            属性列表.Add("附件格式", "FI.Extension.Substring(1)");
            属性列表.Add("附件大小", "常用.计算文件大小(FI.Length)");
            编译器.方法库 += 编译器.生成代码项(属性列表, 格式);
            编译器.方法库 += @"
				}
			}
		}
";
            return "\t\t附件列表" + 随机值 + "();\r\n";
        }

        private String 编译模板方法_投票列表(String 格式)
        {
            String 随机值=常用.随机字符(8);
            编译器.方法库 += @"		private void 投票列表"+随机值+ @"()
		{
			for(int i=0;i<投票数组.Length;i++)
			{
";
            Hashtable 属性列表 = new Hashtable();
            属性列表.Add("序号", "i+1");
            属性列表.Add("投票项", "Server.HtmlEncode(投票数组[i])");
            属性列表.Add("投票数", "投票数量数组[i]");
            属性列表.Add("投票百分比", "常用.计算百分比(投票总数,投票数量数组[i])");
            属性列表.Add("投票地址", "Server.HtmlEncode(常用.处理地址(程序.安装位置+\"Club/" + (编译器.是否WML网页 ? "" : "3G_") + "Topic.aspx?BID=\"+所属版块+\"&ID=\"+贴子ID+\"&value=\"+Server.UrlEncode(投票数组[i])+\"&rurl=\"+Server.UrlEncode(Request.Url.ToString()),访问.用户[\"标识\"].ToString()))");
            编译器.方法库 += 编译器.生成代码项(属性列表, 格式);
            编译器.方法库 += @"
			}
		}
";
            return "\t\t投票列表" + 随机值 + "();\r\n";
        }

        private String 编译模板方法_回贴列表(int 排序, int 数量, String 格式, String 交替格式, int 字数, String 时间格式,String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("回贴列表地址", "所属版块,ID");
            必须字段.Add("版块地址", "所属版块");
            必须字段.Add("版块名称", "所属版块");
            必须字段.Add("回贴用户地址", "回贴用户ID");
            必须字段.Add("贴子地址", "所属版块,贴子ID");
            必须字段.Add("支持地址", "ID");
            必须字段.Add("反对地址", "ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("回贴列表地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"Reply.aspx?BID=""+行[""所属版块""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("版块地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"Board.aspx?ID=""+行[""所属版块""],访问.用户[""标识""].ToString()))");
            字段代码.Add("版块名称", @"常用.获取版块名称(Convert.ToInt32(行[""所属版块""]))");
            字段代码.Add("回贴用户地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"User.aspx?ID=""+行[""回贴用户ID""]+""&rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("回贴用户昵称", @"Server.HtmlEncode(行[""回贴用户昵称""].ToString())");
            字段代码.Add("回贴用户IP", @"行[""回贴用户IP""].ToString()==""""?"""":行[""回贴用户IP""].ToString().Substring(0,行[""回贴用户IP""].ToString().Length-4)+""****""");
            字段代码.Add("回贴用户地区", @"Server.HtmlEncode(行[""回贴用户地区""].ToString())");
            字段代码.Add("贴子地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"Topic.aspx?BID=""+行[""所属版块""]+""&ID=""+行[""贴子ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("贴子标题", @"Server.HtmlEncode(行[""贴子标题""].ToString())");
            字段代码.Add("回贴内容", @"Server.HtmlEncode(常用.截取字符串(行[""回贴内容""].ToString()," + 字数 + "))");
            字段代码.Add("支持地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"Reply_Case.aspx?z=true&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("反对地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"Reply_Case.aspx?z=false&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("发表时间", @"Convert.ToDateTime(行[""发表时间""]).ToString(""" + 时间格式 + "\")");

            String 查询字段, 行代码;
            查询字段 = 编译器.生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            编译器.方法库 += "\tprivate void 回贴列表"+随机值+@"()
	{
";
            生成回贴列表条件(排序, 字数, 时间格式, 查询字段);
            生成查询结果列表(数量, 行代码,空记录代码);

            return "\t\t回贴列表" + 随机值 + "();\r\n";
        }

        private void 生成回贴列表条件(int 排序, int 字数, String 时间格式, String 查询字段)
        {
            编译器.方法库 += "\t\tSqlCommand 语句=new SqlCommand(\"SELECT " + 查询字段 + " FROM [\"+程序.数据表前缀+\"社区_论坛_回贴] WHERE [贴子ID]=\"+贴子ID+\" ORDER BY ";
            switch (排序)
            {
                case 0:
                    编译器.方法库 += "[发表时间]";
                    break;
                case 1:
                    编译器.方法库 += "[发表时间] DESC";
                    break;
                case 2:
                    编译器.方法库 += "[支持] DESC";
                    break;
                default:
                    编译器.方法库 += "[反对] DESC";
                    break;
            }
            编译器.方法库 += "\",访问.连接);\r\n";
        }

        private void 生成查询结果列表(int 数量, String 行代码,String 空记录代码)
        {
            编译器.方法库 += "\t\tDataSet 数据=new DataSet();\r\n";
            编译器.方法库 += "\t\tSqlDataAdapter 填充=new SqlDataAdapter(语句);\r\n";
            编译器.方法库 += "\t\t填充.Fill(数据,0," + 数量 + ",\"表\");\r\n";
            编译器.方法库 += "\t\tif(数据.Tables[0].Rows.Count<1)\r\n";
            编译器.方法库 += "\t\t\t返回值.Append(@\"" + 空记录代码.Replace("\"", "\"\"") + "\");\r\n";
            编译器.方法库 += "\t\tfor(int i=0;i<数据.Tables[0].Rows.Count;i++)\r\n";
            编译器.方法库 += "\t\t{\r\n";
            编译器.方法库 += 行代码;
            编译器.方法库 += "\t\t}\r\n";

            编译器.方法库 += "\t}\r\n";
        }

        private String 编译模板方法_操作记录(int 排序, int 数量, String 格式, String 交替格式, String 时间格式)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();

            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("操作记录", "Server.HtmlEncode(行[\"操作记录\"].ToString())");
            字段代码.Add("操作时间", "Convert.ToDateTime(行[\"操作时间\"]).ToString(\"" + 时间格式 + "\")");

            String 查询字段, 行代码;
            查询字段 = 编译器.生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);
            编译器.方法库 += "\tprivate void 操作记录" + 随机值 + @"()
	{
";
            编译器.方法库 += "\t\tSqlCommand 语句=new SqlCommand(\"SELECT * FROM [\"+程序.数据表前缀+\"社区_论坛_贴子操作记录] ORDER BY ";
            switch (排序)
            {
                case 0:
                    编译器.方法库 += "[ID]";
                    break;
                default:
                    编译器.方法库 += "[ID] DESC";
                    break;
            }
            编译器.方法库 += @""",访问.连接);
		DataSet 数据=new DataSet();
		SqlDataAdapter 填充=new SqlDataAdapter(语句);
		填充.Fill(数据,0,"+数量+ @",""表"");
		for(int i=0;i<数据.Tables[0].Rows.Count;i++)
		{
";
            编译器.方法库 += 行代码;
            编译器.方法库 += @"
		}
	}
";
            return "\t\t操作记录" + 随机值 + "();\r\n";
        }

        private String 编译模板方法_上级版块列表(int 排序, String 代码)
        {
            String 返回值 = "";
            String 随机值 = 常用.随机字符(8);
            编译器.方法库 += "\tprivate String 生成上级版块列表" + 随机值 + "(DataSet 数据,int ID)\r\n";
            编译器.方法库 += "\t{\r\n";
            编译器.方法库 += "\t\tif(ID!=0)\r\n";
            编译器.方法库 += "\t\t{\r\n";
            编译器.方法库 += "\t\t\tString 返回值=\"\";\r\n";
            编译器.方法库 += "\t\t\tString 版块名称=\"\";\r\n";
            编译器.方法库 += "\t\t\tint 上级版块=0;\r\n";
            编译器.方法库 += "\t\t\tfor(int i=0;i<数据.Tables[0].Rows.Count;i++)\r\n";
            编译器.方法库 += "\t\t\t{\r\n";
            编译器.方法库 += "\t\t\t\tDataRow 行=数据.Tables[0].Rows[i];\r\n";
            编译器.方法库 += "\t\t\t\tif(Convert.ToInt32(行[\"ID\"])==ID)\r\n";
            编译器.方法库 += "\t\t\t\t{\r\n";
            编译器.方法库 += "\t\t\t\t\t版块名称=Convert.ToString(行[\"版块名称\"]);\r\n";
            编译器.方法库 += "\t\t\t\t\t上级版块=Convert.ToInt32(行[\"所属版块\"]);\r\n";
            编译器.方法库 += "\t\t\t\t}\r\n";
            编译器.方法库 += "\t\t\t}\r\n";
            Hashtable 属性列表 = new Hashtable();
            属性列表.Add("版块名称", "Server.HtmlEncode(版块名称)");
            属性列表.Add("地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"Board.aspx?ID=""+ID,访问.用户[""标识""].ToString()))");
            编译器.方法库 += 编译器.生成代码项(属性列表, 代码, "返回值");
            if (排序 == 0)
                编译器.方法库 += "\t\t\t\treturn 生成上级版块列表" + 随机值 + "(数据,上级版块)+返回值;\r\n";
            else
                编译器.方法库 += "\t\t\t\treturn 返回值+生成上级版块列表" + 随机值 + "(数据,上级版块);\r\n";
            编译器.方法库 += "\t\t}\r\n";
            编译器.方法库 += "\t\telse\r\n";
            编译器.方法库 += "\t\t{\r\n";
            编译器.方法库 += "\t\t\treturn \"\";\r\n";
            编译器.方法库 += "\t\t}\r\n";
            编译器.方法库 += "\t}\r\n";
            返回值 += "\t\tif(所属版块!=0)\r\n";
            返回值 += "\t\t{\r\n";
            返回值 += "\t\t\tDataSet 数据" + 随机值 + "=(DataSet)Application[\"UUN_UUN3G_LunTanBanKuai\"];\r\n";
            返回值 += "\t\t\t返回值.Append(生成上级版块列表" + 随机值 + "(数据" + 随机值 + ",所属版块));\r\n";
            返回值 += "\t\t}\r\n";
            return 返回值;
        }

        private String 编译模板方法_分页设置(int 一页显示记录)
        {
            if (一页显示记录 > 0)
                贴子内容_一页显示记录数 = 一页显示记录;
            return "";
        }

        public string 编译模板方法(string 方法名称, String[] 属性数组)
        {
            switch (方法名称)
            {
                case "内容分页":
                    return 编译模板方法_内容分页(Convert.ToInt32(属性数组[0]),
                        属性数组[1]);
                case "下个贴子":
                    return 编译模板方法_上下贴子(属性数组[0],
                        Convert.ToInt32(属性数组[1]),
                        属性数组[2],
                        属性数组[3],
                        false);
                case "上个贴子":
                    return 编译模板方法_上下贴子(属性数组[0],
                        Convert.ToInt32(属性数组[1]),
                        属性数组[2],
                        属性数组[3],
                        true);
                case "贴子范围":
                    return 编译模板方法_贴子范围(属性数组[0]);
                case "格式设置":
                    return 编译模板方法_格式设置(属性数组[0]);
                case "附件列表":
                    return 编译模板方法_附件列表(属性数组[0],属性数组[1]);
                case "投票列表":
                    return 编译模板方法_投票列表(属性数组[0]);
                case "_回贴列表":
                    return 编译模板方法_回贴列表(Convert.ToInt32(属性数组[0]),
                        Convert.ToInt32(属性数组[1]),
                        属性数组[2],
                        属性数组[3],
                        Convert.ToInt32(属性数组[4]),
                        属性数组[5],
                        属性数组[6]);
                case "操作记录":
                    return 编译模板方法_操作记录(Convert.ToInt32(属性数组[0]),
                        Convert.ToInt32(属性数组[1]),
                        属性数组[2],
                        属性数组[3],
                        属性数组[4]);
                case "上级版块列表":
                    return 编译模板方法_上级版块列表(Convert.ToInt32(属性数组[0]),
                        属性数组[1]);
                case "显示设置":
                    return 编译模板方法_分页设置(Convert.ToInt32(属性数组[0]));
                case "_贴子列表":
                    return 编译贴子列表(属性数组[0],
                        Convert.ToInt32(属性数组[1]),
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]),
                        属性数组[4],
                        属性数组[5],
                        Convert.ToInt32(属性数组[6]),
                        属性数组[7],
                        属性数组[8]);
                default:
                    return "";
            }
        }
        private String 编译贴子列表(String 状态, int 是否随机, int 排序, int 数量, String 格式, String 交替格式, int 字数, String 时间格式, String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("贴子地址", "ID,所属版块");
            必须字段.Add("作者地址", "作者ID");
            必须字段.Add("贴子状态", "是否置顶,是否精华,是否锁定,回贴数,发表时间,贴子类型");
            必须字段.Add("版块名称", "所属版块");
            必须字段.Add("版块地址", "所属版块");
            必须字段.Add("回贴地址", "所属版块,ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("贴子地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"Topic.aspx?BID=""+行[""所属版块""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("标题", @"Server.HtmlEncode(行[""标题""].ToString())");
            字段代码.Add("贴子简介", @"Server.HtmlEncode(行[""贴子简介""].ToString())");
            字段代码.Add("作者地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"User.aspx?ID=""+行[""作者ID""]+""&rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("作者昵称", @"Server.HtmlEncode(行[""作者昵称""].ToString())");
            字段代码.Add("贴子状态", @"常用.贴子状态代码(行)");
            字段代码.Add("版块地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"Board.aspx?ID=""+行[""所属版块""],访问.用户[""标识""].ToString()))");
            字段代码.Add("版块名称", @"Server.HtmlEncode(常用.获取版块名称(Convert.ToInt32(行[""所属版块""])))");
            字段代码.Add("发表时间", @"Convert.ToDateTime(行[""发表时间""]).ToString(""" + 时间格式 + @""")");
            字段代码.Add("回贴地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"Reply.aspx?BID=""+行[""所属版块""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");

            String 查询字段, 行代码;
            查询字段 = 编译器.生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            编译器.方法库 += "\tprivate void 贴子列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            if (是否随机 == 1)
                生成贴子列表条件(状态, 排序, 数量, 查询字段, true);
            生成贴子列表条件(状态, 排序, 数量, 查询字段, false);

            生成查询结果列表(数量, 行代码, 是否随机 == 1, 空记录代码);

            return "\t\t贴子列表" + 随机值 + "();\r\n";
        }
        public void 生成查询结果列表(int 数量, String 行代码, bool 是否随机, String 空记录代码)
        {
            编译器.方法库 += "\t\tDataSet 数据=new DataSet();\r\n";
            编译器.方法库 += "\t\tSqlDataAdapter 填充=new SqlDataAdapter(语句);\r\n";
            if (是否随机)
                编译器.方法库 += "\t\tint 随机数=常用.随机数(分页.总页数);\r\n" +
                    "\t\t填充.Fill(数据,随机数*" + 数量 + "," + 数量 + ",\"表\");\r\n";
            else
                编译器.方法库 += "\t\t填充.Fill(数据,0," + 数量 + ",\"表\");\r\n";
            编译器.方法库 += "\t\tif(数据.Tables[0].Rows.Count<1)\r\n";
            编译器.方法库 += "\t\t\t返回值.Append(@\"" + 空记录代码.Replace("\"", "\"\"") + "\");\r\n";
            编译器.方法库 += "\t\tfor(int i=0;i<数据.Tables[0].Rows.Count;i++)\r\n";
            编译器.方法库 += "\t\t{\r\n";
            编译器.方法库 += 行代码;
            编译器.方法库 += "\t\t}\r\n";

            编译器.方法库 += "\t}\r\n";
        }
        private void 生成贴子列表条件(String 状态, int 排序, int 数量, String 查询字段, bool 是否数量语句)
        {
            String 语句名称 = 是否数量语句 ? "数量语句" : "语句";
            编译器.方法库 += "\t\tSqlCommand " + 语句名称 + "=new SqlCommand(\"SELECT " + (是否数量语句 ? "COUNT(ID)" : 查询字段) + " FROM [\"+程序.数据表前缀+\"社区_论坛_贴子] WHERE [所属版块]=\"+所属版块+\"";


            if (状态 != "")
            {
                String[] 状态数组 = 状态.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                String 状态查询 = "(";
                for (int i = 0; i < 状态数组.Length; i++)
                {
                    状态查询 += i == 0 ? "" : " OR ";
                    switch (Convert.ToInt32(状态数组[i]))
                    {
                        case 1:
                            状态查询 += "[是否置顶]=1";
                            break;
                        case 2:
                            状态查询 += "[是否精华]=1";
                            break;
                        case 3:
                            状态查询 += "[是否锁定]=1";
                            break;
                        case 4:
                            状态查询 += "[回贴数]>" + Convert.ToInt32(程序.设置["贴子状态_热门条件"]);
                            break;
                        case 5:
                            状态查询 += "[发表时间]>'" + (DateTime.Now - new TimeSpan(1, 0, 0, 0)) + "'";
                            break;
                    }
                }
                状态查询 += ")";
                编译器.方法库 += " AND " + 状态查询;
            }

            if (!是否数量语句)
            {
                编译器.方法库 += " ORDER BY ";
                switch (排序)
                {
                    case 0:
                        编译器.方法库 += "[ID]";
                        break;
                    case 1:
                        编译器.方法库 += "[ID] DESC";
                        break;
                    case 2:
                        编译器.方法库 += "[点击数] DESC";
                        break;
                    case 3:
                        编译器.方法库 += "[回贴数] DESC";
                        break;
                    default:
                        编译器.方法库 += "[最后回贴时间] DESC";
                        break;
                }
            }
            编译器.方法库 += "\",访问.连接);\r\n";
            if (是否数量语句)
            {
                编译器.方法库 += "\t\tint 结果数量=Convert.ToInt32(数量语句.ExecuteScalar());\r\n";
                编译器.方法库 += "\t\tif(结果数量>" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机贴子组数\"]))\r\n";
                编译器.方法库 += "\t\t\t结果数量=" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机贴子组数\"]);\r\n";
                编译器.方法库 += "\t\t后台分页 分页=new 后台分页(结果数量,1," + 数量 + ",\"\");\r\n";
            }
        }

        public string 结束执行代码()
        {
            编译器.方法库 += @"	private int 获取一页显示记录数()
	{
";
            if (贴子内容_一页显示记录数 == 0)
                编译器.方法库 += "\t\treturn 访问.获取一页显示文字数();\r\n";
            else
                编译器.方法库 += "\t\treturn " + 贴子内容_一页显示记录数 + ";\r\n";
            编译器.方法库 += @"
	}
";
            编译器.方法库 += @"	private String 获取时间格式()
	{
";
            if (贴子内容_时间格式 == null || 贴子内容_时间格式 == "")
                编译器.方法库 += "\t\treturn null;\r\n";
            else
                编译器.方法库 += "\t\treturn @\"" + 贴子内容_时间格式.Replace("\"", "\"\"") + "\";\r\n";
            编译器.方法库 += @"
	}
";
            编译器.方法库 += @"	private String 获取范围ID()
	{
";
            if (贴子内容_范围ID == null || 贴子内容_范围ID == "")
                编译器.方法库 += "\t\treturn null;\r\n";
            else
                编译器.方法库 += "\t\treturn @\"" + 贴子内容_范围ID + "\";\r\n";
            编译器.方法库 += @"
	}
";
            编译器.方法库 += @"	private String 获取查询字段()
	{
";
            编译器.方法库 += "\t\treturn @\"" + 贴子内容_查询字段.Replace("\"", "\"\"") + "\";\r\n";
            编译器.方法库 += @"
	}
";
            编译器.方法库 += @"	private String 获取作者查询字段()
	{
";
            编译器.方法库 += "\t\treturn @\"" + 贴子内容_作者查询字段.Replace("\"", "\"\"") + "\";\r\n";
            编译器.方法库 += @"
	}
";
            编译器.查询字段 = 贴子内容_查询字段;
            return "";
        }
    }
}