index(); } public function main() { if (is_file(WRITEPATH.'update.txt')) { unlink(WRITEPATH.'update.txt'); dr_redirect(dr_url('cache/index')); } elseif (is_file(WRITEPATH.'check.txt')) { unlink(WRITEPATH.'check.txt'); dr_redirect(dr_url('check/index')); } $local = \Phpcmf\Service::Apps(1); if ($local) { foreach ($local as $dir => $path) { if (is_file(dr_get_app_dir($dir).'Config/Panel.php')) { \Phpcmf\Service::V()->admin(dr_get_app_dir($dir).'Views/'); require dr_get_app_dir($dir).'Config/Panel.php'; exit; } } } $table_data = []; if (is_file(WRITEPATH.'config/main.php')) { $table_data = require WRITEPATH.'config/main.php'; } // 验证权限 if ($table_data && !dr_in_array(1, $this->admin['roleid'])) { // 不是超管用户 $auth = \Phpcmf\Service::M('system')->get_setting('index_main'); if ($auth) { foreach ($table_data as $name => $t) { $key = md5($name); if (isset($auth[$key]) && !dr_array_intersect($this->admin['roleid'], (array)$auth[$key])) { unset($table_data[$name]); // 无权限移除 } } } } $menu = [ '控制台' => ['home/main', 'fa fa-home'], '自定义控制台' => ['home/edit', 'fa fa-edit'], //'后台功能地图' => ['js:dr_sitemap', 'fa fa-sitemap'], '访问项目首页' => ['blank:api/gohome', 'fa fa-send'], ]; if (!dr_in_array(1, $this->admin['roleid'])) { unset($menu['自定义控制台']); } \Phpcmf\Service::V()->assign([ 'menu' => \Phpcmf\Service::M('auth')->_admin_menu($menu), 'admin' => $this->admin, 'domain' => dr_get_domain_name(ROOT_URL), 'license' => $this->cmf_license, 'table_data' => $table_data, 'cmf_update' => $this->cmf_version['updatetime'], 'cmf_version' => $this->cmf_version['version'], ]); \Phpcmf\Service::V()->display($table_data ? 'index_main.html' : 'main.html'); } public function init_edit() { $file = WRITEPATH.'config/main.php'; \Phpcmf\Service::L('Config')->file($file, '后台自定义面板', 32)->to_require([]); $this->_json(1, dr_lang('自定义面板恢复成功')); } //后台自定义面板 public function edit() { if (!dr_in_array(1, $this->admin['roleid'])) { $this->_admin_msg(0, dr_lang('无权限操作')); } $file = WRITEPATH.'config/main.php'; if (IS_POST) { $data = \Phpcmf\Service::L('input')->post('tables'); \Phpcmf\Service::L('Config')->file($file, '后台自定义面板', 32)->to_require($data); $this->_json(1, dr_lang('操作成功')); exit; } if (is_file($file)) { $data = require $file; } else { $data = []; } \Phpcmf\Service::V()->assign([ 'menu' => \Phpcmf\Service::M('auth')->_admin_menu( [ '控制台' => ['home/main', 'fa fa-home'], '自定义控制台' => ['home/edit', 'fa fa-edit'], 'help' => [718], ] ), 'tables' => $this->_main_table(), 'table_data' => $data, ]); \Phpcmf\Service::V()->display('index_edit.html'); } //后台自定义面板 权限划分 public function auth_edit() { $name = \Phpcmf\Service::L('input')->get('name'); $data = \Phpcmf\Service::M('system')->get_setting('index_main'); if (IS_POST) { $post = \Phpcmf\Service::L('input')->post('data'); if (!$post) { $post = []; } $post[] = 1; $data[$name] = array_unique($post); \Phpcmf\Service::M('system')->save_setting('index_main', $data); \Phpcmf\Service::M('system')->cache(); $this->_json(1, dr_lang('操作成功')); } \Phpcmf\Service::V()->assign([ 'data' => $data[$name], 'form' => dr_form_hidden(), 'role' => \Phpcmf\Service::C()->get_cache('auth'), ]); \Phpcmf\Service::V()->display('index_auth_edit.html'); } public function index() { // 账号是否强制了简化模式 if (!IS_API_HTTP) { if (\Phpcmf\Service::M('auth')->is_admin_min_mode()) { $this->min();exit; } elseif ($this->admin['setting']['admin_min']) { // 自己切换的 $this->min();exit; } } $menu = \Phpcmf\Service::L('cache')->get('menu-admin'); if (!$menu) { $m = \Phpcmf\Service::M('menu')->cache(); $menu = $m['admin']; } $first = 0; $mstring = $string = ''; $menu_top = $my_menu = []; if ($this->admin['adminid'] > 1) { foreach ($menu as $t) { dr_in_array($t['mark'], $this->admin['system']['mark']) && $my_menu[$t['id']] = $t; } } else { $my_menu = $menu; } // 挂钩点 $rt = \Phpcmf\Hooks::trigger_callback('admin_menu', $menu, $my_menu); if ($rt && isset($rt['code']) && $rt['code']) { $my_menu = $rt['msg']; } // 默认的首页内容 $main_url = dr_url('home/main'); $main_name = dr_lang('后台首页'); $main_link = ''; $main_menu = []; if (isset($_GET['go']) && $_GET['go']) { $go = urldecode((string)\Phpcmf\Service::L('input')->get('go')); $url = parse_url($go); if (isset($url['query']) && $url['query']) { parse_str($url['query'], $p); $uri = trim($p['s'].'/'.$p['c'].'/'.$p['m'], '/'); $main_menu = \Phpcmf\Service::L('cache')->get('menu-admin-uri', $uri); if ($main_menu) { $first = $main_menu['tid']; $main_url = dr_url($uri); $main_name = dr_lang($main_menu['name'] ? $main_menu['name'] : '默认首页'); $main_link = 'Mlink('.$main_menu['tid'].', '.$main_menu['pid'].', '.$main_menu['id'].', \'\');'; } } } if ($my_menu) { // 加载全部插件的 $local = \Phpcmf\Service::Apps(); foreach ($local as $dir => $path) { // 判断插件目录 if (is_file($path.'install.lock') && is_file($path.'Models/Auth.php') && is_file($path.'Config/App.php')) { $cfg = require $path.'Config/App.php'; if ($cfg['type'] == 'app' && !$cfg['ftype']) { $obj = \Phpcmf\Service::M('auth', $dir); if (method_exists($obj, 'get_admin_menu_data')) { $my_menu = $obj->get_admin_menu_data($my_menu); } } } } // 权限判断并筛选 foreach ($my_menu as $tid => $top) { if (!$top['left']) { unset($my_menu[$tid]); continue; // 没有分组菜单就不要 } elseif (SITE_ID > 1 && !dr_in_array(SITE_ID, $top['site'])) { unset($my_menu[$tid]); continue; // 没有划分本站点就不显示 } elseif ($top['mark'] && strpos($top['mark'], 'app-') === 0) { // 判断应用模块权限 list($a, $mm) = explode('-', $top['mark']); if ($mm) { $mp = dr_get_app_dir($mm); if (is_file($mp.'Config/App.php')) { $config = require $mp.'Config/App.php'; // 如果是内容模块 if ((isset($config['ftype']) && $config['ftype'] == 'module') || $config['type'] == 'module') { if (!$this->get_cache('module-'.SITE_ID.'-content', $mm)) { unset($top[$tid]); unset($my_menu[$tid]); continue; } } } } } $left_string = ''; !$first && $first = $tid; foreach ($top['left'] as $if => $left) { if (!$left['link']) { unset($top['left'][$if]); unset($my_menu[$tid]['left'][$if]); continue; // 没有链接菜单就不要 } elseif (SITE_ID > 1 && !dr_in_array(SITE_ID, $left['site'])) { unset($top['left'][$if]); unset($my_menu[$tid]['left'][$if]); continue; // 没有划分本站点就不显示 } // 链接菜单开始 $link_string = ''; foreach ($left['link'] as $i => $link) { if (SITE_ID > 1 && !dr_in_array(SITE_ID, $link['site'])) { unset($left['link'][$i]); unset($my_menu[$tid]['left'][$if]['link'][$i]); continue; // 没有划分本站点就不显示 } elseif ($link['uri'] && !\Phpcmf\Service::M('auth')->_is_admin_auth($link['uri'], 1)) { // 判断权限 unset($left['link'][$i]); unset($my_menu[$tid]['left'][$if]['link'][$i]); continue; } elseif ($link['mark'] && $left['mark'] == 'content-module') { // 内容模块权限判断 list($ac, $name, $cname) = explode('-', $link['mark']); if ($ac == 'module' && !$this->get_cache('module-'.SITE_ID.'-content', $name)) { unset($left['link'][$i]); unset($my_menu[$tid]['left'][$if]['link'][$i]); continue; } // 网站表单权限判断 if ($ac == 'app' && $name == 'form' && !$this->get_cache('form-'.SITE_ID, $cname)) { unset($left['link'][$i]); unset($my_menu[$tid]['left'][$if]['link'][$i]); continue; } } elseif (SITE_ID > 1 && $link['uri'] && $link['uri'] == 'cloud/local') { // 多站点不显示应用 unset($left['link'][$i]); unset($my_menu[$tid]['left'][$if]['link'][$i]); continue; } elseif ($link['mark'] && $left['mark'] == 'content-verify') { // 内容模块审核部分权限判断 list($ac, $ab, $name, $cc, $dd) = explode('-', $link['mark']); if ($ac.'-'.$ab == 'verify-module' && !$this->get_cache('module-'.SITE_ID.'-content', $name)) { unset($left['link'][$i]); unset($my_menu[$tid]['left'][$if]['link'][$i]); continue; } } elseif (IS_OEM_CMS && $link['uri'] == 'cloud/bf') { // oem版排除对比菜单 unset($left['link'][$i]); unset($my_menu[$tid]['left'][$if]['link'][$i]); continue; } $left['link'][$i]['url'] = $link['url'] ? $link['url'] : \Phpcmf\Service::L('Router')->url($link['uri']); $left['link'][$i]['icon'] = $link['icon'] ? $link['icon'] : 'fa fa-th-large'; if (!$main_menu) { $main_menu = $link; } $link_string = 'true'; } if (!$link_string) { unset($top['left'][$if]); unset($my_menu[$tid]['left'][$if]); continue; // 没有链接菜单就不要 } $left_string = 'true'; $top['left'][$if] = $left; } if (!$left_string) { $first == $tid && $first = 0; unset($my_menu[$tid]); continue; // 没有分组菜单就不要 } $my_menu[$tid] = $top; unset($top['left']); $menu_top[$tid] = $top; } } if (!$menu_top && SITE_ID > 1) { $this->_admin_msg(0, dr_lang('没有给当前站点分配管理菜单权限')); } if (IS_API_HTTP) { $vue_menu = []; foreach ($my_menu as $i => $top) { $vue_menu[$i] = [ 'heading' => $top['name'], 'route' => $top['mark'], 'fontIcon' => $top['icon'], 'pages' => [], ]; foreach ($top['left'] as $f => $left) { $vue_menu[$i]['pages'][$f] = [ 'sectionTitle' => $left['name'], 'route' => $left['mark'], 'fontIcon' => $left['icon'], 'sub' => [], ]; foreach ($left['link'] as $l => $link) { $vue_menu[$i]['pages'][$f]['sub'][] = [ 'heading' => $link['name'], 'route' => '/'.$link['uri'], 'fontIcon' => $link['icon'], ]; } } } $this->_json(1, 'ok', ['menu' => $vue_menu]); } \Phpcmf\Service::V()->assign([ 'top' => $menu_top, 'first' => $first, 'my_menu' => $my_menu, 'is_index' => 1, 'main_url' => $main_url, 'main_link' => $main_link, 'main_menu' => $main_menu, 'main_name' => $main_name, 'is_search_help' => IS_OEM_CMS ? 0 : CI_DEBUG, ]); \Phpcmf\Service::V()->display('index.html');exit; } // 简化模式界面 public function min() { $menu = \Phpcmf\Service::L('cache')->get('menu-admin-min'); if (!$menu) { $m = \Phpcmf\Service::M('menu')->cache(); $menu = $m['admin-min']; } $admin_menu = \Phpcmf\Service::L('cache')->get('menu-admin-uri'); $my_menu = $menu; // 默认的首页内容 $main_url = dr_url('home/main'); $main_link = ''; $main_menu = []; if (isset($_GET['go']) && $_GET['go']) { $go = urldecode((string)\Phpcmf\Service::L('input')->get('go')); $url = parse_url($go); if (isset($url['query']) && $url['query']) { parse_str($url['query'], $p); $uri = trim($p['s'].'/'.$p['c'].'/'.$p['m'], '/'); $main_menu = \Phpcmf\Service::L('cache')->get('menu-admin-uri', $uri); if ($main_menu) { $first = $main_menu['tid']; $main_url = dr_url($uri); $main_link = 'Mlink('.$main_menu['tid'].', '.$main_menu['pid'].', '.$main_menu['id'].', \'\');'; } } } if ($my_menu) { // 加载全部插件的 $local = \Phpcmf\Service::Apps(); foreach ($local as $dir => $path) { // 判断插件目录 if (is_file($path.'install.lock') && is_file($path.'Models/Auth.php') && is_file($path.'Config/App.php')) { $cfg = require $path.'Config/App.php'; if ($cfg['type'] == 'app' && !$cfg['ftype']) { $obj = \Phpcmf\Service::M('auth', $dir); if (method_exists($obj, 'get_admin_menu_data')) { $my_menu = $obj->get_admin_menu_data($my_menu); } } } } // 权限判断并筛选 foreach ($my_menu as $tid => $left) { if (!$left['link']) { continue; // 没有分组菜单就不要 } // 链接菜单开始 $link_string = ''; foreach ($left['link'] as $i => $link) { if ($link['uri'] && !$this->_is_admin_auth($link['uri'])) { // 判断权限 unset($left['link'][$i]); continue; } elseif ($link['mark'] && $left['mark'] == 'content-module') { // 内容模块权限判断 list($ac, $name) = explode('-', $link['mark']); if ($ac == 'module' && !$this->get_cache('module-'.SITE_ID.'-content', $name)) { unset($left['link'][$i]); continue; } // 网站表单权限判断 list($ac, $name, $cname) = explode('-', $link['mark']); if ($ac == 'app' && $name == 'form' && !$this->get_cache('form-'.SITE_ID, $cname)) { unset($left['link'][$i]); continue; } } elseif (SITE_ID > 1 && $link['uri'] && $admin_menu[$link['uri']] && !dr_in_array(SITE_ID, $admin_menu[$link['uri']]['site'])) { // 没有划分本站点就不显示 unset($left['link'][$i]); continue; } elseif (SITE_ID > 1 && $link['uri'] && $link['uri'] == 'cloud/local') { // 多站点不显示应用 unset($left['link'][$i]); continue; } elseif ($link['mark'] && $left['mark'] == 'content-form') { // 网站表单权限判断 } elseif ($link['mark'] && $left['mark'] == 'content-verify') { // 内容模块审核部分权限判断 list($ac, $ab, $name, $cc) = explode('-', $link['mark']); if ($ac.'-'.$ab == 'verify-module' && !$this->get_cache('module-'.SITE_ID.'-content', $name)) { unset($left['link'][$i]); continue; } } $left['link'][$i]['url'] = $link['url'] ? $link['url'] :\Phpcmf\Service::L('Router')->url($link['uri']); $left['link'][$i]['icon'] = $link['icon'] ? $link['icon'] : 'fa fa-th-large'; $link_string.= 'true'; if (!$main_menu) { $first = $tid; $main_menu = $link; } } if (!$link_string) { unset($my_menu[$tid]); continue; // 没有链接菜单就不要 } $my_menu[$tid] = $left; } } \Phpcmf\Service::V()->assign([ 'first' => $first, 'is_min' => 1, 'is_mode' => \Phpcmf\Service::M('auth')->is_admin_min_mode(), 'my_menu' => $my_menu, 'is_index' => 1, 'main_url' => $main_url, 'main_link' => $main_link, 'main_menu' => $main_menu, 'is_search_help' => IS_OEM_CMS ? 0 : CI_DEBUG, ]); \Phpcmf\Service::V()->display('index_min.html');exit; } }