Manyou诚邀开发者加盟 | 常见问题
《站长》“开发者特刊”限量赠送
立即免费下载 Discuz!6.1.0正式版
Discuz! 6.1.0使用说明 | 使用手册
Discuz!NT2.5正式版发布
开放源码下载 | 使用手册
UCenter Home 1.2 正式版发布
官方站 | 帮助文档 | 使用手册
基于ECShop的网店托管-卖否
上海PHP认证培训热招 | LAMP培训大连
Discuz!收费服务内容及价格
《站长》俱乐部各地聚会活动进行中
Discuz!/ECShop 专用官方虚拟主机
Yes玩.武林三国(赤壁.下)
Comsenz 招聘信息
网店系统ECShop v2.6.0正式版火热发布
基于Discuz!的免费论坛空间5D6D
《站长》第八期:实战互联网开放平台
返回列表 回复 发帖

指定阅读用户 For D4.0 4.1 改至魔焰男孩,加入后台用户组控制/分版块控制更新4月2日

适合版本:D4.1 4.0
难易程度:中
数据库修改:有
版权:魔焰男孩
修改:BY odo_cd

4。2增加分板块控制的功能,见2楼,还有最后一个问题没解决了,就是在archiver里可以看到。。。。。。


首先我声明,第一次自己改这玩意,有点乱(我接触php和mysql只有一个月,其实不懂,只是对照到改),不免有BUG,不过我已经测试成功,有问题,请大家指出。

该插件已经解决后台控制的问题,但是还有个问题是在archiver中指定用户的帖子内容大家都能看,所以只有把arciver的连接隐藏了,希望高手能把这问题解决了

我确实需要这功能,并且看到很多人都在跟原作者的帖有后台功能,所以我自己弄出来了给自己用,同时分享给大家,也算回报。

原帖:
http://www.discuz.net/viewthread.php?tid=243891

1、在后台升级数据库:
  1. ALTER TABLE cdb_usergroups ADD allowreaduserpost int(1) DEFAULT '0' NOT NULL;
  2. ALTER TABLE cdb_threads ADD readuser Varchar(255) NOT NULL DEFAULT '';
复制代码
如果您已经安装原作者的版本,请不要用第2个升级数据库语句。

2、在post_newthread.htm中找到:
  1. <!--{if $maxprice}-->
复制代码
上面添加:
  1. <!--{if $allowreaduserpost}-->
  2. <tr>
  3.         <td class="altbg1">本帖阅读用户:</td>
  4.         <td class="altbg2"><input type="text" name="readuser" size="20"

  5. value=""> <span class="smalltxt">(允许浏览本帖的用户,多个用户请用半角 ',' 分隔

  6. ,留空为所有用户都能阅读)</span></td>
  7.         </tr>
  8. <!--{/if}-->
复制代码
3、post_editpost.htm中找到
  1. <!--{if $maxprice}-->
复制代码
上面添加:
  1. <!--{if $allowreaduserpost}-->
  2. <tr>
  3.         <td class="altbg1">本帖阅读用户:</td>
  4.         <td class="altbg2"><input type="text" name="readuser" size="20"

  5. value=""> <span class="smalltxt">(允许浏览本帖的用户,多个用户请用半角 ',' 分隔

  6. ,留空为所有用户都能阅读)</span></td>
  7.         </tr>
  8. <!--{/if}-->
复制代码
4、admin\groups.inc.php

查找
  1. showtype('usergroups_edit_thread');
复制代码
在下面一行添加:
  1. showsetting('usergroups_edit_allowreaduserpost', 'allowreaduserpostnew',

  2. $group['allowreaduserpost'], 'radio');
复制代码
查找
  1. allowhtml='$allowhtmlnew', allowpostpoll='$allowpostpollnew',

  2. allowdirectpost='$allowdirectpostnew', allowvote='$allowvotenew',
复制代码
在上面添加
  1. allowreaduserpost='$allowreaduserpostnew',
