热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分析Discuz论坛回复可见的处理流程和原理

回帖内容也是可以添加隐藏标签的,只要用户用使用hide标签权限,当用户回复了该主题的时候也会将内容显示出来回帖可见对游客也是有效的,当一个用户在发帖的时候使用了hide标签,发布主题的时候会调用discuzcode函数对discuz代码进行解析,其中解析hide标签部
回帖内容也是可以添加隐藏标签的,只要用户用使用hide标签权限,当用户回复了该主题的时候也会将内容显示出来  回帖可见对游客也是有效的,当一个用户在发帖的时候使用了hide标签,发布主题的时候会调用discuzcode函数对discuz代码进行解析,其中解析hide标签部分:
if($parsetype != 1 && strpos($msglower, '[/hide]') !== FALSE && $pid) {
                        if(strpos($msglower, '[hide]') !== FALSE) {
                 if($authorreplyexist === null) {
                         $posttable = getposttablebytid($_G['tid']);
                         $authorreplyexist = !$_G['forum']['ismoderator'] ? DB::result_first("SELECT pid FROM ".DB::table($posttable)." WHERE tid='$_G[tid]' AND ".($_G['uid'] ? "authorid='$_G[uid]'" : "authorid=0 AND useip='$_G[clientip]'")." LIMIT 1") : TRUE;
                 }
                 if($authorreplyexist) {
                         $message = preg_replace("/[hide]s*(.*?)s*[/hide]/is", tpl_hide_reply(), $message);
                 } else {
                         $message = preg_replace("/[hide](.*?)[/hide]/is", tpl_hide_reply_hidden(), $message);
                         $message .= '';
                 }
                        }
                        if(strpos($msglower, '[hide=') !== FALSE) {
                 $message = preg_replace("/[hide=(d+)]s*(.*?)s*[/hide]/ies", "creditshide(\1,'\2', $pid)", $message);
                        }
                }
        }
由于post表中,主题也是会被存在其中$authorreplyexist = !$_G['forum']['ismoderator'] ? DB::result_first("SELECT pid FROM ".DB::table($posttable)." WHERE tid='$_G[tid]' AND ".($_G['uid'] ? "authorid='$_G[uid]'" : "authorid=0 AND useip='$_G[clientip]'")." LIMIT 1") : TRUE; 这段代码能够查询出是被回复了(包括游客回复)或者是版主,则用$message = preg_replace("/[hide]s*(.*?)s*[/hide]/is", tpl_hide_reply(), $message)将hide标签部分的代码替换掉,如果没有回复则用 tpl_hide_reply_hidden()处理掉hide标签部分的内容,这里的函数来自于:discuzcode.htm,其中的函数原理在这里不做介绍

推荐阅读
author-avatar
0519bobo_724
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有