zoukankan      html  css  js  c++  java
  • 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核心模型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>
    
  • 相关阅读:
    Alpha冲刺
    Alpha冲刺
    抽奖系统(记一次未完成的教训)
    Alpha冲刺
    软件工程
    软工实践
    软工实践
    软工实践
    软工实践
    软工实践
  • 原文地址:https://www.cnblogs.com/jkko123/p/6294651.html
Copyright © 2011-2022 走看看