group.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379
  1. <?php
  2. /**
  3. * 圈子首页
  4. *
  5. *
  6. *********************************/
  7. defined('InShopNC') or exit('Access Invalid!');
  8. class groupControl extends BaseCircleThemeControl{
  9. public function __construct(){
  10. parent::__construct();
  11. }
  12. /**
  13. * 首页 话题列表
  14. */
  15. public function indexOp(){
  16. // 圈子信息
  17. $this->circleInfo();
  18. // 圈主和管理信息
  19. $this->manageList();
  20. // 会员信息
  21. $this->memberInfo();
  22. // sidebar相关
  23. $this->sidebar();
  24. $model = Model();
  25. // 话题列表
  26. $where = array();
  27. $where['circle_id'] = $this->c_id;
  28. $thc_id = intval($_GET['thc_id']);
  29. if($thc_id > 0){
  30. $where['thclass_id']= $thc_id;
  31. Tpl::output('thc_id', $thc_id);
  32. }
  33. if(intval($_GET['cream']) == 1){
  34. $where['is_digest'] = 1;
  35. }
  36. $theme_list = $model->table('circle_theme')->where($where)->order('is_stick desc,lastspeak_time desc')->page(20)->select();
  37. $theme_list = array_under_reset($theme_list, 'theme_id');
  38. Tpl::output('show_page', $model->showpage('2'));
  39. Tpl::output('theme_list', $theme_list);
  40. // 附件列表
  41. if(!empty($theme_list)){
  42. $themeid_array = array_keys($theme_list);
  43. $affix_list = $model->table('circle_affix')->where(array('affix_type'=>1,'theme_id'=>array('in', $themeid_array)))->select();
  44. $affix_list = array_under_reset($affix_list, 'theme_id', 2);
  45. Tpl::output('affix_list', $affix_list);
  46. }
  47. // 今日话题数
  48. // 当天时间戳
  49. $year = date("Y");$month = date("m");$day = date("d");
  50. $dayBegin = mktime(0,0,0,$month,$day,$year);
  51. $todaythcount = $model->table('circle_theme')->where(array('theme_addtime'=>array('egt',$dayBegin), 'circle_id'=>$this->c_id))->count();
  52. Tpl::output('todaythcount', $todaythcount);
  53. //展示形式,默认以图文展示 list/preview
  54. if($_GET['type'] != ''){
  55. $display_mode = ($_GET['type'] == 'list')?'list':'preview';
  56. setNcCookie('circleDisplayMode', $display_mode, 30*24*60*60);
  57. }else{
  58. $display_mode = cookie('circleDisplayMode') ? cookie('circleDisplayMode') : 'preview';
  59. }
  60. Tpl::output('display_mode',$display_mode);
  61. // 话题分类
  62. $where = array();
  63. $where['circle_id'] = $this->c_id;
  64. $where['thclass_status']= 1;
  65. $thclass_list = $model->table('circle_thclass')->where($where)->order('thclass_sort asc')->select();
  66. $thclass_list = array_under_reset($thclass_list, 'thclass_id');
  67. Tpl::output('thclass_list', $thclass_list);
  68. // Read Permission
  69. $readperm = $this->readPermissions($this->cm_info);
  70. Tpl::output('readperm', $readperm);
  71. Tpl::output('m_readperm', $this->m_readperm);
  72. $this->circleSEO($this->circle_info['circle_name']);
  73. // breadcrumb navigation
  74. $this->breadcrumd();
  75. Tpl::showpage('group');
  76. }
  77. /**
  78. * 申请加入
  79. */
  80. public function applyOp(){
  81. // 会员信息
  82. $this->memberInfo();
  83. // 圈子信息
  84. $this->circleInfo();
  85. if(in_array($this->identity, array(1,2,3,4))){
  86. showDialog(L('wrong_argument'), 'reload');
  87. }
  88. if(chksubmit()){
  89. /**
  90. * 验证
  91. */
  92. $obj_validate = new Validator();
  93. $obj_validate->validateparam = array(
  94. array("input"=>$_POST["apply_content"], "require"=>"true", "message"=>L('circle_apply_content_null')),
  95. array("input"=>$_POST["intro"], "require"=>"true", "message"=>L('circle_introduction_not_null')),
  96. );
  97. $error = $obj_validate->validate();
  98. if($error != ''){
  99. showDialog($error);
  100. }else{
  101. // Membership level information
  102. $data = rkcache('circle_level') ? rkcache('circle_level') : rkcache('circle_level', true);
  103. $model = Model();
  104. $insert = array();
  105. $insert['cm_applycontent'] = $_POST['apply_content'];
  106. $insert['cm_intro'] = $_POST['intro'];
  107. $insert['member_id'] = $_SESSION['member_id'];
  108. $insert['circle_id'] = $this->c_id;
  109. $insert['circle_name'] = $this->circle_info['circle_name'];
  110. $insert['member_name'] = $_SESSION['member_name'];
  111. $insert['cm_applytime'] = $insert['cm_jointime'] = time();
  112. $insert['cm_level'] = $data[1]['mld_id'];
  113. $insert['cm_levelname'] = $data[1]['mld_name'];
  114. $insert['cm_exp'] = 1;
  115. $insert['cm_nextexp'] = $data[2]['mld_exp'];
  116. $insert['cm_state'] = intval($this->circle_info['circle_joinaudit']) == 0 ? 1 : 0;
  117. $insert['is_identity'] = 3;
  118. $model->table('circle_member')->insert($insert, true);
  119. if(intval($this->circle_info['circle_joinaudit']) == 0){
  120. // Update the number of members
  121. $update = array(
  122. 'circle_id'=>$this->c_id,
  123. 'circle_mcount'=>array('exp', 'circle_mcount+1')
  124. );
  125. $model->table('circle')->update($update);
  126. showDialog(L('nc_common_op_succ'), 'reload', 'succ', 'CUR_DIALOG.close();');
  127. }else{
  128. // Update is applying for membership
  129. $update = array(
  130. 'circle_id'=>$this->c_id,
  131. 'new_verifycount'=>array('exp', 'new_verifycount+1')
  132. );
  133. $model->table('circle')->update($update);
  134. showDialog(L('nc_apply_op_succ'), 'reload', 'succ', 'CUR_DIALOG.close();');
  135. }
  136. }
  137. }
  138. $this->circleSEO(L('circle_apply_join').$this->circle_info['circle_name']);
  139. Tpl::showpage('group_apply', 'null_layout');
  140. }
  141. /**
  142. * 退出圈子
  143. */
  144. public function quitOp(){
  145. // 圈子信息
  146. $this->circleInfo();
  147. // 会员信息
  148. $this->memberInfo();
  149. if(in_array($this->identity, array(2,3))){
  150. // 删除会员
  151. Model()->table('circle_member')->where(array('circle_id'=>$this->c_id, 'member_id'=>$_SESSION['member_id']))->delete();
  152. $update = array();
  153. $update['circle_id'] = $this->c_id;
  154. $update['circle_mcount']= array('exp','circle_mcount-1');
  155. // Whether to apply for management
  156. $rs = Model()->table('circle_mapply')->where(array('circle_id'=>$this->c_id, 'member_id'=>$_SESSION['member_id']))->find();
  157. if($rs){
  158. Model()->table('circle_mapply')->where(array('circle_id'=>$this->c_id, 'member_id'=>$_SESSION['member_id']))->delete();
  159. $update['new_mapplycount'] = array('exp', 'new_mapplycount-1');
  160. }
  161. // 更新圈子成员数
  162. Model()->table('circle')->update($update);
  163. }
  164. showDialog(L('nc_common_op_succ'), 'reload', 'succ');
  165. }
  166. /**
  167. * 圈子成员列表
  168. */
  169. public function group_memberOp(){
  170. // 圈子信息
  171. $this->circleInfo();
  172. // 圈主和管理信息
  173. $this->manageList();
  174. // 会员信息
  175. $this->memberInfo();
  176. // sidebar相关
  177. $this->sidebar();
  178. // 圈子成员列表
  179. $model = Model();
  180. $where = array();
  181. $where['circle_id'] = $this->c_id;
  182. $where['cm_state'] = 1;
  183. if($_SESSION['is_login']) $where['member_id'] = array('neq', $_SESSION['member_id']);
  184. $cm_list = $model->table('circle_member')->where($where)->order('is_identity asc,cm_jointime desc')->page(15)->select();
  185. Tpl::output('show_page', $model->showpage(2));
  186. Tpl::output('cm_list', $cm_list);
  187. $this->circleSEO(L('circle_member_list').$this->circle_info['circle_name']);
  188. // breadcrumb navigation
  189. $this->breadcrumd(L('circle_firend'));
  190. Tpl::showpage('group.member');
  191. }
  192. /**
  193. * 圈子成员编辑
  194. */
  195. public function group_membereditOp(){
  196. $model = Model();
  197. $where = array();
  198. $where['circle_id'] = $this->c_id;
  199. $where['member_id'] = $_SESSION['member_id'];
  200. if(chksubmit()){
  201. /**
  202. * 验证
  203. */
  204. $obj_validate = new Validator();
  205. $obj_validate->validateparam = array(
  206. array("input"=>$_POST["intro"], "require"=>"true", "message"=>L('circle_introduction_not_null')),
  207. );
  208. $error = $obj_validate->validate();
  209. if($error != ''){
  210. showDialog($error);
  211. }
  212. // 会员信息
  213. $this->memberInfo();
  214. if(!in_array($this->identity, array(1,2,3,6))){
  215. showDialog(L('circle_member_no_join'), 'reload', 'error', 'CUR_DIALOG.close();');
  216. }
  217. $update = array();
  218. $update['cm_intro'] = $_POST['intro'];
  219. $model->table('circle_member')->where($where)->update($update);
  220. showDialog(L('nc_deit_op_succ'), 'reload', 'succ', 'CUR_DIALOG.close();');
  221. }
  222. $member_info = $model->table('circle_member')->where($where)->find();
  223. Tpl::output('member_info', $member_info);
  224. Tpl::showpage('group.member_edit', 'null_layout');
  225. }
  226. /**
  227. * 圈子商品列表
  228. */
  229. public function group_goodsOp(){
  230. // 圈子信息
  231. $this->circleInfo();
  232. // 圈主和管理信息
  233. $this->manageList();
  234. // 会员信息
  235. $this->memberInfo();
  236. // sidebar相关
  237. $this->sidebar();
  238. // 成员商品列表
  239. $model = Model();
  240. $cmid_list = $model->table('circle_member')->field('member_id')->where(array('circle_id'=>$this->c_id, 'cm_state'=>1))->select();
  241. $cmid_list = array_under_reset($cmid_list, 'member_id'); $cmid_array = array_keys($cmid_list);
  242. $count = $model->table('sns_sharegoods')->where(array('share_memberid'=>array('in', $cmid_array)))->count();
  243. $goods_list = $model->table('sns_sharegoods,sns_goods')->join('left')->on('sns_sharegoods.share_goodsid=sns_goods.snsgoods_goodsid')
  244. ->where(array('sns_sharegoods.share_memberid'=>array('in', $cmid_array), 'share_isshare|share_islike'=>1))->order('share_id desc')->page(20, $count)->select();
  245. if(!empty($goods_list)){
  246. if($_SESSION['is_login'] == '1'){
  247. foreach ($goods_list as $k=>$v){
  248. if (!empty($v['snsgoods_likemember'])){
  249. $v['snsgoods_likemember_arr'] = explode(',',$v['snsgoods_likemember']);
  250. $v['snsgoods_havelike'] = in_array($_SESSION['member_id'],$v['snsgoods_likemember_arr'])?1:0;
  251. }
  252. $goods_list[$k] = $v;
  253. }
  254. }
  255. $goods_list = array_under_reset($goods_list, 'share_id'); $shareid_array = array_keys($goods_list);
  256. Tpl::output('show_page', $model->showpage('2'));
  257. Tpl::output('goods_list', $goods_list);
  258. $pic_list = $model->cls()->table('sns_albumpic')->where(array('item_id'=>array('in', $shareid_array)))->select();
  259. $pic_list = array_under_reset($pic_list, 'item_id', 2);
  260. Tpl::output('pic_list', $pic_list);
  261. }
  262. $this->circleSEO(L('circle_member_like_and_show_goods').$this->circle_info['circle_name']);
  263. // breadcrumb navigation
  264. $this->breadcrumd(L('site_search_goods'));
  265. Tpl::showpage('group.goods');
  266. }
  267. /**
  268. * Applied to be an administrator
  269. */
  270. public function manage_applyOp(){
  271. $model = Model();
  272. // Circle information
  273. $this->circleInfo();
  274. // Verify membership
  275. $cm_info = $model->table('circle_member')->where(array('circle_id'=>$this->c_id, 'cm_state'=>1, 'is_identity'=>3))->find();
  276. if(empty($cm_info) || $this->circle_info['mapply_open'] == 0 || $this->circle_info['mapply_ml'] > $cm_info['cm_level'] || $cm_info['is_identity'] == 1){
  277. if(chksubmit()){
  278. showDialog(L('circle_apply_error'), '', 'error', 'DialogManager.close(\'manage_apply\')');
  279. }else{
  280. echo '<script>showError("'.L('circle_apply_error').'");DialogManager.close("manage_apply");</script>';exit;
  281. }
  282. }
  283. // Ban repeated application
  284. $mapply_info = $model->table('circle_mapply')->where(array('circle_id'=>$this->c_id, 'member_id'=>$_SESSION['member_id']))->find();
  285. if(!empty($mapply_info)){
  286. if(chksubmit()){
  287. showDialog(L('circle_repeat_apply_error'), '', 'error', 'DialogManager.close(\'manage_apply\')');
  288. }else{
  289. echo '<script>showError("'.L('circle_repeat_apply_error').'");DialogManager.close("manage_apply");</script>';exit;
  290. }
  291. }
  292. if(chksubmit()){
  293. $update = array();
  294. $update['circle_id'] = $this->c_id;
  295. $update['member_id'] = $_SESSION['member_id'];
  296. $update['mapply_reason']= $_POST['apply_reason'];
  297. $update['mapply_time'] = time();
  298. $model->table('circle_mapply')->insert($update);
  299. // Update the application for membership
  300. $model->table('circle')->update(array('circle_id'=>$this->c_id, 'new_mapplycount'=>array('exp', 'new_mapplycount+1')));
  301. showDialog(L('nc_common_op_succ'), 'reload', 'succ', 'DialogManager.close(\'manage_apply\')');
  302. }
  303. Tpl::showpage('group.mapply', 'null_layout');
  304. }
  305. /**
  306. * Level introduction
  307. */
  308. public function level_intrOp(){
  309. // 圈子信息
  310. $this->circleInfo();
  311. // 圈主和管理信息
  312. $this->manageList();
  313. // 会员信息
  314. $this->memberInfo();
  315. // breadcrumb navigation
  316. $this->breadcrumd(L('level_introduction'));
  317. // member level
  318. $ml_info = Model()->table('circle_ml')->find($this->c_id);
  319. $mld_array = rkcache('circle_level') ? rkcache('circle_level') : rkcache('circle_level', true);
  320. if(empty($ml_info)){
  321. $ml_info['ml_1'] = $mld_array['1']['mld_name'];
  322. $ml_info['ml_2'] = $mld_array['2']['mld_name'];
  323. $ml_info['ml_3'] = $mld_array['3']['mld_name'];
  324. $ml_info['ml_4'] = $mld_array['4']['mld_name'];
  325. $ml_info['ml_5'] = $mld_array['5']['mld_name'];
  326. $ml_info['ml_6'] = $mld_array['6']['mld_name'];
  327. $ml_info['ml_7'] = $mld_array['7']['mld_name'];
  328. $ml_info['ml_8'] = $mld_array['8']['mld_name'];
  329. $ml_info['ml_9'] = $mld_array['9']['mld_name'];
  330. $ml_info['ml_10'] = $mld_array['10']['mld_name'];
  331. $ml_info['ml_11'] = $mld_array['11']['mld_name'];
  332. $ml_info['ml_12'] = $mld_array['12']['mld_name'];
  333. $ml_info['ml_13'] = $mld_array['13']['mld_name'];
  334. $ml_info['ml_14'] = $mld_array['14']['mld_name'];
  335. $ml_info['ml_15'] = $mld_array['15']['mld_name'];
  336. $ml_info['ml_16'] = $mld_array['16']['mld_name'];
  337. }
  338. Tpl::output('ml_info', $ml_info);
  339. Tpl::output('mld_array', $mld_array);
  340. Tpl::showpage('group.level');
  341. }
  342. }