TShopping

 找回密碼
 註冊
搜索
查看: 1611|回復: 0

[分享] 限制重複發帖 For Discuz! All Version

[複製鏈接]
發表於 2008-7-25 18:57:04 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk Push to Twitter 
名稱:限制重複發帖 For Discuz! All Version
安裝難度:極易
適用版本:Discuz!所有版本
作者:KaijuanStudio
安裝步驟:

核心修改
打開 include\newthread.inc.php
查找:


  
  1. if($subject == '' || $message == '') {
  2.                 showmessage('post_sm_isnull');
  3.         }
複製代碼
在後面一行添加:

  1. //Refuse repeated post. Code by KaijuanStudio
  2.         if($repeated == 1) {
  3.                 $query = $db->query("SELECT tid, subject FROM {$tablepre}threads WHERE authorid='$discuz_uid' AND subject='$subject'");
  4.                 if($db->num_rows($query)) {
  5.                         $repeat = $db->fetch_array($query);
  6.                         showmessage('post_repeated', 'index.php');
  7.                 }
  8.         } elseif ($repeated == 2) {
  9.                 $query = $db->query("SELECT tid, subject FROM {$tablepre}threads WHERE subject='$subject'");
  10.                 if($db->num_rows($query)) {
  11.                         $repeat = $db->fetch_array($query);
  12.                         showmessage('post_repeated', 'index.php');
  13.                 }
  14.         } elseif ($repeated == 3) {
  15.                 $query = $db->query("SELECT tid, authorid, subject, message FROM {$tablepre}posts WHERE first='1' AND subject='$subject'");
  16.                 if($db->num_rows($query)) {
  17.                         $repeat = $db->fetch_array($query);
  18.                         if($repeat['authorid'] == $discuz_uid) {
  19.                                 showmessage('post_repeated', 'index.php');
  20.                         }

  21.                         function SubString($str, $start, $len = 0xFFFFFFFF) {
  22.                                 if($start < 0) {
  23.                                         $start = strlen($str) + $start;
  24.                                 }
  25.                                 if($len < 0) {
  26.                                         $len = strlen($str) - $start + $len;
  27.                                 }
  28.                                 $tmp = '';
  29.                                 $result = '';
  30.                                 $strlen = strlen($str);
  31.                                 $begin = 0;
  32.                                 $subLen = 0;
  33.                                 for($i = 0; $i < $start + $len && $i < $strlen; $i++) {
  34.                                         if($i < $start) {
  35.                                                 if(ord($str[$i]) >= 161 && ord($str[$i]) <= 247 && ord($str[$i+1]) >= 161 && ord($str[$i+1]) <= 254) $i++;
  36.                                         } else {
  37.                                                 $begin=$i;
  38.                                                 for(; $i<$start+$len && $i<$strlen; $i++) {
  39.                                                         if(ord($str[$i]) >= 161 && ord($str[$i]) <= 247 && ord($str[$i+1])>=161 && ord($str[$i+1])<=254) $i++;
  40.                                                 }
  41.                                                 return substr($str,$begin,$i-$begin);
  42.                                         }
  43.                                 }
  44.                         }

  45.                         if(strlen($message) > 60) {
  46.                                 if(SubString($message, -100) == SubString($repeat['message'], -100) || SubString($message, 50, 100) == SubString($repeat['message'], 50, 100)) {
  47.                                         showmessage('post_repeated', 'index.php');
  48.                                 }
  49.                         } else {
  50.                                 if($message == SubString($repeat['message'], 0, 60)) {
  51.                                         showmessage('post_repeated', 'index.php');
  52.                                 }
  53.                         }
  54.                 }
  55.         }
  56. //Refuse repeated post. Code End
複製代碼
添加提示信息

    * 打開:templates\default\messages.lang.php
    * 查找:
  1.   'post_net_price_iszero' => '您的主題售價扣除積分交易稅後為 0,請返回修改。',
複製代碼
在後面一行添加:
  1.         'post_repeated' => '您所發佈的主題已存在:《<a href=\"viewthread.php?tid=$repeat[tid]\" target=\"_blank\">$repeat[subject]</a>》請勿重複發佈。',
複製代碼
添加設置

    * 打開:config.inc.php
    * 在最後添加一段:
  1. $repeated = 0;        //設置防範重複發帖的級別,0=關閉,1=防範相同ID發佈相同禁題的新主題,2=防範發佈相同標題的新主題,3=防範發佈相同標題且內容部分相同的新主題。
複製代碼
  您可根據自己的需要,隨時更改 $repeated 的數值,以關閉或開啟限制重複發貼不同的防範級別完成!
  上傳更新修改的三個文件。

 

臉書網友討論
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2016-12-11 06:43 , Processed in 0.051523 second(s), 18 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表