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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

[复制链接]
odo_cd 发表于 2006-4-2 07:13:36 | 显示全部楼层 |阅读模式
适合版本:D4.1 4.0
难易程度:中
数据库修改:有
版权:魔焰男孩
修改:BY odo_cd

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


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

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

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

原帖:
https://discuz.dismall.com/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 编辑 ]

本帖子中包含更多资源

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

x

评分

1

查看全部评分

 楼主| odo_cd 发表于 2006-4-2 07:17:30 | 显示全部楼层
由于有兄弟需要,刚才研究了一下

增加了分版块控制的功能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 编辑 ]

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| odo_cd 发表于 2006-4-2 07:32:04 | 显示全部楼层
防止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 编辑 ]
回复

使用道具 举报

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

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

谢谢您
回复

使用道具 举报

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

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

谢谢您


正在摸索中,我对PHP不是很熟悉,估计过几天吧
回复

使用道具 举报

 楼主| odo_cd 发表于 2006-4-2 08:11:40 | 显示全部楼层
楼上回我贴的兄弟,刚才把一个地方弄错了,一楼已更新

  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:43 | 显示全部楼层
一大早的就在忙,支持你。
回复

使用道具 举报

 楼主| odo_cd 发表于 2006-4-2 08:22:09 | 显示全部楼层
原帖由 madly 于 2006-4-2 08:19 发表
一大早的就在忙,支持你。


谢谢支持。。。
回复

使用道具 举报

 楼主| odo_cd 发表于 2006-4-2 08:48:09 | 显示全部楼层
我顶
魔焰男孩抽空把版块限定的功能搞定啊
回复

使用道具 举报

易得 发表于 2006-4-2 08:50:38 | 显示全部楼层

顶一下

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 04:14 , Processed in 0.052063 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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