using System; using System.Configuration; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Text; using System.Data; using RM.Common; namespace RM.Pub { public class Article { public string TemplateUrl, CacheUrl, BufText; public Article() { } /// <summary> /// 构造函数 /// </summary> public Article(string TemplateUrl, string tplFileName) { this.TemplateUrl = System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["TemplateUrl"] + tplFileName); this.BufText = Files.loadFile(this.TemplateUrl); } /// <summary> /// PK大赛文章 显示文章标题等信息 /// </summary> /// <param name="arrClassID">栏目ID数组,0为所有栏目</param> /// <param name="ArticleNum">文章数,若大于0,则只查询前几篇文章</param> /// <param name="OrderType">排序方式,1--按文章ID降序,2--按文章ID升序,3--按更新时间降序,4--按更新时间升序,5--按点击数降序,6--按点击数升序,7--按评论数降序,8--按评论数升序</param> /// <param name="TitleLen">标题最多字符数,一个汉字=两个英文字符,若为0,则显示完整标题</param> /// <param name="OpenType">文章打开方式,0为在原窗口打开,1为在新窗口打开</param> /// <returns></returns> //public static string GetArticleList(int arrClassID, int ArticleNum, int TitleLen, int OrderType, int ShowType, int OpenType,bool ShowAuthor, bool ShowDateType) public static string GetArticleList(int arrClassID, int ArticleNum, int OrderType) { string sqlInfo = "SELECT TOP {0} * FROM RM_Web_News WHERE 1=1"; string strInfoList = ""; StringBuilder sb = new StringBuilder(); RM.BLL.RM_Web_News ArtBLL = new RM.BLL.RM_Web_News(); if (ArticleNum > 0) sqlInfo = string.Format(sqlInfo, ArticleNum); if (!arrClassID.Equals(0)) sqlInfo += string.Format(" AND fdCateID={0}", arrClassID); switch (OrderType) { case 1: sqlInfo += string.Format(" order by fdID {0}", "DESC"); break; case 2: sqlInfo += string.Format(" order by fdID {0}", "ASC"); break; } DataTable tb = ArtBLL.ExecuteSql(sqlInfo); sb.Append("<ul>/r/n"); for (int i = 0; i < tb.Rows.Count; i++) { sb.Append(string.Format("<li><a href="/" mce_href="/""javascript:///">{0}</a></li>/r/n", tb.Rows[i][4])); } sb.Append("<ul>/r/n"); return sb.ToString(); } public string GetListFromTemplate(string strValue) { string strList = strValue; string Pattern = @"/{/$GetArticleList/((.*?)/)/}"; Regex regEx = new Regex(Pattern, RegexOptions.Compiled); Match m = regEx.Match(strList); while (m.Success) { strList = PE_Replace(strList, m.Value, GetListFromLabel(m.Value)); m = regEx.Match(strList); } return strList; } public string GetListFromLabel(string strSource) { strSource = OperateText.getBlockString(strSource, "(", ")"); string[] arrTemp = Regex.Split(strSource, ",", RegexOptions.IgnoreCase); return GetArticleList(Convert.ToInt32(arrTemp[0]), Convert.ToInt32(arrTemp[1]), Convert.ToInt32(arrTemp[2])); } public string GetHTML_Index() { string strHTML = ""; strHTML = GetListFromTemplate(BufText); return strHTML; } /// <summary> /// 容错后的替换字符串,如果 replacewith 空字符,被替换的字符 替换成空 /// </summary> /// <param name="expression">主数据</param> /// <param name="find">被替换的字符</param> /// <param name="replacewith">替换后的字符</param> /// <returns></returns> public string PE_Replace(string expression, string find, string replacewith) { string PE_Replace = ""; if (string.IsNullOrEmpty(expression) && string.IsNullOrEmpty(find)) { PE_Replace = expression; } else if (string.IsNullOrEmpty(replacewith)) { PE_Replace = expression.Replace(find, ""); } else { PE_Replace = expression.Replace(find, replacewith); } return PE_Replace; } } }