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";

        public String 开始执行代码()
        {
            编译器.方法库 += @"	private String 当前页面;
	//参数
	private int 所属版块;
	private bool 是否精华;
	private int 排序;
	//其它
	private String 跳页表单项;
	private String _3G跳页表单项;
	private String 查询条件="""";
	private DataRow 论坛版块;
	private DataSet 论坛版主;
	private DataSet 下级版块数据;
	private int 上级版块;
	private int 在线人数=-1;
	private String 时间格式;
	//列表分页
	private int 当前页;
	private int 总页数;
	private int 总记录数;
	private int 一页显示记录数;
	private String 列表跳页(int 页码)
	{
		return Server.HtmlEncode(常用.处理地址(当前页面+""?ID=""+所属版块+""&state=""+是否精华+""&order=""+排序+""&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(所属版块==0)
				所属版块=Convert.ToInt32(行[""ID""]);
			if(Convert.ToInt32(行[""ID""])==所属版块)
				this.论坛版块=行;
		}
	}
	private int 获取在线人数()
	{
		SqlCommand 语句=new SqlCommand(""SELECT COUNT(ID) FROM [""+程序.数据表前缀+""社区_用户_用户] WHERE [最后访问时间]>@最后访问时间 AND [用户类型]='管理员' AND [所在位置]=@所在位置"",访问.连接);
		语句.Parameters.Add(""@最后访问时间"",SqlDbType.DateTime).Value=DateTime.Now-new TimeSpan(0,Convert.ToInt32(程序.设置[""离线时间""]),0);
		语句.Parameters.Add(""@所在位置"",SqlDbType.NVarChar).Value=""版块[""+论坛版块[""版块名称""]+""]"";
		return Convert.ToInt32(语句.ExecuteScalar());
	}
	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 void 应用版块设置()
	{
		if(!Convert.ToBoolean(论坛版块[""版块状态""]))
			throw new Exception(论坛版块[""禁止访问提示""].ToString());
		switch(Convert.ToInt32(论坛版块[""访问权限""]))
		{
			case 0:
				break;
			case 1:
				访问.验证会员();
				break;
			default:
				if(!是否版主())
					throw new Exception(""此版块只允许版主访问"");
				break;
		}
	}
	
	private bool 是否允许发贴()
	{
		switch(Convert.ToInt32(论坛版块[""发贴权限""]))
		{
			case 0:
				return true;
			case 1:
				return 访问.用户[""用户类型""].ToString()==""会员"";
			default:
				return 是否版主();
		}
	}
	private String 生成余下全部地址()
	{
		return """";
	}
	private void 生成下级版块数据()
	{
		DataSet 数据=(DataSet)Application[""UUN_UUN3G_LunTanBanKuai""];
		DataSet 版块数据=new DataSet();
		版块数据.Tables.Add(数据.Tables[0].Clone());
		for(int i=0;i<数据.Tables[0].Rows.Count;i++)
			if(Convert.ToInt32(数据.Tables[0].Rows[i][""所属版块""])==所属版块)
				版块数据.Tables[0].Rows.Add(常用.数据_复制行(版块数据.Tables[0],数据.Tables[0].Rows[i]));
		下级版块数据=版块数据;
	}
";
            String 返回值 = "";
            返回值 += @"	所属版块=Convert.ToInt32(Request.QueryString[""ID""]);
	时间格式=获取时间格式();
	获取论坛版块();
	上级版块=Convert.ToInt32(论坛版块[""所属版块""]);
	当前页面=程序.安装位置+""Club/" + (编译器.是否WML网页?"":"3G_")+ @"Board.aspx"";
	是否精华=Convert.ToBoolean(Request.QueryString[""state""]);
	if(Request.QueryString[""order""]==null)
		排序=4;
	else
		排序=Convert.ToInt32(Request.QueryString[""order""]);
	一页显示记录数=获取一页显示记录数();
	应用版块设置();
	生成下级版块数据();
	跳页表单项=""<postfield name=\""state\"" value=\""""+是否精华+""\"" />""+
		""<postfield name=\""ID\"" value=\""""+所属版块+""\"" />""+
		""<postfield name=\""order\"" value=\""""+排序+""\"" />""+
		""<postfield name=\""""+程序.设置[""标识名称""]+""\"" value=\""""+访问.用户[""标识""]+""\"" />"";
	_3G跳页表单项=""<input type=\""hidden\"" name=\""state\"" value=\""""+是否精华+""\"" />""+
		""<input type=\""hidden\"" name=\""ID\"" value=\""""+所属版块+""\"" />""+
		""<input type=\""hidden\"" name=\""order\"" value=\""""+排序+""\"" />""+
		""<input type=\""hidden\"" name=\""""+程序.设置[""标识名称""]+""\"" value=\""""+访问.用户[""标识""]+""\"" />"";
