HomeHelpTrac

source: trunk/xmlrpc/BxDolXMLRPCMessages.php @ 15846

Revision 15846, 5.1 KB checked in by Alexander Trofimov, 5 weeks ago (diff)

Ticket #2703

Line 
1<?php
2
3class BxDolXMLRPCMessages
4{
5
6    function getMessagesInbox($sUser, $sPwd)
7    {
8        return BxDolXMLRPCMessages::_getMessages($sUser, $sPwd, true);
9    }
10
11    function getMessagesSent($sUser, $sPwd)
12    {
13        return BxDolXMLRPCMessages::_getMessages($sUser, $sPwd, false);
14    }
15
16    function getMessageInbox($sUser, $sPwd, $iMsgId)
17    {
18        return BxDolXMLRPCMessages::_getMessage($sUser, $sPwd, $iMsgId, true);
19    }
20
21    function getMessageSent($sUser, $sPwd, $iMsgId)
22    {
23        return BxDolXMLRPCMessages::_getMessage($sUser, $sPwd, $iMsgId, false);
24    }
25
26    function sendMessage($sUser, $sPwd, $sRecipient, $sSubj, $sText, $sSendTo)
27    {
28        $aRet = array ();
29        if (!($iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd)))
30            return new xmlrpcresp(new xmlrpcval(array('error' => new xmlrpcval(1,"int")), "struct"));
31
32        bx_import('BxTemplMailBox');
33
34        $sRecipient = process_db_input ($sRecipient, BX_TAGS_NO_ACTION, BX_SLASHES_NO_ACTION);
35        $aRecipient = db_arr("SELECT * FROM `Profiles` WHERE `NickName` = '$sRecipient'");
36        if (!$aRecipient)
37            return new xmlrpcval (BX_MAILBOX_SEND_UNKNOWN_RECIPIENT);
38
39        $aMailBoxSettings = array ('member_id' => $iId);
40        $oMailBox = &new BxTemplMailBox('mail_page_compose', $aMailBoxSettings);
41
42        $aComposeSettings = array (
43            'send_copy' => 'recipient' == $sSendTo || 'both' == $sSendTo ? true : false,
44            'notification' => false,
45            'send_copy_to_me' => 'me' == $sSendTo || 'both' == $sSendTo ? true : false,
46        );
47        $oMailBox->sendMessage($sSubj, nl2br($sText), $aRecipient['ID'], $aComposeSettings);
48        return new xmlrpcval ($oMailBox->iSendMessageStatusCode);
49    }
50
51    function _getMessage($sUser, $sPwd, $iMsgId, $isInbox)
52    {
53        $aRet = array ();
54        if (!($iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd)))
55            return new xmlrpcresp(new xmlrpcval(array('error' => new xmlrpcval(1,"int")), "struct"));
56
57        $aMsgs = array ();
58        $iMsgId = (int)$iMsgId;
59        $sJoinOn = $isInbox ? " `m`.`Sender` = `p`.`ID` " : " `m`.`Recipient` = `p`.`ID` ";
60        $aRow = db_arr ("SELECT
61                `m`.`ID`, `m`.`Date`, `m`.`Sender`, `m`.`Recipient`, `m`.`Subject`, `m`.`Text`, `m`.`New`,
62                `p`.`NickName` AS `Nick`
63            FROM `sys_messages` AS `m`
64            LEFT JOIN `Profiles` AS `p` ON ($sJoinOn)
65            WHERE `m`.`ID` = '$iMsgId'");
66        if ($aRow)
67        {
68            $sIcon = BxDolXMLRPCUtil::getThumbLink($isInbox ? $aRow['Sender'] : $aRow['Recipient'], 'thumb');
69            $aMsg = array (
70                'ID' => new xmlrpcval($aRow['ID']),
71                'Date' => new xmlrpcval($aRow['Date']),
72                'Sender' => new xmlrpcval($aRow['Sender']),
73                'Recipient' => new xmlrpcval($aRow['Recipient']),
74                'Subject' => new xmlrpcval($aRow['Subject']),
75                'Text' => new xmlrpcval($aRow['Text']),
76                'New' => new xmlrpcval($aRow['New']),
77                'Nick' => new xmlrpcval($aRow['Nick']),
78                'Thumb' => new xmlrpcval($sIcon),
79            );
80            if ($isInbox && $aRow['New'])
81                db_res("UPDATE `sys_messages` SET `New` = 0 WHERE `ID` = '$iMsgId'");
82        }
83        else
84        {
85            return new xmlrpcresp(new xmlrpcval(array('error' => new xmlrpcval(1,"int")), "struct"));
86        }
87        return new xmlrpcval ($aMsg, "struct");
88    }
89
90    function _getMessages($sUser, $sPwd, $isInbox)
91    {
92        $aRet = array ();
93        if (!($iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd)))
94            return new xmlrpcresp(new xmlrpcval(array('error' => new xmlrpcval(1,"int")), "struct"));
95
96        $aMsgs = array ();
97
98        if ($isInbox)
99            $sWhere = "`Recipient` = '$iId' AND NOT FIND_IN_SET('recipient', `Trash`)";
100        else
101            $sWhere = "`Sender` = '$iId' AND NOT FIND_IN_SET('sender', `Trash`)";
102
103        $sJoinOn = $isInbox ? " `m`.`Sender` = `p`.`ID` " : " `m`.`Recipient` = `p`.`ID` ";
104        $r = db_res ("SELECT
105                `m`.`ID`, `m`.`Date`, `m`.`Sender`, `m`.`Recipient`, `m`.`Subject`, `m`.`New`,
106                `p`.`NickName` AS `Nick`
107            FROM `sys_messages` AS `m`
108            LEFT JOIN `Profiles` AS `p` ON ($sJoinOn)
109            WHERE $sWhere
110            ORDER BY `Date` DESC");
111        while ($aRow = mysql_fetch_array ($r))
112        {
113            $sIcon = BxDolXMLRPCUtil::getThumbLink($isInbox ? $aRow['Sender'] : $aRow['Recipient'], 'thumb');
114            $aMsg = array (
115                'ID' => new xmlrpcval($aRow['ID']),
116                'Date' => new xmlrpcval($aRow['Date']),
117                'Sender' => new xmlrpcval($aRow['Sender']),
118                'Recipient' => new xmlrpcval($aRow['Recipient']),
119                'Subject' => new xmlrpcval($aRow['Subject']),
120                'New' => new xmlrpcval($aRow['New']),
121                'Nick' => new xmlrpcval($aRow['Nick']),
122                'Thumb' => new xmlrpcval($sIcon),
123            );
124            $aMsgs[] = new xmlrpcval($aMsg, 'struct');
125        }
126        return new xmlrpcval ($aMsgs, "array");
127    }
128}
129
130?>
Note: See TracBrowser for help on using the repository browser.