最近访客
百度未收录

discuz回贴通知插件实现-用户状态设置

一、完善用户是否开启回贴通知

回贴通知插件建立模块时,指定了核心文件post_set.inc.php

1、创立好数据库

建立独立数据表(不建议直接修改原有的discuz数据库,防止discuz升级后数据库发生变化),来保存是否开启回贴通知。

create table 前缀_模块_逻辑表名 (
    `uid` mediumint(8) unsigned NOT NULL,
    `isnotice` tinyint not null default 0 comment \'0关闭,1开启\',
    primary key (`uid`)
)engine=myisam charset=utf8;

2、建立好插件的源码目录,并创建功能模块文件

在discuz目录/source/plugin/下创建以插件唯一标识为名字创建目录。

并建立功能模块文件post_set.inc.php

<?php //判断是否被常规请求
defined(\'IN_DISCUZ\') or die(\'Access Denied\'); //规范当前模块的功能列表
$pluginOpList = array(\'get\', \'set\'); //判断操作,如果没有或不在功能列表中则设置一个默认操作
if(!isset($_GET[\'pluginop\']) || !in_array($_GET[\'pluginop\'], $pluginOpList)) {
    $_GET[\'pluginop\'] = \'get\';
}

3、实现用户回贴通知的设置页面

(1)、获取当前用户的设置状态

使用某个表,需要为表创建一个模型

在我们当前的插件目录下创建table目录,并创建一个table_表名.php的文件。

每个模型也是一个类,继承自discuz核心模型discuz_table。

<?php //判断是否被常规请求
defined(\'IN_DISCUZ\') or die(\'Access Denied\'); class table_forum_post_notice extends discuz_table {     //构造方法中,指明表,主键字段,和调用父类构造方法
    public function __construct() {
        $this->_table = \'forum_post_notice\';
        $this->_pk = \'uid\';         parent::__construct();
    }
}

利用模型的方法,获取用户的设置状态

if($_GET[\'pluginop\'] == \'get\') {
    //获取插件下的某个模型
    $mForumPostNotice = C::t(\'#post_notice#forum_post_notice\');     //获取某用户的设置状态
    $isNotice = $mForumPostNotice->getNoticeState($_G[\'uid\']);
}

public function getNoticeState($uid = 0) {
    if($uid == 0) return 0;     //使用discuz的dao类,discuz_database,完成数据库操作
    //DB类继承自discuz_database类,在class_core.php文件中
    $sql = \"SELECT isnotice FROM `%t` WHERE `uid`=%d\";     return intval(DB::result_first($sql, array($this->_table, $uid)));
}

(2)、显示用户的设置状态

discuz会自动的载入插件模板

在当前插件目录下创建template目录,并创建与功能模块文件名一样的.htm文件,

即post_set.htm。

<div>
	<form method=\"post\" autocomplete=\"off\" action=\"home.php?mod=spacecp&ac=plugin&id=post_notice:post_set&pluginop=set\">
	    <p class=\"tbmu mbm\">回贴通知</p>
	    <table cellspacing=\"0\" cellpadding=\"0\" class=\"tfm\">
	        <tr>
	            <th>是否开启回贴通知:</th>
	            <td>
	                <input type=\"radio\" name=\"isNotice\" value=\"1\" <!--{if $isNotice==1}-->checked<!--{/if}--> />开启
	                <input type=\"radio\" name=\"isNotice\" value=\"0\" <!--{if $isNotice==0}-->checked<!--{/if}--> />关闭
	            </td>
	        </tr>
	        <tr>
	            <th> </th>
	            <td><button type=\"submit\" name=\"privacysubmit\" value=\"true\" class=\"pn pnc\" /><strong>{lang save}</strong></button></td>
	        </tr>
	    </table>
	</form>
</div>
温馨提示: 本文最后更新于2022/10/20 00:50:27。若文章内容或图片失效,请 留言联系站长反馈!
!
也想出现在这里? 联系我们
创意广告
© 版权声明
THE END
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容