member_ugc.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 2017/7/5
  6. * Time: 下午4:02
  7. */
  8. use bonus\account;
  9. require_once(BASE_ROOT_PATH . '/mobile/control/special.php');
  10. require_once(BASE_ROOT_PATH . '/helper/ugc_helper.php');
  11. require_once(BASE_ROOT_PATH . '/helper/search/tcp_client.php');
  12. require_once(BASE_ROOT_PATH . '/helper/text_filter.php');
  13. require_once(BASE_ROOT_PATH . '/helper/bonus_helper.php');
  14. require_once(BASE_ROOT_PATH . '/helper/session_helper.php');
  15. class member_ugcControl extends specialControl
  16. {
  17. const greater = 0;
  18. const lesser = 1;
  19. private $mUgcBanner;
  20. public function __construct()
  21. {
  22. parent::__construct();
  23. global $config;
  24. $this->mUgcBanner = $config['ugc_banner'];
  25. }
  26. public function pub_listOp()
  27. {
  28. return $this->fetch('pub_list');
  29. }
  30. public function pri_listOp()
  31. {
  32. $this->need_login();
  33. return $this->fetch('pri_list');
  34. }
  35. public function mine_listOp()
  36. {
  37. $this->need_login();
  38. return $this->fetch('mine_list');
  39. }
  40. public function ugc_tabsOp()
  41. {
  42. //todo -- 需要和数据库对应确认
  43. $tabs = Model('mb_special')->getUgcTypesList();
  44. $ret = [];
  45. foreach ($tabs as $k => $tab) {
  46. $ret[$k]['tab_id'] = intval($tab['ugcat_id']);
  47. $ret[$k]['name'] = $tab['type_name'];
  48. }
  49. return self::outsuccess([ 'tabs' => $ret ]);
  50. }
  51. public function ugc_listOp()
  52. {
  53. return $this->fetch('pub_list');
  54. }
  55. private function fetch($type)
  56. {
  57. $special_id = intval($_GET['special_id']);
  58. $count = $this->page_size();
  59. if($special_id == -1) {
  60. $special_id = -1;
  61. $direct = self::lesser;
  62. }
  63. elseif ($special_id == 0) {
  64. return self::outsuccess(['special_list' => null,'mobile_page' => mobile_page(0)]);
  65. }
  66. else {
  67. $direct = $this->direct();
  68. }
  69. if($type == "pub_list") {
  70. $ugcat = intval($_GET['tab_id']);
  71. $specials = search\relation_client::instance()->fetch_pub_special(['special_id' => $special_id,'count'=> $count,'type' => $direct,'ugcat' => $ugcat]);
  72. }
  73. elseif($type == 'pri_list') {
  74. $specials = search\relation_client::instance()->fetch_pri_special(['user_id' => session_helper::memberid(),
  75. 'special_id' => $special_id,'count'=> $count,'type' => $direct]);
  76. }
  77. elseif($type == "mine_list") {
  78. $specials = $this->mine_specials($special_id,$count);
  79. }
  80. else {
  81. return self::outerr(errcode::ErrParamter);
  82. }
  83. $blocks = [];
  84. if($special_id == -1)
  85. {
  86. $extid = $this->tip_block($type);
  87. if($extid != false) {
  88. $helper = new special_formater($extid);
  89. $blocks = $helper->format($goods_ids);
  90. }
  91. }
  92. if(empty($specials))
  93. {
  94. $page_no = $this->page_no();
  95. if($page_no == 1) $page_no = 0;
  96. return self::outsuccess(['special_list' => $blocks,'mobile_page' => mobile_page($page_no)]);
  97. }
  98. else
  99. {
  100. $special_list = $this->special_list($specials,$ugcs);
  101. $page_no = $this->page_no();
  102. if($this->page_size() <= count($specials)) {
  103. $page_no += 1;
  104. }
  105. foreach ($special_list as $val) {
  106. $blocks[] = $val;
  107. }
  108. return self::outsuccess(['special_list' => $blocks,
  109. 'ugcs' => $ugcs,
  110. 'summary' => null,
  111. 'groupbuy' => null,
  112. 'limitime' => null,
  113. 'bundling' => null,
  114. 'mobile_page' => mobile_page($page_no)]);
  115. }
  116. }
  117. private function mine_specials($special_id,$count)
  118. {
  119. $mod_special = Model();
  120. $userid = session_helper::memberid();
  121. if($special_id == -1) {
  122. $items = $mod_special->table('mb_special')->field('special_id')
  123. ->where(['member_id' => $userid,'from_user' => 1])
  124. ->order('special_id desc')->limit($count)->select();
  125. } else {
  126. $items = $mod_special->table('mb_special')->field('special_id')
  127. ->where(array('special_id' => ['lt',$special_id],'member_id' => $userid,'from_user' => 1))
  128. ->order('special_id desc')->limit($count)->select();
  129. }
  130. $result = [];
  131. foreach ($items as $item) {
  132. $spid = intval($item['special_id']);
  133. $result[] = $spid;
  134. }
  135. return $result;
  136. }
  137. private function tip_block($type)
  138. {
  139. if($type == "pub_list") {
  140. $spid = $this->mUgcBanner['pub'];
  141. }
  142. elseif($type == 'pri_list') {
  143. $spid = $this->mUgcBanner['friend'];
  144. }
  145. elseif($type == "mine_list") {
  146. $spid = $this->mUgcBanner['mine'];
  147. }
  148. else {
  149. return false;
  150. }
  151. if(empty($spid) || $spid == 0) {
  152. return false;
  153. }
  154. else {
  155. return $spid;
  156. }
  157. }
  158. private function direct()
  159. {
  160. $cur_page = $this->page_no();
  161. if($cur_page == 1) {
  162. return self::greater;
  163. } else {
  164. return self::lesser;
  165. }
  166. }
  167. private function special_list($spids, &$ugcs)
  168. {
  169. $result = [];
  170. $mod_special = Model('mb_special');
  171. $items = $mod_special->getMbSpecialList(['special_id' => ['in',$spids],'member_id' => ['gt',0],'from_user' => 1]);
  172. $users = [];
  173. $specials = [];
  174. foreach ($items as $item)
  175. {
  176. $special = new ugc\special($item);
  177. $specials[] = $special;
  178. $sender = $special->memberid();
  179. $users[] = $sender;
  180. }
  181. sort($users);
  182. $users = array_unique($users);
  183. $minfos = [];
  184. if(!empty($users))
  185. {
  186. $mod_member = Model('member');
  187. $members = $mod_member->getMemberList(['member_id' => ['in',$users]]);
  188. foreach ($members as $member) {
  189. $info = new member_info($member);
  190. $mid = $info->member_id();
  191. $minfos[$mid] = $info;
  192. }
  193. }
  194. $ugcs = [];
  195. foreach ($specials as $special)
  196. {
  197. $block = special_formater::format_ugc($special);
  198. $result[] = $block;
  199. $divider = special_formater::def_divider();
  200. $result[] = $divider;
  201. $mid = $special->memberid();
  202. $minfo = $minfos[$mid];
  203. if(is_null($minfo) == false) {
  204. $ugc = $this->format_ugc($minfo,$special);
  205. $ugcs[] = $ugc;
  206. }
  207. }
  208. return $result;
  209. }
  210. private function format_ugc(member_info $minfo, ugc\special $special)
  211. {
  212. $ret['special_id'] = $special->special_id();
  213. $ret['member_avatar'] = $minfo->avatar();
  214. $ret['member_nickname'] = $minfo->nickname();
  215. $ret['has_vote'] = $special->has_vote();
  216. $ret['appreciate_num'] = $special->appreciates();
  217. $ret['comment_num'] = $special->comments();
  218. $ret['clicks'] = $special->clicks();
  219. $ret['pubtime'] = $special->editime();
  220. $ret['desc'] = $special->description();
  221. $supporter = new ugc\special_support($special->special_id(),0);
  222. $ret['supported'] = $supporter->supported();
  223. $ret['support_num'] = $special->likes();
  224. $cid = $special->category_id();
  225. $ret['category'] = ugc_helper::category_title($cid);
  226. $ret['can_del'] = false;
  227. if(session_helper::logined())
  228. {
  229. if($special->memberid() == $_SESSION['member_id']) {
  230. $ret['can_del'] = true;
  231. }
  232. }
  233. return $ret;
  234. }
  235. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  236. public function addOp()
  237. {
  238. $this->need_login();
  239. $contet = $_POST['content'];
  240. if(empty($contet)) {
  241. return self::outerr(errcode::ErrParamter,"上传的内容不能为空");
  242. }
  243. return $this->add($contet);
  244. }
  245. public function addexOp()
  246. {
  247. $this->need_login();
  248. $contet = $_POST['content'];
  249. if(empty($contet)) {
  250. return self::outerr(errcode::ErrParamter,"上传的内容不能为空");
  251. }
  252. else {
  253. $contet = urldecode($contet);
  254. }
  255. return $this->add($contet);
  256. }
  257. private function add($contet)
  258. {
  259. $sp_data = json_decode($contet,true);
  260. if(empty($sp_data)) {
  261. return self::outerr(errcode::ErrParamter,"上传的内容不能为空");
  262. }
  263. $spobj = ugc_helper::crate_special($sp_data,$err);
  264. if($spobj == false) {
  265. return self::outerr($err['code'],$err['msg']);
  266. }
  267. if($spobj->count() > 0)
  268. {
  269. $special_id = $spobj->save($_SESSION['member_id'],$sp_data);
  270. } else {
  271. $special_id = false;
  272. }
  273. if($special_id == false) {
  274. return self::outerr(errcode::ErrUGC,"抱歉,内容云同步失败 :(");
  275. }
  276. else {
  277. return self::outsuccess(['special_id' => $special_id]);
  278. }
  279. }
  280. public function previewOp()
  281. {
  282. $this->need_login();
  283. return parent::indexOp();
  284. }
  285. public function publishOp()
  286. {
  287. $this->need_login();
  288. $special_id = intval($_GET['special_id']);
  289. $setting = $_GET['setting'];
  290. if($special_id < 0 || empty($setting)) {
  291. return self::outerr(errcode::ErrParamter);
  292. }
  293. return $this->publish($special_id,$setting);
  294. }
  295. public function publishexOp()
  296. {
  297. $this->need_login();
  298. $special_id = intval($_GET['special_id']);
  299. $setting = $_GET['setting'];
  300. if($special_id < 0 || empty($setting)) {
  301. return self::outerr(errcode::ErrParamter);
  302. }
  303. else {
  304. $setting = urldecode($setting);
  305. }
  306. return $this->publish($special_id,$setting);
  307. }
  308. private function publish($special_id,$setting)
  309. {
  310. $setting = json_decode($setting,true);
  311. if(ugc_helper::pub_special($special_id,$setting,$err) == false) {
  312. return self::outerr($err['code'],$err['msg']);
  313. }
  314. else {
  315. return self::outsuccess(['special_id' => $special_id]);
  316. }
  317. }
  318. public function delOp()
  319. {
  320. $this->need_login();
  321. $special_id = intval($_GET['special_id']);
  322. if(ugc_helper::del_special($special_id,$err) == false) {
  323. return self::outerr($err['code'],$err['msg']);
  324. }
  325. else {
  326. return self::outsuccess(['special_id' => $special_id]);
  327. }
  328. }
  329. public function supportOp()
  330. {
  331. $special_id = intval($_GET['special_id']);
  332. if($special_id < 0) {
  333. return self::outerr(errcode::ErrParamter,"该专题不存在");
  334. }
  335. $comment_id = intval($_GET['comment_id']);
  336. $supported = ugc_helper::support_special($special_id,$comment_id);
  337. return self::outsuccess(['special_id' => $special_id,'comment_id' => $comment_id,'supported' => $supported]);
  338. }
  339. public function commentsOp()
  340. {
  341. $special_id = intval($_GET['special_id']);
  342. if($special_id < 0) {
  343. return self::outerr(errcode::ErrParamter,"该专题不存在");
  344. }
  345. $comment_id = intval($_GET['comment_id']);
  346. if($comment_id <= 0)
  347. {
  348. $mod_comment = Model('ugc_comment');
  349. $count = $mod_comment->top_counts($special_id);
  350. $items = $mod_comment->getTopCommentList($special_id,'comment_id',$this->page_size(),$count);
  351. $pages = $mod_comment->gettotalpage();
  352. $mobile_page = mobile_page($pages);
  353. $commentids = $this->commentids($items);
  354. if(!empty($commentids))
  355. {
  356. $mod = Model('ugc_comment');
  357. $comment_subcounts = [];
  358. $items = $mod->comments_counts($special_id,$commentids);
  359. foreach ($items as $item) {
  360. $comment_id = intval($item['comment_id']);
  361. $count = intval($item['nc_count']);
  362. $comment_subcounts[$comment_id] = $count;
  363. }
  364. $comments = $mod->getCommentList(array('top_id' => ['in',$commentids]),'*',0);
  365. $comments_obj =new ugc\comments($comments,$special_id,$comment_subcounts);
  366. $comments = $comments_obj->comments();
  367. $uids = $comments_obj->users();
  368. $members = $this->users($uids);
  369. } else {
  370. $comments = [];
  371. $members = [];
  372. }
  373. }
  374. else
  375. {
  376. $mod_comment = Model('ugc_comment');
  377. $count = $mod_comment->comment_counts($special_id,$comment_id);
  378. $items = $mod_comment->getSubCommentList($special_id,$comment_id,'comment_id',$this->page_size(),$count);
  379. $pages = $mod_comment->gettotalpage();
  380. $mobile_page = mobile_page($pages);
  381. $commentids = $this->commentids($items);
  382. if($commentids) {
  383. $mod = Model('ugc_comment');
  384. $comments = $mod->getCommentList(array('comment_id' => ['in',$commentids]),'*',0);
  385. $comments_obj =new ugc\comments($comments,$special_id,[]);
  386. $comments = $comments_obj->comments();
  387. $uids = $comments_obj->users();
  388. $members = $this->users($uids);
  389. } else {
  390. $comments = [];
  391. $members = [];
  392. }
  393. }
  394. return self::outsuccess(['comments' => $comments,'members' => $members,'mobile_page' => $mobile_page]);
  395. }
  396. private function users($user_ids)
  397. {
  398. if(empty($user_ids)) return [];
  399. $mod_member = Model('member');
  400. $members = $mod_member->getMemberList(array('member_id' => ['in',$user_ids]));
  401. if(empty($members)) return [];
  402. $result = [];
  403. foreach ($members as $item)
  404. {
  405. $member = new member_info($item);
  406. $val['member_id'] = $member->member_id();
  407. $val['avatar'] = $member->avatar();
  408. $val['nickname'] = $member->nickname();
  409. $result[] = $val;
  410. }
  411. return $result;
  412. }
  413. private function commentids($items)
  414. {
  415. $result = [];
  416. foreach ($items as $val) {
  417. $commentid = intval($val['comment_id']);
  418. $result[] = $commentid;
  419. }
  420. return $result;
  421. }
  422. public function commentOp()
  423. {
  424. $this->need_login();
  425. $special_id = intval($_GET['special_id']);
  426. if($special_id < 0) {
  427. return self::outerr(errcode::ErrParamter,"该专题不存在");
  428. }
  429. $comment = urldecode($_GET['content']);
  430. if(empty($comment)) {
  431. return self::outerr(errcode::ErrParamter,"评论内容不能为空.");
  432. }
  433. $comment = text_filter::filter_html($comment);
  434. if(empty($comment)) {
  435. return self::outerr(errcode::ErrParamter,"评论内容不能含非法字符.");
  436. }
  437. $comment_id = intval($_GET['comment_id']);
  438. $mod_comment = Model('ugc_comment');
  439. if($comment_id > 0) {
  440. $ret = $mod_comment->respond_comment($special_id,$comment_id,session_helper::memberid(),$comment);
  441. } else {
  442. $ret = $mod_comment->comment($special_id,session_helper::memberid(),$comment);
  443. }
  444. if($ret == false) {
  445. return self::outerr(errcode::ErrDB,"抱歉,评论出错了.");
  446. }
  447. else
  448. {
  449. $mod = Model('ugc_comment');
  450. $comments = $mod->getCommentList(['comment_id' => $ret],'*',0);
  451. $comments_obj = new ugc\comments($comments,$special_id,[]);
  452. $comments = $comments_obj->comments();
  453. $uids = $comments_obj->users();
  454. $members = $this->users($uids);
  455. QueueClient::push('onAsyncUgcComment',['special_id' => $special_id, 'comment_id' => $comment_id,'user_id' => session_helper::memberid()]);
  456. return self::outsuccess(['comments' => $comments,'members' => $members,'mobile_page' => mobile_page(0)]);
  457. }
  458. }
  459. public function mine_bonusOp()
  460. {
  461. $this->need_login();
  462. $pred = new account($_SESSION['member_id'],true);
  463. $bonus_rate = $pred->pay_bonus_rates();
  464. if($bonus_rate != null)
  465. {
  466. $rates = $bonus_rate->format();
  467. $rates_money = [];
  468. foreach ($rates as $rate => $money) {
  469. $item['rate'] = $rate;
  470. $item['total'] = $money;
  471. $rates_money[] = $item;
  472. }
  473. }
  474. else {
  475. $rates_money = [];
  476. }
  477. return self::outsuccess(['bonus_rate' => $rates_money]);
  478. }
  479. public function appreciateOp()
  480. {
  481. $this->need_login();
  482. $special_id = intval($_GET['special_id']);
  483. $rate = intval($_GET['rate']);
  484. $money = intval($_GET['money']);
  485. $bless = urldecode($_GET['bless']);
  486. $bless = text_filter::filter_html($bless);
  487. if($special_id < 0 || $rate <= 0 || $rate > 100 || $money <= 0) {
  488. return self::outerr(errcode::ErrParamter,"参数错误");
  489. }
  490. $ret = ugc_helper::appreciate($special_id,$rate,$money,$bless);
  491. if($ret == false) {
  492. return self::outsuccess(errcode::ErrBonus,"抱歉,赞赏失败,请晚点再试。");
  493. }
  494. else
  495. {
  496. $mod_appreciate = Model('appreciate');
  497. $insertid = $mod_appreciate->insert(['special_id' => $special_id,'member_id' => session_helper::memberid(),'rate' => $rate,'money' => $money,'addtime' => time()]);
  498. if($insertid != false) {
  499. $mod_special = Model('mb_special');
  500. $mod_special->table('mb_special')->where(['special_id' => $special_id])->update(array('appreciates' => ['exp', 'appreciates + 1'],
  501. 'appreciate_amonut' => ['exp', "appreciate_amonut + {$money}"]));
  502. }
  503. QueueClient::push('onAsyncUgcAppreciate',['special_id' => $special_id,
  504. 'user_id' => session_helper::memberid(),
  505. 'rate' => $rate,'amount' => $money]);
  506. return self::outsuccess(null);
  507. }
  508. }
  509. public function appreciate_listOp()
  510. {
  511. $special_id = intval($_GET['special_id']);
  512. if($special_id < 0) {
  513. return self::outerr(errcode::ErrParamter,"该专题不存在");
  514. }
  515. $mod_appreciate = Model('appreciate');
  516. $count = $mod_appreciate->counts($special_id);
  517. $items = $mod_appreciate->getListBySpecialid($special_id,'*',$this->page_size(),$count);
  518. $pages = $mod_appreciate->gettotalpage();
  519. $uids = [];
  520. foreach ($items as $val) {
  521. $user_id = intval($val['member_id']);
  522. $uids[] = $user_id;
  523. }
  524. $members = $this->users($uids);
  525. $result = [];
  526. foreach ($items as $item) {
  527. $val = [];
  528. $val['member_id'] = intval($item['member_id']);
  529. $val['rate'] = intval($item['rate']);
  530. $val['money'] = doubleval($item['money']);
  531. $val['addtime'] = intval($item['addtime']);
  532. $result[] = $val;
  533. }
  534. return self::outsuccess(['appreciate' => $result,'members' => $members,'mobile_page' => mobile_page($pages)]);
  535. }
  536. public function answer_pageOp()
  537. {
  538. $special_id = intval($_GET['special_id']);
  539. if($special_id < 0) {
  540. return self::outerr(errcode::ErrParamter,"该专题不存在");
  541. }
  542. $memberid = session_helper::memberid();
  543. if($memberid > 0) {
  544. $mod_answer = Model('ugc_answer');
  545. $answer = $mod_answer->getAnswer($special_id,$memberid);
  546. }
  547. if(empty($answer))
  548. {
  549. return self::outsuccess(['answer' => [],'special_id' => $special_id,'scale' => 0],'ugc/answer.list');
  550. }
  551. else
  552. {
  553. $result = $this->format_answer($answer,'','');
  554. $correct_num = $answer['correct_num'];
  555. if($correct_num > 0)
  556. {
  557. $lt_count = $mod_answer->lt_count($special_id,$correct_num);
  558. $counts = $mod_answer->counts($special_id);
  559. if($lt_count > 0 && $counts > 0) {
  560. $scale = intval($lt_count * 100 / $counts + 0.5);
  561. } else {
  562. $scale = false;
  563. }
  564. } else {
  565. $scale = false;
  566. }
  567. return self::outsuccess(['answer' => $result,'special_id' => $special_id,'scale' => $scale],'ugc/answer.list');
  568. }
  569. }
  570. private function format_answer($answer,$nickname,$avatar)
  571. {
  572. $result['correct_num'] = intval($answer['correct_num']);
  573. $result['total_num'] = intval($answer['total_num']);
  574. if($result['total_num'] == 0) {
  575. $result['score'] = 0;
  576. }
  577. else {
  578. $result['score'] = intval($result['correct_num'] * 100 / $result['total_num'] + 0.5);
  579. }
  580. $result['bonus_rate'] = intval($answer['bonus_rate']);
  581. $result['amount'] = doubleval($answer['amount']);
  582. $result['answer_time']= intval($answer['answer_time']);
  583. $result['nickname'] = $nickname;
  584. $result['avatar'] = $avatar;
  585. return $result;
  586. }
  587. public function answersOp()
  588. {
  589. $special_id = intval($_GET['special_id']);
  590. if($special_id < 0) {
  591. return self::outerr(errcode::ErrParamter,"该专题不存在");
  592. }
  593. $mod_answer = Model('ugc_answer');
  594. $count = $mod_answer->counts($special_id);
  595. $items = $mod_answer->answer_list($special_id,'*',$this->page_size(),$count);
  596. $pages = $mod_answer->gettotalpage();
  597. if(empty($items)) {
  598. return self::outsuccess(['answers' => [],'mobile_page' => mobile_page(0)]);
  599. }
  600. $uids = [];
  601. foreach ($items as $val) {
  602. $user_id = intval($val['member_id']);
  603. $uids[] = $user_id;
  604. }
  605. $minfos = $this->users($uids);
  606. $members = [];
  607. foreach ($minfos as $val) {
  608. $mid = intval($val['member_id']);
  609. $members[$mid] = $val;
  610. }
  611. $answers = [];
  612. foreach ($items as $item) {
  613. $mid = intval($item['member_id']);
  614. $member = $members[$mid];
  615. $value = $this->format_answer($item,$member['nickname'],$member['avatar']);
  616. $answers[] = $value;
  617. }
  618. return self::outsuccess(['answers' => $answers,'mobile_page' => mobile_page($pages)]);
  619. }
  620. public function subscribe_authorOp()
  621. {
  622. $special_id = intval($_GET['special_id']);
  623. if($special_id < 0) {
  624. return self::outerr(errcode::ErrParamter,"该专题不存在");
  625. }
  626. $memberid = $_SESSION['member_id'];
  627. $success = ugc_helper::subscribe($memberid,$special_id);
  628. return self::outsuccess(['success' => $success]);
  629. }
  630. public function report_pageOp()
  631. {
  632. $special_id = intval($_GET['special_id']);
  633. if($special_id < 0) {
  634. return self::outerr(errcode::ErrParamter,"该专题不存在");
  635. }
  636. return self::outsuccess(['special_id' => $special_id],'ugc/report');
  637. }
  638. public function reportOp()
  639. {
  640. $special_id = intval($_GET['special_id']);
  641. $content = urldecode($_GET['content']);
  642. if($special_id > 0 && !empty($content)) {
  643. $content = text_filter::filter_input($content);
  644. $mod_report = Model();
  645. $mod_report->table('special_report')->insert(['special_id' => $special_id,'reporter_id' => session_helper::memberid(),'content' => $content]);
  646. }
  647. return self::outsuccess([]);
  648. }
  649. }