Beispiel #1
0
        /// <summary>
        /// 初始化表情正则对象数组
        /// </summary>
        public static void InitRegexSmilies()
        {
            SmiliesInfo[] smiliesList = Smilies.GetSmiliesListWithInfo();
            //对表情进行排序,将标识符长的放到最开始,这样可以让长标识表情先解释,以防止:giggle :g 解释为[:g]iggle [:g]
            for (int Outer = smiliesList.Length - 1; Outer >= 1; Outer--)
            {
                //一次冒泡排序比较0~ourter-1个元素的大小
                for (int Inner = 0; Inner <= Outer - 1; Inner++)
                {
                    //排序过程
                    if (smiliesList[Inner].Code.Length < smiliesList[Inner + 1].Code.Length)
                    {
                        SmiliesInfo temp = smiliesList[Inner];
                        smiliesList[Inner]     = smiliesList[Inner + 1];
                        smiliesList[Inner + 1] = temp;
                    }
                }
            }
            regexSmile = new Regex[smiliesList.Length];

            for (int i = 0; i < smiliesList.Length; i++)
            {
                regexSmile[i] = new Regex(@Regex.Escape(smiliesList[i].Code), RegexOptions.None);
            }
        }
Beispiel #2
0
        /// <summary>
        /// 将缓存中的表情信息返回为SmiliesInfo[],不包括表情分类
        /// </summary>
        /// <returns></returns>
        public static SmiliesInfo[] GetSmiliesListWithInfo()
        {
            Discuz.Cache.DNTCache cache           = Discuz.Cache.DNTCache.GetCacheService();
            SmiliesInfo[]         smilieslistinfo = cache.RetrieveObject("/UI/SmiliesListWithInfo") as SmiliesInfo[];
            if (smilieslistinfo == null)
            {
                DataTable dt = GetSmiliesListWithoutType();
                if (dt == null)
                {
                    return(null);
                }
                if (dt.Rows.Count <= 0)
                {
                    return(null);
                }

                smilieslistinfo = new SmiliesInfo[dt.Rows.Count];
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    smilieslistinfo[i]              = new SmiliesInfo();
                    smilieslistinfo[i].Id           = Utils.StrToInt(dt.Rows[i]["id"], 0);
                    smilieslistinfo[i].Code         = dt.Rows[i]["Code"].ToString();
                    smilieslistinfo[i].Displayorder = Utils.StrToInt(dt.Rows[i]["Displayorder"], 0);
                    smilieslistinfo[i].Type         = Utils.StrToInt(dt.Rows[i]["Type"], 0);
                    smilieslistinfo[i].Url          = dt.Rows[i]["Url"].ToString();
                }
                cache.AddObject("/UI/SmiliesListWithInfo", smilieslistinfo);

                //表情缓存重新加载时重新初始化表情正则对象数组
                ResetRegexSmilies(smilieslistinfo);
            }
            return(smilieslistinfo);
        }
