circle_manage.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  1. <?php
  2. /**
  3. * 圈子管理
  4. *
  5. *
  6. *
  7. ***/
  8. defined('InShopNC') or exit('Access Invalid!');
  9. class circle_manageControl extends SystemControl{
  10. public function __construct(){
  11. parent::__construct();
  12. Language::read('circle');
  13. }
  14. /**
  15. * 圈子列表
  16. */
  17. public function circle_listOp(){
  18. $model = Model();
  19. if(chksubmit()){
  20. // 批量删除圈子
  21. if($_POST['submit_type'] == 'batchdel'){
  22. $id_array = $_POST['check_circleid'];
  23. if(empty($id_array) && !is_array($id_array)){
  24. showMessage(L('circle_choose_del_circle'));
  25. }
  26. $model = Model();
  27. $where = array('circle_id'=>array('in',$id_array));
  28. $circle_list = $model->table('circle')->where($where)->select();
  29. // 删除圈子logo
  30. if(!empty($circle_list)){
  31. foreach ($circle_list as $val){
  32. @unlink(BASE_UPLOAD_PATH.DS.ATTACH_CIRCLE.'/group/'.$circle_list['circle_id'].'.jpg');
  33. }
  34. }
  35. // 删除附件
  36. $affix_list = $model->table('circle_affix')->where($where)->select();
  37. if(!empty($affix_list)){
  38. foreach ($affix_list as $val){
  39. @unlink(themeImagePath($val['affix_filename']));
  40. @unlink(themeImagePath($val['affix_filethumb']));
  41. }
  42. $model->table('circle_affix')->where($where)->delete();
  43. }
  44. // 删除商品
  45. $model->table('circle_thg')->where($where)->delete();
  46. // 删除赞表相关
  47. $model->table('circle_like')->where($where)->delete();
  48. // 删除回复
  49. $model->table('circle_threply')->where($where)->delete();
  50. // 删除话题
  51. $model->table('circle_theme')->where($where)->delete();
  52. // 删除成员
  53. $model->table('circle_member')->where($where)->delete();
  54. // 删除圈子
  55. $model->table('circle')->where($where)->delete();
  56. $this->log(L('nc_del_circle').'['.implode(',', $id_array).']');
  57. showMessage(L('nc_common_op_succ'));
  58. }
  59. }
  60. $where = array();
  61. if(trim($_GET['searchname']) != ''){
  62. $where['circle_name'] = array('like', '%'.trim($_GET['searchname']).'%');
  63. }
  64. if(trim($_GET['searchmaster']) != ''){
  65. $where['circle_mastername'] = array('like', '%'.trim($_GET['searchmaster']).'%');
  66. }
  67. if(trim($_GET['searchstatus']) != ''){
  68. $where['circle_status'] = intval($_GET['searchstatus']);
  69. }
  70. $circle_list = $model->table('circle')->where($where)->page('10')->select();
  71. Tpl::output('page', $model->showpage('2'));
  72. Tpl::output('circle_list', $circle_list);
  73. Tpl::showpage('circle.list');
  74. }
  75. /**
  76. * 圈子待审核列表
  77. */
  78. public function circle_verifyOp(){
  79. $model = Model();
  80. if(chksubmit()){
  81. $id_array = $_POST['check_circleid'];
  82. if(empty($id_array) && !is_array($id_array)){
  83. showMessage(L('circle_choose_del_circle'));
  84. }
  85. if($_POST['submit_type'] == 'batchdel'){
  86. // delete circle
  87. $where = array('circle_id'=>array('in',$id_array));
  88. $model->table('circle')->where($where)->delete();
  89. showMessage(L('nc_common_del_succ'));
  90. }else if($_POST['submit_type'] == 'pass'){
  91. // pass circle
  92. $model->table('circle')->where(array('circle_id'=>array('in', $id_array)))->update(array('circle_status'=>1));
  93. showMessage(L('nc_common_op_succ'));
  94. }
  95. }
  96. $circle_list = $model->table('circle')->where(array('circle_status'=>2))->page('10')->select();
  97. Tpl::output('page', $model->showpage('2'));
  98. Tpl::output('circle_list', $circle_list);
  99. Tpl::showpage('circle.verify');
  100. }
  101. /**
  102. * 圈子新增
  103. */
  104. public function circle_addOp(){
  105. $model = Model();
  106. // 保存
  107. if(chksubmit()){
  108. /**
  109. * 验证
  110. */
  111. $obj_validate = new Validator();
  112. $obj_validate->validateparam = array(
  113. array("input"=>$_POST["c_name"], "require"=>"true", "message"=>L('circle_name_not_null')),
  114. );
  115. $error = $obj_validate->validate();
  116. if($error != ''){
  117. showMessage($error);
  118. }else{
  119. $insert = array();
  120. $insert['circle_name'] = trim($_POST['c_name']);
  121. $insert['circle_masterid'] = intval($_POST['masterid']);
  122. $insert['circle_mastername']= trim($_POST['mastername']);
  123. $insert['circle_desc'] = $_POST['c_desc'];
  124. $insert['circle_tag'] = $_POST['c_tag'];
  125. $insert['circle_notice'] = $_POST['c_notice'];
  126. $insert['circle_status'] = intval($_POST['c_status']);
  127. $insert['is_recommend'] = intval($_POST['c_recommend']);
  128. $insert['class_id'] = intval($_POST['classid']);
  129. $insert['circle_addtime'] = time();
  130. $circleid = $model->table('circle')->insert($insert);
  131. if($circleid){
  132. // 把圈主信息加入圈子会员表
  133. $insert = array();
  134. $insert['member_id'] = intval($_POST['masterid']);
  135. $insert['circle_id'] = $circleid;
  136. $insert['circle_name'] = $_POST['c_name'];
  137. $insert['member_name'] = $_POST['mastername'];
  138. $insert['cm_applytime'] = $insert['cm_jointime'] = time();
  139. $insert['cm_state'] = 1;
  140. $insert['is_identity'] = 1;
  141. $insert['cm_lastspeaktime'] = '';
  142. $rs = $model->table('circle_member')->insert($insert);
  143. if($rs){
  144. $update['circle_mcount'] = 1;
  145. }
  146. if (!empty($_POST['c_img'])){
  147. $update['circle_img'] = $circleid.'.jpg';
  148. rename(BASE_UPLOAD_PATH.'/'.ATTACH_CIRCLE.'/group/'.$_POST['c_img'],BASE_UPLOAD_PATH.'/'.ATTACH_CIRCLE.'/group/'.$circleid.'.jpg');
  149. }
  150. $model->table('circle')->where(array('circle_id'=>$circleid))->update($update);
  151. $this->log(L('nc_add_circle').'['.$circleid.']');
  152. showMessage(L('nc_common_op_succ'));
  153. }else{
  154. showMessage(L('nc_common_op_fail'));
  155. }
  156. }
  157. }
  158. // 圈子分类
  159. $class_list = $model->table('circle_class')->where(array('class_status'=>1))->order('class_sort asc')->select();
  160. Tpl::output('class_list', $class_list);
  161. Tpl::showpage('circle.add');
  162. }
  163. /**
  164. * 圈子编辑
  165. */
  166. public function circle_editOp(){
  167. $model = Model();
  168. if(chksubmit()){
  169. /**
  170. * 验证
  171. */
  172. $obj_validate = new Validator();
  173. $obj_validate->validateparam = array(
  174. array("input"=>$_POST["c_name"], "require"=>"true", "message"=>L('circle_name_not_null')),
  175. );
  176. $error = $obj_validate->validate();
  177. if($error != ''){
  178. showMessage($error);
  179. }else{
  180. $update = array();
  181. $update['circle_id'] = intval($_POST['c_id']);
  182. $update['circle_name'] = trim($_POST['c_name']);
  183. $update['circle_masterid'] = intval($_POST['masterid']);
  184. $update['circle_mastername']= trim($_POST['mastername']);
  185. $update['circle_desc'] = $_POST['c_desc'];
  186. $insert['circle_tag'] = $_POST['c_tag'];
  187. $update['circle_notice'] = $_POST['c_notice'];
  188. $update['circle_status'] = intval($_POST['c_status']);
  189. $update['circle_statusinfo']= $_POST['c_statusinfo'];
  190. $update['is_recommend'] = intval($_POST['c_recommend']);
  191. $update['class_id'] = intval($_POST['classid']);
  192. $insert['circle_img'] = $_POST['c_img'];
  193. $rs = $model->table('circle')->update($update);
  194. if($rs){
  195. // 更新圈子会员表 圈主信息。
  196. $cminfo = $model->table('circle_member')->where(array('member_id'=>intval($_POST['masterid']), 'circle_id'=>intval($_POST['c_id'])))->find();
  197. if(empty($cminfo)){
  198. // 取消员圈主圈主身份
  199. $model->table('circle_member')->where(array('circle_id'=>intval($_POST['c_id']), 'is_identity'=>1))->update(array('is_identity'=>3));
  200. $model->table('circle_theme')->where(array('circle_id'=>intval($_POST['c_id']), 'is_identity'=>1))->update(array('is_identity'=>3));
  201. // 把圈主信息加入圈子会员表
  202. $insert = array();
  203. $insert['member_id'] = intval($_POST['masterid']);
  204. $insert['circle_id'] = intval($_POST['c_id']);
  205. $insert['circle_name'] = $_POST['c_name'];
  206. $insert['member_name'] = $_POST['mastername'];
  207. $insert['cm_applytime'] = $insert['cm_jointime'] = time();
  208. $insert['cm_state'] = 1;
  209. $insert['is_identity'] = 1;
  210. $insert['cm_lastspeaktime'] = '';
  211. $model->table('circle_member')->insert($insert);
  212. }else{
  213. if($cminfo['is_identity'] != 1){
  214. // 取消员圈主圈主身份
  215. $model->table('circle_member')->where(array('circle_id'=>intval($_POST['c_id']), 'is_identity'=>1))->update(array('is_identity'=>3));
  216. $model->table('circle_theme')->where(array('circle_id'=>intval($_POST['c_id']), 'is_identity'=>1))->update(array('is_identity'=>3));
  217. // 任命新圈主
  218. $model->table('circle_member')->where(array('member_id'=>intval($_POST['masterid']), 'circle_id'=>intval($_POST['c_id'])))->update(array('is_identity'=>1));
  219. $model->table('circle_theme')->where(array('member_id'=>intval($_POST['masterid']), 'circle_id'=>intval($_POST['c_id'])))->update(array('is_identity'=>1));
  220. }
  221. }
  222. // 更新圈子成员信息
  223. $count = $model->table('circle_member')->where(array('circle_id'=>intval($_POST['c_id'])))->count();
  224. $model->table('circle')->update(array('circle_id'=>intval($_POST['c_id']), 'circle_mcount'=>$count));
  225. // 更新主题圈子名称字段
  226. $model->table('circle_theme')->where(array('circle_id'=>intval($_POST['c_id'])))->update(array('circle_name'=>$_POST['c_name']));
  227. $model->table('circle_member')->where(array('circle_id'=>intval($_POST['c_id'])))->update(array('circle_name'=>$_POST['c_name']));
  228. $this->log(L('nc_edit_circle').'['.intval($_POST['c_id']).']');
  229. showMessage(L('nc_common_op_succ'), 'index.php?act=circle_manage&op=circle_list');
  230. }else{
  231. showMessage(L('nc_common_op_fail'));
  232. }
  233. }
  234. }
  235. $id = intval($_GET['c_id']);
  236. if($id <= 0){
  237. showMessage(L('param_error'));
  238. }
  239. // 圈子详细
  240. $circle_info = $model->table('circle')->find($id);
  241. Tpl::output('circle_info', $circle_info);
  242. // 圈子分类
  243. $class_list = $model->table('circle_class')->where(array('class_status'=>1))->order('class_sort asc')->select();
  244. Tpl::output('class_list', $class_list);
  245. Tpl::showpage('circle.edit');
  246. }
  247. /**
  248. * 选择圈主
  249. */
  250. public function choose_masterOp(){
  251. Tpl::output('search_url', (intval($_GET['c_id']) > 0) ? urlAdmin('circle_manage', 'search_member', array('c_id' => intval($_GET['c_id']))) : urlAdmin('circle_manage', 'search_member'));
  252. Tpl::showpage('circle.choose_master', 'null_layout');
  253. }
  254. /**
  255. * 搜索会员
  256. */
  257. public function search_memberOp(){
  258. $model = Model();
  259. $where = array();
  260. if($_GET['name'] != ''){
  261. $where['member_name'] = array('like', '%'.trim($_GET['name']).'%');
  262. }
  263. $member_list = $model->table('member')->field('member_id,member_name')->where($where)->select();
  264. $member_list = array_under_reset($member_list, 'member_id', 1);
  265. // 允许创建圈子验证
  266. $where = array();
  267. if(intval($_GET['c_id']) > 0){
  268. $where = array('circle_id'=>array('neq',intval($_GET['c_id'])));
  269. }
  270. $count_array = $model->table('circle')->field('circle_masterid,count(*) as count')->where($where)->group('circle_masterid')->select();
  271. if (!empty($count_array)){
  272. foreach ($count_array as $val){
  273. if(intval($val['count']) >= C('circle_createsum')) unset($member_list[$val['circle_masterid']]);
  274. }
  275. }
  276. // 允许加入圈子验证
  277. $where = array();
  278. if(intval($_GET['c_id']) > 0){
  279. $where = array('circle_id');
  280. }
  281. $count_array = $model->table('circle_member')->field('member_id,count(*) as count')->where($where)->group('member_id')->select();
  282. if(!empty($count_array)){
  283. foreach ($count_array as $val){
  284. if(intval($val['count']) >= C('circle_joinsum')) unset($member_list[$val['member_id']]);
  285. }
  286. }
  287. $member_list = array_values($member_list);
  288. // 加入圈子数量验证
  289. if(strtoupper(CHARSET) == 'GBK'){
  290. $member_list = Language::getUTF8($member_list);
  291. }
  292. echo json_encode($member_list);die;
  293. }
  294. /**
  295. * 删除圈子
  296. */
  297. public function circle_delOp(){
  298. $id = intval($_GET['c_id']);
  299. if($id <= 0){
  300. showMessage(L('param_error'));
  301. }
  302. $model = Model();
  303. $circle_info = $model->table('circle')->find($id);
  304. if(!empty($circle_info)) @unlink(BASE_UPLOAD_PATH.DS.ATTACH_CIRCLE.'/group/'.$circle_info['circle_id'].'.jpg');
  305. // 删除附件
  306. $affix_list = $model->table('circle_affix')->where(array('circle_id'=>$id))->select();
  307. if(!empty($affix_list)){
  308. foreach ($affix_list as $val){
  309. @unlink(themeImagePath($val['affix_filename']));
  310. @unlink(themeImagePath($val['affix_filethumb']));
  311. }
  312. $model->table('circle_affix')->where(array('circle_id'=>$id))->delete();
  313. }
  314. // 删除商品
  315. $model->table('circle_thg')->where(array('circle_id'=>$id))->delete();
  316. // 删除赞表相关
  317. $model->table('circle_like')->where(array('circle_id'=>$id))->delete();
  318. // 删除回复
  319. $model->table('circle_threply')->where(array('circle_id'=>$id))->delete();
  320. // 删除话题
  321. $model->table('circle_theme')->where(array('circle_id'=>$id))->delete();
  322. // 删除成员
  323. $model->table('circle_member')->where(array('circle_id'=>$id))->delete();
  324. // 删除圈子
  325. $model->table('circle')->delete($id);
  326. $this->log(L('nc_del_circle').'['.$id.']');
  327. showMessage(L('nc_common_op_succ'));
  328. }
  329. /**
  330. * 会员名称检测
  331. */
  332. public function check_memberOp() {
  333. $model = Model();
  334. $member_info = Model('member')->table('member')->where(array('member_name'=>trim($_GET['name']), 'member_id'=>intval($_GET['id'])))->select();
  335. if(empty($member_info)){
  336. echo 'false';exit;
  337. }else{
  338. // 允许创建数量验证
  339. $where = array();
  340. $where['circle_masterid'] = intval($_GET['id']);
  341. if(intval($_GET['c_id']) > 0){
  342. $where['circle_id'] = array('neq', intval($_GET['c_id']));
  343. }
  344. $count = $model->table('circle')->where($where)->count();
  345. if(intval($count) >= intval(C('circle_createsum'))){
  346. echo 'false';exit;
  347. }
  348. // 允许加入圈子验证
  349. $where = array();
  350. $where['member_id'] = intval($_GET['id']);
  351. if(intval($_GET['c_id']) > 0){
  352. $where['circle_id'] = array('neq', intval($_GET['c_id']));
  353. }
  354. $count = $model->table('circle_member')->where($where)->count();
  355. if(intval($count) >= intval(C('circle_joinsum'))){
  356. echo 'false';exit;
  357. }
  358. echo 'true';exit;
  359. }
  360. }
  361. /**
  362. * ajax操作
  363. */
  364. public function ajaxOp(){
  365. switch ($_GET['branch']){
  366. case 'status':
  367. $this->log(L('nc_circle_pass_cerify').'['.intval($_GET['id']).']');
  368. case 'recommend':
  369. $update = array(
  370. 'circle_id'=>intval($_GET['id']),
  371. $_GET['column']=>$_GET['value']
  372. );
  373. Model()->table('circle')->update($update);
  374. echo 'true';
  375. break;
  376. case 'name':
  377. $where = array(
  378. 'circle_id'=>intval($_GET['id'])
  379. );
  380. $update = array(
  381. $_GET['column']=>$_GET['value']
  382. );
  383. Model()->table('circle')->where($where)->update($update);
  384. Model()->table('circle_theme')->where($where)->update($update);
  385. echo 'true';
  386. break;
  387. }
  388. }
  389. /**
  390. * ajax验证圈子名称
  391. */
  392. public function check_circle_nameOp(){
  393. $name = $_GET['name'];
  394. if (strtoupper(CHARSET) == 'GBK'){
  395. $name = Language::getGBK($name);
  396. }
  397. $where = array();
  398. $where['circle_name'] = $name;
  399. if(intval($_GET['id']) > 0){
  400. $where['circle_id'] = array('neq', intval($_GET['id']));
  401. }
  402. $rs = Model()->table('circle')->where($where)->find();
  403. if (!empty($rs)){
  404. echo 'false';
  405. }else{
  406. echo 'true';
  407. }
  408. }
  409. }