BxDolXMLRPCUser.php 6.7 KB

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