admincp_menu.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  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: admincp_menu.php 36284 2016-12-12 00:47:50Z nemohou $
  7. */
  8. global $_G;
  9. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  10. exit('Access Denied');
  11. }
  12. $isfounder = isset($isfounder) ? $isfounder : isfounder();
  13. $topmenu = $menu = array();
  14. $topmenu = array (
  15. 'index' => '',
  16. 'global' => '',
  17. 'style' => '',
  18. 'topic' => '',
  19. 'user' => '',
  20. 'portal' => '',
  21. 'forum' => '',
  22. 'group' => '',
  23. 'safe' => '',
  24. 'extended' => '',
  25. 'plugin' => $isfounder ? 'plugins' : '',
  26. 'tools' => '',
  27. );
  28. $menu['index'] = array(
  29. array('menu_home', 'index'),
  30. array('menu_custommenu_manage', 'misc_custommenu'),
  31. );
  32. $custommenu = get_custommenu();
  33. $menu['index'] = array_merge($menu['index'], $custommenu);
  34. $menu['global'] = array(
  35. array('menu_setting_basic', 'setting_basic'),
  36. array('menu_setting_access', 'setting_access'),
  37. array('menu_setting_functions', 'setting_functions'),
  38. array('menu_setting_optimize', 'setting_cachethread'),
  39. array('menu_setting_seo', 'setting_seo'),
  40. array('menu_setting_domain', 'domain'),
  41. array('menu_setting_follow', 'setting_follow'),
  42. array('menu_setting_home', 'setting_home'),
  43. array('menu_setting_user', 'setting_permissions'),
  44. array('menu_setting_credits', 'setting_credits'),
  45. array('menu_setting_datetime', 'setting_datetime'),
  46. array('menu_setting_attachments', 'setting_attach'),
  47. array('menu_setting_imgwater', 'setting_imgwater'),
  48. array('menu_posting_attachtypes', 'misc_attachtype'),
  49. array('menu_setting_search', 'setting_search'),
  50. array('menu_setting_district', 'district'),
  51. array('menu_setting_ranklist', 'setting_ranklist'),
  52. array('menu_setting_mobile', 'setting_mobile'),
  53. array('menu_setting_antitheft', 'setting_antitheft'),
  54. );
  55. $menu['style'] = array(
  56. array('menu_setting_customnav', 'nav'),
  57. array('menu_setting_styles', 'setting_styles'),
  58. array('menu_styles', 'styles'),
  59. $isfounder ? array('menu_styles_templates', 'templates') : null,
  60. array('menu_posting_smilies', 'smilies'),
  61. array('menu_click', 'click'),
  62. array('menu_thread_stamp', 'misc_stamp'),
  63. array('menu_posting_editor', 'setting_editor'),
  64. array('menu_misc_onlinelist', 'misc_onlinelist'),
  65. );
  66. $menu['topic'] = array(
  67. array('menu_moderate_posts', 'moderate'),
  68. array('menu_posting_censors', 'misc_censor'),
  69. array('menu_maint_report', 'report'),
  70. array('menu_setting_tag', 'tag'),
  71. array('menu_setting_collection', 'collection'),
  72. array(cplang('nav_forum'), '', 1),
  73. array('menu_maint_threads', 'threads'),
  74. array('menu_maint_prune', 'prune'),
  75. array('menu_maint_attaches', 'attach'),
  76. array(cplang('nav_forum'), '', 2),
  77. array(cplang('nav_group'), '', 1),
  78. array('menu_maint_threads_group', 'threads_group'),
  79. array('menu_maint_prune_group', 'prune_group'),
  80. array('menu_maint_attaches_group', 'attach_group'),
  81. array(cplang('nav_group'), '', 2),
  82. array(cplang('thread'), '', 1),
  83. array('menu_moderate_recyclebin', 'recyclebin'),
  84. array('menu_moderate_recyclebinpost', 'recyclebinpost'),
  85. array('menu_threads_forumstick', 'threads_forumstick'),
  86. array('menu_postcomment', 'postcomment'),
  87. array(cplang('thread'), '', 2),
  88. array(cplang('nav_home'), '', 1),
  89. array('menu_maint_doing', 'doing'),
  90. array('menu_maint_blog', 'blog'),
  91. array('menu_maint_blog_recycle_bin', 'blogrecyclebin'),
  92. array('menu_maint_feed', 'feed'),
  93. array('menu_maint_album', 'album'),
  94. array('menu_maint_pic', 'pic'),
  95. array('menu_maint_comment', 'comment'),
  96. array('menu_maint_share', 'share'),
  97. array(cplang('nav_home'), '', 2),
  98. );
  99. $menu['user'] = array(
  100. array('menu_members_edit', 'members_search'),
  101. array('menu_members_add', 'members_add'),
  102. array('menu_members_profile', 'members_profile'),
  103. array('menu_members_stat', 'members_stat'),
  104. array('menu_members_newsletter', 'members_newsletter'),
  105. array('menu_members_mobile', 'members_newsletter_mobile'),
  106. array('menu_usertag', 'usertag'),
  107. array('menu_members_edit_ban_user', 'members_ban'),
  108. array('menu_members_ipban', 'members_ipban'),
  109. array('menu_members_credits', 'members_reward'),
  110. array('menu_moderate_modmembers', 'moderate_members'),
  111. array('menu_admingroups', 'admingroup'),
  112. array('menu_usergroups', 'usergroups'),
  113. array('menu_follow', 'specialuser_follow'),
  114. array('menu_defaultuser', 'specialuser_defaultuser'),
  115. array('members_verify_profile', 'verify_verify'),
  116. array('menu_members_verify_setting', 'verify'),
  117. );
  118. if(is_array($_G['setting']['verify'])) {
  119. foreach($_G['setting']['verify'] as $vid => $verify) {
  120. if($vid != 7 && $verify['available']) {
  121. $menu['user'][] = array($verify['title'], "verify_verify_$vid");
  122. }
  123. }
  124. }
  125. $menu['portal'] = array(
  126. array('menu_portalcategory', 'portalcategory'),
  127. array('menu_article', 'article'),
  128. array('menu_topic', 'topic'),
  129. array('menu_html', 'makehtml'),
  130. array('menu_diytemplate', 'diytemplate'),
  131. array('menu_block', 'block'),
  132. array('menu_blockstyle', 'blockstyle'),
  133. array('menu_blockxml', 'blockxml'),
  134. array('menu_portalpermission', 'portalpermission'),
  135. array('menu_blogcategory', 'blogcategory'),
  136. array('menu_albumcategory', 'albumcategory'),
  137. );
  138. $menu['forum'] = array(
  139. array('menu_forums', 'forums'),
  140. array('menu_forums_merge', 'forums_merge'),
  141. array('menu_forums_infotypes', 'threadtypes'),
  142. array('menu_grid', 'grid'),
  143. );
  144. $menu['group'] = array(
  145. array('menu_group_setting', 'group_setting'),
  146. array('menu_group_type', 'group_type'),
  147. array('menu_group_manage', 'group_manage'),
  148. array('menu_group_userperm', 'group_userperm'),
  149. array('menu_group_level', 'group_level'),
  150. array('menu_group_mod', 'group_mod'),
  151. );
  152. $menu['safe'] = array(
  153. array('menu_safe_setting', 'setting_sec'),
  154. array('menu_safe_security', 'cloud_security'),
  155. array('menu_safe_seccheck', 'setting_seccheck'),
  156. array('menu_security', 'optimizer_security'),
  157. array('menu_safe_accountguard', 'setting_accountguard'),
  158. );
  159. $menu['extended'] = array(
  160. array('menu_misc_announce', 'announce'),
  161. array('menu_adv_custom', 'adv'),
  162. array('menu_tasks', 'tasks'),
  163. array('menu_magics', 'magics'),
  164. array('menu_medals', 'medals'),
  165. array('menu_misc_help', 'faq'),
  166. array('menu_ec', 'setting_ec'),
  167. array('menu_misc_link', 'misc_link'),
  168. array('memu_focus_topic', 'misc_focus'),
  169. array('menu_misc_relatedlink', 'misc_relatedlink'),
  170. array('menu_card', 'card')
  171. );
  172. if(file_exists($menudir = DISCUZ_ROOT.'./source/admincp/menu')) {
  173. $adminextend = $adminextendnew = array();
  174. if(file_exists($adminextendfile = DISCUZ_ROOT.'./data/sysdata/cache_adminextend.php')) {
  175. @include $adminextendfile;
  176. }
  177. $menudirhandle = dir($menudir);
  178. while($entry = $menudirhandle->read()) {
  179. if(!in_array($entry, array('.', '..')) && preg_match("/^menu\_([\w\.]+)$/", $entry, $entryr) && substr($entry, -4) == '.php' && strlen($entry) < 30 && is_file($menudir.'/'.$entry)) {
  180. @include_once $menudir.'/'.$entry;
  181. $adminextendnew[] = $entryr[1];
  182. }
  183. }
  184. if($adminextend != $adminextendnew) {
  185. @unlink($adminextendfile);
  186. if($adminextendnew) {
  187. require_once libfile('function/cache');
  188. writetocache('adminextend', getcachevars(array('adminextend' => $adminextendnew)));
  189. }
  190. unset($_G['lang']['admincp']);
  191. }
  192. }
  193. if($isfounder) {
  194. $menu['plugin'] = array(
  195. array('menu_addons', 'cloudaddons'),
  196. array('menu_plugins', 'plugins'),
  197. );
  198. }
  199. loadcache('adminmenu');
  200. if(is_array($_G['cache']['adminmenu'])) {
  201. foreach($_G['cache']['adminmenu'] as $row) {
  202. if($row['name'] == 'plugins_system') {
  203. $row['name'] = cplang('plugins_system');
  204. }
  205. $menu['plugin'][] = array($row['name'], $row['action'], $row['sub']);
  206. }
  207. }
  208. if(!$menu['plugin']) {
  209. unset($topmenu['plugin']);
  210. }
  211. $menu['tools'] = array(
  212. array('menu_tools_updatecaches', 'tools_updatecache'),
  213. array('menu_tools_updatecounters', 'counter'),
  214. array('menu_logs', 'logs'),
  215. array('menu_misc_cron', 'misc_cron'),
  216. $isfounder ? array('menu_tools_fileperms', 'tools_fileperms') : null,
  217. $isfounder ? array('menu_tools_filecheck', 'checktools_filecheck') : null,
  218. $isfounder ? array('menu_tools_hookcheck', 'checktools_hookcheck') : null,
  219. $isfounder ? array('menu_cloud_doctor', 'cloud_doctor') : null,
  220. );
  221. if($isfounder) {
  222. $topmenu['founder'] = '';
  223. $menu['founder'] = array(
  224. array('menu_founder_perm', 'founder_perm'),
  225. array('menu_setting_mail', 'setting_mail'),
  226. array('menu_patch', 'patch'),
  227. array('menu_setting_uc', 'setting_uc'),
  228. array('menu_db', 'db_export'),
  229. array('menu_membersplit', 'membersplit_check'),
  230. array('menu_postsplit', 'postsplit_manage'),
  231. array('menu_threadsplit', 'threadsplit_manage'),
  232. array('menu_optimizer', 'optimizer_performance'),
  233. );
  234. $menu['uc'] = array();
  235. }
  236. if(!isfounder() && !isset($GLOBALS['admincp']->perms['all'])) {
  237. $menunew = $menu;
  238. foreach($menu as $topkey => $datas) {
  239. if($topkey == 'index') {
  240. continue;
  241. }
  242. $itemexists = 0;
  243. foreach($datas as $key => $data) {
  244. if(array_key_exists($data[1], $GLOBALS['admincp']->perms)) {
  245. $itemexists = 1;
  246. } else {
  247. unset($menunew[$topkey][$key]);
  248. }
  249. }
  250. if(!$itemexists) {
  251. unset($topmenu[$topkey]);
  252. unset($menunew[$topkey]);
  253. }
  254. }
  255. $menu = $menunew;
  256. }
  257. ?>