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

回贴通知插件建立模块时,指定了核心文件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>

discuz回贴通知插件实现-显示用户状态设置的更多相关文章

  1. discuz回贴通知插件实现-页面嵌入点(钩子)

    1.如何保证主题被回复时业务代码被执行. 2.获得主题,主题发布者,贴子等信息. 3.discuz发送email邮件.   discuz使用嵌入点(钩子)来处理代码的执行时机. 当用户开启插件开发者模 ...

  2. discuz回贴通知插件实现-获取邮件内容

    //自定义钩子函数,命名:模块_函数名_output()或模块_函数名() //一个是模块执行完,模板输出前执行.一个是模块执行前 //post_reply_output函数会在所有post操作中都会 ...

  3. discuz回贴通知插件实现-插件的多语言

    如果涉及到页面的展示,模板,提示信息,通常会   1.建立好需要的文字的翻译 在disucz的data/plugindata目录创建一个插件所使用的语言文件,命名方式为: 插件标识符.lang.php ...

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

    1.获取用户提交数据 discuz通过$_GET来获取全部数据,包括($_GET,$_POST). else if($_GET['pluginop'] == 'set') { //获取用户提交数据 $ ...

  5. discuz回贴通知插件实现-插件后台管理配置

    1.登出discuz后台,再次设计插件 2.使用变量    

  6. discuz回贴通知插件实现-发送邮件

    通过discuz的sendmail()来发送邮件 //引入发送邮件的函数文件 include libfile('function/mail'); //设置收件人地址,标题,内容发送邮件 sendmai ...

  7. discuz回贴通知插件实现-配置邮件服务器

    添加smtp服务器,填写相应的smtp服务器,发信人地址,用户名和密码.   填写发件人地址和收件人地址来测试邮件是否发送成功.

  8. discuz目录结构和插件创建

    discuz目录结构 api 外部接口功能实现 archiver 静态文档,静态化所用 config 配置 data 生成的数据 install 安装目录 source 源代码核心目录 |--modu ...

  9. noty – jQuery通知插件

    noty是一个jQuery的通知(信息提示)插件,灵活轻便,是一个非常棒的用于替代传统提示对话框的插件. 当前最新版本为2.1.0: 从https://github.com/needim/noty 可 ...

随机推荐

  1. keras输出中间层结果,某一层的权重、偏置

    转载:https://blog.csdn.net/hahajinbu/article/details/77982721 from keras.models import Sequential,Mode ...

  2. RBF神经网络和BP神经网络的关系

    作者:李瞬生链接:https://www.zhihu.com/question/44328472/answer/128973724来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  3. rman备份恢复命令之switch(转)

    一 switch 命令1 switch命令用途更新数据文件名为rman下镜像拷贝时指定的数据文件名更新数据文件名为 set newname 命令指定的名字. 2 switch 命令使用前提条件rman ...

  4. PHP mysqli的prepare准备语句使用说明

    mysqli对prepare的支持对于大访问量的网站是很有好处的,它极大地降低了系统开销,而且保证了创建查询的稳定性和安全性.prepare准备语句分为绑定参数和绑定结果,下面将会一一介绍! (1)绑 ...

  5. Python3 os模块应用

    调用模块的实质是运行python代码,比如a.py文件里有函数f(),那么你在调用a模块的时候,实质是运行了a模块里的函数f(),这个时候内存里就有这个函数了,可以直接用,那是不是随便一个py类型的文 ...

  6. 洛谷 P1197 [JSOI2008]星球大战

    题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的以太隧道 ...

  7. Tensorflow线程和队列

    读取数据 小数量数据读取 这仅用于可以完全加载到存储器中的小的数据集有两种方法: 存储在常数中. 存储在变量中,初始化后,永远不要改变它的值. 使用常数更简单一些,但是会使用更多的内存,因为常数会内联 ...

  8. linux 关于数据库的部分命令

    开启数据库服务 service mysqld start 关闭数据库服务 service mysqld stop 链接数据库 mysql -h localhost -u root -p 回车然后输入密 ...

  9. jackson的小知识

  10. Overriding managed version XX for YY

    在警告部分,添加<!--$NO-MVN-MAN-VER$-->. <build> <plugins> <plugin> <groupId>o ...