menu.ctrl.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  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. $dos = array('display', 'post', 'display_status', 'delete', 'change_displayorder');
  8. $do = in_array($do, $dos) ? $do : 'display';
  9. $_W['page']['title'] = '系统管理 - 菜单设置';
  10. $system_top_menu = array('account', 'wxapp', 'module', 'help', 'advertisement', 'site', 'system', 'webapp', 'appmarket', 'custom_help', 'phoneapp');
  11. array_push($system_top_menu, 'store');
  12. $system_menu = cache_load('system_frame');
  13. if(empty($system_menu)) {
  14. cache_build_frame_menu();
  15. $system_menu = cache_load('system_frame');
  16. }
  17. $system_menu_permission = array();
  18. if (!empty($system_menu)) {
  19. foreach ($system_menu as $menu_name => $menu) {
  20. if (in_array($menu_name, $system_top_menu)) {
  21. $system_menu_permission[] = $menu_name;
  22. }
  23. if (!empty($menu['section'])) {
  24. foreach ($menu['section'] as $section_name => $section) {
  25. if (!empty($section['menu'])) {
  26. foreach ($section['menu'] as $permission_name => $sub_menu) {
  27. if ($sub_menu['is_system']) {
  28. $system_menu_permission[] = $sub_menu['permission_name'];
  29. }
  30. }
  31. }
  32. }
  33. }
  34. }
  35. }
  36. if ($do == 'display') {
  37. $add_top_nav = pdo_getall('core_menu', array('group_name' => 'frame', 'is_system <>' => 1), array('title', 'url', 'permission_name', 'displayorder'));
  38. if (!empty($add_top_nav)) {
  39. foreach ($add_top_nav as $menu) {
  40. $system_menu[$menu['permission_name']] = array(
  41. 'title' => $menu['title'],
  42. 'is_system' => 0,
  43. 'displayorder' => $menu['displayorder'],
  44. 'permission_name' => $menu['permission_name'],
  45. 'url' => $menu['url'],
  46. );
  47. }
  48. }
  49. template('system/menu');
  50. } elseif ($do == 'post') {
  51. $id = intval($_GPC['id']);
  52. if ($_GPC['group'] == 'platform_module') {
  53. iajax(-1, '应用模块下不可添加下级分类!', referer());
  54. }
  55. $menu = array(
  56. 'title' => $_GPC['title'],
  57. 'url' => $_GPC['url'],
  58. 'permission_name' => $_GPC['permissionName'],
  59. 'is_system' => $_GPC['isSystem'],
  60. 'displayorder' => $_GPC['displayorder'],
  61. 'type' => 'url',
  62. 'icon' => $_GPC['icon'],
  63. );
  64. if (empty($menu['title']) || empty($menu['url']) || empty($menu['permission_name'])) {
  65. iajax(-1, '请完善菜单信息', referer());
  66. }
  67. if (!preg_match('/^[a-zA-Z0-9_]+$/', $menu['permission_name'], $match)) {
  68. iajax(-1, '菜单标识只能是数字、字母、下划线', referer());
  69. }
  70. if (in_array($menu['permission_name'], $system_menu_permission)) {
  71. $menu['is_system'] = 1;
  72. unset($menu['url']);
  73. } else {
  74. $menu['group_name'] = $_GPC['group'];
  75. $menu['is_system'] = 0;
  76. $menu_db = pdo_get('core_menu', array('permission_name' => $menu['permission_name']));
  77. if (!empty($menu_db) && $menu_db['id'] != $id) {
  78. iajax(-1, '菜单标识不得重复请更换', referer());
  79. }
  80. }
  81. $permission_name = $menu['permission_name'];
  82. $menu_db = pdo_get('core_menu', array('permission_name' => $permission_name));
  83. if (!empty($menu_db)) {
  84. unset($menu['permission_name']);
  85. $menu['group_name'] = $menu_db['group_name'];
  86. pdo_update('core_menu', $menu, array('permission_name' => $permission_name));
  87. } else {
  88. $menu['is_display'] = 1;
  89. pdo_insert('core_menu', $menu);
  90. }
  91. cache_build_frame_menu();
  92. iajax(0, '更新成功', referer());
  93. } elseif ($do == 'display_status') {
  94. $permission_name = $_GPC['permission_name'];
  95. $status = intval($_GPC['status']);
  96. $menu_db = pdo_get('core_menu', array('permission_name' => $permission_name));
  97. if (!empty($menu_db)) {
  98. pdo_update('core_menu', array('is_display' => $status), array('permission_name' => $permission_name));
  99. } else {
  100. $menu_data = array('is_display' => $status, 'permission_name' => $permission_name);
  101. if (in_array($permission_name, $system_top_menu)) {
  102. $menu_data['is_system'] = 1;
  103. $menu_data['group_name'] = 'frame';
  104. }
  105. pdo_insert('core_menu', $menu_data);
  106. }
  107. cache_build_frame_menu();
  108. iajax(0, '更新成功', referer());
  109. } elseif ($do == 'delete') {
  110. $permission_name = $_GPC['permission_name'];
  111. $menu_db = pdo_get('core_menu', array('permission_name' => $permission_name));
  112. if (!empty($menu_db['is_system'])) {
  113. iajax(-1, '系统菜单不能删除', referer());
  114. }
  115. if (!empty($menu_db)) {
  116. pdo_delete('core_menu', array('id' => $menu_db['id']));
  117. cache_build_frame_menu();
  118. }
  119. iajax(0, '更新成功', referer());
  120. } elseif ($do == 'change_displayorder') {
  121. $menu_db = pdo_get('core_menu', array('permission_name' => $_GPC['permission'], 'group_name' => 'frame'));
  122. if (empty($menu_db)) {
  123. $menu = array(
  124. 'group_name' => 'frame',
  125. 'displayorder' => intval($_GPC['displayorder']),
  126. 'permission_name' => $_GPC['permission'],
  127. 'is_display' => 1,
  128. );
  129. if (in_array($_GPC['permission'], $system_top_menu)) {
  130. $menu['is_system'] = 1;
  131. }
  132. pdo_insert('core_menu', $menu);
  133. } else {
  134. pdo_update('core_menu', array('displayorder' => intval($_GPC['displayorder'])), array('id' => $menu_db['id']));
  135. }
  136. cache_build_frame_menu();
  137. iajax(0, '更新成功', referer());
  138. }