请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Discuz! X 最新研发动态 通过这个窗口,关注跟踪我们的研发进展 Discuz! 开发技术文库 - 给官方提建议

Discuz! X2 正式版下载 帮助网站实现一站式服务  商业支持服务咨询 下载 - 安装 - 常见问题 - 转换 - 讨论 - 购买

2012站长年会开启报名 限量船票免费发放 Discuz!十大荣誉用户评选 - Discuz!NT3.6发布 漫游引入QQ空间游戏 -一骑新区横扫三国-5d6d免费论坛

查看: 13260|回复: 56

版主评语 V2.0 [Sunwy修改V2.0 For Dz6.0 GBK] 欢迎测试 [复制链接]

Rank: 4

UID
186114
积分
913
帖子
346
威望
0
在线时间
345 小时
注册时间
2005-4-1
发表于 2007-12-6 11:21:59 |显示全部楼层
版主评语 V2.0 For Dz5.0 GBK[Sunwy修改V2.0 For Dz6.0 GBK] 欢迎测试

本人一php菜鸟,凭着对DZ的喜爱,参考badfox的"版主评语"V2.0,在Dz6.0 GBK测试通过,有兴趣的试下!

原帖子:http://www.discuz.net/viewthread.php?tid=471419&;extra=&highlight=%C6%C0%D3%EF&page=1
演示效果见:http://bbs.sunwy.com/thread-12524-4-2.html

#############################################
插件名称:版主评语 V2.0
适用版本:Dz5.0 GBK
作  者:badfox
修    改:Sunwy
指      导:cnstudent 习明
修改文件:
        templates\default\viewthread.htm
        viewthread.php
        pms.lang.php
        topicadmin.php  
        admin\prune.inc.php
        admin\threads.inc.php
        include\editpost.inc.php
增加文件:
        cments.php
        templates\default\cments.htm
        templates\default\viewcments.htm
        templates\default\editcments.htm
数据升级:有 (增加一个存放评语的数据表和在POSTS表下增加一个存放评语次数的字段)
最后更新:2006/11/29
演  示:只在本地测试通过,没有演示条件!

功能说明:
        跟评分相似,可以在权限范围内每个帖子的每个楼层发表对帖子的评语;
        可以在发表评语一定时间内编辑自己发表的评语;
        可以在权限范围内删除帖子的评语,但不能编辑除自己发表的评语以外的评语;
        评语作者可以在编辑评语界面下删除自己的评语;


备  注:

        相对于v1.*,这个只是增加了编辑和删除的功能,个人觉得,评语又不是帖子,不需要编辑功能,所以上一个版本功能够用了,就不

用升级到这个版本了!

安装插件有风险,安装前注意备份数据库及各文件!

补    充:
水平有限,难免会有疏漏,希望各位老师有时间能指点一下,感激不尽!

有的朋友原意使用这个功能,可是怕漏洞太多,希望有正式版、wan mei版,其实我认为任何东西都不会十全十mei,Discuz!5.0 的正式版已经很不错了,可是也会有漏洞,至于这个插件,我的水平不敢保证一点问题没有,我只能保证这个插件绝对不会造成“权限提升”“刷积分”等严重问题,毕竟涉及不到那个层面!

发现问题,解决问题才是提高! 欢迎有兴趣的来PP!

至于指导写上cnstudent  习明的名字,主要是cnstudent  习明给了不少的帮助和指点,表示感谢而已,并没有征求到cnstudent 习明老师的同意,希望不要见怪!

两位老师很忙,并没有帮助测试,所以如果出了什么漏洞,那是我没有测试出来,不是故意往两位脸上抹黑!  
#############################################

全新安装开始:


