menu_setting.inc.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  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: menu_setting.inc.php 35194 2015-02-02 02:37:34Z nemohou $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  9. exit('Access Denied');
  10. }
  11. $setting = C::t('common_setting')->fetch_all(array('wechatmenu'));
  12. $setting = (array)unserialize($setting['wechatmenu']);
  13. require_once DISCUZ_ROOT . './source/plugin/wechat/wechat.lib.class.php';
  14. require_once DISCUZ_ROOT.'./source/plugin/wechat/setting.class.php';
  15. WeChatSetting::menu();
  16. if(!$_G['wechat']['setting']['wechat_appId'] || !$_G['wechat']['setting']['wechat_appsecret']) {
  17. cpmsg(lang('plugin/wechat', 'wsq_menu_at_error'), '', 'error');
  18. }
  19. if(!submitcheck('menusubmit') && !submitcheck('pubsubmit')) {
  20. $wechat_client = new WeChatClient($_G['wechat']['setting']['wechat_appId'], $_G['wechat']['setting']['wechat_appsecret']);
  21. if(in_array('plugin', $_G['setting']['rewritestatus'])) {
  22. $url = $_G['siteurl'].rewriteoutput('plugin', 1, 'wechat', 'access', '', 'op=access');
  23. } else {
  24. $url = $_G['siteurl'].'plugin.php?id=wechat:access';
  25. }
  26. showtips(lang('plugin/wechat', 'menu_tips', array('url' => $url)));
  27. showformheader('plugins&operation=config&do='.$pluginid.'&identifier=wechat&pmod=menu_setting');
  28. showtableheader();
  29. echo '<tr class="header"><th class="td25"></th><th>'.$lang['display_order'].'</th><th style="width:350px">'.lang('plugin/wechat', 'wsq_menu_name').'</th><th>'.lang('plugin/wechat', 'wsq_menu_keyurl').'</th></tr>';
  30. foreach($setting['button'] as $k => $button) {
  31. $disabled = !empty($button['sub_button']) ? 'disabled' : '';
  32. showtablerow('', array('', 'class="td23 td28"', '', 'class="td29"'), array(
  33. "<input class=\"checkbox\" type=\"checkbox\" name=\"button[$k][delete]\" value=\"yes\" $disabled>",
  34. "<input type=\"text\" class=\"txt\" size=\"3\" name=\"button[$k][displayorder]\" value=\"$button[displayorder]\">",
  35. "<div class=\"parentnode\"><input type=\"text\" class=\"txt\" size=\"30\" name=\"button[$k][name]\" value=\"".dhtmlspecialchars($button['name'])."\"></div>",
  36. "<input type=\"text\" class=\"txt\" size=\"30\" name=\"button[$k][keyurl]\" value=\"".dhtmlspecialchars($button['keyurl'])."\">",
  37. ));
  38. if(!empty($button['sub_button'])) {
  39. foreach($button['sub_button'] as $sk => $sub_button) {
  40. showtablerow('', array('', 'class="td23 td28"', '', 'class="td29"'), array(
  41. "<input class=\"checkbox\" type=\"checkbox\" name=\"button[$k][sub_button][$sk][delete]\" value=\"yes\">",
  42. "<input type=\"text\" class=\"txt\" size=\"3\" name=\"button[$k][sub_button][$sk][displayorder]\" value=\"$sub_button[displayorder]\">",
  43. "<div class=\"node\"><input type=\"text\" class=\"txt\" size=\"30\" name=\"button[$k][sub_button][$sk][name]\" value=\"".dhtmlspecialchars($sub_button['name'])."\"></div>",
  44. "<input type=\"text\" class=\"txt\" size=\"30\" name=\"button[$k][sub_button][$sk][keyurl]\" value=\"".dhtmlspecialchars($sub_button['keyurl'])."\">",
  45. ));
  46. }
  47. }
  48. echo '<tr><td></td><td></td><td colspan="2"><div class="lastnode"><a href="###" onclick="addrow(this, 1, '.$k.')" class="addtr">'.lang('plugin/wechat', 'wsq_menu_sub_button').'</a></div></td></tr>';
  49. }
  50. echo '<tr><td></td><td class="td23 td28"></td><td colspan="2"><div><a href="###" onclick="addrow(this, 0, 0)" class="addtr">'.lang('plugin/wechat', 'wsq_menu_button').'</a></div></td></tr>';
  51. echo <<<EOT
  52. <script type="text/JavaScript">
  53. var rowtypedata = [
  54. [[1,''], [1,'<input name="newbutton[displayorder][]" value="" size="3" type="text" class="txt">', 'td23 td28'], [1, '<input name="newbutton[name][]" value="" size="30" type="text" class="txt">'], [1, '<input name="newbutton[keyurl][]" value="" size="30" type="text" class="txt">', 'td29']],
  55. [[1,''], [1,'<input name="newsub_button[{1}][displayorder][]" value="" size="3" type="text" class="txt">', 'td23 td28'], [1, '<div class=\"node\"><input name="newsub_button[{1}][name][]" value="" size="30" type="text" class="txt"></div>'], [1, '<input name="newsub_button[{1}][keyurl][]" value="" size="30" type="text" class="txt">', 'td29']],
  56. ];
  57. </script>
  58. EOT;
  59. showsubmit('menusubmit', lang('plugin/wechat', 'wsq_menu_save'), 'del', '<input type="submit" class="btn" name="pubsubmit" value="'.lang('plugin/wechat', 'wsq_menu_pub').'" />');
  60. showtablefooter();
  61. showformfooter();
  62. } else {
  63. if(!empty($_GET['newbutton'])) {
  64. foreach($_GET['newbutton']['name'] as $k => $name) {
  65. $button = array(
  66. 'displayorder' => $_GET['newbutton']['displayorder'][$k],
  67. 'name' => $name,
  68. 'keyurl' => $_GET['newbutton']['keyurl'][$k],
  69. );
  70. $setting['button'][] = $button;
  71. }
  72. }
  73. foreach($_GET['button'] as $k => $value) {
  74. if($value['sub_button']) {
  75. foreach($value['sub_button'] as $sk => $v) {
  76. if($v['delete']) {
  77. unset($value['sub_button'][$sk]);
  78. }
  79. }
  80. }
  81. if($value['delete']) {
  82. unset($setting['button'][$k]);
  83. continue;
  84. }
  85. $setting['button'][$k] = $value;
  86. if(!empty($_GET['newsub_button'][$k])) {
  87. foreach($_GET['newsub_button'][$k]['name'] as $sk => $name) {
  88. $sub_button = array(
  89. 'displayorder' => $_GET['newsub_button'][$k]['displayorder'][$sk],
  90. 'name' => $name,
  91. 'keyurl' => $_GET['newsub_button'][$k]['keyurl'][$sk],
  92. );
  93. $setting['button'][$k]['sub_button'][] = $sub_button;
  94. }
  95. }
  96. if(count($setting['button'][$k]['sub_button']) > 7) {
  97. cpmsg(lang('plugin/wechat', 'wsq_menu_sub_button_max'), '', 'error');
  98. }
  99. usort($setting['button'][$k]['sub_button'], 'buttoncmp');
  100. }
  101. if(count($setting['button']) > 3) {
  102. cpmsg(lang('plugin/wechat', 'wsq_menu_button_max'), '', 'error');
  103. }
  104. usort($setting['button'], 'buttoncmp');
  105. $settings = array('wechatmenu' => serialize($setting));
  106. C::t('common_setting')->update_batch($settings);
  107. updatecache('setting');
  108. if(submitcheck('pubsubmit')) {
  109. if(!$setting['button']) {
  110. cpmsg(lang('plugin/wechat', 'wsq_menu_button_pub_error'), '', 'error');
  111. }
  112. $pubmenu = array('button' => array());
  113. foreach($setting['button'] as $button) {
  114. if(!$button['sub_button']) {
  115. if(!$button['name']) {
  116. cpmsg(lang('plugin/wechat', 'wsq_menu_name_empty'), '', 'error');
  117. }
  118. if(!$button['keyurl']) {
  119. cpmsg(lang('plugin/wechat', 'wsq_menu_keyurl_empty'), '', 'error');
  120. }
  121. $parse = parse_url($button['keyurl']);
  122. $item = array(
  123. 'type' => $parse['host'] ? 'view' : 'click',
  124. 'name' => convertname($button['name']),
  125. $parse['host'] ? 'url' : 'key' => $button['keyurl']
  126. );
  127. $pubmenu['button'][] = $item;
  128. } else {
  129. if(!$button['name']) {
  130. cpmsg(lang('plugin/wechat', 'wsq_menu_name_empty'), '', 'error');
  131. }
  132. $sub_buttons = array();
  133. foreach($button['sub_button'] as $sub_button) {
  134. if(!$sub_button['name']) {
  135. cpmsg(lang('plugin/wechat', 'wsq_menu_name_empty'), '', 'error');
  136. }
  137. if(!$sub_button['keyurl']) {
  138. cpmsg(lang('plugin/wechat', 'wsq_menu_keyurl_empty'), '', 'error');
  139. }
  140. $parse = parse_url($sub_button['keyurl']);
  141. $item = array(
  142. 'type' => $parse['host'] ? 'view' : 'click',
  143. 'name' => convertname($sub_button['name']),
  144. $parse['host'] ? 'url' : 'key' => $sub_button['keyurl']
  145. );
  146. $sub_buttons[] = $item;
  147. }
  148. $item = array(
  149. 'name' => convertname($button['name']),
  150. 'sub_button' => $sub_buttons
  151. );
  152. $pubmenu['button'][] = $item;
  153. }
  154. }
  155. require_once DISCUZ_ROOT . './source/plugin/wechat/wechat.lib.class.php';
  156. $_G['wechat']['setting'] = unserialize($_G['setting']['mobilewechat']);
  157. $wechat_client = new WeChatClient($_G['wechat']['setting']['wechat_appId'], $_G['wechat']['setting']['wechat_appsecret']);
  158. if($wechat_client->setMenu($pubmenu)) {
  159. cpmsg(lang('plugin/wechat', 'wsq_menu_pub_succeed'), 'action=plugins&operation=config&do='.$pluginid.'&identifier=wechat&pmod=menu_setting', 'succeed');
  160. } else {
  161. cpmsg(lang('plugin/wechat', 'wsq_menu_pub_error', array('errno' => $wechat_client->error())), '', 'error');
  162. }
  163. } else {
  164. cpmsg('setting_update_succeed', 'action=plugins&operation=config&do='.$pluginid.'&identifier=wechat&pmod=menu_setting', 'succeed');
  165. }
  166. }
  167. function convertname($str) {
  168. return urlencode(diconv($str, CHARSET, 'UTF-8'));
  169. }
  170. function buttoncmp($a, $b) {
  171. return $a['displayorder'] > $b['displayorder'] ? 1 : -1;
  172. }
  173. ?>