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);找到?> 上面加入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 |