";
            返回值 += 生成贴子列表条件(true, "");
            返回值 += "\t\t当前页=Convert.ToInt32(Request.QueryString[\"page\"]);\r\n";
            返回值 += "\t\t总记录数=Convert.ToInt32(数量语句.ExecuteScalar());\r\n";
            返回值 += "\t\t总页数=常用.计算总页数(总记录数,一页显示记录数);\r\n";
            返回值 += "\t\t当前页=常用.计算当前页(总页数,当前页);\r\n";

            return 返回值;
        }

        public String 编译公共标签(String 代码)
        {
            switch (代码)
            {
                case "ID":
                    return "\t\t返回值.Append(论坛版块[\"ID\"]);\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(论坛版块[\"今日发贴数\"]);\r\n";
                case "今日回贴数":
                    return "\t\t返回值.Append(论坛版块[\"今日回贴数\"]);\r\n";
                case "创建时间":
                    return "\t\t返回值.Append(Convert.ToDateTime(论坛版块[\"创建时间\"]).ToString(时间格式));\r\n";
                case "最后发贴时间":
                    return "\t\t返回值.Append(Convert.ToDateTime(论坛版块[\"最后发贴时间\"]).ToString(时间格式));\r\n";
                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 "版块简介":
                    return "\t\t返回值.Append(论坛版块[\"版块简介\"].ToString()==\"\"?\"\":Server.HtmlEncode(常用.UBB转换(论坛版块[\"版块简介\"].ToString(),访问.用户))+\"<br/>\");\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(是否精华)
		{";
                case "/精华":
                    return @"
		}
";
                case "非精华":
                    return @"		if(!是否精华)
		{
";
                case "/非精华":
                    return @"
		}
";
                case "允许发贴":
                    return @"		if(是否允许发贴())
		{
";
                case "/允许发贴":
                    return @"
		}
";
                case "禁止发贴":
                    return @"		if(!是否允许发贴())
		{
";
                case "/禁止发贴":
                    return @"
		}
";
                case "在线人数":
                    return @"		if(在线人数==-1)
		在线人数=获取在线人数();
		返回值.Append(在线人数);
";
                case "版主":
                    return @"		if(是否版主())
		{
";
                case "/版主":
                    return @"
		}
";
                case "非版主":
                    return @"		if(!是否版主())
		{
";
                case "/非版主":
                    return @"
		}
";
                case "首页":
                    return @"		if(当前页==1)
		{
";
                case "/首页":
                    return @"
		}
";
                case "尾页":
                    return @"		if(当前页==总页数)
		{
";
                case "/尾页":
                    return @"
		}
";
                case "/排序":
                    return @"
		}
";
                case "/非排序":
                    return @"
		}
";
                case "包含下级版块":
                    return @"
		if(下级版块数据.Tables[0].Rows.Count>0)
		{
";
                case "/包含下级版块":
                    return @"
		}
";
                case "不包含下级版块":
                    return @"
		if(下级版块数据.Tables[0].Rows.Count<1)
		{
";
                case "/不包含下级版块":
                    return @"
		}
