wsq_setting.inc.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  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: wsq_setting.inc.php 35197 2015-02-03 08:11:53Z nemohou $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  9. exit('Access Denied');
  10. }
  11. if(empty($_GET['updated'])) {
  12. require_once DISCUZ_ROOT.'./source/plugin/wechat/install/checkupdate.inc.php';
  13. if($pluginupdated) {
  14. updatecache(array('plugin', 'setting'));
  15. $url = $_SERVER['REQUEST_URI'].(strexists($_SERVER['REQUEST_URI'], '?') ? '&' : '?').'updated=yes';
  16. dheader('location: '.$url);
  17. }
  18. }
  19. $setting = C::t('common_setting')->fetch_all(array('mobilewechat', 'mobile'));
  20. $mobilesetting = (array)unserialize($setting['mobile']);
  21. $setting = (array)unserialize($setting['mobilewechat']);
  22. require_once DISCUZ_ROOT.'./source/plugin/wechat/wechat.lib.class.php';
  23. require_once DISCUZ_ROOT.'./source/plugin/wechat/wsq.class.php';
  24. require_once DISCUZ_ROOT.'./source/plugin/wechat/setting.class.php';
  25. WeChatSetting::menu();
  26. if(!empty($_GET['recheck'])) {
  27. wsq::recheck();
  28. $siteinfo = wsq::info();
  29. $setting['wsq_status'] = $siteinfo->res->status;
  30. $setting['wsq_lastrequest'] = $siteinfo->res->lasttime;
  31. $settings = array('mobilewechat' => serialize($setting));
  32. C::t('common_setting')->update_batch($settings);
  33. }
  34. if(!submitcheck('settingsubmit')) {
  35. if($setting['wsq_siteid']) {
  36. if(in_array('plugin', $_G['setting']['rewritestatus'])) {
  37. $url = $_G['siteurl'].rewriteoutput('plugin', 1, 'wechat', 'access');
  38. } else {
  39. $url = $_G['siteurl'].'plugin.php?id=wechat:access';
  40. }
  41. }
  42. $apilisturl = ADMINSCRIPT.'?action=plugins&operation=config&do='.$pluginid.'&identifier=wechat&pmod=wsq_setting&viewapi=yes';
  43. $setting['wsq_siteurl'] = $setting['wsq_siteurl'] ? $setting['wsq_siteurl'] : $_G['siteurl'];
  44. $setting['wsq_sitename'] = $setting['wsq_sitename'] ? $setting['wsq_sitename'] : $_G['setting']['bbname'];
  45. require_once libfile('function/forumlist');
  46. $forums = '<select name="setting[wsq_fid]"><option value="">'.cplang('plugins_empty').'</option>'.forumselect(FALSE, 0, $setting['wsq_fid'], TRUE).'</select>';
  47. $sitelogo = $setting['wsq_sitelogo'] ? '<img src="'.$setting['wsq_sitelogo'].'" width="150" />' : '';
  48. $qrcode = $setting['wechat_qrcode'] ? '<img src="'.$_G['setting']['attachurl'].'common/'.$setting['wechat_qrcode'].'" width="150" />' : '';
  49. $apicredits = '<option value="0">'.cplang('none').'</option>';
  50. foreach($_G['setting']['extcredits'] as $i => $credit) {
  51. $extcredit = 'extcredits'.$i.' ('.$credit['title'].')';
  52. $apicredits .= '<option value="'.$i.'" '.($i == intval($setting['wsq_apicredit']) ? 'selected' : '').'>'.$extcredit.'</option>';
  53. }
  54. $setting['wechat_forumdisplay_reply'] = isset($setting['wechat_forumdisplay_reply']) ? $setting['wechat_forumdisplay_reply'] : 1;
  55. showtips(lang('plugin/wechat', 'wsq_tips', array('ADMINSCRIPT' => ADMINSCRIPT.'?action=', 'apiurl' => $apilisturl)));
  56. showformheader('plugins&operation=config&do='.$pluginid.'&identifier=wechat&pmod=wsq_setting', 'enctype');
  57. showtableheader(lang('plugin/wechat', 'wechat_wsq_setting').' '.($setting['wsq_status'] ? ' ('.lang('plugin/wechat', 'wsq_status_open').')' : ($setting['wsq_siteid'] ? ' ('.lang('plugin/wechat', 'wsq_status_ing').(TIMESTAMP - $setting['wsq_lastrequest'] > 3600 ? ' <a href="'.ADMINSCRIPT.'?action=plugins&operation=config&do='.$pluginid.'&identifier=wechat&pmod=wsq_setting&recheck=yes">['.lang('plugin/wechat', 'wsq_status_try').']</a>)' : ')') : ' ('.lang('plugin/wechat', 'wsq_status_close').')')));
  58. showsetting(lang('plugin/wechat', 'wsq_allow'), 'setting[wsq_allow]', $setting['wsq_allow'], 'radio', 0, 0, lang('plugin/wechat', 'wsq_allow_comment'));
  59. if($setting['wsq_allow'] && $setting['wsq_siteid']) {
  60. showtablefooter();
  61. showtableheader();
  62. showsetting(lang('plugin/wechat', 'wsq_url'), '', '', '<span style="white-space:nowrap">'.$url.'</span>');
  63. showtablefooter();
  64. showtableheader();
  65. showsetting(lang('plugin/wechat', 'wsq_siteid'), '', '', $setting['wsq_siteid']);
  66. showsetting(lang('plugin/wechat', 'wsq_sitetoken'), '', '', $setting['wsq_sitetoken']);
  67. }
  68. showsetting(lang('plugin/wechat', 'wsq_sitename'), 'setting[wsq_sitename]', $setting['wsq_sitename'], 'text');
  69. showsetting(lang('plugin/wechat', 'wsq_sitelogo'), 'wsq_sitelogo', $setting['wsq_sitelogo'], 'file', 0, 0, lang('plugin/wechat', 'wsq_sitelogo_comment', array('sitelogo' => $sitelogo)));
  70. showsetting(lang('plugin/wechat', 'wsq_sitesummary'), 'setting[wsq_sitesummary]', $setting['wsq_sitesummary'], 'textarea');
  71. showsetting(lang('plugin/wechat', 'wsq_siteurl'), 'setting[wsq_siteurl]', $setting['wsq_siteurl'], 'text', 0, 0, lang('plugin/wechat', 'wsq_siteurl_comment'));
  72. showsetting(lang('plugin/wechat', 'wsq_siteip'), 'setting[wsq_siteip]', $setting['wsq_siteip'], 'text', 0, 0, lang('plugin/wechat', 'wsq_siteip_comment'));
  73. showsetting(lang('plugin/wechat', 'wsq_fid'), '', '', $forums, 0, 0, lang('plugin/wechat', 'wsq_fid_comment'));
  74. if(!empty($_G['setting']['domain']['root']['forum'])) {
  75. showsetting(lang('plugin/wechat', 'wsq_domain'), '', '', 'http://<input type="text" name="setting[wsq_domain]" class="txt" value="'.$setting['wsq_domain'].'" style="width:100px; margin-right:0px;" >.'.$_G['setting']['domain']['root']['forum'], !function_exists('domain_create'), 0, lang('plugin/wechat', 'wsq_domain_comment'));
  76. } else {
  77. showsetting(lang('plugin/wechat', 'wsq_domain'), 'setting[wsq_domain]', '', 'text', 1, 0, lang('plugin/wechat', 'wsq_domain_comment'));
  78. }
  79. showsetting(lang('plugin/wechat', 'wechat_forumdisplay_reply'), 'setting[wechat_forumdisplay_reply]', $setting['wechat_forumdisplay_reply'], 'radio');
  80. showsetting(lang('plugin/wechat', 'wechat_float_qrcode'), 'setting[wechat_float_qrcode]', $setting['wechat_float_qrcode'], 'radio', 0, 1);
  81. showsetting(lang('plugin/wechat', 'wechat_float_text'), 'setting[wechat_float_text]', $setting['wechat_float_text'], 'text');
  82. showtagfooter('tbody');
  83. showsetting(lang('plugin/wechat', 'wsq_wapdefault'), 'setting[wsq_wapdefault]', $setting['wsq_wapdefault'], 'radio');
  84. showsetting(lang('plugin/wechat', 'wsq_apicredit'), '', '', '<select name="setting[wsq_apicredit]">'.$apicredits.'</select>', 0, 0, lang('plugin/wechat', 'wsq_apicredit_comment'));
  85. showsubmit('settingsubmit');
  86. showtablefooter();
  87. showformfooter();
  88. } else {
  89. if($_FILES['wsq_sitelogo']['tmp_name']) {
  90. $upload = new discuz_upload();
  91. if(!$upload->init($_FILES['wsq_sitelogo'], 'common', random(3, 1), random(8)) || !$upload->save()) {
  92. cpmsg($upload->errormessage(), '', 'error');
  93. }
  94. $parsev = parse_url($_G['setting']['attachurl']);
  95. $_GET['setting']['wsq_sitelogo'] = ($parsev['host'] ? '' : $_G['siteurl']).$_G['setting']['attachurl'].'common/'.$upload->attach['attachment'];
  96. } else {
  97. $_GET['setting']['wsq_sitelogo'] = $setting['wsq_sitelogo'];
  98. }
  99. if(!$_GET['setting']['wsq_fid']) {
  100. cpmsg(lang('plugin/wechat', 'wsq_fid_empty'), '', 'error');
  101. }
  102. if(!$setting['wsq_sitetoken']) {
  103. $siteinfo = wsq::register(
  104. $_GET['setting']['wsq_sitename'],
  105. $_GET['setting']['wsq_siteurl'],
  106. $_GET['setting']['wsq_sitelogo'],
  107. $_GET['setting']['wsq_sitesummary'],
  108. $setting['wechat_mtype'],
  109. $setting['wechat_qrtype'],
  110. $_GET['setting']['wsq_siteip'],
  111. $setting['wechat_followurl'],
  112. $setting['wechat_appId'],
  113. $setting['wechat_appsecret'],
  114. $_GET['setting']['wsq_global_banner'],
  115. $_GET['setting'] + $setting
  116. );
  117. if(!$siteinfo || $siteinfo->code) {
  118. if($siteinfo->code == 14) {
  119. cpmsg(lang('plugin/wechat', 'wsq_api_servertime_error', '', 'error'));
  120. }
  121. cpmsg(lang('plugin/wechat', 'wsq_api_register_error'), '', 'error');
  122. }
  123. $_GET['setting']['wsq_siteid'] = $siteinfo->res->siteid;
  124. $_GET['setting']['wsq_sitetoken'] = $siteinfo->res->token;
  125. } else {
  126. $siteinfo = wsq::edit(
  127. $_GET['setting']['wsq_sitename'],
  128. $_GET['setting']['wsq_siteurl'],
  129. $_GET['setting']['wsq_sitelogo'],
  130. $_GET['setting']['wsq_sitesummary'],
  131. $setting['wechat_mtype'],
  132. $setting['wechat_qrtype'],
  133. $_GET['setting']['wsq_siteip'],
  134. $setting['wechat_followurl'],
  135. $setting['wechat_appId'],
  136. $setting['wechat_appsecret'],
  137. $_GET['setting']['wsq_global_banner'],
  138. $_GET['setting'] + $setting
  139. );
  140. if(!$siteinfo || $siteinfo->code) {
  141. if($siteinfo->code == 14) {
  142. cpmsg(lang('plugin/wechat', 'wsq_api_servertime_error', '', 'error'));
  143. }
  144. cpmsg(lang('plugin/wechat', 'wsq_api_edit_error'), '', 'error');
  145. }
  146. }
  147. if(function_exists('domain_create')) {
  148. if(preg_match('/^((http|https|ftp):\/\/|\.)|(\/|\.)$/i', $_GET['setting']['wsq_domain'])) {
  149. cpmsg('setting_domain_http_error', '', 'error');
  150. }
  151. }
  152. $_GET['setting']['wsq_status'] = $siteinfo->res->status;
  153. $_GET['setting']['wsq_lastrequest'] = $siteinfo->res->lasttime;
  154. $settings = array('mobilewechat' => serialize($_GET['setting'] + $setting));
  155. if(!$mobilesetting['allowmobile']) {
  156. $mobilesetting['allowmobile'] = 1;
  157. $settings['mobile'] = serialize($mobilesetting);
  158. }
  159. C::t('common_setting')->update_batch($settings);
  160. updatecache('setting');
  161. if($_GET['setting']['wsq_allow']) {
  162. WeChatHook::updateResponse(array(
  163. 'receiveMsg::text' => array('plugin' => 'wechat', 'include' => 'response.class.php', 'class' => 'WSQResponse', 'method' => 'text'),
  164. 'receiveEvent::click' => array('plugin' => 'wechat', 'include' => 'response.class.php', 'class' => 'WSQResponse', 'method' => 'click'),
  165. 'receiveEvent::subscribe' => array('plugin' => 'wechat', 'include' => 'response.class.php', 'class' => 'WSQResponse', 'method' => 'subscribe'),
  166. 'receiveEvent::scan' => array('plugin' => 'wechat', 'include' => 'response.class.php', 'class' => 'WSQResponse', 'method' => 'scan'),
  167. ));
  168. WeChatHook::updateRedirect(array('plugin' => 'wechat', 'include' => 'response.class.php', 'class' => 'WSQResponse', 'method' => 'redirect'));
  169. WeChatHook::updateAPIHook(array(
  170. array('forumdisplay_variables' => array('plugin' => 'wechat', 'include' => 'wsqapi.class.php', 'class' => 'WSQAPI', 'method' => 'forumdisplay_variables')),
  171. array('viewthread_variables' => array('plugin' => 'wechat', 'include' => 'wsqapi.class.php', 'class' => 'WSQAPI', 'method' => 'viewthread_variables')),
  172. ));
  173. WeChatHook::updateViewPluginId('wechat');
  174. if(!in_array('mobile', $_G['setting']['plugins']['available'])) {
  175. $plugin = C::t('common_plugin')->fetch_by_identifier('mobile');
  176. if(!$plugin) {
  177. cpmsg(lang('plugin/wechat', 'wsq_mobile_plugin_error'), '', 'error');
  178. }
  179. C::t('common_plugin')->update($plugin['pluginid'], array('available' => 1));
  180. updatecache(array('plugin', 'setting'));
  181. }
  182. } else {
  183. $wechatredirect = WeChatHook::getRedirect();
  184. if($wechatredirect['plugin'] == 'wechat') {
  185. $wechatredirect = array();
  186. }
  187. WeChatHook::updateRedirect($wechatredirect);
  188. WeChatHook::updateViewPluginId('');
  189. }
  190. if(function_exists('domain_create') && $_G['setting']['domain']['root']['forum']) {
  191. if($_GET['setting']['wsq_domain']) {
  192. domain_create('wechat', $_GET['setting']['wsq_domain'], $_G['setting']['domain']['root']['forum']);
  193. } else {
  194. domain_delete('wechat');
  195. }
  196. }
  197. cpmsg('setting_update_succeed', 'action=plugins&operation=config&do='.$pluginid.'&identifier=wechat&pmod=wsq_setting', 'succeed');
  198. }
  199. ?>