[插件交流] 帖子買賣+流量管制系統 for 4.0.0 簡體版

http://www.discuz.net/thread-205976-1-6.html

插件名稱 帖子買賣+流量管制系統
插件作者 rain5017
插件用法 [sell=帖子價格,管制時間]文章內容[/sell]
插件說明 本插件將是論壇插件裡的一大創舉,以往要管制下載點流量都要倚靠流量管制系統才能達到目的,但是本插件在帖子買賣插件基礎上加上時間管制,因此有著跟流量管制系統的相同效果
附註
1.本帖子買賣插件為小弟我個人論壇需求而委託rain5017大大制定開發出來的,看見其他商業用戶朋友對帖子買賣插件非常需求,因此我徵求作者同意將本插件放出讓大家也能使用
2.舊語法[sell=XX]文章內容[/sell]也能共用
3.因為本插件相當吃資源,因此加上限制單帖內使用語法數量控制,請大家慎用本插件避免影響論壇速度
4.因為本插件相當吃資源,因此將語法模板上的"已付費統計人數"功能關閉,但是名單上可以查詢數量


上傳附件至空間
請至後台及資料庫
DROP TABLE IF EXISTS `cdb_postpay`;
CREATE TABLE `cdb_postpay` (
  `id` int(12) NOT NULL auto_increment,
  `tid` mediumint(8) NOT NULL default '0',
  `pid` int(10) unsigned NOT NULL default '0',
  `sellcount` smallint(3) unsigned NOT NULL default '0',
  `author` varchar(25) NOT NULL default '',
  `username` varchar(25) NOT NULL default '',
  `money` smallint(6) unsigned NOT NULL default '0',
  `dateline` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `tid` (`tid`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
開啟config.inc.php
最下方加上
// ============================================================================
$hacktable_postpay = 'cdb_postpay';
$allowpostpay =1;
$paypostoff=0;//是否關閉帖子賣買 0 否 1關閉
$paypostlimit=3;//限制單帖裡使用帖子買賣語法數量!0為無限制,否則一個帖子只有前$paypostlimit有效
$paymixtime=0;//默認管制時間,以分為單位
$cnteacher_postsell_maxprice =300;
$cnteacher_paylist_perpage =20;
$payfield='extcredits2';//設定消費的拓展積分,可依個人設定改變

//=============================================================================
開啟include\discuzcode.func.php
找到
global $discuzcodes, $credits, $tid, $discuz_uid, $highlight, $maxsmilies, $db, $tablepre;
替換成
global
$discuzcodes, $credits, $tid, $discuz_user,$discuz_uid,
$sellmessage,$highlight, $maxsmilies, $db,
$tablepre,$post,$post_sellcount,$paymixtime,$postdowntime,$paypostlimit,$paypostoff;
找到
if(!$bbcodeoff && $allowbbcode) {
                $message = preg_replace("/s*[code](.+?)[/code]s*/ies", "codedisp('\1')", $message);
        }
下面添加
         $message = preg_replace("/[sell=(d+)]s*(.+?)s*[/sell]/ies",  "postsell(\1,$paymixtime,'\2')", $message);
          $message =
preg_replace("/[sell=(d{1,3})[x|,](d{1,3})]s*(.+?)s*[/sell]/ies",  "postsell(\1,\2,'\3')",
$message);
          
找到
        for($i = 0; $i <= $discuzcodes['pcodecount']; $i++) {
                $message = str_replace("[tDISCUZ_CODE_$it]", $discuzcodes['codehtml'][$i], $message);
        }
下面添加
        for($si = 0; $si <= $post_sellcount; $si++) {
          $message = str_replace("|tDISCUZ_SELL_$sit|", $sellmessage[$si], $message);
        }
        unset ($sellmessage);
找到
?&gt;
上面加入
function postsell($price,$paytimes, $message) {
    global $thisbg, $db,
$tablepre,$sellmessage,$tid,$hacktable_postpay,$discuz_user,$discuz_uid,$adminid,$page,$post,$payfield,$post_sellcount,$forum,$postdowntime,$paypostlimit,$paypostoff;

    $usermoney=$GLOBALS['_DSESSION'][$payfield];
    $nowtime=time();
    $paytimes=$paytimes*60;

        $message = str_replace("\\"", "\"", preg_replace("/^[nr]*(.+?)[nr]*$/is", "\1", $message));
        if($paypostoff)return $message;
    $post_sellcount++;
     if($paypostlimit){
                  if($post_sellcount>$paypostlimit)  return "|tDISCUZ_SELL_$post_sellcountt| "."超過本帖賣帖次數,請另外發帖";
        }
    $post[postcount]= $post_sellcount;
    $price=abs(intval($price));
    $post['needmoney']=$post['needmoney']+$price;
  //$query = $db->query("SELECT COUNT(*) FROM $hacktable_postpay
WHERE pid='$post[pid]' AND sellcount='$post_sellcount' ");
    //$payusercount=$db->result($query, 0);
    if ($discuz_user){
        if ($usermoney >= $price){
               $query = $db->query("SELECT dateline as lastpaytimes
FROM $hacktable_postpay WHERE pid='$post[pid]' AND
sellcount='$post_sellcount' ");
               @extract($db->fetch_array($query));
                 $yutime=$lastpaytimes+$paytimes-$nowtime;//剩餘時間
                 $yutime=$yutime>0?$yutime:1;
            $paymessage="你擁有:$usermoney  金幣,<span
id=\"n_".$post_sellcount."_".$post[pid]."\">下載管制,尚餘 $yutime
秒.</span>";
           // if($yutime>1){
           $yutime=$yutime>0?$yutime:0;
                           $countsell=$post_sellcount-1;

//$tid,$post[pid],$price,$page,$post_sellcount
                        $postdowntime.="delay[".$countsell."] =
'".$post_sellcount."_".$post[pid]."-".$yutime."-0-".$tid."-".$post[pid]."-".$price."-".$page."-".$post_sellcount."';n";
                //        }
                                /*************/
                                //echo $paymessage;exit;

        }else{
            $paymessage="你擁有:$usermoney 金幣,無法付費。去[<a
href='memcp.php?action=credits'><font
color=#FBA51F>兌換</font></a>]或者購買金幣吧。";
        }
    }else{
            $paymessage= "非本站會員無權購買,請[<a
href='logging.php?action=login'><font
color=#FBA51F>登陸</font></a>],或者[<a
href='register.php'><font
color=#FBA51F>註冊</font></a>]";
    }

$sm1="
<center><table style='background: threedface;
color: windowtext; margin: 2px; BORDER-STYLE: none'
width='90%'><tr><td><FIELDSET style='width: 100%;
text-align:
center'><LEGEND>  收費單</font><
/LEGEND><table border='0' width='98%' cellspacing='0'
cellpadding='6' ><tr><td class='smalltxt'><font
color=#000000>編號:</font><input type='text' readonly
name='p101'
value='$tid-$post[pid]-$post[postcount]'></td><td><font
color=#000000>價格:</font><input type=text  readonly
name=p102 value='$price' size=5><font
color=#000000>金額</font></td><td
align='right'><font color=#000000>已付費人數:</font><input
type=text name=p103 value='未統計' size=5> <a
href='postpay.php?action=showpayuser&tid=$tid&pid=$post[pid]&sellcount=$post_sellcount'><font
color=red>名單</font></a></td></tr><tr>
<td colspan='3'><hr><font color
='#000000'>請付費察看本帖隱藏內容,$paymessage</td></tr><
/table></FIELDSET></tr></table></center>";

$sm2="
<center><table style='background: threedface;
color: windowtext; margin: 2px; BORDER-STYLE: none'
width='90%'><tr><td><FIELDSET style='width: 100%;
text-align: center'><LEGEND>
  付款證明</font></LEGEND><table
border='0' width='98%' cellspacing='0'
cellpadding='6'><tr><td class='smalltxt'><font
color=#000000>編號:</font><input
type='text'  readonly  name='p101'
value='$tid-$post[pid]-$post[postcount]'></td><td><font
color=#000000>價格:</font><input type=text   readonly
name=p102 value='$price' size=5> <font
color=#000000>金額</font></td><td
align='right'><font color=#000000>已付費人數:</font><input
type=text name=p103 value='未統計' size=5> <a href=
'postpay.php?action=showpayuser&tid=$tid&pid=$post[pid]&sellcount=$post_sellcount'><font
color=red>名單</font></a></td></tr><tr>
<td colspan='3'><hr><font
color='#000000'>感謝您的付費!你可以觀看以下付費內容了。如發現非法斂財,可以投訴給版主<span
id=\"n_".$post_sellcount."_".$post[pid]."\"></span></td></tr></table></FIELDSET></tr></table></center>";

    if ($discuz_user){
        //$query = $db->query("SELECT COUNT(*) FROM {$tablepre}posts WHERE pid='$post[pid]' AND author='$discuz_user'");
       // $isauthor = $db->result($query, 0);
       $isauthor = ($post[uid]==$discuz_uid)?1:0;
        if(in_array($adminid, array(1,2))||$forum['ismoderator']||$isauthor){
            $post['paymoney']=$post['needmoney'];
            $post['payed']=2;
            $sellmessage[$post_sellcount]=$sm2;
        } else {
            $query = $db->query("SELECT COUNT(*) FROM
$hacktable_postpay WHERE pid='$post[pid]'
AND  sellcount='$post_sellcount' and money='$price' and
username='$discuz_user'");
            if($db->result($query, 0)) {
                $post['paymoney']=$post['paymoney']+$price;
                $post['payed']=2;
                $sellmessage[$post_sellcount]=$sm2;
            }else{
                $post['payed']=1;
                $message='';
                $sellmessage[$post_sellcount]=$sm1;
            }
        }
    }else{
        $post['payed']=1;
        $message='';
        $sellmessage[$post_sellcount]=$sm1;
    }
    return "|tDISCUZ_SELL_$post_sellcountt| ".$message;
} 
開啟include\newreply.inc.php
找到
$time = gmdate("$dateformat $timeformat", $thaquote['dateline'] + ($timeoffset * 3600));
下面添加
                 $message = preg_replace("/[sell=?d*](.+?)[/sell]/is", "[b]**** 付費信息,已經隱藏 *****[/b]", $message);
                  $message = preg_replace("/[sell=(d{1,3})[x|,](d{1,3})](.+?)[/sell]/ies","付費信息,已經隱藏", $message);
開啟templates\default\viewthread.htm
找到兩個地方都要加上
<table width="{TABLEWIDTH}" cellspacing="0" cellpadding="0" align="center">
<tr>
上面添加
<!--{if $postdowntime}-->
<script language="javascript">
<!--
   var wait_time = 10;
   var load_time = (new Date()).getTime();
   var delay = new Array();
  // delay[0] = '9p-1033-0';
  // delay[1] = '12p-295-0';
  $postdowntime
   var okImg = new Image();
   okImg.src = 'http://220.134.160.16/non-cgi/images/ok.gif';
   function updateDelay() {
      var refresh_enabled = 0;
      var refresh_time = 3600000;
      var now_time = (new Date()).getTime();
      for(i=0; i<delay.length; i++) {
         var data = delay[i].split("-");
         var pass_time = Math.floor((now_time - load_time)/1000);
         var diff = data[1] - pass_time;
         var diff_str = '';

         if(diff >= 0) {
            refresh_enabled = 1;
            if(diff > 3600) {
               if(diff <= 3600*2) refresh_time = 60000;
               var diff1 = Math.floor(diff/3600);
               diff_str = diff1 + ' 個多小時';
            } else {
               if(diff > 60) {
                  if(refresh_time > 60000) refresh_time = 60000;
                  if(diff <= 60*2) refresh_time = 1000;
                  var diff1 = Math.floor(diff/60);
                  diff_str = diff1 + ' 分鐘多';
               } else {
                  refresh_time = 1000;
                  diff_str = diff + ' 秒多';
               }
            }
            if(data[2] == 0) {
               document.getElementById('n_'+data[0]).innerHTML = '下載管制,尚餘 ' + diff_str + '.';
            } else {
               if(diff <= wait_time*60) {
                  document.getElementById('n_'+data[0]).innerHTML = '下載管制,尚餘 ' + diff_str + '.';

               }
            }
         } else {
              document.getElementById('n_'+data[0]).innerHTML = '<a
href=postpay.php?action=pay&tid='+data[3]+'&sellcount='+data[7]+'&money='+data[5]+'&page='+data[6]+'&pid='+data[4]+'><b><font
color=#FBA51F>[你已經可以買帖]</font></b></a>';
            if(data[2] == 0) {
                    // eval('document.delpost.b_'+data[0]).value = '立即下載';
             //  eval('document.delpost.b_'+data[0]).disabled = true;
             // document.delpost.b_+data[0]+.disabled = true;
            } else {
               location.reload();
            }
         }

      }
      if(refresh_enabled == 1) setTimeout("updateDelay()", refresh_time);
   }
   updateDelay();
// -->
</script>
<!--{/if}-->
下載附件
http://www.discuz.net/attachment.php?aid=26701
1

評價次數

+2

Points

  • System Message

2007-12-29 06:47:02 聲望 + 1 點 幸運 + 1 點 獎勵訊息:小玩樂透、很幸運中獎了

複製這篇網址分享給朋友: http://discuz.bluelovers.net/thread-9582-1.html#pid15428

本篇的內容不含引用除另有聲明外,如符合 CC授權條款 則套用 姓名標示-非商業性-相同方式分享 3.0 通用版

套一句黃小琥說過的話:「你可以點歌,但是我可以選歌」