Beispiel #3
0
 /// <summary>
 /// 装载表情信息
 /// </summary>
 /// <param name="dt"></param>
 /// <returns></returns>
 private static SmiliesInfo[] LoadSmiliesInfo(DataTable dt)
 {
     if (dt == null || dt.Rows.Count < 1)
     {
         return(null);
     }
     SmiliesInfo[] smilieslistinfo = new SmiliesInfo[dt.Rows.Count];
     for (int i = 0; i < dt.Rows.Count; i++)
     {
         smilieslistinfo[i]              = new SmiliesInfo();
         smilieslistinfo[i].Id           = TypeConverter.ObjectToInt(dt.Rows[i]["id"], 0);
         smilieslistinfo[i].Code         = dt.Rows[i]["Code"].ToString();
         smilieslistinfo[i].Displayorder = TypeConverter.ObjectToInt(dt.Rows[i]["Displayorder"], 0);
         smilieslistinfo[i].Type         = TypeConverter.ObjectToInt(dt.Rows[i]["Type"], 0);
         smilieslistinfo[i].Url          = dt.Rows[i]["Url"].ToString();
     }
     return(smilieslistinfo);
 }
 private void BindFilesList()
 {
     try
     {
         fileinfoList.Text = "";
         SmiliesInfo smilies = Discuz.Forum.Smilies.GetSmiliesTypeById(DNTRequest.GetInt("typeid", 0));
         if (smilies == null)
         {
             return;
         }
         fileList = GetSmilesFileList(smilies.Url);
         string    dir = smilies.Url;
         DataTable dt  = Smilies.GetSmilieByType(DNTRequest.GetInt("typeid", 0));
         foreach (DataRow smile in dt.Rows)
         {
             ViewState["code"] += smile["code"] + ",";
             fileList.Remove(smile["url"].ToString().Replace(dir + "/", ""));
         }
         fileList.Remove("Thumbs.db");
         int i = 1;
         foreach (string file in fileList)
         {
             fileinfoList.Text += "<tr class='mouseoutstyle' onmouseover='this.className=\"mouseoverstyle\"' onmouseout='this.className=\"mouseoutstyle\"'>\n";
             fileinfoList.Text += "<td nowrap='nowrap' style='border-color:#EAE9E1;border-width:1px;border-style:solid;'><input type='checkbox' id='id" + i + "' name='id" + i + "' value='" + i + "'/></td>\n";
             fileinfoList.Text += "<td nowrap='nowrap' style='border-color:#EAE9E1;border-width:1px;border-style:solid;'><input type='text' id='code" + i + "' name='code" + i + "' value=':" + dir + (dt.Rows.Count + i) + ":' class=\"FormBase\" onfocus=\"this.className='FormFocus';\" onblur=\"this.className='FormBase';\" /></td>\n";
             fileinfoList.Text += "<td nowrap='nowrap' style='border-color:#EAE9E1;border-width:1px;border-style:solid;'><input type='text' id='order" + i + "' name='order" + i + "' value='" + i + "' class=\"FormBase\" onfocus=\"this.className='FormFocus';\" onblur=\"this.className='FormBase';\" size='4' /></td>\n";
             fileinfoList.Text += "<td nowrap='nowrap' style='border-color:#EAE9E1;border-width:1px;border-style:solid;'><input type='hidden' name='url" + i + "' value='" + dir + "/" + file + "' />" + dir + "/" + file + "</td>\n";
             fileinfoList.Text += "<td nowrap='nowrap' style='border-color:#EAE9E1;border-width:1px;border-style:solid;'>" + PicStr(smilies.Url + "/" + file) + "</td>\n";
             fileinfoList.Text += "</tr>\n";
             i++;
         }
         if (fileList.Count == 0)
         {
             SubmitButton.Visible = false;
         }
     }
     catch (IOException err)
     {
         base.RegisterStartupScript("", "<script>alert('" + err.Message + "');window.location.href='forum_smiliemanage.aspx';</script>");
     }
 }
Beispiel #5
0
        /// <summary>
        /// 得到不带分类的表情符数据
        /// </summary>
        /// <returns>表情符表</returns>
        public static SmiliesInfo[] GetSmiliesListWithoutType()
        {
            DataTable dt = DatabaseProvider.GetInstance().GetSmiliesListWithoutType();

            if (dt == null || dt.Rows.Count < 1)
            {
                return(null);
            }

            SmiliesInfo[] smilieslistinfo = new SmiliesInfo[dt.Rows.Count];
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                smilieslistinfo[i]              = new SmiliesInfo();
                smilieslistinfo[i].Id           = TypeConverter.ObjectToInt(dt.Rows[i]["id"], 0);
                smilieslistinfo[i].Code         = dt.Rows[i]["Code"].ToString();
                smilieslistinfo[i].Displayorder = TypeConverter.ObjectToInt(dt.Rows[i]["Displayorder"], 0);
                smilieslistinfo[i].Type         = TypeConverter.ObjectToInt(dt.Rows[i]["Type"], 0);
                smilieslistinfo[i].Url          = dt.Rows[i]["Url"].ToString();
            }
            return(smilieslistinfo);
        }