admin_nav.auto_cache.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. //商城的导航dz_chh
  3. class admin_nav_auto_cache extends auto_cache{
  4. public function load($param)
  5. {
  6. $key = $this->build_key(__CLASS__,$param);
  7. $GLOBALS['cache']->set_dir(APP_ROOT_PATH."public/runtime/data/".__CLASS__."/");
  8. $return = $GLOBALS['cache']->get($key);
  9. //$return = false;
  10. if($return === false)
  11. {
  12. //start
  13. $navs = require_once APP_ROOT_PATH."system/admnav_cfg.php";
  14. $navs = deal_admin_nav($navs);
  15. $modules = $GLOBALS['db']->getAll("select * from ".DB_PREFIX."role_module where is_delete=0 and is_effect=1 ");
  16. $module_list = array();
  17. foreach($modules as $k=>$v){
  18. unset($v['name']);
  19. $module_list[$v['id']] = $v;
  20. $module_list[$v['module']] = $v;
  21. }
  22. $role_access_list = $GLOBALS['db']->getAll("select * from ".DB_PREFIX."role_access where role_id=".$param['id']);
  23. $access_list = array();
  24. foreach($role_access_list as $k=>$v){
  25. $v['module']=$module_list[$v['module_id']]['module'];
  26. $access_list[$module_list[$v['module_id']]['module']][]=$v;
  27. }
  28. foreach($navs as $k=> $v) {
  29. foreach ($v['groups'] as $gk => $gv) {
  30. foreach ($gv['nodes'] as $nk => $nv) {
  31. if($gk =='index'){
  32. $navs[$k]['groups'][$gk]['nodes'][$nk]['module_auth'] = 1;
  33. }else{
  34. foreach($access_list[$nv['module']] as $k1=>$v1){
  35. if(($nv['module'] == $v1['module'])&&($v1['node_id']==0)){
  36. $navs[$k]['groups'][$gk]['nodes'][$nk]['module_auth'] = 1;
  37. }else{
  38. if ($v1['module'] == $nv['module']) {
  39. $navs[$k]['groups'][$gk]['nodes'][$nk]['module_auth'] = 1;
  40. }
  41. }
  42. }
  43. }
  44. }
  45. }
  46. }
  47. foreach($navs as $k=> $v){
  48. foreach ($v['groups'] as $gk => $gv) {
  49. foreach ($gv['nodes'] as $nk => $nv) {
  50. if(!isset($nv['module_auth'])){
  51. unset($navs[$k]['groups'][$gk]['nodes'][$nk]);
  52. if(count($navs[$k]['groups'][$gk]['nodes'])==0){
  53. unset($navs[$k]['groups'][$gk]);
  54. if(count($navs[$k]['groups'])==0){
  55. unset($navs[$k]);
  56. }
  57. }
  58. }
  59. }
  60. }
  61. }
  62. //end
  63. $return=array();
  64. $return= $navs;
  65. $GLOBALS['cache']->set_dir(APP_ROOT_PATH."public/runtime/data/".__CLASS__."/");
  66. $GLOBALS['cache']->set($key,$return);
  67. }
  68. return $return;
  69. }
  70. public function rm($param)
  71. {
  72. $key = $this->build_key(__CLASS__,$param);
  73. $GLOBALS['cache']->set_dir(APP_ROOT_PATH."public/runtime/data/".__CLASS__."/");
  74. $GLOBALS['cache']->rm($key);
  75. }
  76. public function clear_all()
  77. {
  78. $GLOBALS['cache']->set_dir(APP_ROOT_PATH."public/runtime/data/".__CLASS__."/");
  79. $GLOBALS['cache']->clear();
  80. }
  81. }
  82. ?>