";
                default:
                    return "";
            }
        }

        private String 编译模板方法_下级版块列表(String 格式, String 交替格式, String 空记录代码, String 时间格式)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("版块地址", "ID,外部链接地址");
            必须字段.Add("最后发贴作者地址", "最后发贴作者ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("版块地址", @"行[""外部链接地址""].ToString()!=""""?Server.HtmlEncode(常用.处理地址(行[""外部链接地址""].ToString(),访问.用户[""标识""].ToString())):Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"Board.aspx?ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("版块名称", @"Server.HtmlEncode(行[""版块名称""].ToString())");
            字段代码.Add("版块简介", @"Server.HtmlEncode(常用.截取字符串(行[""版块简介""].ToString(),100))");
            字段代码.Add("创建时间", @"Convert.ToDateTime(行[""创建时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后发贴时间", @"Convert.ToDateTime(行[""最后发贴时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后发贴作者地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"User.aspx?ID=""+行[""ID""]+""&rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("最后发贴作者昵称", @"Server.HtmlEncode(行[""最后发贴作者昵称""].ToString())");

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

            编译器.方法库 += "\tprivate void 下级版块列表" + 随机值 + "()\r\n";
            编译器.方法库 += "\t{\r\n";
            编译器.方法库 += @"

		DataSet 数据=下级版块数据;
		if(数据.Tables[0].Rows.Count<1)
			返回值.Append(@""" + 空记录代码.Replace("\"", "\"\"") + @""");
		else
			for(int i=0;i<数据.Tables[0].Rows.Count;i++)
			{
" + 行代码 + @"
			}
	}
";
            return "\t\t\t下级版块列表" + 随机值 + "();\r\n";
        }

        private String 编译模板方法_上级版块代码(String 代码)
        {
            String 返回值 = "";
            返回值 += "\t\tif(上级版块!=0)\r\n";
            返回值 += "\t\t{\r\n";

            Hashtable 属性列表 = new Hashtable();
            属性列表.Add("版块名称", "Server.HtmlEncode(常用.获取版块名称(上级版块))");
            属性列表.Add("地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"Board.aspx?ID=""+上级版块,访问.用户[""标识""].ToString()))");

            返回值 += 编译器.生成代码项(属性列表, 代码);

            返回值 += "\t\t}\r\n";
            return 返回值;
        }

        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 编译模板方法_贴子列表(String 空记录代码, String 格式, String 交替格式, int 字数, String 时间格式)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("贴子地址", "ID,所属版块");
            必须字段.Add("作者地址", "作者ID");
            必须字段.Add("贴子状态", "是否置顶,是否精华,是否锁定,回贴数,发表时间,贴子类型");
            必须字段.Add("版块地址", "所属版块");
            必须字段.Add("回贴地址", "所属版块,ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "(当前页-1)*一页显示记录数+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(行[""版块名称""].ToString())");
            字段代码.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";
            编译器.方法库 += "\t\tif(总记录数<1)\r\n";
            编译器.方法库 += "\t\t\t返回值.Append(@\"" + 空记录代码.Replace("\"", "\"\"") + "\");\r\n";
            编译器.方法库 += 生成贴子列表条件(false, 查询字段);
            编译器.方法库 += 生成查询结果列表(行代码);

            return "\t\t贴子列表" + 随机值 + "();\r\n";
        }
        private String 生成查询结果列表(String 行代码)
        {
            String 返回值 = "";
            返回值 += "\t\tDataSet 数据=new DataSet();\r\n";
            返回值 += "\t\tSqlDataAdapter 填充=new SqlDataAdapter(语句);\r\n";
            返回值 += "\t\t填充.Fill(数据,(当前页-1)*一页显示记录数,一页显示记录数,\"表\");\r\n";
            返回值 += "\t\tfor(int i=0;i<数据.Tables[0].Rows.Count;i++)\r\n";
            返回值 += "\t\t{\r\n";
            返回值 += 行代码;
            返回值 += "\t\t}\r\n";
            返回值 += "\t\t}\r\n";
            return 返回值;
        }

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

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("ID", "ID");
            必须字段.Add("所属版块", "所属版块");
            必须字段.Add("版块名称", "版块名称");
            必须字段.Add("版块地址", "所属版块,版块名称");
            必须字段.Add("版主ID", "版主ID");
            必须字段.Add("版主昵称", "版主昵称");
            必须字段.Add("版主地址", "版主ID");
            必须字段.Add("创建时间", "创建时间");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "(当前页-1)*10+i+1");
            字段代码.Add("ID", "行[\"ID\"]");
            字段代码.Add("所属版块", @"行[""所属版块""]");
            字段代码.Add("版块名称", @"Server.HtmlEncode(行[""版块名称""].ToString())");
            字段代码.Add("版块地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/"+(编译器.是否WML网页?"":"3G_")+@"Board.aspx?ID=""+行[""所属版块""],访问.用户[""标识""].ToString()))");
            字段代码.Add("版主昵称", "Server.HtmlEncode(行[\"版主昵称\"].ToString())");
            字段代码.Add("版主地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"User.aspx?ID=""+行[""版主ID""]+""&rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("创建时间", @"Convert.ToDateTime(行[""创建时间""]).ToString(@""" + 时间格式.Replace("\"", "\"\"") + @""")");

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

            编译器.方法库 += "\tprivate void 版主列表"+随机值+ @"()
	{
		if(论坛版主==null)
			获取论坛版主();
		DataSet 数据=论坛版主;
		if(数据.Tables[0].Rows.Count<1)
			返回值.Append(@""" + 空记录代码.Replace("\"","\"\"")+@""");
		else
		{
			for(int i=0;i<数据.Tables[0].Rows.Count;i++)
			{
";
            编译器.方法库 += 行代码;
            编译器.方法库 += @"
			}
		}
	}
";
            return "\t\t版主列表" + 随机值 + "();\r\n";
        }

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

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

        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";
            编译器.方法库 += @"
	}
";
            return "";
        }

        public String 编译模板方法(String 方法名称, String[] 属性数组)
        {
            switch (方法名称)
            {
                case "下级版块列表":
                    return 编译模板方法_下级版块列表(属性数组[0],
                        属性数组[1],
                        属性数组[2],
                        属性数组[3]);
                case "上级版块列表":
                    return 编译模板方法_上级版块列表(Convert.ToInt32(属性数组[0]),
                        属性数组[1]);
                case "上级版块代码":
                    return 编译模板方法_上级版块代码(属性数组[0]);
                case "_贴子列表":
                    return 编译模板方法_贴子列表(属性数组[0],
                        属性数组[1],
                        属性数组[2],
                        Convert.ToInt32(属性数组[3]),
                        属性数组[4]);
                case "版主列表":
                    return 编译模板方法_版主列表(属性数组[0],
                        属性数组[1],
                        属性数组[2],
                        属性数组[3]);
                case "列表分页":
                    return 编译模板方法_列表分页(Convert.ToInt32(属性数组[0]),
                        属性数组[1]);
                case "分页设置":
                    return 编译模板方法_分页设置(Convert.ToInt32(属性数组[0]));
                case "排序":
                    return 编译模板方法_排序(Convert.ToInt32(属性数组[0]));
                case "非排序":
                    return 编译模板方法_非排序(Convert.ToInt32(属性数组[0]));
                case "格式设置":
                    return 编译模板方法_格式设置(属性数组[0]);
                default:
                    return "";
            }
        }

        private String 编译模板方法_格式设置(String 时间格式)
        {
            社区模板_贴子列表_时间格式 = 时间格式;
            return "";
        }

        private String 编译模板方法_排序(int 排序)
        {
            return @"		if(排序==" + 排序 + @")
		{
";
        }

        private String 编译模板方法_非排序(int 排序)
        {
            return @"		if(排序!=" + 排序 + @")
		{
";
        }

        private String 生成贴子列表条件(bool 是否数量, String 查询字段)
        {
            String 返回值 = "";
            String 语句名称 = 是否数量 ? "数量语句" : "语句";
            if (是否数量)
                返回值 += @"		查询条件+="" WHERE [是否删除]=0 AND [所属版块]=""+所属版块+(是否精华?"" AND [是否精华]='1'"":"""");
";
            返回值 += "\t\tString " + 语句名称 + "SQL=\"SELECT " + (是否数量 ? "COUNT(ID)" : 查询字段) + " FROM [\"+程序.数据表前缀+\"社区_论坛_贴子]\"+查询条件;\r\n";
            if (!是否数量)
                返回值 += @"		" + 语句名称 + @"SQL+="" ORDER BY [是否置顶] DESC,"";
	switch(排序)
	{
			case 0:
				" + 语句名称 + @"SQL+=""[ID]"";
				break;
			case 1:
				" + 语句名称 + @"SQL+=""[ID] DESC"";
				break;
			case 2:
				" + 语句名称 + @"SQL+=""[点击数] DESC"";
				break;
			case 3:
				" + 语句名称 + @"SQL+=""[回贴数] DESC"";
				break;
			default:
				" + 语句名称 + @"SQL+=""[最后回贴时间] DESC"";
				break;
	}
";
            返回值 += "\t\tSqlCommand " + 语句名称 + "=new SqlCommand(" + 语句名称 + "SQL,访问.连接);\r\n";
            return 返回值;
        }
    }
}