需求:
目前,隐藏帖子回复内容可以显示帖子内容,而游客用户组对这个限制有点匪夷所思。对于一个隐藏帖,任何一个游客比如游客A回复了这个帖子,在另一个地方的游客B可以不用回复隐藏帖即可显示这个隐藏帖的内容。需求做的有点简陋,但是也实属无奈。最好这个可以通过判断游客的IP来精确定位当前的游客是否已经回复过帖子才对得起这个隐藏帖的功能。修改的话可以到require/bbscode.php文件,找到:
- $rs = $db->get_one("SELECT count(*) AS count FROM $pw_posts WHERE tid=".S::sqlEscape($tid)." AND authorid=".S::sqlEscape($winduid));
替换成:
- $rs = $db->get_one("SELECT count(*) AS count FROM $pw_posts WHERE tid=".S::sqlEscape($tid)." AND authorid=".S::sqlEscape($winduid)." AND userip=".S::sqlEscape($onlineip));
当然,$onlineip要在函数定义的地方global一下。
现在,客户要求实现后台开关控制游客这个用户组是否走现在版本的隐藏帖机制,开启开关的话,游客用户组无论是否回复,都不能看隐藏帖的内容,并适当改变提示内容。修改如下:
1、打开template/admin/editer.htm文件,找到:
- <tr class="tr1 vt">
- <td class="td1">多媒体标签</td>
- <td class="td2">
- <ul class="list_A list_80">
- <li><input type="radio" value="1" name="windpost[mpeg]" $windpost_mpeg_Y>开启</li>
- <li><input type="radio" value="0" name="windpost[mpeg]" $windpost_mpeg_N>关闭</li>
- </ul>
- </td>
- <td class="td2"><div class="help_a">开启后,会员可以使用[wmv]标签发表多种多媒体文件 rm wmv mp3</div></td>
- </tr>
下下下方添加如下代码:
- <tr class="tr1 vt">
- <td class="td1">游客隐藏帖</td>
- <td class="td2">
- <ul class="list_A list_80">
- <li><input type="radio" value="1" name="windpost[posthidden]" $windpost_posthidden_Y>开启</li>
- <li><input type="radio" value="0" name="windpost[posthidden]" $windpost_posthidden_N>关闭</li>
- </ul>
- </td>
- <td class="td2"><div class="help_a">开启后,游客组回复隐藏帖也不能显示隐藏帖内容</div></td>
- </tr>
2、打开admin/editer.php,找到:
- ifcheck($db_windpost['mpeg'], 'windpost_mpeg');
下下下方添加如下代码:
- ifcheck($db_windpost['posthidden'], 'windpost_posthidden');
3、打开require/bbscode.php文件,找到:
- function ifpost($tid){
- ……
- }
- function post($code){
- ……
- }
替换替换成如下代码:
- function ifpost($tid) {
- global $admincheck,$tpc_author,$winduid,$windid,$db,$pwPostHide,$ifColonyAdmin,$db_windpost;
- if ($windid && $tpc_author == $windid) return 2;
- static $ifview = null;
- if (!isset($ifview)) {
- if ($pwPostHide) {
- $ifview = 3;
- } elseif ($admincheck || $ifColonyAdmin) {
- $ifview = 4;
- } else {
- $pw_posts = GetPtable($GLOBALS['ptable']);
- $rs = $db->get_one("SELECT count(*) AS count FROM $pw_posts WHERE tid=".S::sqlEscape($tid)." AND authorid=".S::sqlEscape($winduid));
-
- if($db_windpost['posthidden'] == '1' && !$winduid){
- $ifview = 0;
- }else{
- $ifview = $rs['count'] > 0 ? 1 : 0;
- }
- }
- }
- return $ifview;
- }
- function post($code) {
- global $code_num,$tid,$code_htm,$tpc_pid,$winduid,$db_windpost;
- $code_num++;
- if (ifpost($tid) > 0) {
- $r_ifpost = ifpost($tid);
- $code_htm[3][$code_num] = "<h6 class=\"f12 quoteTips\" style=\"border-bottom:0;\">".getLangInfo('bbscode','bbcode_hide'.$r_ifpost)."</h6><div style=\"border:1px dotted #eca46a;border-top:0;\" class=\"p10\">".str_replace('\\"','"',$code)."</div>";
- } else {
- if($db_windpost['posthidden'] == '1' && !$winduid){
- $code_htm[3][$code_num] = "<div id=\"hidden_{$code_num}_{$tpc_pid}\" class=\"f12 hidden quoteTips\" style=\"margin:10px 0;\">" . getLangInfo('bbscode','bbcode_hidden') . "</div>";
- }else{
- $code_htm[3][$code_num] = "<div id=\"hidden_{$code_num}_{$tpc_pid}\" class=\"f12 hidden quoteTips\" style=\"margin:10px 0;\">" . getLangInfo('bbscode','bbcode_hide') . "</div>";
- }
- }
- return "<\twind_code_$code_num\t>";
- }
4、打开template/wind/lang_bbscode.php文件,找到:
- 'bbcode_hide' => '本部分内容设定了隐藏,需要回复后才能看到',
下下下方添加如下代码:
- 'bbcode_hidden' => '本部分内容设定了隐藏,需要登录后才能看到',