Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[插件] 版主评语 V2.0 For Dz5.0 GBK [2006/11/29]欢迎测试

[复制链接]
badfox 发表于 2006-11-29 20:43:28 | 显示全部楼层 |阅读模式
版主评语 V2.0 For Dz5.0 GBK [2006/11/29]

没有条件演示,只是通过本地测试,应该不会有大问题了,有兴趣的帮忙测试一下!

由于本插件需要新建数据表,所以后台备份时要特别注意,详见2楼!
#############################################
插件名称:版主评语 V2.0
适用版本:Dz5.0 GBK
作  者:badfox
指      导: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 = $attachpids = $ratelogpids = $threadcachestatus = 0;
复制代码


替换为:

  1.         $newpostanchor = $postcount = $attachpids = $ratelogpids = $threadcachestatus = $cmentspids = 0;
  2.         $cmentsnum = 5;//帖子中最多显示的评语数!
  3.         $cmentcolor1 = '#EEaaaa';//评语框标题颜色!
  4.         $cmentcolor2 = '#aaEEaa';//发布评语的版主名称颜色!
  5.         $cmentcolor3 = '#AAAAAA';//发布评语的时间颜色!
  6.         $cmentcolor4 = '#5555EE';//评语颜色!
复制代码


查找:

  1. if($ratelogrecord && $post['ratetimes']) $ratelogpids .= ','.$post['pid'];
复制代码

在下面插入


  1.                         if($post['cments']) $cmentspids .= ','.$post['pid'];
复制代码


查找:

  1.                 if($ratelogpids) {
  2.                         $query = $db->query("SELECT * FROM {$tablepre}ratelog WHERE pid IN ($ratelogpids) ORDER BY dateline

  3. DESC");
  4.                         while($ratelog = $db->fetch_array($query)) {
  5.                                 if(count($postlist[$ratelog['pid']]['ratelog']) < $ratelogrecord) {
  6.                                         $ratelog['dateline'] = gmdate("$dateformat $timeformat", $ratelog['dateline'] +

  7. $timeoffset * 3600);
  8.                                         $ratelog['score'] = $ratelog['score'] > 0 ? '+'.$ratelog['score'] : $ratelog

  9. ['score'];
  10.                                         $postlist[$ratelog['pid']]['ratelog'][] = $ratelog;
  11.                                 }
  12.                         }
  13.                 }
复制代码

在下面插入


  1.                 if($cmentspids) {
  2.                         $query = $db->query("SELECT * FROM {$tablepre}cments WHERE pid IN  ($cmentspids) ORDER BY dateline

  3. DESC");
  4.                         while($cments = $db->fetch_array($query)) {
  5.                                 if(count($postlist[$cments['pid']]['cment']) < $cmentsnum ) {
  6.                                         $cments['dateline'] = gmdate("$dateformat $timeformat", $cments['dateline'] +

  7. $timeoffset * 3600);
  8.                                         $postlist[$cments['pid']]['cment'][] = $cments;
  9.                                 } else {
  10.                                          break;
  11.                                 }
  12.                         }
  13.                 }

复制代码


打开templates\default\viewthread.htm
查找:

  1.                 <!--{if $raterange && $post['authorid']}-->&nbsp;<a href="misc.php?action=rate&tid=$tid&pid=$post

  2. [pid]&page=$page">{lang rate}</a><!--{/if}-->
复制代码


下面插入:

  1.                 <!--{if $forum['ismoderator']}-->&nbsp;<a href="cments.php?action=cments&tid=$tid&pid=$post[pid]

  2. &page=$page">评语</a><!--{/if}-->
复制代码


查找:


  1.                 <!--{if $post['ratelog']}-->
  2.                         <br><fieldset><legend><a href="misc.php?action=viewratings&tid=$tid&pid=$post[pid]"

  3. title="{lang rate_view}">{lang thread_rate_log_lately}</a></legend><br>
  4.                         <table border="0" cellspacing="0" cellpadding="0">
  5.                         <!--{loop $post['ratelog'] $ratelog}-->
  6.                                 <tr><td><a href="viewpro.php?uid=$ratelog[uid]" target="_blank">$ratelog[username]</a></td>
  7.                                 <td>&nbsp;&nbsp;$ratelog[dateline]</td><td>&nbsp;&nbsp;{$extcredits[$ratelog[extcredits]]

  8. [title]}</td><td>&nbsp;&nbsp;<b>$ratelog[score]</b></td>
  9.                                 <td>&nbsp;&nbsp;$ratelog[reason]</td></tr>
  10.                         <!--{/loop}-->
  11.                         </table>
  12.                         </fieldset>
  13.                 <!--{/if}-->
复制代码

下面插入:

  1.                 <!--{if $post['cments']}-->
  2.                         <br><fieldset><legend><a href="cments.php?action=viewcments&tid=$tid&pid=$post[pid]" title="

  3. 浏览本帖所有评语"><font color= $cmentcolor1 >版主评语</font></a></legend><br>
  4.                         <table border="0" cellspacing="0" cellpadding="0">
  5.                         <!--{loop $post['cment'] $cments}-->
  6.                                 <tr><td><a href="viewpro.php?uid=$cments[uid]" target="_blank"><font color= $cmentcolor2

  7. >$cments[username]</font></a></td>
  8.                                 <td>&nbsp;&nbsp;<font color= $cmentcolor3 >$cments[dateline]</font></td>
  9.                                 <td>&nbsp;&nbsp;<font color= $cmentcolor4 >$cments[cments]</font></td></tr>
  10.                         <!--{/loop}-->
  11.                         </table>
  12.                         </fieldset>
  13.                 <!--{/if}-->
复制代码


打开topicadmin.php
查找:

  1. $db->query("DELETE FROM {$tablepre}activityapplies WHERE tid IN ($moderatetids)", 'UNBUFFERED');
复制代码


下面插入:

  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}activityapplies WHERE tid IN ($tidsdelete)", 'UNBUFFERED');
复制代码

下面插入:


  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}relatedthreads WHERE tid IN ($tids)", '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.                                 [b]以下您所发表的帖子被 [url={$boardurl}viewpro.php?uid={$discuz_uid}][i]{$discuz_user}[/i]

  4. [/url] 评论。[/b]
  5.                                 [quote]{$post[message]}[/quote]
  6.                                
  7.                                 [b]发表时间:[/b] {$post[dateline]}
  8.                                 [b]所在论坛:[/b] [url={$boardurl}forumdisplay.php?fid={$fid}]{$forumname}[/url]
  9.                                 [b]所在主题:[/b] [url={$boardurl}viewthread.php?tid={$tid}&page={$page}#pid{$pid}]{$thread

  10. [subject]}[/url]

  11.                                 [b]评语内容:[/b] {$cments}',
