牛骨文教育服务平台(让学习变的简单)

制作如下效果图

1.png


1、创建一个类文件(/app/user/cls/message.cls.php),添加如下代码

<?php
class message_user
{
    public $G;
    public function __construct(&$G)
    {
        $this->G = $G;
    }
    public function _init()
    {
        $this->pdosql = $this->G->make('pdosql');
        $this->db = $this->G->make('pepdo');
        $this->pg = $this->G->make('pg');
        $this->ev = $this->G->make('ev');
    }
    
    //发送站内信息,包含(发送者、接收者、发送内容)
    public function sendMessage($sender,$reciver,$content)
    {
        $args['message_sendtime'] = TIME;
        $args['message_send_userid'] = $sender;
        $args['message_receive_userid'] = $reciver;
        $args['message_content'] = $content;
        $data = array('message',$args);
        $sql = $this->pdosql->makeInsert($data);
        $this->db->exec($sql);
        return $this->db->lastInsertId();
    }
    
    //获取接收者信息
    public function getReciveMessageByUserid($page,$number = 20,$userid){
        $page = $page > 0?$page:1;
        $r = array();
        $data = array(false,'message',array(array("AND","message_receive_userid = :message_receive_userid",'message_receive_userid',$userid)),false,array("message_id"),array(intval($page-1)*$number,$number));
        $sql = $this->pdosql->makeSelect($data);
        $r['data']= $this->db->fetchAll($sql,"message_id");
        $data = array('count(*) AS number',array('message'),array(array("AND","message_receive_userid = :message_receive_userid",'message_receive_userid',$userid),array("AND","message_ok = 0")));
        $sql = $this->pdosql->makeSelect($data);
        $t = $this->db->fetch($sql);
        $pages = $this->pg->outPage($this->pg->getPagesNumber($t['number'],$number),$page);
        $r['pages'] = $pages;
        $r['number'] = $t['number'];
        return $r;
    }
}
?>


2、在控制器中加入文件(/app/user/controller/message.center.php),加入如下代码

<?php
/*
 * Created on 2017-8-31
 *
站内信息中心
 */
class action extends app
{
    public function display()
    {
        $this->message = $this->G->make('message','user');
        $action = $this->ev->url(3);
        if(!method_exists($this,$action))
        $action = "index";
        $this->$action();
        exit;
    }
    
    private function index()
    {
        $page = $this->ev->get('page');
        $page = $page > 0?$page:1;
        $userid=$this->_user['sessionuserid'];        
        $this->message->sendMessage(1,12,'你好');//用户测试,测试完成请注释;
        $messages=$this->message->getReciveMessageByUserid($page,10,$userid);
        //var_dump($messages);
        $this->tpl->assign('messages',$messages["data"]);
        $this->tpl->assign('page',$page);
        $this->tpl->assign('pages',$messages["pages"]);
        $this->tpl->display('message');
    }
}
?>

3、模板文件中(/app/user/tpls/center/message.tpl)加入如下代码

{x2;include:header}
<body>
{x2;include:nav}
<div class="container-fluid">
    <div class="row-fluid">
        <div class="main">
            <div class="col-xs-2" style="padding-top:10px;margin-bottom:0px;">
                {x2;include:menu}
            </div>
            <div class="col-xs-10" id="datacontent">
                <div class="box itembox" style="margin-bottom:0px;border-bottom:1px solid #CCCCCC;">
                    <div class="col-xs-12">
                        <ol class="breadcrumb">
                            <li><a href="index.php">首页</a></li>
                            <li class="active">站内信息</li>
                        </ol>
                    </div>
                </div>
                <div class="box itembox" style="padding-top:10px;">
                    <h4 class="title">站内信息</h4>
                    <ol>
                        {x2;tree:$messages,msg,qid}
                        <li><a href="#">{x2;realhtml:v:msg['message_content']}</a></li>
                        {x2;endtree}
                    </ol>
                    <nav aria-label="Page navigation">
                        <ul class="pagination">
                            {x2;$pages}
                        </ul>
                    </nav>
                </div>
            </div>
        </div>
    </div>
</div>
{x2;include:footer}
</body>
</html>

4、在数据库中插入两个数据表(前缀message、前缀message_category),分别是信息和分类表

信息表

CREATE TABLE IF NOT EXISTS `x2_message` (
  `message_id` int(11) NOT NULL AUTO_INCREMENT,
  `message_send_userid` int(11) NOT NULL COMMENT '发生人',
  `message_send_time` int(11) NOT NULL COMMENT '发送时间',
  `message_receive_userid` int(11) NOT NULL COMMENT '信息接收者用户ID',
  `message_receive_time` int(11) NOT NULL COMMENT '接收者查看信息时间',
  `message_category` int(11) NOT NULL COMMENT '信息分类',
  `message_title` varchar(100) NOT NULL COMMENT '标题',
  `message_content` text NOT NULL COMMENT '内容',
  `message_ok` int(1) NOT NULL COMMENT '是否有效',
  PRIMARY KEY (`message_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=196 ;

分类表

CREATE TABLE IF NOT EXISTS `x2_message_category` (
  `category_id` int(11) NOT NULL AUTO_INCREMENT,
  `category_label` varchar(50) NOT NULL COMMENT '分类标签',
  `category_ok` int(1) NOT NULL COMMENT '是否有效',
  PRIMARY KEY (`category_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

在浏览器输入(你的网站/index.php?user-center-message)进行访问。

或在用户中心加入菜单再测试(/app/user/tpls/center/menu.tpl)

2.png

<li class="list-group-item {x2;if:$method == 'message'}active{x2;endif}">
        {x2;if:$method == 'message'}站内信息
        {x2;else}
        <a href="index.php?user-center-message">站内信息</a>
        {x2;endif}
    </li>

至此你的站内信息已经添加完成