bookfeedback.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. <?php
  2. require_once(dirname(__FILE__)."/../include/common.inc.php");
  3. require_once(DEDEINC."/filter.inc.php");
  4. require_once(DEDEINC."/channelunit.func.php");
  5. if(!isset($action))
  6. {
  7. $action = '';
  8. }
  9. //兼容旧的JS代码
  10. if($action == 'good' || $action == 'bad')
  11. {
  12. if(!empty($aid)) $id = $aid;
  13. require_once(dirname(__FILE__).'/digg_ajax.php');
  14. exit();
  15. }
  16. function GetOnebook($aid)
  17. {
  18. global $dsql,$title;
  19. $aid = trim(preg_replace('#[^0-9]#i','',$aid));
  20. $reArr = array();
  21. $nquery = "Select * From `#@__story_books` where bid='$aid' ";
  22. $arcRow = $dsql->GetOne($nquery);
  23. if(!is_array($arcRow)) {
  24. return $reArr;
  25. }
  26. $reArr = $arcRow;
  27. $reArr['bid'] = $aid;
  28. $reArr['arctitle'] = $arcRow['bookname'];
  29. $title = $arcRow['bookname'];
  30. //$reArr['arcurl'] = GetFileUrl($aid,$arcRow['typeid'],$arcRow['senddate'],$reArr['bookname '],$arcRow['ismake'],$arcRow['arcrank'],$arcRow['namerule'],
  31. //$arcRow['typedir'],$arcRow['money'],$arcRow['filename'],$arcRow['moresite'],$arcRow['siteurl'],$arcRow['sitepath']);
  32. return $reArr;
  33. }
  34. $cfg_formmember = isset($cfg_formmember) ? true : false;
  35. $ischeck = $cfg_feedbackcheck=='Y' ? 0 : 1;
  36. $aid = (isset($aid) && is_numeric($aid)) ? $aid : 0;
  37. $fid = (isset($fid) && is_numeric($fid)) ? $fid : 0;
  38. if(empty($aid) && empty($fid))
  39. {
  40. ShowMsg('文档id不能为空!','-1');
  41. exit();
  42. }
  43. include_once(DEDEINC."/memberlogin.class.php");
  44. $cfg_ml = new MemberLogin();
  45. if($action=='goodfb')
  46. {
  47. AjaxHead();
  48. $fid = intval($fid);
  49. $dsql->ExecuteNoneQuery("Update `#@__bookfeedback` set good = good+1 where id='$fid' ");
  50. $row = $dsql->GetOne("Select good From `#@__bookfeedback` where id='$fid' ");
  51. echo "<a onclick=\"postBadGood('goodfb',{$aid})\">支持</a>[{$row['good']}]";
  52. exit();
  53. }
  54. else if($action=='badfb')
  55. {
  56. AjaxHead();
  57. $fid = intval($fid);
  58. $dsql->ExecuteNoneQuery("Update `#@__bookfeedback` set bad = bad+1 where id='$fid' ");
  59. $row = $dsql->GetOne("Select bad From `#@__bookfeedback` where id='$fid' ");
  60. echo "<a onclick=\"postBadGood('badfb',{$aid})\">反对</a>[{$row['bad']}]";
  61. exit();
  62. }
  63. //查看评论
  64. /*
  65. function __ViewFeedback(){ }
  66. */
  67. //-----------------------------------
  68. else if($action=='' || $action=='show')
  69. {
  70. //读取文档信息
  71. $arcRow = GetOnebook($aid);
  72. if(empty($arcRow['bid']))
  73. {
  74. ShowMsg('无法查看未知文档的评论!','-1');
  75. exit();
  76. }
  77. extract($arcRow, EXTR_SKIP);
  78. include_once(DEDEINC.'/datalistcp.class.php');
  79. $dlist = new DataListCP();
  80. $dlist->pageSize = 20;
  81. if(empty($ftype) || ($ftype!='good' && $ftype!='bad' && $ftype!='feedback'))
  82. {
  83. $ftype = '';
  84. }
  85. $wquery = $ftype!='' ? " And ftype like '$ftype' " : '';
  86. //评论内容列表
  87. $querystring = "select fb.*,mb.userid,mb.face as mface,mb.spacesta,mb.scores from `#@__bookfeedback` fb
  88. left join `#@__member` mb on mb.mid = fb.mid
  89. where fb.aid='$aid' and fb.ischeck='1' $wquery order by fb.id desc";
  90. $dlist->SetParameter('aid',$aid);
  91. $dlist->SetParameter('action','show');
  92. $dlist->SetTemplate($cfg_basedir.$cfg_templets_dir.'/plus/bookfeedback_templet.htm');
  93. $dlist->SetSource($querystring);
  94. $dlist->Display();
  95. exit();
  96. }
  97. //引用评论
  98. //------------------------------------
  99. /*
  100. function __Quote(){ }
  101. */
  102. else if($action=='quote')
  103. {
  104. $row = $dsql->GetOne("Select * from `#@__bookfeedback` where id ='$fid'");
  105. require_once(DEDEINC.'/dedetemplate.class.php');
  106. $dtp = new DedeTemplate();
  107. $dtp->LoadTemplate($cfg_basedir.$cfg_templets_dir.'/plus/bookfeedback_quote.htm');
  108. $dtp->Display();
  109. exit();
  110. }
  111. //发表评论
  112. //------------------------------------
  113. /*
  114. function __SendFeedback(){ }
  115. */
  116. else if($action=='send')
  117. {
  118. //读取文档信息
  119. $arcRow = GetOnebook($aid);
  120. if((empty($arcRow['bid']) || $arcRow['notpost']=='1')&&empty($fid))
  121. {
  122. ShowMsg('无法对该文档发表评论!','-1');
  123. exit();
  124. }
  125. //是否加验证码重确认
  126. if(empty($isconfirm))
  127. {
  128. $isconfirm = '';
  129. }
  130. if($isconfirm!='yes' && $cfg_feedback_ck=='Y')
  131. {
  132. extract($arcRow, EXTR_SKIP);
  133. require_once(DEDEINC.'/dedetemplate.class.php');
  134. $dtp = new DedeTemplate();
  135. $dtp->LoadTemplate($cfg_basedir.$cfg_templets_dir.'/plus/bookfeedback_confirm.htm');
  136. $dtp->Display();
  137. exit();
  138. }
  139. //检查验证码
  140. if($cfg_feedback_ck=='Y')
  141. {
  142. $validate = isset($validate) ? strtolower(trim($validate)) : '';
  143. $svali = strtolower(trim(GetCkVdValue()));
  144. if($validate != $svali || $svali=='')
  145. {
  146. ResetVdValue();
  147. ShowMsg('验证码错误!','-1');
  148. exit();
  149. }
  150. }
  151. //检查用户登录
  152. if(empty($notuser))
  153. {
  154. $notuser=0;
  155. }
  156. //匿名发表评论
  157. if($notuser==1)
  158. {
  159. $username = $cfg_ml->M_ID > 0 ? '匿名' : '游客';
  160. }
  161. //已登录的用户
  162. else if($cfg_ml->M_ID > 0)
  163. {
  164. $username = $cfg_ml->M_UserName;
  165. }
  166. //用户身份验证
  167. else
  168. {
  169. if($username!='' && $pwd!='')
  170. {
  171. $rs = $cfg_ml->CheckUser($username,$pwd);
  172. if($rs==1)
  173. {
  174. $dsql->ExecuteNoneQuery("Update `#@__member` set logintime='".time()."',loginip='".GetIP()."' where mid='{$cfg_ml->M_ID}'; ");
  175. }
  176. else
  177. {
  178. $username = '游客';
  179. }
  180. }
  181. else
  182. {
  183. $username = '游客';
  184. }
  185. }
  186. $ip = GetIP();
  187. $dtime = time();
  188. //检查评论间隔时间;
  189. if(!empty($cfg_feedback_time))
  190. {
  191. //检查最后发表评论时间,如果未登陆判断当前IP最后评论时间
  192. if($cfg_ml->M_ID > 0)
  193. {
  194. $where = "WHERE `mid` = '$cfg_ml->M_ID'";
  195. }
  196. else
  197. {
  198. $where = "WHERE `ip` = '$ip'";
  199. }
  200. $row = $dsql->GetOne("SELECT dtime FROM `#@__bookfeedback` $where ORDER BY `id` DESC ");
  201. if($dtime - $row['dtime'] < $cfg_feedback_time)
  202. {
  203. ResetVdValue();
  204. ShowMsg('管理员设置了评论间隔时间,请稍等休息一下!','-1');
  205. exit();
  206. }
  207. }
  208. if(empty($face))
  209. {
  210. $face = 0;
  211. }
  212. $face = intval($face);
  213. extract($arcRow, EXTR_SKIP);
  214. $msg = cn_substrR(TrimMsg($msg),1000);
  215. $username = cn_substrR(HtmlReplace($username,2),20);
  216. if($feedbacktype!='good' && $feedbacktype!='bad')
  217. {
  218. $feedbacktype = 'feedback';
  219. }
  220. //保存评论内容
  221. if($comtype == 'comments')
  222. {
  223. $arctitle = addslashes($arcRow['arctitle']);
  224. $arctitle = $arcRow['arctitle'];
  225. if($msg!='')
  226. {
  227. $inquery = "INSERT INTO `#@__bookfeedback`(`aid`,`catid`,`username`,`arctitle`,`ip`,`ischeck`,`dtime`, `mid`,`bad`,`good`,`ftype`,`face`,`msg`)
  228. VALUES ('$aid','$catid','$username','$bookname','$ip','$ischeck','$dtime', '{$cfg_ml->M_ID}','0','0','$feedbacktype','$face','$msg'); ";
  229. $rs = $dsql->ExecuteNoneQuery($inquery);
  230. if(!$rs)
  231. {
  232. echo $dsql->GetError();
  233. exit();
  234. }
  235. }
  236. }
  237. //引用回复
  238. elseif ($comtype == 'reply')
  239. {
  240. $row = $dsql->GetOne("Select * from `#@__bookfeedback` where id ='$fid'");
  241. $arctitle = $row['arctitle'];
  242. $aid =$row['aid'];
  243. $msg = $quotemsg.$msg;
  244. $msg = HtmlReplace($msg,2);
  245. $inquery = "INSERT INTO `#@__bookfeedback`(`aid`,`typeid`,`username`,`arctitle`,`ip`,`ischeck`,`dtime`,`mid`,`bad`,`good`,`ftype`,`face`,`msg`)
  246. VALUES ('$aid','$typeid','$username','$arctitle','$ip','$ischeck','$dtime','{$cfg_ml->M_ID}','0','0','$feedbacktype','$face','$msg')";
  247. $dsql->ExecuteNoneQuery($inquery);
  248. }
  249. if($cfg_ml->M_ID > 0)
  250. {
  251. #api{{
  252. if(defined('UC_APPID'))
  253. {
  254. include_once DEDEROOT.'/api/uc.func.php';
  255. $row = $dsql->GetOne("SELECT `scores`,`userid` FROM `#@__member` WHERE `mid`='".$cfg_ml->M_ID."'");
  256. uc_credit_note($row['userid'],$cfg_sendfb_scores);
  257. }
  258. #/aip}}
  259. $dsql->ExecuteNoneQuery("Update `#@__member` set scores=scores+{$cfg_sendfb_scores} where mid='{$cfg_ml->M_ID}' ");
  260. }
  261. //统计用户发出的评论
  262. if($cfg_ml->M_ID > 0)
  263. {
  264. #api{{
  265. if(defined('UC_APPID'))
  266. {
  267. include_once DEDEROOT.'/api/uc.func.php';
  268. //推送事件
  269. $arcRow = GetOnebook($aid);
  270. $feed['icon'] = 'thread';
  271. $feed['title_template'] = '<b>{username} 在网站发表了评论</b>';
  272. $feed['title_data'] = array('username' => $cfg_ml->M_UserName);
  273. $feed['body_template'] = '<b>{subject}</b><br>{message}';
  274. $url = !strstr($arcRow['arcurl'],'http://') ? ($cfg_basehost.$arcRow['arcurl']) : $arcRow['arcurl'];
  275. $feed['body_data'] = array('subject' => "<a href=\"".$url."\">$arcRow[arctitle]</a>", 'message' => cn_substr(strip_tags(preg_replace("/\[.+?\]/is", '', $msg)), 150));
  276. $feed['images'][] = array('url' => $cfg_basehost.'/images/scores.gif', 'link'=> $cfg_basehost);
  277. uc_feed_note($cfg_ml->M_LoginID,$feed); unset($arcRow);
  278. }
  279. #/aip}}
  280. $row = $dsql->GetOne("SELECT COUNT(*) AS nums FROM `#@__bookfeedback` WHERE `mid`='".$cfg_ml->M_ID."'");
  281. $dsql->ExecuteNoneQuery("UPDATE `#@__member_tj` SET `feedback`='$row[nums]' WHERE `mid`='".$cfg_ml->M_ID."'");
  282. }
  283. $_SESSION['sedtime'] = time();
  284. if(empty($uid) && isset($cmtuser)) $uid = $cmtuser;
  285. $backurl = $cfg_formmember ? "index.php?uid={$uid}&action=viewarchives&aid={$aid}" : "bookfeedback.php?aid=$aid";
  286. if($ischeck==0)
  287. {
  288. ShowMsg("成功发表评论,但需审核后才会显示你的评论!",$backurl);
  289. }elseif($ischeck==1)
  290. {
  291. ShowMsg("成功发表评论,现在转到评论页面!",$backurl);
  292. }
  293. exit();
  294. }
  295. ?>