复制代码


三、上传
将附件中的
cments.php上传至论坛根目录下!
cments.htm viewcments.htm editcments.htm上传至templates\default目录下!

全新安装结束。

------------升级安装:------------
安装过1.2版本的朋友,升级的最完全办法是
删除原先增加的数据表:

  1. ALTER TABLE `cdb_posts` drop `cments` ;
  2. drop TABLE `cdb_cments`;
复制代码

再安装新的数据表:

  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;
复制代码

然后把附件中的文件覆盖到相应目录即可!

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


------------卸载方法:------------
首先将修改过的文件改为原样;
删除安装过程中增加的文件;
后台升级数据库:(即删除增加的数据表和字段)

  1. ALTER TABLE `cdb_posts` drop `cments` ;
  2. drop TABLE `cdb_cments`;
复制代码

卸载结束

[ 本帖最后由 badfox 于 2006-11-30 07:50 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 楼主| badfox 发表于 2006-11-29 20:45:41 | 显示全部楼层
关于数据备份:

安装此插件后,由于是新建的cdb_cments数据表,所以在后台的

[ 全部备份  标准备份   最小备份 ]

三个模式中,都不包括新建的数据表,所以就无法备份cdb_cments数据表;所以在数据库损坏后的恢复数据尤其是转移论坛时恢复数据,就会造成数据表缺失!

推荐两个解决办法:

1. 选择[ 全部备份  标准备份   最小备份 ]中的一种模式备份后,再选择[自定义备份]模式并选中'cdb_cments'数据表,进行备份;
恢复时将两个备份文件全部恢复即可!
此方法已测试!

2.直接选择[自定义备份]模式,选择要备份的全部数据表进行备份,当然要包括'cdb_cments'数据表;

不仅仅这个插件,所有新建数据表的插件都会存在这个问题,大家切记!

直接修改'admin/database.inc.php'文件也可以解决问题,但不推荐;

[ 本帖最后由 badfox 于 2006-11-30 07:48 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

 楼主| badfox 发表于 2006-11-29 20:45:57 | 显示全部楼层
再顶...........
回复

使用道具 举报

花石子 发表于 2006-11-29 20:45:58 | 显示全部楼层
SOFA

.
回复

使用道具 举报

花石子 发表于 2006-11-29 20:46:51 | 显示全部楼层


现在 AD 啦

http://www.yiid.com/
回复

使用道具 举报

crazystar 发表于 2006-11-29 21:31:29 | 显示全部楼层
抢楼

升级安装完成

演示
http://crazystar.byethost16.com/viewthread.php?tid=20



[ 本帖最后由 crazystar 于 2006-11-29 22:22 编辑 ]
回复

使用道具 举报

bvtc 发表于 2006-11-29 21:39:43 | 显示全部楼层
晕!!!!!!!!!!!!!!
回复

使用道具 举报

8la8la 发表于 2006-11-29 22:12:23 | 显示全部楼层
站脚
回复

使用道具 举报

lyh6613 发表于 2006-11-29 22:26:32 | 显示全部楼层
给截个图看下了
回复

使用道具 举报

开心一生 发表于 2006-11-29 22:27:05 | 显示全部楼层
:) 坐下观察   
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-4-28 19:18 , Processed in 0.106094 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表