HomeHelpTrac

Changeset 15386 for trunk/xmlrpc


Ignore:
Timestamp:
07/27/11 00:08:18 (10 months ago)
Author:
Alexander Trofimov
Message:

Ticket #2565

Location:
trunk/xmlrpc
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/xmlrpc/BxDolXMLRPCUser.php

    r15211 r15386  
    77        $iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd); 
    88        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")); 
    918    } 
    1019 
     
    5564    } 
    5665 
    57     function getUserInfo($sUser, $sPwd, $sNick, $sLang) 
     66    function getHomepageInfo2($sUser, $sPwd, $sLang) 
    5867    { 
     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) { 
    5986        $iIdProfile = BxDolXMLRPCUtil::getIdByNickname ($sNick); 
    6087        if (!$iIdProfile || !($iId = BxDolXMLRPCUtil::checkLogin ($sUser, $sPwd))) 
    6188            return new xmlrpcresp(new xmlrpcval(array('error' => new xmlrpcval(1,"int")), "struct")); 
    6289 
    63         BxDolXMLRPCUtil::setLanguage ($sLang); 
     90        BxDolXMLRPCUtil::setLanguage ($sLang);  
    6491 
    65         if ($iIdProfile != $iId) 
    66         { 
    67             // privacy 
    68             bx_import('BxDolPrivacy'); 
    69             $oPrivacy = new BxDolPrivacy('Profiles', 'ID', 'ID'); 
    70             if ($iIdProfile != $iId && !$oPrivacy->check('view', $iIdProfile, $iId)) 
    71                 return new xmlrpcval ('-1'); 
     92        $mixedRet = BxDolXMLRPCUser::_checkUserPrivacy ($iId, $iIdProfile); 
     93        if (true !== $mixedRet) 
     94            return $mixedRet; 
    7295 
    73             // membership 
    74             $aCheckRes = checkAction($iId, ACTION_ID_VIEW_PROFILES, true, $iIdProfile); 
    75             if ($aCheckRes[CHECK_ACTION_RESULT] != CHECK_ACTION_RESULT_ALLOWED) 
    76                 return new xmlrpcval ($aCheckRes[CHECK_ACTION_MESSAGE]); 
    77         } 
     96        $aRet['info'] = new xmlrpcval (BxDolXMLRPCUtil::getUserInfo($iIdProfile, 0, false), "struct"); 
    7897 
    79         $aRet = BxDolXMLRPCUtil::getUserInfo($iIdProfile); 
     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 
    80107        return new xmlrpcval ($aRet, "struct"); 
    81108    } 
    82109 
     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     
    83154    function getUserInfoExtra($sUser, $sPwd, $sNick, $sLang) 
    84155    { 
  • trunk/xmlrpc/BxDolXMLRPCUtil.php

    r15211 r15386  
    4747            $aAll[$aRow['ID']] = $aRow; 
    4848 
     49        $oZ = new BxDolAlerts('mobile', 'contacts', $iId, 0, array('contacts_data' => $aAll)); 
     50        $oZ->alert();  
    4951 
    5052        foreach ($aAll as $aRow) 
     
    8688    } 
    8789 
    88     function getUserInfo($iId, $iIdViewer = 0) 
     90    function getUserInfo($iId, $iIdViewer = 0, $isCountData = true) 
    8991    { 
    9092        if (!$iIdViewer) 
     
    100102        $aRet['city'] = new xmlrpcval($aSexSql['City']); 
    101103        $aRet['status'] = new xmlrpcval($aSexSql['UserStatusMessage']); 
    102         $aRet['countFriends'] = new xmlrpcval(getFriendNumber($iId)); 
    103  
    104         $aRet['countPhotos'] = new xmlrpcval(BxDolXMLRPCMedia::_getMediaCount('photo', $iId, $iIdViewer)); 
    105         $aRet['countVideos'] = new xmlrpcval(BxDolXMLRPCMedia::_getMediaCount('video', $iId, $iIdViewer)); 
    106         $aRet['countSounds'] = new xmlrpcval(BxDolXMLRPCMedia::_getMediaCount('music', $iId, $iIdViewer)); 
    107  
     104 
     105        if ($isCountData) { 
     106            $aRet['countFriends'] = new xmlrpcval(getFriendNumber($iId)); 
     107            $aRet['countPhotos'] = new xmlrpcval(BxDolXMLRPCMedia::_getMediaCount('photo', $iId, $iIdViewer)); 
     108            $aRet['countVideos'] = new xmlrpcval(BxDolXMLRPCMedia::_getMediaCount('video', $iId, $iIdViewer)); 
     109            $aRet['countSounds'] = new xmlrpcval(BxDolXMLRPCMedia::_getMediaCount('music', $iId, $iIdViewer)); 
     110        } 
     111 
     112        bx_import('BxDolAlerts'); 
     113        $oZ = new BxDolAlerts('mobile', 'user_info', $iId, $iIdViewer, array('profile' => &$aSexSql, 'return_data' => &$aRet)); 
     114        $oZ->alert();  
     115  
    108116        return $aRet; 
    109117    } 
     
    119127        bx_import('BxDolAlbums'); 
    120128 
    121         return array ( 
     129        $aRet = array ( 
    122130               'ID' => new xmlrpcval($a['ID']), 
    123131               'Title' => new xmlrpcval($a['Headline']), 
     
    133141               $sImageKey => new xmlrpcval($sImage), 
    134142            ); 
    135     } 
     143 
     144        $oZ = new BxDolAlerts('mobile', 'user_info2', $a['ID'], $iIdViewer, array('profile' => &$a, 'return_data' => &$aRet)); 
     145        $oZ->alert(); 
     146 
     147        return $aRet; 
     148    } 
     149 
     150    function getMenu ($sMenu, $aMarkersReplace = array ()) { 
     151 
     152        $aDefaultMarkers = array ( 
     153            'site_url' => BX_DOL_URL_ROOT, 
     154        ); 
     155        $aMarkersReplace = array_merge($aDefaultMarkers, $aMarkersReplace); 
     156        $aKeys = array_keys($aMarkersReplace); 
     157        $aValues = array_values($aMarkersReplace); 
     158        foreach ($aKeys as $k => $v)  
     159            $aKeys[$k] = '{' . $v . '}'; 
     160 
     161        $aMenu = array (); 
     162        $aRecords = $GLOBALS['MySQL']->getAll("SELECT * FROM `sys_menu_mobile` WHERE `menu` = '$sMenu' AND `active` = 1 ORDER BY `order`"); 
     163 
     164        $oZ = new BxDolAlerts('mobile', 'menu', 0, 0, array('menu' => $sMenu, 'data' => &$aRecords, 'markers_replace' => &$aMarkersReplace)); 
     165        $oZ->alert();  
     166 
     167        foreach ($aRecords as $r) { 
     168            $a = array ();  
     169            if ($r['eval_hidden']) { 
     170                if ($aMarkersReplace) 
     171                    $sVal = str_replace($aKeys, $aValues, $r['eval_hidden']); 
     172                if (@eval($sVal)) 
     173                    continue; 
     174            } 
     175            foreach ($r as $sName => $sVal) {                 
     176                switch ($sName) { 
     177                    case 'eval_hidden': 
     178                        break; 
     179                    case 'eval_bubble': 
     180                        if ($sVal && $aMarkersReplace) 
     181                            $sVal = str_replace($aKeys, $aValues, $sVal); 
     182                        $a['bubble'] = new xmlrpcval($sVal ? @eval($sVal) : ''); 
     183                        break; 
     184                    case 'icon': 
     185                    case 'action_data': 
     186                        if ($sVal && $aMarkersReplace) 
     187                            $sVal = str_replace($aKeys, $aValues, $sVal); 
     188                        $a[$sName] = new xmlrpcval($sVal); 
     189                        break; 
     190                    case 'title': 
     191                        $a[$sName] = new xmlrpcval(_t($sVal)); 
     192                        break; 
     193                    default: 
     194                        $a[$sName] = new xmlrpcval($sVal); 
     195                } 
     196            } 
     197            $aMenu[] = new xmlrpcval($a, 'struct'); 
     198        } 
     199        return $aMenu; 
     200     } 
    136201 
    137202    function getIdByNickname ($sUser) 
     
    143208    function checkLogin ($sUser, $sPwd) 
    144209    { 
    145         //sleep(1); 
    146210        $iId = (int)BxDolXMLRPCUtil::getIdByNickname ($sUser); 
    147211        $aProfile = getProfileInfo((int)$iId); 
     
    150214        $_COOKIE["memberID" ] = $iId; 
    151215        $_COOKIE["memberPassword"] = sha1($sPwd . $aProfile['Salt']); 
    152         return ($GLOBALS['logged']['member'] = member_auth(0, false)) ? $iId : 0; 
     216        $iRet = ($GLOBALS['logged']['member'] = member_auth(0, false)) ? $iId : 0; 
     217 
     218        $oZ = new BxDolAlerts('mobile', 'check_login', $iId, 0, array('password' => $sPwd, 'return_data' => &$iRet)); 
     219        $oZ->alert(); 
     220 
     221        return $iRet; 
    153222    } 
    154223 
  • trunk/xmlrpc/index.php

    r15211 r15386  
    2020    require_once(BX_DIRECTORY_PATH_ROOT . 'xmlrpc/lib/xmlrpc_wrappers.inc'); 
    2121 
     22    define('BX_XMLRPC_PROTOCOL_VER', 2); 
     23 
    2224    $s = new xmlrpc_server( 
    2325        array( 
     
    5052                "docstring" => "returns user id on success or 0 if login failed", 
    5153            ), 
     54            "dolphin.login2" => array( 
     55                "function" => "BxDolXMLRPCUser::login2", 
     56                "signature" => array (array ($xmlrpcInt, $xmlrpcString, $xmlrpcString)), 
     57                "docstring" => "returns user id on success or 0 if login failed (v.2)", 
     58            ),  
    5259            "dolphin.getHomepageInfo" => array( 
    5360                "function" => "BxDolXMLRPCUser::getHomepageInfo", 
     
    5562                "docstring" => "return logged in user information to dispay on homepage", 
    5663            ), 
     64            "dolphin.getHomepageInfo2" => array( 
     65                "function" => "BxDolXMLRPCUser::getHomepageInfo2", 
     66                "signature" => array (array ($xmlrpcStruct, $xmlrpcString, $xmlrpcString, $xmlrpcString)), 
     67                "docstring" => "return logged in user information to dispay on homepage (v.2)", 
     68            ), 
    5769            "dolphin.getUserInfo" => array( 
    5870                "function" => "BxDolXMLRPCUser::getUserInfo", 
     
    6072                "docstring" => "return user information", 
    6173            ), 
     74            "dolphin.getUserInfo2" => array( 
     75                "function" => "BxDolXMLRPCUser::getUserInfo2", 
     76                "signature" => array (array ($xmlrpcStruct, $xmlrpcString, $xmlrpcString, $xmlrpcString, $xmlrpcString)), 
     77                "docstring" => "return user information (v.2)", 
     78             ), 
    6279            "dolphin.getUserInfoExtra" => array( 
    6380                "function" => "BxDolXMLRPCUser::getUserInfoExtra", 
Note: See TracChangeset for help on using the changeset viewer.