index.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <?php
  2. /**
  3. * 圈子首页
  4. *
  5. *
  6. *********************************/
  7. defined('InShopNC') or exit('Access Invalid!');
  8. class indexControl extends BaseCircleControl{
  9. public function __construct(){
  10. Language::read('circle');
  11. parent::__construct();
  12. }
  13. /**
  14. * 首页
  15. */
  16. public function indexOp(){
  17. $model = Model();
  18. // 热门圈子 **显示3个圈子,按推荐随机排列,推荐不够按成员数主题数降序排列**
  19. $circle_list = $model->table('circle')->field('*, is_hot*rand() as rand')->where(array('circle_status'=>1, 'is_hot'=>1))->order('rand desc')->limit(3)->select();
  20. if(!empty($circle_list)){
  21. $circle_list = array_under_reset($circle_list, 'circle_id');$circleid_array = array_keys($circle_list);
  22. // 查询圈子最新主题
  23. foreach($circle_list as $key=>$val){
  24. // 最新的两条数据
  25. $theme_list = $model->table('circle_theme')->where(array('circle_id'=>$val['circle_id'], 'is_closed'=>0))->order('theme_id desc')->limit(2)->select();
  26. $circle_list[$key]['theme_list'] = $theme_list;
  27. }
  28. Tpl::output('circle_list', $circle_list);
  29. $now = strtotime(date('Y-m-d',time()));
  30. // 今天发表的主题
  31. $nowthemecount_array = $model->table('circle_theme')->field('count(circle_id) as count,circle_id')->group('circle_id')->where(array('theme_addtime'=>array('gt', $now), 'circle_id'=>array('in', $circleid_array), 'is_closed'=>0))->select();
  32. if(!empty($nowthemecount_array)){
  33. $nowthemecount_array = array_under_reset($nowthemecount_array, 'circle_id');
  34. Tpl::output('nowthemecount_array', $nowthemecount_array);
  35. }
  36. // 今天新加入的成员
  37. $nowjoincount_array = $model->table('circle_member')->field('count(circle_id) as count,circle_id')->group('circle_id')->where(array('cm_jointime'=>array('gt', $now), 'circle_id'=>array('in', $circleid_array)))->select();
  38. if(!empty($nowjoincount_array)){
  39. $nowjoincount_array = array_under_reset($nowjoincount_array, 'circle_id');
  40. Tpl::output('nowjoincount_array', $nowjoincount_array);
  41. }
  42. }
  43. // 圈子分类
  44. $class_list = $model->table('circle_class')->where(array('class_status'=>1, 'is_recommend'=>1))->order('class_sort asc')->select();
  45. Tpl::output('class_list', $class_list);
  46. // 推荐圈子
  47. $rcircle_list = $model->table('circle')->field('*, is_recommend*rand() as rand')->where(array('circle_status'=>1, 'is_recommend'=>1))->order('rand desc')->limit('20')->select();
  48. Tpl::output('rcircle_list', $rcircle_list);
  49. // 推荐话题
  50. $theme_list = $model->table('circle_theme')->field('*, is_recommend*rand() as rand')->where(array('has_affix'=>1, 'is_closed'=>0, 'is_recommend'=>1))->order('rand desc')->limit(8)->select();
  51. if(!empty($theme_list)){
  52. $theme_list = array_under_reset($theme_list, 'theme_id'); $themeid_array = array_keys($theme_list);
  53. // 附件
  54. $affix_list = $model->table('circle_affix')->where(array('theme_id'=>array('in', $themeid_array), 'affix_type'=>1))->group('theme_id')->select();
  55. if(!empty($affix_list)) $affix_list = array_under_reset($affix_list, 'theme_id');
  56. foreach ($theme_list as $key=>$val){
  57. if(isset($affix_list[$val['theme_id']])) $theme_list[$key]['affix'] = themeImageUrl($affix_list[$val['theme_id']]['affix_filethumb']);
  58. }
  59. Tpl::output('theme_list', $theme_list);
  60. }
  61. // 商品话题
  62. $gtheme_list = $model->table('circle_theme')->where(array('has_goods'=>1, 'is_closed'=>0))->order('theme_id desc')->limit(6)->select();
  63. if(!empty($gtheme_list)){
  64. $gtheme_list = array_under_reset($gtheme_list, 'theme_id'); $themeid_array = array_keys($gtheme_list);
  65. // 圈子商品
  66. $thg_list = $model->table('circle_thg')->where(array('theme_id'=>array('in', $themeid_array), 'reply_id'=>0))->select();
  67. $thg_list = tidyThemeGoods($thg_list, 'theme_id', 2);
  68. Tpl::output('thg_list', $thg_list);
  69. Tpl::output('gtheme_list', $gtheme_list);
  70. }
  71. // 优秀成员
  72. $member_list = $model->table('circle_member')->field('*, is_recommend*rand() as rand')->where(array('is_recommend'=>1))->order('rand desc')->limit(5)->select();
  73. if(!empty($member_list)){
  74. $member_list = array_reverse($member_list);
  75. $one_member = array_pop($member_list);
  76. $where = array();
  77. $where['member_id'] = $one_member['member_id'];
  78. $where['circle_id'] = $one_member['circle_id'];
  79. $one_membertheme = $model->table('circle_theme')->where($where)->order('theme_id desc')->limit(4)->select();
  80. Tpl::output('one_member', $one_member);
  81. Tpl::output('one_membertheme', $one_membertheme);
  82. if(!empty($member_list)){
  83. $where = '';
  84. foreach ($member_list as $val){
  85. $where .= '( circle_member.member_id = '.$val['member_id'].' and circle_member.circle_id = '.$val['circle_id'].') or ';
  86. }
  87. $where = rtrim($where, 'or ');
  88. $more_membertheme = $model->table('circle_member,circle_theme')->join('inner')->on('circle_member.member_id = circle_theme.member_id and circle_member.circle_id = circle_theme.circle_id')
  89. ->where($where)->group('circle_member.member_id,circle_member.circle_id')->select();
  90. Tpl::output('more_membertheme', $more_membertheme);
  91. }
  92. }
  93. // 最新话题/热门话题/人气回复
  94. $this->themeTop();
  95. // 首页幻灯
  96. $loginpic = unserialize(C('circle_loginpic'));
  97. Tpl::output('loginpic', $loginpic);
  98. $this->circleSEO();
  99. Tpl::showpage('index');
  100. }
  101. /**
  102. * 创建圈子
  103. */
  104. public function add_groupOp(){
  105. if($_SESSION['is_login'] != 1){
  106. @header('location: '.SHOP_SITE_URL.'/index.php?act=login&ref_url='.getRefUrl());
  107. }
  108. if(!intval(C('circle_iscreate'))){
  109. showMessage(L('circle_grooup_not_create'), '', '', 'error');
  110. }
  111. $model = Model();
  112. // 在验证
  113. // 允许创建圈子验证
  114. $where = array();
  115. $where['circle_masterid'] = $_SESSION['member_id'];
  116. $create_count = $model->table('circle')->where($where)->count();
  117. if(intval($create_count) >= C('circle_createsum')) showDialog(L('circle_create_max_error'));
  118. // 允许加入圈子验证
  119. $where = array();
  120. $where['member_id'] = $_SESSION['member_id'];
  121. $join_count = $model->table('circle_member')->where($where)->count();
  122. if(intval($join_count) >= C('circle_joinsum')) showDialog(L('circle_join_max_error'));
  123. if(chksubmit()){
  124. /**
  125. * 验证
  126. */
  127. $obj_validate = new Validator();
  128. $obj_validate->validateparam = array(
  129. array("input"=>$_POST["c_name"], "require"=>"true", "message"=>L('circle_name_not_null'))
  130. );
  131. $error = $obj_validate->validate();
  132. if($error != ''){
  133. showDialog($error);
  134. }else{
  135. $insert = array();
  136. $insert['circle_name'] = $_POST['c_name'];
  137. $insert['circle_masterid'] = $_SESSION['member_id'];
  138. $insert['circle_mastername'] = $_SESSION['member_name'];
  139. $insert['circle_desc'] = $_POST['c_desc'];
  140. $insert['circle_tag'] = $_POST['c_tag'];
  141. $insert['circle_pursuereason'] = $_POST['c_pursuereason'];
  142. $insert['circle_status'] = 2;
  143. $insert['is_recommend'] = 0;
  144. $insert['class_id'] = intval($_POST['class_id']);
  145. $insert['circle_addtime'] = time();
  146. $insert['circle_mcount'] = 1;
  147. $result = $model->table('circle')->insert($insert);
  148. if($result){
  149. // Membership level information
  150. $data = rkcache('circle_level') ? rkcache('circle_level') : rkcache('circle_level', true);
  151. // 把圈主信息加入圈子会员表
  152. $insert = array();
  153. $insert['member_id'] = $_SESSION['member_id'];
  154. $insert['circle_id'] = $result;
  155. $insert['circle_name'] = $_POST['c_name'];
  156. $insert['member_name'] = $_SESSION['member_name'];
  157. $insert['cm_applytime'] = $insert['cm_jointime'] = time();
  158. $insert['cm_state'] = 1;
  159. $insert['cm_level'] = $data[1]['mld_id'];
  160. $insert['cm_levelname'] = $data[1]['mld_name'];
  161. $insert['cm_exp'] = 1;
  162. $insert['cm_nextexp'] = $data[2]['mld_exp'];
  163. $insert['is_identity'] = 1;
  164. $insert['cm_lastspeaktime'] = '';
  165. $model->table('circle_member')->insert($insert);
  166. showDialog(L('nc_common_op_succ'),'index.php?act=group&c_id='.$result, 'succ');
  167. }else{
  168. showDialog(L('nc_common_op_fail'));
  169. }
  170. }
  171. }
  172. Tpl::output('create_count', $create_count);
  173. Tpl::output('join_count', $join_count);
  174. // 圈子分类
  175. $class_list = $model->table('circle_class')->where(array('class_status'=>1))->order('class_sort asc')->select();
  176. Tpl::output('class_list', $class_list);
  177. $this->circleSEO(L('circle_create'));
  178. Tpl::showpage('group_add');
  179. }
  180. /**
  181. * 我加入的圈子
  182. */
  183. public function myjoinedcircleOp(){
  184. $model = Model('circle_member');
  185. $cm_list = $model->getCircleMemberList(array('member_id'=>$_SESSION['member_id'], 'circle_id' => array('neq', 0)),'circle_id,circle_name,is_identity', 0, 'is_identity asc');
  186. if (empty($cm_list)) {
  187. echo false;die;
  188. }
  189. if (strtoupper(CHARSET) == 'GBK'){
  190. $cm_list = Language::getUTF8($cm_list);
  191. }
  192. echo json_encode($cm_list);
  193. }
  194. /**
  195. * 圈子名称验证
  196. */
  197. public function check_circle_nameOp(){
  198. $name = $_GET['name'];
  199. if (strtoupper(CHARSET) == 'GBK'){
  200. $name = Language::getGBK($name);
  201. }
  202. $rs = Model()->table('circle')->where(array('circle_name'=>$name))->find();
  203. if (!empty($rs)){
  204. echo 'false';
  205. }else{
  206. echo 'true';
  207. }
  208. }
  209. }