一、升级数据库
建立一个存放评语的数据表,请根据实际情况修改表前缀'cdb_',和  `cments` char(80) 的字符数!
  1. ALTER TABLE `cdb_posts` ADD `cments` int(10) UNSIGNED NOT NULL ;

  2. CREATE TABLE `cdb_cments` (
  3.   `cid` int(10) unsigned NOT NULL auto_increment,
  4.   `pid` int(10) unsigned NOT NULL default '0',
  5.   `tid` mediumint(8) UNSIGNED NOT NULL default '0',
  6.   `uid` mediumint(8) unsigned NOT NULL default '0',
  7.   `username` char(15) NOT NULL default '',
  8.   `dateline` int(10) unsigned NOT NULL,
  9.   `lastmodate` int(10) unsigned NOT NULL,
  10.   `cments` varchar(80) NOT NULL default '',
  11.   PRIMARY KEY  (`cid`),
  12.   KEY `pid` (`pid`,`dateline`),
  13.   KEY `dateline` (`dateline`)
  14. ) TYPE=MyISAM character set=gbk;
复制代码
二、打开viewthread.php
查找:
  1. $newpostanchor = $postcount = $ratelogpids = 0;
复制代码
替换成
  1. //增加评语开始
  2. $newpostanchor = $postcount = $ratelogpids = $cmentspids = 0;
  3.         $cmentsnum = 5;//帖子中最多显示的评语数!
  4.         $cmentcolor1 = '#EEaaaa';//评语框标题颜色!
  5.         $cmentcolor2 = '#aaEEaa';//发布评语的版主名称颜色!
  6.         $cmentcolor3 = '#AAAAAA';//发布评语的时间颜色!
  7.         $cmentcolor4 = '#5555EE';//评语颜色!
  8. //增加评语结束
复制代码
查找:
  1. $ratelogpids .= ($ratelogrecord && $post['ratetimes']) ? ','.$post['pid'] : '';
复制代码
在下面插入
  1. if($post['cments']) $cmentspids .= ($post['cments']) ? ','.$post['pid'] : '';
复制代码
查找:
  1. if($ratelogpids) {
  2.   $query = $db->query("SELECT * FROM {$tablepre}ratelog WHERE pid IN ($ratelogpids) ORDER BY dateline DESC");
  3.   while($ratelog = $db->fetch_array($query)) {
  4.    if(count($postlist[$ratelog['pid']]['ratelog']) < $ratelogrecord) {
  5.     $ratelog['dateline'] = gmdate("$dateformat $timeformat", $ratelog['dateline'] + $timeoffset * 3600);
  6.     $ratelog['score'] = $ratelog['score'] > 0 ? '+'.$ratelog['score'] : $ratelog['score'];
  7.     $ratelog['reason'] = dhtmlspecialchars($ratelog['reason']);
  8.     $postlist[$ratelog['pid']]['ratelog'][] = $ratelog;
  9.    }
  10.   }
  11. }
复制代码
在下面插入
  1. //评语开始
  2.                 if($cmentspids) {
  3.                         $query = $db->query("SELECT * FROM {$tablepre}cments WHERE pid IN ($cmentspids) ORDER BY dateline DESC");
  4.                         while($cments = $db->fetch_array($query)) {
  5.                                 if(count($postlist[$cments['pid']]['cment']) < $cmentsnum ) {
  6.                                         $cments['dateline'] = gmdate("$dateformat $timeformat", $cments['dateline'] + $timeoffset * 3600);
  7.                                         $postlist[$cments['pid']]['cment'][] = $cments;
  8.                                 } else {
  9.                                          break;
  10.                                 }
  11.                         }
  12.                 }
  13. //评语结束
