Discuz!NT

注册

 

QQ登录

只需一步,快速开始

发新话题

银光图片功能的补丁(已修正imagedir问题) [复制链接]

1#
演示地址:http://nt.discuz.net/showtopic.aspx?topicid=126169

安装方法:
             1,覆盖此附件包内的bin,services,silverlight,templates四个目录
             2,覆盖完成后重新生成模板

注:目前此功能只适用于.net2.0下
upgrade20100513(银光图片).zip (, 下载次数:853)
本主题由 超级版主 wysky 于 2010/9/29 13:31:36 执行 主题置顶/取消 操作
分享 转发
TOP
2#

沙发!
TOP
3#

服装网 http://www.2e5e.com
TOP
4#

hao 东西,已经装上去
TOP
5#

services/Album.asmx 出现500错误
asmx映射已做好
发现用get方法不会出现500错误
用post的话就出现了500错误?
TOP
6#

这个包只要安装配置好了就可以用了,要不你把地址“http://ip/services/Album.asmx ”发过来,我去看盾
TOP
7#

编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。

编译器错误信息: CS0103: 当前上下文中不存在名称“imagedir”
桥王资讯
TOP
8#

刚反编译了下,把cs文件命名为Album.asmx.cs 放在Discuz.Web.Service下,然后编译一下,就不会出现500错误了
imagedir 错误把 模板里面的{imagedir}改为{forumurl}templates/{templatepath}/images
{jsdir} 改为 {forumurl}javascript
TOP
9#

修改后的代码

反编译后的代码
namespace Discuz.Web.services
{
    using Discuz.Common;
    using Discuz.Common.Generic;
    using Discuz.Config;
    using Discuz.Data;
    using Discuz.Entity;
    using Discuz.Forum;
    using System;
    using System.ComponentModel;
    using System.Runtime.InteropServices;
    using System.Text.RegularExpressions;
    using System.Web.Services;

    [WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1), ToolboxItem(false), WebService(Namespace="http://tempuri.org/")]
    public class Album : WebService
    {
        private static Regex regexAttach = new Regex(@"\[attach\](\d+?)\[\/attach\]", RegexOptions.IgnoreCase);
        private static Regex regexAttachImg = new Regex(@"\[attachimg\](\d+?)\[\/attachimg\]", RegexOptions.IgnoreCase);
        private static Regex regexHide = new Regex(@"\s*\[hide\][\n\r]*([\s\S]+?)[\n\r]*\[\/hide\]\s*", RegexOptions.IgnoreCase);

        private bool AuthenticateUser(CredentialInfo creinfo)
        {
            if (creinfo.UserID > 0)
            {
                int olidByUid = Discuz.Forum.OnlineUsers.GetOlidByUid(creinfo.UserID);
                if (olidByUid > 0)
                {
                    OnlineUserInfo onlineUser = Discuz.Forum.OnlineUsers.GetOnlineUser(olidByUid);
                    if ((onlineUser.Userid == creinfo.UserID) && (Utils.UrlEncode(ForumUtils.SetCookiePassword(onlineUser.Password, GeneralConfigs.GetConfig().Passwordkey)) == creinfo.Password))
                    {
                        return true;
                    }
                }
            }
            return false;
        }

        private static int GetAllowGetAttachValue(PostpramsInfo postpramsInfo)
        {
            if (Discuz.Forum.Forums.AllowGetAttachByUserID(Discuz.Forum.Forums.GetForumInfo(postpramsInfo.Fid).Permuserlist, postpramsInfo.CurrentUserid))
            {
                return 1;
            }
            int num = 0;
            if (postpramsInfo.Getattachperm.Equals("") || (postpramsInfo.Getattachperm == null))
            {
                return postpramsInfo.CurrentUserGroup.Allowgetattach;
            }
            if (Discuz.Forum.Forums.AllowGetAttach(postpramsInfo.Getattachperm, postpramsInfo.Usergroupid))
            {
                num = 1;
            }
            return num;
        }
TOP
10#

[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;
        }
TOP
发新话题