/// <summary> /// 设置相关主题信息 /// </summary> /// <param name="pollitem"></param> /// <param name="topicprice"></param> /// <param name="postmessage"></param> private void SetTopicInfo(string[] pollitem, int topicprice, string postmessage) { if (postinfo.Layer == 0) { ///修改投票信息 StringBuilder itemvaluelist = new StringBuilder(""); if (topic.Special == 1) { string pollItemname = Utils.HtmlEncode(DNTRequest.GetFormString("PollItemname").Trim()); if (!Utils.StrIsNullOrEmpty(pollItemname)) { int multiple = DNTRequest.GetString("multiple") == "on" ? 1 : 0; int maxchoices = DNTRequest.GetInt("maxchoices", 0); if (multiple == 1 && maxchoices > pollitem.Length) { maxchoices = pollitem.Length; } if (!Polls.UpdatePoll(topic.Tid, multiple, pollitem.Length, DNTRequest.GetFormString("PollOptionID").Trim(), pollItemname, DNTRequest.GetFormString("PollOptionDisplayOrder").Trim(), DNTRequest.GetString("enddatetime"), maxchoices, DNTRequest.GetString("visiblepoll") == "on" ? 1 : 0, DNTRequest.GetString("allowview") == "on" ? 1 : 0)) { AddErrLine("投票错误,请检查显示顺序"); return; } } else { AddErrLine("投票项为空"); return; } } //修改辩论信息 if (topic.Special == 4) { debateinfo.Positiveopinion = DNTRequest.GetString("positiveopinion"); debateinfo.Negativeopinion = DNTRequest.GetString("negativeopinion"); debateinfo.Terminaltime = TypeConverter.StrToDateTime(DNTRequest.GetString("terminaltime")); if (!Debates.UpdateDebateTopic(debateinfo)) { AddErrLine("辩论修改选择了无效的主题"); return; } } int iconid = DNTRequest.GetInt("iconid", 0); topic.Iconid = (iconid > 15 || iconid < 0) ? 0 : iconid; topic.Title = postinfo.Title; //悬赏差价处理 if (topic.Special == 2) { int pricediff = topicprice - topic.Price; if (pricediff > 0) { if (bonusCreditsTrans < 1 || bonusCreditsTrans > 8) { AddErrLine("系统未设置\"交易积分设置\", 无法判断当前要使用的(扩展)积分字段, 暂时无法发布悬赏"); return; } //扣分 if (usergroupinfo.Radminid != 1 && Users.GetUserExtCredits(topic.Posterid, bonusCreditsTrans) < pricediff) { AddErrLine("主题作者 " + Scoresets.GetValidScoreName()[bonusCreditsTrans] + " 不足, 无法追加悬赏"); return; } else { topic.Price = topicprice; Users.UpdateUserExtCredits(topic.Posterid, bonusCreditsTrans, -pricediff * (Scoresets.GetCreditsTax() + 1)); //计算税后的实际支付 } } else if (pricediff < 0 && usergroupinfo.Radminid != 1) { AddErrLine("不能降低悬赏价格"); return; } } else if (topic.Special == 0)//普通主题,出售 { topic.Price = topicprice; } if (usergroupinfo.Allowsetreadperm == 1) { topic.Readperm = DNTRequest.GetInt("topicreadperm", 0) > 255 ? 255 : DNTRequest.GetInt("topicreadperm", 0); } if (ForumUtils.IsHidePost(postmessage) && usergroupinfo.Allowhidecode == 1) { topic.Hide = 1; } topic.Typeid = DNTRequest.GetFormInt("typeid", 0); htmltitle = DNTRequest.GetString("htmltitle").Trim(); if (!Utils.StrIsNullOrEmpty(htmltitle) && Utils.HtmlDecode(htmltitle).Trim() != topic.Title) { //按照 附加位/htmltitle(1位)/magic(3位)/以后扩展(未知位数) 的方式来存储, 11001 topic.Magic = 11000; } else { topic.Magic = 0; } topic.Displayorder = Topics.GetTitleDisplayOrder(usergroupinfo, useradminid, forum, topic, message, disablepostctrl); ForumTags.DeleteTopicTags(topic.Tid); Topics.DeleteRelatedTopics(topic.Tid); string tags = DNTRequest.GetString("tags").Trim(); if (enabletag && !Utils.StrIsNullOrEmpty(tags)) { if (ForumUtils.InBanWordArray(tags)) { AddErrLine("标签中含有系统禁止词语,请修改"); return; } string[] tagArray = Utils.SplitString(tags, " ", true, 2, 10); if (tagArray.Length > 0 && tagArray.Length <= 5) { topic.Magic = Topics.SetMagicValue(topic.Magic, MagicType.TopicTag, 1); ForumTags.CreateTopicTags(tagArray, topic.Tid, userid, Utils.GetDateTime()); } else { AddErrLine("超过标签数的最大限制或单个标签长度没有介于2-10之间,最多可填写 5 个标签"); return; } } Topics.UpdateTopic(topic); //保存htmltitle if (canhtmltitle && !Utils.StrIsNullOrEmpty(htmltitle) && htmltitle != topic.Title) { Topics.WriteHtmlTitleFile(Utils.RemoveUnsafeHtml(htmltitle), topic.Tid); } } else { if (ForumUtils.IsHidePost(postmessage) && usergroupinfo.Allowhidecode == 1) { topic.Hide = 1; Topics.UpdateTopic(topic); } } }