cache_portalcategory.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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: cache_portalcategory.php 31224 2012-07-27 03:54:18Z zhangguosheng $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. function build_cache_portalcategory() {
  12. global $_G;
  13. $data = C::t('portal_category')->range();
  14. foreach($data as $key => $value) {
  15. $upid = $value['upid'];
  16. $data[$key]['level'] = 0;
  17. if($upid && isset($data[$upid])) {
  18. $data[$upid]['children'][] = $key;
  19. while($upid && isset($data[$upid])) {
  20. $data[$key]['level'] += 1;
  21. $upid = $data[$upid]['upid'];
  22. }
  23. }
  24. }
  25. $domain = $_G['setting']['domain'];
  26. $channelrootdomain = !empty($domain['root']) && !empty($domain['root']['channel']) ? $domain['root']['channel'] : '';
  27. $portaldomain = '';
  28. if(!empty($domain['app']['portal'])) {
  29. $portaldomain = $_G['scheme'].'://'.$domain['app']['portal'].$_G['siteroot'];
  30. } elseif(!empty($domain['app']['default'])) {
  31. $portaldomain = $_G['scheme'].'://'.$domain['app']['default'].$_G['siteroot'];
  32. } else {
  33. $portaldomain = $_G['siteurl'];
  34. }
  35. foreach($data as $key => &$value){
  36. $url = $topid = '';
  37. $foldername = $value['foldername'];
  38. if($value['level']) {
  39. $topid = $key;
  40. $foldername = '';
  41. while($data[$topid]['upid']) {
  42. if($data[$topid]['foldername'] && $data[$key]['foldername']) {
  43. $foldername = $data[$topid]['foldername'].'/'.$foldername;
  44. }
  45. $topid = $data[$topid]['upid'];
  46. }
  47. if($foldername) $foldername = $data[$topid]['foldername'].'/'.$foldername;
  48. } else {
  49. $topid = $key;
  50. }
  51. $value['topid'] = $topid;
  52. if($channelrootdomain && $data[$topid]['domain']){
  53. $url = $_G['scheme'].'://'.$data[$topid]['domain'].'.'.$channelrootdomain.'/';
  54. if($foldername) {
  55. if(!empty($value['upid'])) {
  56. $url .= $foldername;
  57. }
  58. } else {
  59. $url = $portaldomain.'portal.php?mod=list&catid='.$key;
  60. }
  61. } elseif ($foldername) {
  62. $url = $portaldomain.$foldername;
  63. if(substr($url, -1, 1) != '/') $url.= '/';
  64. } else {
  65. $url = $portaldomain.'portal.php?mod=list&catid='.$key;
  66. }
  67. $value['caturl'] = $url;
  68. $value['fullfoldername'] = trim($foldername, '/');
  69. if($value['shownav']) {
  70. $rs = C::t('common_nav')->update_by_type_identifier(4, $key, array('url' => addslashes($url), 'name' =>$value['catname']));
  71. }
  72. }
  73. savecache('portalcategory', $data);
  74. if(!function_exists('get_cachedata_mainnav')) {
  75. include_once libfile('cache/setting','function');
  76. }
  77. $data = $_G['setting'];
  78. list($data['navs'], $data['subnavs'], $data['menunavs'], $data['navmns'], $data['navmn'], $data['navdms']) = get_cachedata_mainnav();
  79. savecache('setting', $data);
  80. }
  81. ?>