group_index.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  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: group_index.php 36284 2016-12-12 00:47:50Z nemohou $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. $navtitle = '';
  12. $gid = intval(getgpc('gid'));
  13. $sgid = intval(getgpc('sgid'));
  14. $groupids = $typelist = array();
  15. $groupnav = '';
  16. $selectorder = array('default' => '', 'thread' => '', 'membernum' => '', 'dateline' => '', 'activity' => '');
  17. if(!empty($_GET['orderby'])) {
  18. $selectorder[$_GET['orderby']] = 'selected';
  19. } else {
  20. $selectorder['default'] = 'selected';
  21. }
  22. $first = &$_G['cache']['grouptype']['first'];
  23. $second = &$_G['cache']['grouptype']['second'];
  24. require_once libfile('function/group');
  25. $url = $_G['basescript'].'.php';
  26. if($gid) {
  27. if(!empty($first[$gid])) {
  28. $curtype = $first[$gid];
  29. if($curtype['secondlist']) {
  30. foreach($curtype['secondlist'] as $fid) {
  31. $typelist[$fid] = $second[$fid];
  32. }
  33. $groupids = $first[$gid]['secondlist'];
  34. }
  35. $groupids[] = $gid;
  36. $url .= '?gid='.$gid;
  37. $fup = $gid;
  38. } else {
  39. $gid = 0;
  40. }
  41. } elseif($sgid) {
  42. if(!empty($second[$sgid])) {
  43. $curtype = $second[$sgid];
  44. $fup = $curtype['fup'];
  45. $groupids = array($sgid);
  46. $url .= '?sgid='.$sgid;
  47. } else {
  48. $sgid = 0;
  49. }
  50. }
  51. if(empty($curtype)) {
  52. if($_G['uid'] && empty($_G['mod'])) {
  53. $usergroups = getuserprofile('groups');
  54. if(!empty($usergroups)) {
  55. dheader('Location:group.php?mod=my');
  56. exit;
  57. }
  58. }
  59. $curtype = array();
  60. } else {
  61. $nav = get_groupnav($curtype);
  62. $groupnav = $nav['nav'];
  63. $_G['grouptypeid'] = $curtype['fid'];
  64. $perpage = 10;
  65. if($curtype['forumcolumns'] > 1) {
  66. $curtype['forumcolwidth'] = (floor(100 / $curtype['forumcolumns']) - 0.1).'%';
  67. $perpage = $curtype['forumcolumns'] * 10;
  68. }
  69. }
  70. $seodata = array('first' => $nav['first']['name'], 'second' => $nav['second']['name']);
  71. list($navtitle, $metadescription, $metakeywords) = get_seosetting('group', $seodata);
  72. $_G['cache']['groupindex'] = '';
  73. $data = $randgrouplist = $randgroupdata = $grouptop = $newgrouplist = array();
  74. $topgrouplist = $_G['cache']['groupindex']['topgrouplist'];
  75. $lastupdategroup = $_G['cache']['groupindex']['lastupdategroup'];
  76. $todayposts = intval($_G['cache']['groupindex']['todayposts']);
  77. $groupnum = intval($_G['cache']['groupindex']['groupnum']);
  78. $cachetimeupdate = TIMESTAMP - intval($_G['cache']['groupindex']['updateline']);
  79. if(empty($_G['cache']['groupindex']) || $cachetimeupdate > 3600 || empty($lastupdategroup)) {
  80. $data['randgroupdata'] = $randgroupdata = grouplist('lastupdate', array('ff.membernum', 'ff.icon'), 80);
  81. $data['topgrouplist'] = $topgrouplist = grouplist('activity', array('f.commoncredits', 'ff.membernum', 'ff.icon'), 10);
  82. $data['updateline'] = TIMESTAMP;
  83. $groupdata = C::t('forum_forum')->fetch_group_counter();
  84. $data['todayposts'] = $todayposts = $groupdata['todayposts'];
  85. $data['groupnum'] = $groupnum = $groupdata['groupnum'];
  86. foreach($first as $id => $toptype) {
  87. if(empty($toptype['secondlist'])) $toptype['secondlist'][] = $id;
  88. $query = C::t('forum_forum')->fetch_all_sub_group_by_fup($toptype['secondlist']);
  89. foreach($query as $row) {
  90. $data['lastupdategroup'][$id][] = $row;
  91. }
  92. if(empty($data['lastupdategroup'][$id])) $data['lastupdategroup'][$id] = array();
  93. }
  94. $lastupdategroup = $data['lastupdategroup'];
  95. savecache('groupindex', $data);
  96. }
  97. $list = array();
  98. if($groupids) {
  99. $orderby = in_array(getgpc('orderby'), array('membernum', 'dateline', 'thread', 'activity')) ? getgpc('orderby') : 'displayorder';
  100. $page = intval(getgpc('page')) ? intval($_GET['page']) : 1;
  101. $page = $page > 65535 ? 1 : $page;
  102. $start = ($page - 1) * $perpage;
  103. $getcount = grouplist('', '', '', $groupids, 1, 1);
  104. if($getcount) {
  105. $list = grouplist($orderby, '', array($start, $perpage), $groupids, 1);
  106. $multipage = multi($getcount, $perpage, $page, $url."&orderby=$orderby");
  107. }
  108. }
  109. $endrows = $curtype['forumcolumns'] > 1 ? str_repeat('<td width="'.$curtype['forumcolwidth'].'"></td>', $curtype['forumcolumns'] - count($list) % $curtype['forumcolumns']) : '';
  110. $groupviewed_list = get_viewedgroup();
  111. if(empty($sgid) && empty($gid)) {
  112. foreach($first as $key => $val) {
  113. if(is_array($val['secondlist']) && !empty($val['secondlist'])) {
  114. $first[$key]['secondlist'] = array_slice($val['secondlist'], 0, 8);
  115. }
  116. }
  117. }
  118. if(!$navtitle || !empty($sgid) || !empty($gid)) {
  119. if(!$navtitle) {
  120. $navtitle = !empty($gid) ? $nav['first']['name'] : (!empty($sgid) ? $nav['second']['name'] : '');
  121. }
  122. $navtitle = (!empty($sgid) || !empty($gid) ? helper_seo::get_title_page($navtitle, $_G['page']).' - ' : '').$_G['setting']['navs'][3]['navname'];
  123. $nobbname = false;
  124. } else {
  125. $nobbname = true;
  126. }
  127. if(!$metakeywords) {
  128. $metakeywords = $_G['setting']['navs'][3]['navname'];
  129. }
  130. if(!$metadescription) {
  131. $metadescription = $_G['setting']['navs'][3]['navname'];
  132. }
  133. if(empty($curtype)) {
  134. if(!empty($_GET['province'])) {
  135. $_G['sg'] = [];
  136. $_G['sg']['group_list'] = C::t('forum_forum')->fetch_all_for_grouplist_by_province($_GET['province'], 'displayorder', '*', 10);
  137. include template('diy:group/area');
  138. } else {
  139. include template('diy:group/index');
  140. }
  141. } else {
  142. if(empty($sgid)) {
  143. include template('diy:group/type:'.$gid);
  144. } else {
  145. include template('diy:group/type:'.$fup);
  146. }
  147. }
  148. ?>