display.ctrl.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <?php
  2. /**
  3. * [WeEngine System] Copyright (c) 2014 WE7.CC
  4. * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
  5. */
  6. defined('IN_IA') or exit('Access Denied');
  7. load()->model('module');
  8. load()->model('wxapp');
  9. $dos = array('display', 'switch', 'getall_last_switch', 'have_permission_uniacids', 'accounts_dropdown_menu', 'rank');
  10. $do = in_array($do, $dos) ? $do : 'display';
  11. if ($do == 'display') {
  12. $user_module = array();
  13. if (!$_W['isfounder']) {
  14. $account_table = table('account');
  15. $user_table = table('users');
  16. $user_owned_account = $account_table->userOwnedAccount($_W['uid']);
  17. if (!empty($user_owned_account) && is_array($user_owned_account)) {
  18. foreach ($user_owned_account as $uniacid => $account) {
  19. $account_module = uni_modules_by_uniacid($uniacid);
  20. $account_user_module = $user_table->userPermission($_W['uid'], $uniacid);
  21. if (!empty($account_user_module) && is_array($account_user_module)) {
  22. $account_module = array_intersect_key($account_module, $account_user_module);
  23. }
  24. $user_module = array_merge($user_module, $account_module);
  25. }
  26. }
  27. } else {
  28. $user_module = user_modules($_W['uid']);
  29. }
  30. $module_table = table('module');
  31. $module_rank = $module_table->moduleRank();
  32. $rank = array();
  33. foreach ($user_module as $key => $module_value) {
  34. if (!empty($module_value['issystem'])) {
  35. unset($user_module[$key]);
  36. } else {
  37. $rank[] = !empty($module_rank[$key]['rank']) ? $module_rank[$key]['rank'] : 0;
  38. }
  39. }
  40. array_multisort($rank, SORT_DESC, $user_module);
  41. template('module/display');
  42. }
  43. if ($do == 'rank') {
  44. $module_name = trim($_GPC['module_name']);
  45. $exist = module_fetch($module_name);
  46. if (empty($exist)) {
  47. iajax(1, '模块不存在', '');
  48. }
  49. module_rank_top($module_name);
  50. itoast('更新成功!', referer(), 'success');
  51. }
  52. if ($do == 'switch') {
  53. $module_name = trim($_GPC['module_name']);
  54. $module_info = module_fetch($module_name);
  55. $uniacid = intval($_GPC['uniacid']);
  56. $version_id = intval($_GPC['version_id']);
  57. if (empty($module_name) || empty($module_info)) {
  58. itoast('模块不存在或已经删除!', referer(), 'error');
  59. }
  60. if (empty($uniacid) && empty($version_id)) {
  61. $last_module_info = module_last_switch($module_name);
  62. if (empty($last_module_info)) {
  63. $accounts_list = module_link_uniacid_fetch($_W['uid'], $module_name);
  64. $current_account = current($accounts_list);
  65. $uniacid = $current_account['uniacid'];
  66. $version_id = $current_account['version_id'];
  67. } else {
  68. $uniacid = $last_module_info['uniacid'];
  69. $version_id = $last_module_info['version_id'];
  70. }
  71. }
  72. if (empty($uniacid) && empty($version_id)) {
  73. itoast('该模块暂无可用的公众号或小程序,请先分配权限', url('module/display'), 'info');
  74. }
  75. module_save_switch($module_name, $uniacid, $version_id);
  76. if (!empty($version_id)) {
  77. $version_info = wxapp_version($version_id);
  78. }
  79. if (empty($uniacid) && !empty($version_id)) {
  80. wxapp_save_switch($version_info['uniacid']);
  81. wxapp_update_last_use_version($version_info['uniacid'], $version_id);
  82. itoast('', url('wxapp/display/switch', array('module' => $module_name, 'version_id' => $version_id)), 'success');
  83. }
  84. if (!empty($uniacid)) {
  85. if (empty($version_id)) {
  86. itoast('', url('account/display/switch', array('uniacid' => $uniacid, 'module_name' => $module_name)), 'success');
  87. }
  88. if ($version_info['uniacid'] != $uniacid) {
  89. itoast('', url('account/display/switch', array('uniacid' => $uniacid, 'module_name' => $module_name, 'version_id' => $version_id)), 'success');
  90. } else {
  91. wxapp_save_switch($version_info['uniacid']);
  92. wxapp_update_last_use_version($version_info['uniacid'], $version_id);
  93. itoast('', url('wxapp/display/switch', array('module' => $module_name, 'version_id' => $version_id)), 'success');
  94. }
  95. }
  96. }
  97. if ($do == 'getall_last_switch') {
  98. set_time_limit(0);
  99. $user_module = user_modules($_W['uid']);
  100. $result = array();
  101. foreach ($user_module as $module_value) {
  102. $last_module_info = module_last_switch($module_value['name']);
  103. if (empty($last_module_info)) {
  104. $accounts_list = module_link_uniacid_fetch($_W['uid'], $module_value['name']);
  105. $current_account = current($accounts_list);
  106. $result[$module_value['name']] = array(
  107. 'app_name' => $current_account['app_name'],
  108. 'wxapp_name' => $current_account['wxapp_name'],
  109. );
  110. continue;
  111. }
  112. $account_info = uni_fetch($last_module_info['uniacid']);
  113. if ($account_info['type'] == ACCOUNT_TYPE_APP_NORMAL) {
  114. $result[$module_value['name']] = array(
  115. 'app_name' => '',
  116. 'wxapp_name' => $account_info['name']
  117. );
  118. continue;
  119. }
  120. if (!empty($last_module_info['version_id'])) {
  121. $version_info = wxapp_version($last_module_info['version_id']);
  122. $account_wxapp_info = wxapp_fetch($version_info['uniacid']);
  123. $result[$module_value['name']] = array(
  124. 'app_name' => $account_info['name'],
  125. 'wxapp_name' => $account_wxapp_info['name']
  126. );
  127. } else {
  128. $result[$module_value['name']] = array(
  129. 'app_name' => $account_info['name'],
  130. 'wxapp_name' => ''
  131. );
  132. }
  133. }
  134. iajax(0, $result);
  135. }
  136. if ($do == 'have_permission_uniacids') {
  137. $module_name = trim($_GPC['module_name']);
  138. $accounts_list = module_link_uniacid_fetch($_W['uid'], $module_name);
  139. iajax(0, $accounts_list);
  140. }
  141. if ($do == 'accounts_dropdown_menu') {
  142. $module_name = trim($_GPC['module_name']);
  143. if (empty($module_name)) {
  144. exit();
  145. }
  146. $last_module_info = module_last_switch($module_name);
  147. $accounts_list = module_link_uniacid_fetch($_W['uid'], $module_name);
  148. if (empty($accounts_list)) {
  149. exit();
  150. }
  151. $selected_account = array();
  152. foreach ($accounts_list as $account) {
  153. if (empty($account['uniacid']) || $account['uniacid'] != $_W['uniacid']) {
  154. continue;
  155. }
  156. if (in_array($_W['account']['type'], array(ACCOUNT_TYPE_OFFCIAL_NORMAL, ACCOUNT_TYPE_OFFCIAL_AUTH))) {
  157. if (!empty($account['version_id'])) {
  158. $version_info = wxapp_version($account['version_id']);
  159. $account['version_info'] = $version_info;
  160. }
  161. $selected_account = $account;
  162. break;
  163. } elseif ($_W['account']['type'] == ACCOUNT_TYPE_APP_NORMAL) {
  164. $version_info = wxapp_version($account['version_id']);
  165. $account['version_info'] = $version_info;
  166. $selected_account = $account;
  167. break;
  168. }
  169. }
  170. foreach ($accounts_list as $key => $account) {
  171. $url = url('module/display/switch', array('uniacid' => $account['uniacid'], 'module_name' => $module_name));
  172. if (!empty($account['version_id'])) {
  173. $url .= '&version_id=' . $account['version_id'];
  174. }
  175. $accounts_list[$key]['url'] = $url;
  176. }
  177. echo template('module/dropdown-menu');
  178. exit;
  179. }