Manyou.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: Manyou.php 33053 2013-04-12 10:09:51Z zhengqingpeng $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. Cloud::loadFile('Service_Client_RestfulException');
  12. class Cloud_Service_Client_Manyou {
  13. private $_myurl = 'http://api.manyou.com/uchome.php';
  14. protected static $_instance;
  15. public static function getInstance() {
  16. if (!(self::$_instance instanceof self)) {
  17. self::$_instance = new self();
  18. }
  19. return self::$_instance;
  20. }
  21. public function __construct() {
  22. }
  23. public function sync() {
  24. global $_G;
  25. $this->getResponse('siteRefresh');
  26. return true;
  27. }
  28. public function getMenuApps() {
  29. $result = $this->getResponse('getMenuApps');
  30. if($result) {
  31. $result['dateline'] = TIMESTAMP;
  32. C::t('common_setting')->update('appmenu', $result['result']);
  33. }
  34. return $result['errCode'] ? false : $result['result'];
  35. }
  36. private function getResponse($action) {
  37. global $_G;
  38. $response = @dfsockopen($this->_myurl, 0, $this->getGlobalPostString($action), '', false, $_G['setting']['my_ip']);
  39. $result = unserialize($response);
  40. if(!$response) {
  41. throw new Cloud_Service_Client_RestfulException('Empty Response', 111);
  42. } elseif(!$result) {
  43. throw new Cloud_Service_Client_RestfulException('Error Response: ' . $response, 110);
  44. }
  45. if($result['errCode']) {
  46. throw new Cloud_Service_Client_RestfulException($result['errMessage'], $result['errCode']);
  47. }
  48. return $result;
  49. }
  50. private function getGlobalPostString($action) {
  51. global $_G;
  52. $setting = $_G['setting'];
  53. $mySiteId = empty($_G['setting']['my_siteid'])?'':$_G['setting']['my_siteid'];
  54. $siteName = $_G['setting']['bbname'];
  55. $siteUrl = $_G['siteurl'];
  56. $ucUrl = rtrim($_G['setting']['ucenterurl'], '/').'/';
  57. $siteCharset = $_G['charset'];
  58. $siteTimeZone = $_G['setting']['timeoffset'];
  59. $mySiteKey = empty($_G['setting']['my_sitekey']) ? '' : $_G['setting']['my_sitekey'];
  60. $siteKey = C::t('common_setting')->fetch('siteuniqueid');
  61. $siteLanguage = $_G['config']['output']['language'];
  62. $siteVersion = $_G['setting']['version'];
  63. $utilService = Cloud::loadClass('Service_Util');
  64. $myVersion = $utilService->getApiVersion();
  65. $productType = 'DISCUZX';
  66. $siteRealNameEnable = '';
  67. $siteRealAvatarEnable = '';
  68. $siteEnableApp = intval($setting['my_app_status']);
  69. $key = $mySiteId . $siteName . $siteUrl . $ucUrl . $siteCharset . $siteTimeZone . $siteRealNameEnable . $mySiteKey . $siteKey;
  70. $key = md5($key);
  71. $siteTimeZone = urlencode($siteTimeZone);
  72. $siteName = urlencode($siteName);
  73. $register = false;
  74. return sprintf('action=%s&productType=%s&key=%s&mySiteId=%d&siteName=%s&siteUrl=%s&ucUrl=%s&siteCharset=%s&siteTimeZone=%s&siteEnableRealName=%s&siteEnableRealAvatar=%s&siteKey=%s&siteLanguage=%s&siteVersion=%s&myVersion=%s&siteEnableApp=%s&from=cloud', $action, $productType, $key, $mySiteId, $siteName, $siteUrl, $ucUrl, $siteCharset, $siteTimeZone, $siteRealNameEnable, $siteRealAvatarEnable, $siteKey, $siteLanguage, $siteVersion, $myVersion, $siteEnableApp);
  75. }
  76. }