复制代码
查找:
  1. function viewthread_procpost($post, $special = 0) {

  2. global $_DCACHE, $newpostanchor, $numpost, $thisbg, $postcount, $ratelogpids, $onlineauthors, $lastvisit, $thread,
  3. $attachpids, $attachtags, $forum, $dateformat, $timeformat, $timeoffset, $userstatusby, $allowgetattach,
  4. $allowpaytoauthor, $ratelogrecord, $showimages, $forum, $discuz_uid, $showavatars, $pagebydesc, $ppp2,
  5. $firstpid, $videoopen;
复制代码
替换成
  1. function viewthread_procpost($post, $special = 0) {

  2. global $_DCACHE, $newpostanchor, $numpost, $thisbg, $postcount, $ratelogpids, $onlineauthors, $lastvisit, $thread,
  3. $attachpids, $attachtags, $forum, $dateformat, $timeformat, $timeoffset, $userstatusby, $allowgetattach,
  4. $allowpaytoauthor, $ratelogrecord, $showimages, $forum, $discuz_uid, $showavatars, $pagebydesc, $ppp2,
  5. $firstpid, $videoopen,$cmentspids;
复制代码
打开templates\default\viewthread.htm
查找:

  1.       <!--{if $raterange && $post['authorid']}-->
  2.        <a href="misc.php?action=rate&tid=$tid&pid=$post[pid]&page=$page" id="ajax_rate_$post[pid]" onclick="ajaxmenu(event, this.id, 9000000, null, 0)">{lang rate}</a>
  3.       <!--{/if}-->
复制代码
在下面插入
  1.   
  2.                 <!--{if $forum['ismoderator']}--> <a href="cments.php?action=cments&tid=$tid&pid=$post[pid]&page=$page">评语</a>
  3.     <!--{/if}-->
复制代码
查找:
  1.        <!--{if !empty($post['ratelog'])}-->
  2.         <fieldset>
  3.          <legend><a href="misc.php?action=viewratings&tid=$tid&pid=$post[pid]" title="{lang rate_view}">{lang thread_rate_log_lately}</a></legend>
  4.          <ul>
  5.          <!--{loop $post['ratelog'] $ratelog}-->
  6.           <li>
  7.            <cite><a href="space.php?uid=$ratelog[uid]" target="_blank">$ratelog[username]</a></cite>
  8.            {$extcredits[$ratelog[extcredits]][title]}
  9.            <strong>$ratelog[score]</strong>
  10.            <em>$ratelog[reason]</em>
  11.            $ratelog[dateline]
  12.           </li>
  13.          <!--{/loop}-->
  14.          </ul>
  15.         </fieldset>
  16.        <!--{/if}-->
复制代码
下面插入:
  1.        <!--{if !empty($post['cments'])}-->
  2.         <fieldset>
  3.          <legend><a href="cments.php?action=viewcments&tid=$tid&pid=$post[pid]" title="{lang py_view}"><font color= $cmentcolor1 >{lang thread_py_log_lately}</font></a></legend>
  4.          <ul>
  5.                                     <!--{loop $post['cment'] $cments}-->
  6.           <li>
  7.            <cite><a href="space.php?uid=$cments[uid]" target="_blank"><font color= $cmentcolor2>$cments[username]</font></a></cite>
  8.            <em><font color= $cmentcolor3>$cments[dateline]</font></em>
  9.            <font color= $cmentcolor4>$cments[cments]</font>
  10.           </li>
  11.          <!--{/loop}-->
  12.          </ul>
  13.         </fieldset>
  14.        <!--{/if}-->
复制代码
打开topicadmin.php
查找:
  1.   $db->query("DELETE FROM {$tablepre}myposts WHERE tid='$othertid'");
复制代码
下面插入:
  1.                                 $db->query("DELETE FROM {$tablepre}cments WHERE tid IN ($moderatetids)", 'UNBUFFERED');
复制代码
查找:
  1.   $db->query("DELETE FROM {$tablepre}posts WHERE pid IN ($pids)");
复制代码
下面插入:
  1.                        $db->query("DELETE FROM {$tablepre}cments WHERE pid IN ($pids)");
复制代码
打开admin\prune.inc.php

查找:
  1.    $db->query("DELETE FROM {$tablepre}threads WHERE tid IN ($tidsdelete)");
复制代码
下面插入:
  1.             $db->query("DELETE FROM {$tablepre}cments WHERE pid IN ($pidsdelete)", 'UNBUFFERED');
  2.             $db->query("DELETE FROM {$tablepre}cments WHERE tid IN ($tidsdelete)", 'UNBUFFERED');
复制代码
打开admin\threads.inc.php
查找:
  1.   $db->query("DELETE FROM {$tablepre}videos WHERE $tidsadd", 'UNBUFFERED');
复制代码
下面插入:
  1.   $db->query("DELETE FROM {$tablepre}cments WHERE tid IN ($tids)", 'UNBUFFERED');
复制代码
打开include\editpost.inc.php

查找:
  1. $db->query("DELETE FROM {$tablepre}posts WHERE pid='$pid'");
复制代码
下面插入:
  1.   $db->query("DELETE FROM {$tablepre}cments WHERE pid='$pid'");
复制代码
打开templates\default\pms.lang.php
查找:
  1. $language = array
  2. (
复制代码
下面插入:
  1.      'rate_cments_subject' => '[Discuz!] 您发表的帖子被评论',
  2.      'rate_cments_message' => '这是由论坛系统自动发送的通知短消息。
  3.                                 以下您所发表的帖子被 [url={$boardurl}viewpro.php?uid={$discuz_uid}]{$discuz_user}[/url] 评论。
  4.                                 [quote]{$post[message]}[/quote]                                
  5.                                 发表时间: {$post[dateline]}
  6.                                 所在论坛: [url={$boardurl}forumdisplay.php?fid={$fid}]{$forumname}[/url]
  7.                                 所在主题: [url={$boardurl}viewthread.php?tid={$tid}&page={$page}#pid{$pid}]{$thread[subject]}[/url]
  8.                                 评语内容: {$cments}',
复制代码
三、上传
将附件中的
cments.php上传至论坛根目录下!
cments.htm viewcments.htm editcments.htm上传至templates\default目录下!

全新安装结束。

------------升级安装:------------
安装过1.2版本的朋友,升级的最完全办法是
删除原先增加的数据表: 复制内容到剪贴板 代码:ALTER TABLE `cdb_posts` drop `cments` ;
drop TABLE `cdb_cments`;
再安装新的数据表: 复制内容到剪贴板 代码:ALTER TABLE `cdb_posts` ADD `cments` int(10) UNSIGNED NOT NULL ;
  1. CREATE TABLE `cdb_cments` (
  2.   `cid` int(10) unsigned NOT NULL auto_increment,
  3.   `pid` int(10) unsigned NOT NULL default '0',
  4.   `tid` mediumint(8) UNSIGNED NOT NULL default '0',
  5.   `uid` mediumint(8) unsigned NOT NULL default '0',
  6.   `username` char(15) NOT NULL default '',
  7.   `dateline` int(10) unsigned NOT NULL,
  8.   `lastmodate` int(10) unsigned NOT NULL,
  9.   `cments` varchar(80) NOT NULL default '',
  10.   PRIMARY KEY  (`cid`),
  11.   KEY `pid` (`pid`,`dateline`),
  12.   KEY `dateline` (`dateline`)
  13. ) TYPE=MyISAM character set=gbk;
复制代码
然后把附件中的文件覆盖到相应目录即可!

升级安装结束
至于表里的数据,自然就没了,评语而已,不会影响积分什么的!
如果真要保住数据,我还没想到办法,因为对SQL语句还是不是很熟,不过可以互相探讨,这里这么多老师,会有办法的!


------------卸载方法:------------
首先将修改过的文件改为原样;
删除安装过程中增加的文件;
后台升级数据库:(即删除增加的数据表和字段) 复制内容到剪贴板 代码:ALTER TABLE `cdb_posts` drop `cments` ;
drop TABLE `cdb_cments`;
卸载结束

sunwy修改的附件(不包括以上文件)
只有如下4个:
cments.php上传至论坛根目录下!
cments.htm viewcments.htm editcments.htm

[ 本帖最后由 water201 于 2007-12-6 11:37 编辑 ]

评语_sunwy_for_dz6.rar

5.56 KB, 下载次数: 438

已有 1 人评分金币 收起 理由
pchhh + 2 我很赞同

总评分: 金币 + 2   查看全部评分

阳光网驿论坛[url=http://bbs.sunwy.org/sitemap.php]http://bbs.sunwy.org/sitemap.php[/url]

Rank: 3Rank: 3

UID
848145
积分
225
帖子
304
威望
-2
在线时间
0 小时
注册时间
2007-10-28
发表于 2007-12-6 11:26:24 |显示全部楼层
先看下吧。
Visual'R 时尚 主流 领秀  http://www.visualr.cn

使用道具 举报

Forum Legend

Administrator

Rank: 8Rank: 8

UID
442277
积分
4155
帖子
4643
威望
2
在线时间
7 小时
注册时间
2006-9-16
发表于 2007-12-6 11:27:38 |显示全部楼层
下载先本地测试一下,谢谢楼主,这个功能好喜欢

使用道具 举报

Forum Legend

Administrator

Rank: 8Rank: 8

UID
442277
积分
4155
帖子
4643
威望
2
在线时间
7 小时
注册时间
2006-9-16
发表于 2007-12-6 11:29:43 |显示全部楼层
楼主,评语的字数限制是多少?

使用道具 举报

King

I am Unknown Pleasures

Rank: 6Rank: 6

UID
190232
积分
1241
帖子
1221
威望
0
在线时间
136 小时
注册时间
2005-4-15
发表于 2007-12-6 11:34:45 |显示全部楼层
沙发~~~~~~~~~~~~

使用道具 举报

Rank: 4

UID
186114
积分
913
帖子
346
威望
0
在线时间
345 小时
注册时间
2005-4-1
发表于 2007-12-6 11:36:17 |显示全部楼层
因为增加了数据表,所以字数就看你的数据表设置了
阳光网驿论坛[url=http://bbs.sunwy.org/sitemap.php]http://bbs.sunwy.org/sitemap.php[/url]

使用道具 举报

Rank: 6Rank: 6

UID
429267
积分
1392
帖子
1506
威望
0
在线时间
148 小时
注册时间
2006-8-29
发表于 2007-12-6 12:23:00 |显示全部楼层
哎,原以为这个会简单的

哪知道那么复杂,放弃!!

使用道具 举报

Forum Legend

爱喝水的鱼

Rank: 8Rank: 8

UID
93475
积分
3650
帖子
3783
威望
13
在线时间
97 小时
注册时间
2004-6-17
发表于 2007-12-6 12:35:54 |显示全部楼层
此贴怎能不支持???

顶了再说
很多人付出的很多.却得不到等量的收获.唉.这世道。

连我这个可怜的签名都有人盗用,没救了!
详情请自行复制本人签名至百度!

申明:本签名本人自2005年底一直沿用至今!- -#

使用道具 举报

Rank: 3Rank: 3

UID
800448
积分
386
帖子
482
威望
0
在线时间
0 小时
注册时间
2007-9-8
发表于 2007-12-6 12:45:15 |显示全部楼层
我就是想知道,评语的字数最大限制了多少?

使用道具 举报

Rank: 4

UID
186114
积分
913
帖子
346
威望
0
在线时间
345 小时
注册时间
2005-4-1
发表于 2007-12-6 14:10:56 |显示全部楼层
`cments` varchar(80) NOT NULL default '',

这个字段放评语,你看看有多大了
阳光网驿论坛[url=http://bbs.sunwy.org/sitemap.php]http://bbs.sunwy.org/sitemap.php[/url]

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

fastpost

手机版|Archiver|北京康盛新创科技有限责任公司 ( 京ICP证110024号|京网文[2011]0019-007号 )  

GMT+8, 2012-2-13 07:58 , Processed in 0.132715 second(s), 17 queries , Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部