短消息&邮件体系

.短消息体系:

 

可以在http://localhost/pw87/message.php左侧看到如下:

 

 

消息类型主要有这几种:

sms —— 消息 

notice ——通知

request ——请求

groupsms——群组消息

history —— 历史消息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

文件目录是这样的:

 

lib目录下面有message这个目录,主要都是和消息中心相关的,message/message/下面的文件是服务层,message/db/是数据库层。其中message.class.php是消息中心的公共服务层,对外都是调用这个类里面的方法的,比如发短消息啊,获取短消息啊等等的接口都可以在这个文件里面找到。比如举个例子,如果想获取短消息的列表,就是使用message.class.php里面的这个方法。

/**

     * 获取某个人所有站内信

     * @param int $page

     * @param int $userId 用户UID

     * @param int $perpage

     *@return array array(array(mid,rid,uid,title,content,typeid,categoryid,status,isown,created_time,modified_time,expand,create_uid,create_username)) 二维数组结构 关系表和信息表的字段数组

*/

    function getAllMessages($userId, $page, $perpage) {

       $service = $this->_serviceFactory("message");

       return $service->getAllMessages($userId, $page, $perpage);

    }

 

 

 

 

 

程序可以这样写:

<?

require_once("global.php");

$messageServer = L::loadClass("message", 'message');

$page = 1;

$perpage = 2;

$userId = $winduid;

$messages = $messageServer->getAllMessages($userId, $page, $perpage);

var_dump($messages);

?>

 

$messageServer =  L:loadClass("message",'message');

就是读取了message.class.php并且new了对象。

通过这样的方法就可以获取你想要的数据了,一般接口都已经有了,你可以去这个文件里面去找,都有。

 

下面来说下相关表结构:

 

 

 

 

 

 

 

 

 

 

在发消息的时候在pw_ms_relations里面会有2条记录。

 

根据isown来确定是发起人还是接受人。这个表是和这个用户相关的,可以通过这个表来确定和这个用户的关系,有发起和接受,然后再去messages表里面去找相关的内容。

 

 

另外还有分类没说:

 

    var $_sms = 'sms'; //站内信

    var $_sms_message = 'sms_message'; //短消息

    var $_sms_rate = 'sms_rate'; //评分

    var $_sms_comment = 'sms_comment'; //评论

    var $_sms_guestbook = 'sms_guestbook'; //留言

    var $_sms_share = 'sms_share'; //分享

    var $_sms_reply = 'sms_reply'; //帖子回复

    var $_notice = 'notice'; //通知

    var $_notice_system = 'notice_system'; //系统通知

    var $_notice_postcate = 'notice_postcate'; //团购通知

    var $_notice_active = 'notice_active'; //活动通知

    var $_notice_apps = 'notice_apps'; //应用通知

    var $_notice_comment = 'notice_comment'; //评论通知

    var $_notice_guestbook = 'notice_guestbook'; //留言通知

    var $_request = 'request'; //请求

    var $_request_friend = 'request_friend'; //好友请求

    var $_request_group = 'request_group'; //群组请求

    var $_request_active = 'request_active'; //活动请求

    var $_request_apps = 'request_apps'; //应用请求

    var $_groupsms = 'groupsms';

    var $_groupsms_colony = 'groupsms_colony'; //群组

    var $_groupsms_normal = 'groupsms_normal'; //正常的多人对话

    var $_groupsms_shield = 'groupsms_shield'; //屏蔽的多人对话

    var $_chat = 'chat';

    var $_history = 'history';

 

Sms在数据库的cateoryid1 sms下面有好几种也就是好几个小分类,如sms_message ,sms_rate sms_comment,sms_guestbook,sms_share,sms_reply,这几种,他们的typeid 对应的:

 

/**

     * 基础配置类型地图

     * @return unknown_type

     */

    function maps() {

       return array($this->_sms => 1,

                  $this->_sms_message => 100,$this->_sms_rate => 101,$this->_sms_comment => 102,

                  $this->_sms_guestbook => 103,$this->_sms_share => 104,$this->_sms_reply => 105,

$this->_notice => 2,

                  $this->_notice_system => 200,$this->_notice_postcate => 201,$this->_notice_active => 202,

                  $this->_notice_apps => 203,$this->_notice_comment => 204,$this->_notice_guestbook => 205,

$this->_request => 3,

                  $this->_request_friend => 300,$this->_request_group => 301,$this->_request_active => 302,$this->_request_apps => 303,

$this->_groupsms => 4,

                  $this->_groupsms_colony => 400,$this->_groupsms_normal => 401,

                  $this->_groupsms_shield => 402,$this->_chat => 5,$this->_history => 0);

    }

 

 

 

然后存入数据库中,来识别是什么分类,pw_ms_relations 表里面记录的。

 

 

在回复的时候除了会在pw_ms_replies   增加一条记录以外,还会在pw_ms_relations表和pw_ms_messages 2个表分别增加一个记录,pw_ms_replies表里面是为了在显示某一个记录的时候 显示出回复的信息。通过relations表里面的isown来判断是收件箱还是发件箱。

 

 

如果是2 说明是回复,那么他回复的那个消息的ID 就存在pw_ms_messages里面的

 

里面。

 

 

 

 

二.邮件系统:

 

一共有3种方式的。

 

发送邮件的文件在require/sendmail.php

如果要发送邮件,这样就可以了,他会根据你后台设置去发邮件,后台的配置写在data/bbscache/mail_config_php这里面。你后台有修改,可以在这里看到。如果程序里面想发送邮件,可以这样写:

require_once(R_P.'require/sendemail.php');

$sendinfo = sendemail($to_email,'email_check_subject','email_check_content','email_additional');

$to_email 是要发送的邮件

email_check_subject  是对应的语言包的邮件的标题,

email_check_content 是对应的语言包的邮件的内容,

email_additional     是邮件的additional_headers

 

这些在语言包里面可以找到相对应的发送的邮件的内容,语言包可以看template/wind/lang_email.php