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

回贴通知插件建立模块时,指定了核心文件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. 【Linux_Unix系统编程】Chapter4 文件IO

    Chapter4 文件IO 4.1 概述 文件描述符 == Windows的句柄 标准文件描述符: 0 标准输入 STDIN_FILENO stdin 1 标准输出 STDOUT_FILENO std ...

  2. Hive基础之Hive体系架构&运行模式&Hive与关系型数据的区别

    Hive架构 1)用户接口: CLI(hive shell):命令行工具:启动方式:hive 或者 hive --service cli ThriftServer:通过Thrift对外提供服务,默认端 ...

  3. Salesforce开源TransmogrifAI:用于结构化数据的端到端AutoML库

    AutoML 即通过自动化的机器学习实现人工智能模型的快速构建,它可以简化机器学习流程,方便更多人利用人工智能技术.近日,软件行业巨头 Salesforce 开源了其 AutoML 库 Transmo ...

  4. python学习之----用虚拟环境保存库文件

    如果你同时负责多个Python 项目,或者想要轻松打包某个项目及其关联的库文件,再 或者你担心已安装的库之间可能有冲突,那么你可以安装一个Python 虚拟环境来分而 治之. 当一个Python 库不 ...

  5. 数据库,mysql

    数据库(`database`): ### 关系型数据库及非关系型数据库1. 什么是关系型数据库? 关系型数据库是一种建立在关系模型上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据.现实世 ...

  6. uva-10194-排序

    题意: 如果一个队伍的得分比对方高,那么就赢得这场游戏,很明显,如果得分低那就是输了,如果俩个队伍的得分一样,那么就是平局,赢得比较获得3个点的得分,平手1个点的得分,输了0分.排序规则如下1:得分点 ...

  7. java 调用apache.commons.codec的包简单实现MD5加密

    转自:https://blog.csdn.net/mmd1234520/article/details/70210002/ import java.security.MessageDigest; im ...

  8. Jenkins自动打war包,并部署到tomcat服务器

    由于每次修改完代码,都要手动打包部署,很麻烦.今天研究了一下Jenkins自动化部署,大概有以下几个步骤: 1.先配置tomcat 7的访问用户和密码.文件位于conf/tomcat-users.xm ...

  9. java 执行sql错误 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 1 (""): 数据类型 0x38 未知

    连接数据库时设置:Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE ,ResultSet.CONCUR_R ...

  10. 机器学习入门-数据下采样 np.random_choice

    1. np.random_choice(array, len)  进行随机的数据选择,array表示抽取的对象,len表示抽取样本的个数 数据的下采样是对多的数据进行np.random.choice ...