class_cloudregister.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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: class_cloudregister.php 33799 2013-08-15 02:29:22Z nemohou $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. Cloud::loadFile('Service_Client_Cloud');
  12. class Cloud_Register extends Cloud_Service_Client_Cloud {
  13. public $appIdentifier;
  14. public $pluginid;
  15. protected $lang;
  16. public function __construct($appIdentifier, $pluginid, $startStep, $debug = false) {
  17. global $_G;
  18. parent::__construct($debug);
  19. $this->appIdentifier = $appIdentifier;
  20. $this->pluginid = $pluginid;
  21. $step = !empty($_GET['step']) ? authcode($_GET['step'], 'DECODE', $_G['config']['security']['authkey']) : $startStep;
  22. $method = 'step_'.$step;
  23. $this->lang = lang('cloud_register');
  24. if(!empty($_GET['skip'])) {
  25. return false;
  26. }
  27. if(method_exists($this, $method)) {
  28. return $this->$method();
  29. } else {
  30. return false;
  31. }
  32. }
  33. private function _step($v) {
  34. global $_G;
  35. return rawurlencode(authcode($v, 'ENCODE', $_G['config']['security']['authkey'], 3600));
  36. }
  37. private function _msg($message, $extra = '') {
  38. if(defined('ADMINSCRIPT')) {
  39. cpmsg($message, '', 'succeed', array(), ($extra ? $extra.'<br />' : '').'<br /><a href="'.ADMINSCRIPT.'?action=plugins">'.$this->lang['back'].'</a>');
  40. } else {
  41. showmessage($message.'<br />'.$extra, $url, $values, array('alert' => 'info'));
  42. }
  43. }
  44. private function step_appOpenFormView() {
  45. global $_G;
  46. $submiturl = $_G['siteurl'].ADMINSCRIPT.'?action=plugins&operation=enable&pluginid='.$this->pluginid.'&formhash='.FORMHASH.'&step='.$this->_step('appOpenWithRegister');
  47. $fromurl = $_G['siteurl'].ADMINSCRIPT.'?action=plugins';
  48. $data = $this->appOpenFormView($this->appIdentifier, $submiturl, $fromurl);
  49. if($data) {
  50. echo $data;
  51. exit;
  52. }
  53. $this->step_appOpenWithRegister();
  54. }
  55. private function step_appOpenWithRegister() {
  56. global $_G;
  57. $return = $this->appOpenWithRegister($this->appIdentifier, $_GET['extra']);
  58. if($return['errCode']) {
  59. if($return['errCode'] == '1000') {
  60. $this->step_bindQQ();
  61. } else {
  62. $this->_msg($return['errMessage']);
  63. }
  64. }
  65. if($return['result']) {
  66. if($return['result']['sId'] && $return['result']['sKey']) {
  67. C::t('common_setting')->update_batch(array('my_siteid' => $return['result']['sId'], 'my_sitekey' => $return['result']['sKey']));
  68. updatecache('setting');
  69. }
  70. if($return['result']['needBindQQ']) {
  71. $this->step_bindQQ();
  72. }
  73. }
  74. $this->step_over();
  75. }
  76. private function step_bindQQ() {
  77. global $_G;
  78. $fromurl = $_G['siteurl'].ADMINSCRIPT.'?frame=no&action=plugins&operation=enable&pluginid='.$this->pluginid.'&formhash='.FORMHASH.'&step='.$this->_step('bindQQBack');
  79. $url = $this->bindQQ($this->appIdentifier, $fromurl, $_GET['extra']);
  80. $script = '<script type="text/javascript">function BindQQ() {var url = \''.$url.'\';var left = (window.screen.width - 700) / 2;var top = (window.screen.height - 460) / 2;var A=window.open(url, \'TencentLogin\', \'left=\'+left+\',top=\'+top+\',width=700,height=460,menubar=0,scrollbars=1,resizable=1,status=1,titlebar=0,toolbar=0,scrollbars=0,location=1\');}</script>';
  81. $this->_msg($this->lang['bindqq'], $script.$this->lang['bindqq_link']);
  82. }
  83. private function step_bindQQBack() {
  84. $stepurl = $_G['siteurl'].ADMINSCRIPT.'?action=plugins&operation=enable&pluginid='.$this->pluginid.'&formhash='.FORMHASH.'&step='.$this->_step('appOpenWithRegister');
  85. if($_GET['extra']) {
  86. $utilService = Cloud::loadClass('Service_Util');
  87. $stepurl .= '&'.$utilService->httpBuildQuery(array('extra' => $_GET['extra']), '', '&');
  88. }
  89. echo '<script type="text/javascript">if(window.opener) {window.opener.location.href=\''.$stepurl.'\';};window.close();</script>';
  90. exit;
  91. }
  92. private function step_over() {
  93. return true;
  94. }
  95. private function step_appCloseReasonsView() {
  96. $submiturl = $_G['siteurl'].ADMINSCRIPT.'?action=plugins&operation=disable&pluginid='.$this->pluginid.'&formhash='.FORMHASH.'&step='.$this->_step('appClose');
  97. $fromurl = $_G['siteurl'].ADMINSCRIPT.'?action=plugins';
  98. $data = $this->appCloseReasonsView($this->appIdentifier, $submiturl, $fromurl);
  99. if($data) {
  100. echo $data;
  101. exit;
  102. }
  103. $this->step_over();
  104. }
  105. private function step_appClose() {
  106. $return = $this->appClose($this->appIdentifier);
  107. if($return['errCode']) {
  108. $this->_msg($return['errMessage']);
  109. }
  110. $this->step_over();
  111. }
  112. }
  113. ?>