HomeHelpTrac

source: trunk/xmlrpc/BxDolXMLRPCUser.php @ 15386

Revision 15386, 6.7 KB checked in by Alexander Trofimov, 7 months ago (diff)

Ticket #2565

Line 
1<?php
2
3class BxDolXMLRPCUser
4{
5    function login($sUser, $sPwd)
6    {
7        $iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd);
8        return new xmlrpcresp(new xmlrpcval($iId, "int"));
9    }
10
11    function login2($sUser, $sPwd)
12    {
13        $iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd);
14        return new xmlrpcresp(new xmlrpcval(array(
15            'member_id' => new xmlrpcval($iId, "int"),
16            'protocol_ver' => new xmlrpcval(BX_XMLRPC_PROTOCOL_VER, "int"),
17        ), "struct"));
18    }
19
20    function updateUserLocation ($sUser, $sPwd, $sLat, $sLng, $sZoom, $sMapType)
21    {
22        if (!($iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd)) || !preg_match('/^[A-Za-z0-9]*$/', $sMapType))
23            return new xmlrpcresp(new xmlrpcval(array('error' => new xmlrpcval(1,"int")), "struct"));
24
25        $iRet = BxDolService::call('map_profiles', 'update_profile_location_manually', array ($iId, (float)$sLat, (float)$sLng, (int)$sZoom, $sMapType, '', '')) ? '1' : '0';
26
27        return new xmlrpcresp(new xmlrpcval($iRet));
28    }
29
30    function getUserLocation ($sUser, $sPwd, $sNick)
31    {
32        if (!($iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd)))
33            return new xmlrpcresp(new xmlrpcval(array('error' => new xmlrpcval(1,"int")), "struct"));
34
35        $iProfileId = getID($sNick, false);
36        $aLocation = BxDolService::call('map_profiles', 'get_location', array($iProfileId, $iId, true));
37        if (-1 == $aLocation) // access denied
38            return new xmlrpcval("-1");
39        if (!is_array($aLocation)) // location is undefined
40            return new xmlrpcval("0");
41
42        return new xmlrpcval(array(
43            'lat' => new xmlrpcval($aLocation['lat']),
44            'lng' => new xmlrpcval($aLocation['lng']),
45            'zoom' => new xmlrpcval($aLocation['zoom']),
46            'type' => new xmlrpcval($aLocation['type']),
47            'address' => new xmlrpcval($aLocation['address']),
48            'country' => new xmlrpcval($aLocation['country']),
49        ), 'struct');
50    }
51
52    function getHomepageInfo($sUser, $sPwd)
53    {
54        if (!($iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd)))
55            return new xmlrpcresp(new xmlrpcval(array('error' => new xmlrpcval(1,"int")), "struct"));
56
57        $aRet = BxDolXMLRPCUtil::getUserInfo($iId);
58
59        $aRet['unreadLetters'] = new xmlrpcval(getNewLettersNum($iId));
60        $aFriendReq =  db_arr( "SELECT count(*) AS `num` FROM `sys_friend_list` WHERE `Profile` = {$iId} AND  `Check` = '0'" );
61        $aRet['friendRequests'] = new xmlrpcval($aFriendReq['num']);
62
63        return new xmlrpcval ($aRet, "struct");
64    }
65
66    function getHomepageInfo2($sUser, $sPwd, $sLang)
67    {
68        if (!($iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd)))
69            return new xmlrpcresp(new xmlrpcval(array('error' => new xmlrpcval(1,"int")), "struct"));
70
71        BxDolXMLRPCUtil::setLanguage ($sLang);
72
73        $aRet = BxDolXMLRPCUtil::getUserInfo($iId);
74
75        $aMarkersReplace = array (
76            'member_id' => $iId,
77            'member_username' => $sUser,
78            'member_password' => $sPwd,
79        );
80        $aRet['menu'] = new xmlrpcval(BxDolXMLRPCUtil::getMenu('homepage', $aMarkersReplace), 'array');
81
82        return new xmlrpcval ($aRet, "struct");
83    }
84
85    function getUserInfo2($sUser, $sPwd, $sNick, $sLang) {
86        $iIdProfile = BxDolXMLRPCUtil::getIdByNickname ($sNick);
87        if (!$iIdProfile || !($iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd)))
88            return new xmlrpcresp(new xmlrpcval(array('error' => new xmlrpcval(1,"int")), "struct"));
89
90        BxDolXMLRPCUtil::setLanguage ($sLang);
91
92        $mixedRet = BxDolXMLRPCUser::_checkUserPrivacy ($iId, $iIdProfile);
93        if (true !== $mixedRet)
94            return $mixedRet;
95
96        $aRet['info'] = new xmlrpcval (BxDolXMLRPCUtil::getUserInfo($iIdProfile, 0, false), "struct");
97
98        $aMarkersReplace = array (
99            'member_id' => $iId,
100            'member_username' => $sUser,
101            'member_password' => $sPwd,
102            'profile_id' => $iIdProfile,
103            'profile_username' => $sNick,
104        );
105        $aRet['menu'] = new xmlrpcval(BxDolXMLRPCUtil::getMenu('profile', $aMarkersReplace), 'array');
106
107        return new xmlrpcval ($aRet, "struct");
108    }
109
110    function getUserInfo($sUser, $sPwd, $sNick, $sLang) {
111        $iIdProfile = BxDolXMLRPCUtil::getIdByNickname ($sNick);
112        if (!$iIdProfile || !($iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd)))
113            return new xmlrpcresp(new xmlrpcval(array('error' => new xmlrpcval(1,"int")), "struct"));
114
115        BxDolXMLRPCUtil::setLanguage ($sLang);
116
117        $mixedRet = BxDolXMLRPCUser::_checkUserPrivacy ($iId, $iIdProfile);
118        if (true !== $mixedRet)
119            return $mixedRet;
120
121        $aRet = BxDolXMLRPCUtil::getUserInfo($iIdProfile, 0, true);
122        return new xmlrpcval ($aRet, "struct");
123    }
124
125    function _checkUserPrivacy($iId, $iIdProfile)
126    {
127        $mixedAccessDenied = false;
128
129        if ($iIdProfile != $iId)
130        {
131            // privacy
132            bx_import('BxDolPrivacy');
133            $oPrivacy = new BxDolPrivacy('Profiles', 'ID', 'ID');
134            if ($iIdProfile != $iId && !$oPrivacy->check('view', $iIdProfile, $iId))
135                $mixedAccessDenied = '-1';
136           
137            // membership
138            if (false === $mixedAccessDenied) {
139                $aCheckRes = checkAction($iId, ACTION_ID_VIEW_PROFILES, true, $iIdProfile);
140                if ($aCheckRes[CHECK_ACTION_RESULT] != CHECK_ACTION_RESULT_ALLOWED)
141                    $mixedAccessDenied = $aCheckRes[CHECK_ACTION_MESSAGE];
142            }
143        }
144
145        $oZ = new BxDolAlerts('mobile', 'view_profile', $iIdProfile, $iId, array('access_denied' => &$mixedAccessDenied));
146        $oZ->alert();
147
148        if (false !== $mixedAccessDenied)
149            return new xmlrpcval ($mixedAccessDenied);
150
151        return true;
152    }
153   
154    function getUserInfoExtra($sUser, $sPwd, $sNick, $sLang)
155    {
156        $iIdProfile = BxDolXMLRPCUtil::getIdByNickname ($sNick);
157        if (!$iIdProfile || !($iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd)))
158            return new xmlrpcresp(new xmlrpcval(array('error' => new xmlrpcval(1,"int")), "struct"));
159
160        BxDolXMLRPCUtil::setLanguage ($sLang);
161
162        $o = new BxDolXMLRPCProfileView ($iIdProfile);
163        return $o->getProfileInfoExtra();
164    }
165
166    function updateStatusMessage ($sUser, $sPwd, $sStatusMsg)
167    {
168        if (!($iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd)))
169            return new xmlrpcresp(new xmlrpcval(array('error' => new xmlrpcval(1,"int")), "struct"));
170
171        ob_start();
172        $_GET['action'] = '1';
173        require_once( BX_DIRECTORY_PATH_ROOT . 'list_pop.php' );
174        ob_end_clean();
175
176        $_POST['status_message'] = $sStatusMsg;
177        ActionChangeStatusMessage ($iId);
178
179        return new xmlrpcresp(new xmlrpcval($iRet, "int"));
180    }
181
182}
183
184?>
Note: See TracBrowser for help on using the repository browser.