[WebMethod]
public List<ShowtopicPageAttachmentInfo> GetAttachList(int topicid, int forumid, string onlyauthor, int posterid, CredentialInfo creinfo)
{
TopicInfo topicInfo = Discuz.Forum.Topics.GetTopicInfo(topicid);
ForumInfo forumInfo = Discuz.Forum.Forums.GetForumInfo(forumid);
UserInfo userinfo = new UserInfo();
UserGroupInfo userGroupInfo = Discuz.Forum.UserGroups.GetUserGroupInfo(7);
if (this.AuthenticateUser(creinfo))
{
userinfo = Discuz.Forum.Users.GetUserInfo(creinfo.UserID);
userGroupInfo = Discuz.Forum.UserGroups.GetUserGroupInfo(userinfo.Groupid);
}
int ismoder = Discuz.Forum.Moderators.IsModer(userGroupInfo.Radminid, userinfo.Uid, forumid) ? 1 : 0;
int price = this.GetTopicPrice(topicInfo, creinfo, ismoder);
return this.GetAttachList(price, onlyauthor, ismoder, posterid, userinfo, userGroupInfo, topicInfo, forumInfo);
}
private List<ShowtopicPageAttachmentInfo> GetAttachList(int price, string onlyauthor, int ismoder, int posterid, UserInfo userinfo, UserGroupInfo usergroupinfo, TopicInfo topic, ForumInfo forum)
{
GeneralConfigInfo config = GeneralConfigs.GetConfig();
PostpramsInfo postpramsInfo = new PostpramsInfo();
postpramsInfo.Fid=forum.Fid;
postpramsInfo.Tid=topic.Tid;
postpramsInfo.Jammer=forum.Jammer;
postpramsInfo.Pagesize=0x2710;
postpramsInfo.Pageindex=1;
postpramsInfo.Getattachperm=forum.Getattachperm;
postpramsInfo.Usergroupid=usergroupinfo.Groupid;
postpramsInfo.Attachimgpost=config.Attachimgpost;
postpramsInfo.Showattachmentpath=config.Showattachmentpath;
postpramsInfo.Price=price;
postpramsInfo.Usergroupreadaccess=(ismoder == 1) ? 0x7fffffff : usergroupinfo.Readaccess;
postpramsInfo.CurrentUserid=userinfo.Uid;
postpramsInfo.Showimages=forum.Allowimgcode;
postpramsInfo.Smiliesinfo=Discuz.Forum.Smilies.GetSmiliesListWithInfo();
postpramsInfo.Customeditorbuttoninfo=Discuz.Forum.Editors.GetCustomEditButtonListWithInfo();
postpramsInfo.Smiliesmax=config.Smiliesmax;
postpramsInfo.Bbcodemode=config.Bbcodemode;
postpramsInfo.CurrentUserGroup=usergroupinfo;
postpramsInfo.Topicinfo=topic;
postpramsInfo.Hide=((topic.Hide == 1) && (Discuz.Forum.Posts.IsReplier(topic.Tid, userinfo.Uid) || (ismoder == 1))) ? -1 : 1;
postpramsInfo.Hide=(topic.Posterid == userinfo.Uid) ? -2 : postpramsInfo.Hide;
postpramsInfo.Condition=Discuz.Forum.Posts.GetPostPramsInfoCondition(onlyauthor, topic.Tid, posterid);
postpramsInfo.Usercredits=(userinfo == null) ? 0 : userinfo.Credits;
List<ShowtopicPageAttachmentInfo> attachList = new List<ShowtopicPageAttachmentInfo>();
GetPostList(postpramsInfo, out attachList, ismoder == 1);
int allowGetAttachValue = GetAllowGetAttachValue(postpramsInfo);
foreach (ShowtopicPageAttachmentInfo info3 in attachList)
{
if (Discuz.Forum.Forums.AllowGetAttachByUserID(forum.Permuserlist, userinfo.Uid))
{
info3.Getattachperm=1;
info3.Allowread=1;
}
}
List<ShowtopicPageAttachmentInfo> list2 = new List<ShowtopicPageAttachmentInfo>();
foreach (ShowtopicPageAttachmentInfo info4 in attachList)
{
if ((allowGetAttachValue == 1) && (info4.Allowread == 1))
{
if ((info4.Filetype.IndexOf("jpeg") >= 0) || (info4.Filetype.IndexOf("png") >= 0))
{
if (!info4.Filename.ToLower().StartsWith("http"))
{
info4.Filename=Utils.GetRootUrl(BaseConfigs.GetForumPath) + "upload/" + info4.Filename.Trim();
}
}
else
{
list2.Add(info4);
}
continue;
}
list2.Add(info4);
}
foreach (ShowtopicPageAttachmentInfo info5 in list2)
{
attachList.Remove(info5);
}
return attachList;
}
public static List<ShowtopicPagePostInfo> GetPostList(PostpramsInfo postpramsInfo, out List<ShowtopicPageAttachmentInfo> attachList, bool isModer)
{
List<ShowtopicPagePostInfo> postList = Discuz.Data.Posts.GetPostList(postpramsInfo);
attachList = new List<ShowtopicPageAttachmentInfo>();
string pidListWithAttach =Discuz.Forum.Posts.GetPidListWithAttach(postList);
attachList = Discuz.Forum.Attachments.GetAttachmentList(postpramsInfo, pidListWithAttach);
ParsePostListExtraInfo(postpramsInfo, attachList, isModer, postList);
return postList;
}
private int GetTopicPrice(TopicInfo topicInfo, CredentialInfo creinfo, int ismoder)
{
int num = 0;
if (((topicInfo.Special != 0) || (topicInfo.Price <= 0)) || ((creinfo.UserID == topicInfo.Posterid) || (ismoder == 1)))
{
return num;
}
num = topicInfo.Price;
if (!Discuz.Forum.PaymentLogs.IsBuyer(topicInfo.Tid, creinfo.UserID) && ((Utils.StrDateDiffHours(topicInfo.Postdatetime, Scoresets.GetMaxChargeSpan()) <= 0) || (Scoresets.GetMaxChargeSpan() == 0)))
{
return num;
}
return -1;
}