复制代码
5、admincp.lang.php
  1. 'usergroups_edit_thread' => '帖子相关',
复制代码
下添加:
  1. 'usergroups_edit_allowreaduserpost' => '是否允许发布指定用户帖',
复制代码
已经安装原作者的插件的不用重复以下步骤!

6、viewthread.htm中
  1. $thread['modaction'] || $thread['blog']
复制代码
在后面(不是下面)添加(注意前面有个空格):
  1. || $thread['readuser']
复制代码
再次查找:
  1. <!--{if $thread['readperm']}-->&nbsp; {lang readperm_thread} <span class=\"bold\">$thread[readperm]</span> &nbsp;<!--{/if}-->
复制代码
在下面添加上:
  1. <!--{if $thread['readuser']}-->&nbsp; 本帖只有指定人员才能阅读 &nbsp;<!--{/if}-->
复制代码
修改完成后, 保存退出。

. 打开文件 ./include/newthread.inc.php, 查找:
  1.         if(!$typeid && $forum['threadtypes']['required']) {
复制代码
在上面添加上:
  1.         $readuser = isset($readuser) ? $readuser : '';
  2.         if(strlen($readuser) > 255) {
  3.                 showmessage('您设置的指定阅读用户超过 255 个字符, 请返回修改。');
  4.         }
复制代码
再次查找:
  1. fid, readperm,
复制代码
在后面(不是下面)添加(注意前面有个空格):
  1. readuser,
复制代码
再来查找:
  1. '$fid', '$readperm',
复制代码
在后面(不是下面)添加(注意前面有个空格):
  1. '$readuser',
复制代码
修改完成后, 保存退出。

7. 打开文件 ./include/editpost.inc.php, 查找:
  1.                         if(!$typeid && $forum['threadtypes']['required']) {
复制代码
在上面添加上:
  1. $readuser = isset($readuser) ? $readuser : '';
  2.                         if(strlen($readuser) > 255) {
  3.                                 showmessage('您设置的指定阅读用户超过 255 个字符, 请返回修改。');
  4.                         }
复制代码
再次查找:
  1. readperm='$readperm',
复制代码
在后面(不是下面)添加(注意前面有个空格):
  1. readuser='$readuser',
复制代码
修改完成后, 保存退出。

8. 打开文件 ./viewthread.php, 查找:
  1. $allowpaytoauthor = substr(sprintf('%02b', $forum['allowtrade']), -2, 1);
复制代码
在上面添加上:
  1. $readuser = explode(',', $thread['readuser']);
  2. $readchk = false;
  3. foreach($readuser as $chk_name => $chk_user) {
  4.         if($discuz_user == $chk_user) {
  5.                 $readchk = true;
  6.                 break;
  7.         }
  8. }
  9. unset($readuser, $chk_name, $chk_user);
  10. if($thread['readuser'] && !$readchk && ($adminid != 1) && ($thread['author'] != $discuz_user)) showmessage('对不起, 本帖只有指定人员才能阅读, 您不在指定列表中, 因此无权阅读本帖。');
复制代码
修改完成后, 保存退出。
完工。。。。。。。。。。



反安装:
  1. ALTER TABLE cdb_threads DROP readuser;
  2. ALTER TABLE cdb_usergroups drop allowreaduserpost;
复制代码
再依次恢复改动的文件,建议再改动之前作备份。

附带说明:

在主题列表里面显示设置了阅读用户的帖子为“认证帖子”, 方法如下:

打开模版文件 forumdisplay.htm (一般位于 ./templates/default/ 目录里, 安装多个模版的每个模版都要修改), 查找:
  1.                 <!--{if $thread['readperm']}--> - [{lang readperm} <span class="bold">$thread[readperm]</span>]<!--{/if}-->
复制代码
在下面添加上:
  1. <!--{if $thread['readuser']}--> - [认证帖子]<!--{/if}-->
复制代码
成功了的回来跟一下。。。。

修改完成后, 保存退出。

[ 本帖最后由 odo_cd 于 2006-4-3 22:00 编辑 ]
未命名-1.gif
1

评分次数

由于有兄弟需要,刚才研究了一下

增加了分版块控制的功能2006年4月2日更新

注意:使用该功能须安装上面的两个功能

1、升级数据库:
  1. ALTER TABLE `cdb_forumfields` ADD `allowreaduserpost` SMALLINT( 6 ) NOT NULL ;
复制代码
2、admin/forums.inc.php

找到
  1. showtype('forums_edit_options');
复制代码
下面添加:
  1. showsetting('允许本版发指定用户贴', 'allowreaduserpostnew', $forum['allowreaduserpost'], 'radio');
复制代码
找到:
  1. postattachperm='$postattachpermnew'
复制代码
后面添加:
  1. , allowreaduserpost='$allowreaduserpostnew'
复制代码
保存退出

3、找到post_newthread.htm和post_editpost.htm

把其中的:
  1. <!--{if $allowreaduserpost}-->
  2. <tr>
  3.         <td class="altbg1">本帖阅读用户:</td>
  4.         <td class="altbg2"><input type="text" name="readuser" size="20" value=""> <span class="smalltxt">(允许浏览本帖的用户,多个用户请用半角 ',' 分隔,留空为所有用户都能阅读)</span></td>
  5.         </tr>
  6. <!--{/if}-->
复制代码
换成:
  1. <!--{if $allowreaduserpost}--><!--{if $forum['allowreaduserpost']}-->
  2. <tr>
  3.         <td class="altbg1">本帖阅读用户:</td>
  4.         <td class="altbg2"><input type="text" name="readuser" size="20" value=""> <span class="smalltxt">(允许浏览本帖的用户,多个用户请用半角 ',' 分隔,留空为所有用户都能阅读)</span></td>
  5.         </tr>
  6. <!--{/if}--><!--{/if}-->
复制代码
保存
更新缓存,成功!

[ 本帖最后由 odo_cd 于 2006-4-3 21:50 编辑 ]
未命名-1.gif
防止Archiver泄密
打开Archiver\include\thread.inc.php
找到:
  1. WHERE t.tid='$tid' AND t.readperm='0' AND t.price<='0' AND t.displayorder>='0'
复制代码
在后面加:
  1. AND t.readuser=''
复制代码
[ 本帖最后由 odo_cd 于 2006-5-8 02:25 编辑 ]
老实说
我也一直在等原作者强化这功能
很感谢楼主的费心,这功能对我确实需要

不知能否加入如
限制的版块ID
就如if ($fid==23 || $fid==24) $isnotcopy=1;

谢谢您
原帖由 3481 于 2006-4-2 08:05 发表
老实说
我也一直在等原作者强化这功能
很感谢楼主的费心,这功能对我确实需要

不知能否加入如
限制的版块ID
就如if ($fid==23 || $fid==24) $isnotcopy=1;

谢谢您
正在摸索中,我对PHP不是很熟悉,估计过几天吧
楼上回我贴的兄弟,刚才把一个地方弄错了,一楼已更新
  1. ALTER TABLE cdb_usergroups ADD allowreaduserpost int(0) DEFAULT '1' NOT NULL;
  2. ALTER TABLE cdb_threads ADD readuser Varchar(255) NOT NULL DEFAULT '';
复制代码
改成:
ALTER TABLE cdb_usergroups ADD allowreaduserpost int(1) DEFAULT '0' NOT NULL;
ALTER TABLE cdb_threads ADD readuser Varchar(255) NOT NULL DEFAULT '';
一大早的就在忙,支持你。
原帖由 madly 于 2006-4-2 08:19 发表
一大早的就在忙,支持你。
谢谢支持。。。
我顶
魔焰男孩抽空把版块限定的功能搞定啊

顶一下

返回列表