管理提醒:
本帖被 骨头 从 商业用户交流区 复制到本区(2008-03-0
首先感谢
插件原作者,大概在phpwind2.x时候开发的,也许很多人都不知道,感谢前辈。。。
升级后修正如下:
1、修正阅贴小于有已阅贴时,仍然执行
数据库操作。
2、修正thread帖子列表页面不显示已阅版主名单。
3、版主是否跨版具备阅读权限同评分权限在后台控制
这几天有站长朋友说不清楚如何修改之显示最后阅读的版主。以及后面的elseif 的,
/*//91行开始到101行结束,注释掉的后替换成$nowread=$windid;=>只显示最后阅读版主*/
$lou<$userdb['lou'] ;
if($userdb['ifread']){
$readperson=explode("|",$userdb['ifread']);
if(!in_array($windid,$readperson)){
$nowread=$userdb['ifread'].'|'.$windid;
}else{
$nowread=$userdb['ifread'];
}
}else{
$nowread=$windid;
}
//以上从注释开始整段替换成 $nowread=$windid; 即只显示最后阅读的版主。!
if($userdb['ifread']){
$readperson=explode("|",$userdb['ifread']);
if(!in_array($windid,$readperson)){
$nowread=$userdb['ifread'].'|'.$windid;
}else{
$nowread=$userdb['ifread'];
}
}else{
$nowread=$windid;
}
和这段都替换成 .$nowread=$windid;
需要的朋友可以直接下载只显示最后阅读版本查看~!
具体修改方式如下,比较复杂,如果您对thread.php和masingle.php没有做修改可以直接覆盖。
如果您对thread.htm和read.htm也没有做修改,那么本插件将较简单安装,直接上传覆盖即可。
本插件需要操作数据库,安装插件时候请做下备份,好习惯是养成的,虽然一般不会出现错误。
[b
]
ps这里说的几行是在editplus编辑器下查找的,如果您用的是记事本可能有些难度,好像可以用ctrl+f然后输入ln行数.建议大家用php相关的编辑器,不要用记事本编辑,避免错误。 数据库升级用PMA(phpMyadmin)执行以下语句
ALTER TABLE `pw_threads` ADD `ifread` varchar(100) NOT NULL;
ALTER TABLE `pw_threads` ADD `readtype` int(1) NOT NULL;
ALTER TABLE `pw_threads` ADD `lou` INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL;
或者直接用
update.php升级数据,附件包里有记录。
程序修改在所有涉及文件里均有说明,请仔细阅读。
同步:
http://liulangmao.com/read.php?tid=17049 演示:
http://support.gooader.cn http://www.xq80.com/bbs/thread.php?fid-17.html效果:
好了,废话不再说了,开始修改插件吧.
一:查找masingle.php文件,13行左右
找到
if(!in_array($action,array('banuser','delatc','shield','remind','commend'))){
替换成:
if(!in_array($action,array('banuser','delatc','shield','remind','commend','alreadyread','cancelread'))){
找到(46行左右):
if($action=="banuser" && $SYSTEM['banuser']){
替换成:
if(($action=="banuser" || $action=="alreadyread" || $action=="cancelread")&& $SYSTEM['banuser']){
找到(58行左右):
if(!$admincheck){
Showmsg('mawhole_right');
}
添加以下
代码:
// 58行左右添加版主已阅 Modify By Josh
function refreshto1($URL,$content,$statime=1){
global $db_ifjump;
$URL=str_replace('=','=',$URL);
if($db_ifjump && $statime>0){
ob_end_clean();
global $tplpath,$fid,$imgpath,$db_obstart,$db_bbsname,$skin,$B_url;
$index_name =& $db_bbsname;
$index_url =& $B_url;
$db_obstart == 1 && function_exists('ob_gzhandler') ? ob_start ('ob_gzhandler') : ob_start();
if(file_exists(R_P."data/style/$skin.php") && strpos($skin,'..')===false){
include_once Pcv(R_P."data/style/$skin.php");
}else{
include_once(R_P."data/style/wind.php");
}
@extract($GLOBALS, EXTR_SKIP);
require_once GetLang('refreshto');
$lang[$content] && $content=$lang[$content];
@require PrintEot('refreshto');
exit;
} else{
ObHeader($URL);
}
}
if($action=="alreadyread"){
$userdb=$db->get_one("SELECT ifread,readtype,lou FROM pw_threads WHERE tid='$tid'");
!$userdb && Showmsg('illegal_tid'); $lou=$_GET['lou'];
if($userdb['readtype']=='0'){
/*//91行开始到101行结束,注释掉的后替换成$nowread=$windid;=>只显示最后阅读版主*/
$lou<$userdb['lou'] ;
if($userdb['ifread']){
$readperson=explode("|",$userdb['ifread']);
if(!in_array($windid,$readperson)){
$nowread=$userdb['ifread'].'|'.$windid;
}else{
$nowread=$userdb['ifread'];
}
}else{
$nowread=$windid;
}
//以上从注释开始整段替换成 $nowread=$windid; 即只显示最后阅读的版主。!
$db->update("UPDATE pw_threads SET ifread='$nowread',lou='$lou',readtype='1' WHERE tid='$tid'");
refreshto1("thread.php?fid=$fid",'operate_success');
}
elseif(($userdb['readtype']=='1')&&($lou>$userdb['lou']||$userdb['lou']=='0')){
if($userdb['ifread']){
$readperson=explode("|",$userdb['ifread']);
if(!in_array($windid,$readperson)){
$nowread=$userdb['ifread'].'|'.$windid;
}else{
$nowread=$userdb['ifread'];
}
}else{
$nowread=$windid;
}
$db->update("UPDATE pw_threads SET ifread='$nowread',lou='$lou',readtype='1' WHERE tid='$tid'");
refreshto1("thread.php?fid=$fid",'operate_success');
}else{
refreshto1("thread.php?fid=$fid",'<font color=#FF0000><b>已有管理人员阅到更后面的楼层,故此次操作无效!</b></font>');
}
}elseif($action=="cancelread"){
$userdb=$db->get_one("SELECT ifread,readtype FROM pw_threads WHERE tid='$tid'");
!$userdb && Showmsg('illegal_tid');
if(!$userdb['ifread']&& ($userdb['ifread']=='')) { Showmsg('取消个毛啊,本贴版主未经阅读!'); }
$db->update("UPDATE pw_threads SET ifread='',lou='0' WHERE tid='$tid'");
refreshto1("thread.php?fid=$fid",'operate_success');
}
//Hack Modify By Josh 2008.3.1
至此第一个文件修改完成。顺变说下:
91行开始,注释掉的后替换成$nowread=$windid;=>只显示最后阅读版主*/
接下来修改thread.php下一帖好了
第二步:
修改thread.php
找到(325行左右):
$postdetail=explode(",",$thread['lastpost']);
在后面添加:
//Hack Modify By Josh 2008.3.1 if($thread['ifread']){
$thread['titleread']="";
$alreadytmsg='主题';
$alreadyread='阅';
$alreadyread1='至';
$alreadyreadlou='楼';
$ifread=$thread['ifread'];
$lou=$thread['lou'];
if($lou==0){
$thread['titleread']="[".$ifread."<font color=#C5001E>".$alreadyread.$alreadytmsg."</font>"."]";
}else{
$thread['titleread']="[".$ifread."<font color=#CC5C73>".$alreadyread.$alreadyread1.$lou.$alreadyreadlou."</font>"."]";
}
}
//Hack Modify By Josh 2008.3.1 end
第三步:接下来修改thread.htm
查找(335行左右)
$thread[titleadd]
在后面添加:
<!-- hack By Josh -->
<span title="$thread[ifread] 已阅至$thread[lou]楼"><font color=#0D6D86>$thread[titleread]</font></span>
<!-- hack end By Josh -->
第四步,
查找 read.htm
兄弟坚持啊,马上完了
查找(532行左右)
<!--
EOT;
if($admincheck || $_G['markable']){print <<<EOT
-->
替换成:
<!--
EOT;
if($admincheck || ($groupid!=5 && $SYSTEM['banuser'])){
$lou=$read[lou];
print <<<EOT
-->
[<a href='masingle.php?action=alreadyread&fid=$fid&tid=$tid&windid=$windid&lou=$lou' title="添加审阅标志"><font color=#C5001E>已阅</font></a>|<a href='masingle.php?action=cancelread&fid=$fid&tid=$tid&windid=$windid&lou=$lou' title="取消审阅标志"><font color=#C5001E>取消</font></a>]
<!--
EOT;
}
if($admincheck || $_G['markable']){print <<<EOT
-->
OK,所有插件修改完毕。
数据用升级文件搞定即可。
[ 此贴被骨头在2008-04-12 14:00重新编辑 ]