整合dz论坛短消息出现的问题

原创 2007年09月28日 21:25:00

       最近在做的模块是用户与用户,系统与用户之间发信息,论坛整合是dz的,为了以后升级,所以短消息的原型是dz的短消息表,它里面有收件箱,发件箱和草稿箱三个箱子,可是我们这个系统中要在这个基础上多加两个箱子,保险箱和回收站,在保险箱中的信息,系统和用户都不能删除,只有把它转移到别的箱中才能进行删除操作。当然了,一条信息只能所属一个箱子,并且还能转移信息,也就是在保险箱中既有收件箱,发件箱,草稿箱和回收站,只不过是folder的编号不同,反之。为了说明遇到的问题,先把dz的表结构,和箱子的编号说一下,0:收件箱,1:发件箱,2:草稿箱,3:保险箱,4:回收站,因为dz只有前三个,所以后两个是我们自己添加,有的系统保险箱是单独的一个表,因为还有考虑到升级的问题,所以就么有考虑这种做法,
主键       发送人id       收件人Id       箱子       标题       内容       是否已读
Pmid       msgfromid      msgtoid          folder      subject    message  new

      

如果没有添加后两个箱子的话,如果我发信给  B ,那么msgfromid是我,msgtoidB,在我的消息系统当然没有信息(如果在发送的同时并且保存在发件箱,那么就会出现两条记录,只不过箱子不同,那么在我的发件箱中就会有一封信息),我中的收件箱是按msgtoid来收信,反之B中的收件箱也是按msgtoid来算,Sql语句:收件箱是按msgtoid= meid and folder=0 发件箱是:msgfromid = meid and folder = 1(草稿箱和发件箱等同只不过folder不同)。B 反之。

   说到现在肯定一点问题都没有,但是如果我们加上两个箱子,并且还能转移信息,那么问题就出来。

   如果我再给B发信息,并且发一条,保存一条,收件箱和发件箱还是按上面的语句走,但是如果我其中的一封信息转移到了保险箱(folder3),如果按上面的语句,就是两个箱子Or一下,也就是:(msgfromid = B and folder = 3 Or (msgtoid = B and folder = 3),按正常来说,我给B发信息,发出去之后,对这条信息的处置权跟我没有关系了,可是如果我同时给B发一封,在自己保留一封(发件箱),也就是出现两条记录,只不过在我这边是发件箱(1),在B中是收件箱(0),

msgFromid     msgtoid          folder

Me                 B            0            (在B中是收件箱)已经发出去了,处置权归B

Me                 B           1            (在我中是发件箱),这条信息是我的, 处置权归我

 

假设我把发件箱中这条信息的箱子转移到保险箱中(folder : 3) 也就是

msgFromid     msgtoid          folder

Me                 B            0            (在B中是收件箱)处置权归B

Me                 B           3            (原先在我中是发件箱,现在是保险箱) 处置权归我

 

我没有转移前:按着(msgfromid = B and folder = 3 Or (msgtoid = B and folder = 3)

肯定在B中的保险箱没有信息,

可是在我转移后我把我的folder 改成3

在按着上面的语句就会出现,在我的包厢中的信息,同时出现在B中的保险中中,可是这条信息的确是我的,后果就不说了。。

   出现上面的问题,所以就不能按dz的写了,所以为了解决上面的问题,就只能在加一个字段了,ower信息所有者,说明这条信息到底是谁的,在调收件箱就不能是msgtoid = meid and folder = 1 了,就变成owerid = meid and folder= 1 ,这样在出现我发一条在保存一条,只不过就是owerid不同了,也就没有在取我信息的总条数用selct count(*) as pmidcount from dnt_pms where (msgfromid = meid and folder = 1 ) or (msgtoid=meid and folder = 0) or (msgfromid = meid and folder = 2),就不用判断箱子了,直接用Select count(*) as pmidcount from dnt_pms where owerid = meid .

 

现在我用的是这种办法,不知道这种做法有没有其他的问题,反正我现在感觉还没有:)

如果还有其他的好办法,在这请教以下

 

Discuz x2.5 论坛性能优化速度优化的方法 - 让你论坛秒开

很多同学都说论坛升级到discuz x2.5,感觉论坛速度慢了,其实Discuz x2.5在论坛性能优化方面做了很大的改进,对大型网站优化方面更为明显一些,今天群狼网为大家分享下论坛速度优化的方法。 ...
  • u011621139
  • u011621139
  • 2015年05月01日 16:36
  • 1713

Discuz论坛整合web项目

通过查阅一些资料和自己项目中的实际操作来写 一.准备工作 访问UCenter控制台,添加新应用,其中 安装方式:自定义 应用类型:其他 应用名称:JAVA项目名称,可随意 应用主URL...
  • UnknownZYB
  • UnknownZYB
  • 2015年10月20日 18:10
  • 735

解决destoon与discuz整合后,只有destoon登录、退出时discuz会同步,反则无效的方法!!!!

进入论坛目录uc_client/data/cache/,下载apps.php,查看里面是否有Destoon应用  如果有,问题不在这里,查找其他可能存在的问题;  如果没有,删除服务器上的...
  • shanzhihang
  • shanzhihang
  • 2015年08月28日 10:06
  • 825

Thinkphp整合discuz

注册应用 复制Ucenter目录到你的 APP_PATH 下,作为一个Ucenter模块。 以Home模块为例,创建控制器 Home\Controller\ApiController ,如果关...
  • slqgenius
  • slqgenius
  • 2016年11月10日 11:43
  • 730

[discuz] 在插件目录外部调用插件的变量

今天改一个discuz的代码,在插件目录中的文件调用插件的变量,是OK的,但是在外部调用插件的变量,就不行,查了一些资料,解决办法: 实用插件变量之前,先调用函数: loadcache('plug...
  • yangmingysc
  • yangmingysc
  • 2013年02月06日 00:42
  • 2667

DZ论坛页面增加摘要

找到相关位置:forumdisplay_list.htm找到列表
  • langyu1021
  • langyu1021
  • 2017年04月02日 16:42
  • 326

dz论坛修改用户信息-dz第三方修改论坛用户密码

  • xiaoshu611
  • xiaoshu611
  • 2016年07月19日 11:20
  • 443

Discuz!论坛主题全局置顶、分类置顶看不见或没有效果的解决方法

很多站长朋友遇到这样的问题,发现明明已经操作了全局置顶或者分类置顶,但是一直没有效果。 出现这种情况,一般是后台没有开启全局置顶显示功能造成的 打开后台->界面->界面设置->主题列表页 ...
  • lih062624
  • lih062624
  • 2017年04月10日 16:12
  • 3821

hdwiki/destoon/discuz通过UC整合后会员注册提交后没有跳转解决方法

修改destoon根目录下module/member/register.inc.php if($do->add($post)) { $userid =...
  • xst686
  • xst686
  • 2012年12月06日 13:29
  • 1164

【已解决】Discuz自定义表情后出现array_slice() [function.array-slice]: The first argument should be an array……的解决方法

试用discuz6.1,添加自定义表情后出现array_slice() [function.array-slice]: The first argument should be an array……的...
  • lxbin
  • lxbin
  • 2008年10月28日 10:48
  • 1729
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:整合dz论坛短消息出现的问题
举报原因:
原因补充:

(最多只允许输入30个字)