from:
http://www.discuz.net/thread-837189-1-2.html
本
插件版權歸作者「猴子」所有
整理 by Linux0911
文章內、個人資料頁、編輯個人資料裡面都會顯示
後台在 → 擴展設置裡面 設定發卡數量
引用:
反安裝升級資料庫:複製內容到剪貼簿
代碼:
DROP TABLE `cdb_membercards`;帖子裡面的顯示方法在 viewthread.htm 裡面改,放在哪大家自由發揮吧
$post[authortitle] 用戶組
$post[avatar] 等級
$post[customstatus 自定義頭銜
$post[nickname] 暱稱
下面是手動安裝方法:
資料庫升級語句
複製內容到剪貼簿
代碼:
CREATE TABLE `cdb_membercards` (
`cardid` char(15) NOT NULL,
`dateline` int(10) unsigned NOT NULL,
`uid` mediumint(8) unsigned NOT NULL,
`update` int(10) unsigned NOT NULL,
PRIMARY KEY (`cardid`,`uid`),
KEY `dateline` (`dateline`),
KEY `update` (`update`)
) TYPE=MyISAM;V2.0 新增
複製內容到剪貼簿
代碼:
ALTER TABLE `cdb_membercards` ADD COLUMN `cardno` CHAR(20) NOT NULL FIRST;
ALTER TABLE `cdb_membercards` ADD INDEX `cardno` (`cardno`);可通過
論壇系統設置 資料庫 → 資料庫升級 處執行本 SQL 語句
新增文件:
./admin/membercard.inc.
php
membercard.php
修改文件:
./admin/forums.inc.php
./admin/menu.inc.php
./include/global.func.php
./include/viewpro.inc.php
./templates/default/memcp_profile.htm
./templates/default/register.htm
./templates/default/viewpro.htm
./templates/default/viewpro_classic.htm
./templates/default/viewthread.htm
admincp.php
memcp.php
register.php
viewthread.php
如果你新安裝了
風格中包含需要修改的
模板檔案,則需另行修改
修改檔案需仔細
開始安裝 (此插件極為繁複, 建議新手不要安裝, 安裝前請先備份檔案)
下載附件根據需求上傳附件
你喜歡
手動修改的, 就傳 "
手動修改的人只要上傳這個資料夾內的檔案" 資料夾裡面的檔案就可以了 (依結構上傳即可)
你
不想改這麼多檔案的, 直接上傳 "
已改好的檔案" 裡面的檔案就可以了 (依結構上傳即可)
UTF-8 用戶請在修改時存成 UTF-8 編碼
1. 修改 ./admin/forums.inc.php
找到:
複製內容到剪貼簿
代碼:
echo 'result = result.replace(/pageviews/g, \'<u>'.$lang['settings_creditsformula_pageviews'].'</u>\');';下面增加:
複製內容到剪貼簿
代碼:
// 會員卡插件 V2.0 - START
echo 'result = result.replace(/membercard/g, \'<u>擁有會員卡</u>\');';
// 會員卡插件 V2.0 - END找到:
複製內容到剪貼簿
代碼:
<a href="###" onclick="insertunit(' pageviews ')"><?=$lang['settings_creditsformula_pageviews']?></a> 下面增加:
複製內容到剪貼簿
代碼:
<!--// 會員卡插件 V2.0 - START -->
<a href="###" onclick="insertunit(' membercard ')">擁有會員卡</a>
<!--// 會員卡插件 V2.0 - END -->找到:
複製內容到剪貼簿
代碼:
if($formulapermnew && !preg_match("/^(\+|\-|\*|\/|\.|>|<|=|\d|\s|extcredits[1-8]|digestposts|posts|pageviews|oltime|and|or)+$/", $formulapermnew) || !is_null(@eval(preg_replace("/(digestposts|posts|pageviews|oltime|extcredits[1-8])/", "\$\\1", $formulapermnew).';'))) {替換成:複製內容到剪貼簿
代碼:
/* 會員卡插件 V2.0 - START
if($formulapermnew && !preg_match("/^(\+|\-|\*|\/|\.|>|<|=|\d|\s|extcredits[1-8]|digestposts|posts|pageviews|oltime|and|or)+$/", $formulapermnew) || !is_null(@eval(preg_replace("/(digestposts|posts|pageviews|oltime|extcredits[1-8])/", "\$\\1", $formulapermnew).';'))) {
*/
if($formulapermnew && !preg_match("/^(\+|\-|\*|\/|\.|>|<|=|\d|\s|extcredits[1-8]|digestposts|posts|pageviews|membercard|oltime|and|or)+$/", $formulapermnew) || !is_null(@eval(preg_replace("/(digestposts|posts|pageviews|membercard|oltime|extcredits[1-8])/", "\$\\1", $formulapermnew).';'))) {
// 會員卡插件 V2.0 - END找到:
複製內容到剪貼簿
代碼:
$formulapermary[1] = preg_replace("/(digestposts|posts|pageviews|oltime|extcredits[1-8])/", "\$_DSESSION['\\1']", $formulapermnew);替換成:複製內容到剪貼簿
代碼:
/* 會員卡插件 V2.0 - START
$formulapermary[1] = preg_replace("/(digestposts|posts|pageviews|oltime|extcredits[1-8])/", "\$_DSESSION['\\1']", $formulapermnew);
*/
$formulapermary[1] = preg_replace("/(digestposts|posts|pageviews|membercard|oltime|extcredits[1-8])/", "\$_DSESSION['\\1']", $formulapermnew);
// 會員卡插件 V2.0 - END儲存檔案
2. 修改 ./admin/menu.inc.php
找到:
複製內容到剪貼簿
代碼:
echo '</div><div id="others" style="display: none">';上面增加:複製內容到剪貼簿
代碼:
// 會員卡插件 V2.0 - START
showmenu('會員卡', array(
array('name' => '會員卡基本設置', 'url' => 'admincp.php?action=membercard&do=condition'),
array('name' => '會員卡列表', 'url' => 'admincp.php?action=membercard'),
array('name' => '會員卡申請審核', 'url' => 'admincp.php?action=membercard&do=modreg')));
// 會員卡插件 V2.0 - END儲存檔案
3. 修改 ./include/global.func.php
找到:
複製內容到剪貼簿
代碼:
@eval("\$formulaperm = ($formula) ? TRUE : FALSE;");上面增加:複製內容到剪貼簿
代碼:
// 會員卡插件 V2.0 - START
global $db, $tablepre, $discuz_uid;
$_DSESSION['membercard'] = $db->result($db->query("SELECT count(*) FROM {$tablepre}membercards WHERE uid='$discuz_uid' AND cardid<>'0'"), 0);
// 會員卡插件 V2.0 - END找到:
複製內容到剪貼簿
代碼:
$search = array('$_DSESSION[\'digestposts\']', '$_DSESSION[\'posts\']', '$_DSESSION[\'oltime\']', '$_DSESSION[\'pageviews\']');
$replace = array($language['formulaperm_digestposts'], $language['formulaperm_posts'], $language['formulaperm_oltime'], $language['formulaperm_pageviews']);替換成:複製內容到剪貼簿
代碼:
/* 會員卡插件 V2.0 - START
$search = array('$_DSESSION[\'digestposts\']', '$_DSESSION[\'posts\']', '$_DSESSION[\'oltime\']', '$_DSESSION[\'pageviews\']');
$replace = array($language['formulaperm_digestposts'], $language['formulaperm_posts'], $language['formulaperm_oltime'], $language['formulaperm_pageviews']);
*/
$search = array('$_DSESSION[\'digestposts\']', '$_DSESSION[\'posts\']', '$_DSESSION[\'oltime\']', '$_DSESSION[\'pageviews\']', '$_DSESSION[\'membercard\']');
$replace = array($language['formulaperm_digestposts'], $language['formulaperm_posts'], $language['formulaperm_oltime'], $language['formulaperm_pageviews'], '擁有會員卡');
// 會員卡插件 V2.0 - END儲存檔案
4. 修改 ./include/viewpro.inc.php
找到:
複製內容到剪貼簿
代碼:
if($inajax) {上面增加:複製內容到剪貼簿
代碼:
// 會員卡插件 V2.0 - START
$membercard = $db->fetch_array($db->query("SELECT * FROM {$tablepre}membercards WHERE uid='$uid' AND cardid<>'0'"));
// 會員卡插件 V2.0 - END儲存檔案
5. 修改 ./templates/default/memcp_profile.htm
找到:
複製內容到剪貼簿
代碼:
{template personal_navbar}下面增加:
引用:
<!--// 會員卡插件 V2.0 - START -->
<!--{if $membercardstatus[$groupid]}-->
<!--{if !$membercard && $membercardstatus[$groupid] == 1}-->
<div style="padding: 5px">
<form method="post" action="membercard.php?action=apply">
<input type="hidden" name="formhash" value="{FORMHASH}" />
會員卡號碼:<input type="text" name="cardno" /><br />
會員卡密碼:<input type="text" name="cardid" /><br />
<center><button type="submit">綁定會員卡</button></center>
</form>
</div>
<!--{elseif !$membercard && $membercardstatus[$groupid] == 2}-->
<div style="padding: 5px">
<form method="post" action="membercard.php?action=register">
<input type="hidden" name="formhash" value="{FORMHASH}" />
您可以申請會員卡了,是否提出申請?
<center><button type="submit">申請會員卡</button></center>
</form>
</div>
<!--{elseif $membercard && $membercardstatus[$groupid] == 2 && $membercard[cardid] == '0'}-->
<div style="padding: 5px">
<!--{if $membercard[update]}-->
<form method="post" action="membercard.php?action=apply">
<input type="hidden" name="formhash" value="{FORMHASH}" />
您已獲准使用會員卡<br />
會員卡號碼:<input type="text" name="cardno" /><br />
會員卡密碼:<input type="text" name="cardid" /><br />
<center><button type="submit">綁定會員卡</button></center>
</form>
<!--{else}-->
您的會員卡申請還未通過審核,請等候管理員審核
<!--{/if}-->
</div>
<!--{else}-->
<div style="padding: 5px">
<center><span style="color: red">持證會員</span><br />會員卡號碼: $membercard[cardno]</center>
</div>
<!--{/if}-->
<!--{/if}-->
<!--// 會員卡插件 V2.0 - END -->
儲存檔案
6. 修改 ./templates/default/register.htm
找到:
複製內容到剪貼簿
代碼:
<tr>
<th><label for="advshow">{lang register_advanced_options}</label></th>
<td><label><input id="advshow" name="advshow" class="checkbox" type="checkbox" $advcheck value="1" onclick="showadv()" tabindex="12" />{lang register_advanced_options_comment}</label></td>
</tr>下面增加:
複製內容到剪貼簿
代碼:
<!--// 會員卡插件 V2.0 - START -->
<!--{if $membercardstatus[7] == 1}-->
<tr>
<th><label for="cardno">會員卡號碼</th>
<td><label><input id="cardno" name="cardno" type="text" name="cardno"></td>
</tr>
<tr>
<th><label for="cardid">會員卡密碼</th>
<td><label><input id="cardid" name="cardid" type="text" name="cardid"></td>
</tr>
<!--{/if}-->
<!--// 會員卡插件 V2.0 - END -->儲存檔案
7. 修改 ./templates/default/viewpro.htm
找到:
複製內容到剪貼簿
代碼:
<tr><th>{lang uid}:</th><td>$member[uid]下面增加:
複製內容到剪貼簿
代碼:
<!--// 會員卡插件 V2.0 - START -->
<!--{if $membercard}--> <span style="color: red">持證會員</span><!--{/if}-->
<!--// 會員卡插件 V2.0 - END -->儲存檔案
8. 修改 ./templates/default/viewpro_classic.htm
找到:
複製內容到剪貼簿
代碼:
<tr><th>{lang uid}:</th><td>$member[uid]下面增加:
複製內容到剪貼簿
代碼:
<!--// 會員卡插件 V2.0 - START -->
<!--{if $membercard}--> <span style="color: red">持證會員</span><!--{/if}--></td></tr>
<!--// 會員卡插件 V2.0 - END -->儲存檔案
9. 修改 ./templates/default/viewthread.htm
找到:
複製內容到剪貼簿
代碼:
<p>{eval showstars($post['stars']);}</p>下面增加:
複製內容到剪貼簿
代碼:
<!--// 會員卡插件 V2.0 - START -->
<!--{if $membercards[$post[authorid]]}--><p><span style="color: red">持證會員</span></p><!--{/if}-->
<!--// 會員卡插件 V2.0 - END -->儲存檔案
10. 修改 admincp.php
找到:
複製內容到剪貼簿
代碼:
if($radminid != $groupid) {上面增加:複製內容到剪貼簿
代碼:
// 會員卡插件 V2.0 - START
elseif($action == 'membercard') {
$cpscript = 'membercard';
}
// 會員卡插件 V2.0 - END儲存檔案
11. 修改 memcp.php
找到:
複製內容到剪貼簿
代碼:
$passport_status = $passport_status == 'shopex' && $passport_shopex ? '' : $passport_status;下面增加:
複製內容到剪貼簿
代碼:
// 會員卡插件 V2.0 - START
$membercard = $db->fetch_array($db->query("SELECT * FROM {$tablepre}membercards WHERE uid='$discuz_uid'"));
$membercardstatus = unserialize($membercardstatus);
// 會員卡插件 V2.0 - END儲存檔案
12. 修改 register.php
找到:
複製內容到剪貼簿
代碼:
$fromuid = !empty($_DCOOKIE['promotion']) && $creditspolicy['promotion_register'] ? intval($_DCOOKIE['promotion']) : 0;下面增加:
複製內容到剪貼簿
代碼:
// 會員卡插件 V2.0 - START
$membercardstatus = unserialize($membercardstatus);
// 會員卡插件 V2.0 - END找到:
複製內容到剪貼簿
代碼:
$password = md5($password);上面增加:複製內容到剪貼簿
代碼:
// 會員卡插件 V2.0 - START
if($membercardstatus[7] == 1 && $cardno && $cardid) {
$membercard = $db->result($db->query("SELECT count(*) FROM {$tablepre}membercards WHERE uid='0' AND cardno='$cardno' AND cardid='$cardid'"), 0);
if(!$membercard) {
showmessage('會員卡不存在,請返回。');
}
}
// 會員卡插件 V2.0 - END找到
複製內容到剪貼簿
代碼:
if($regctrl || $regfloodctrl) {上面增加:複製內容到剪貼簿
代碼:
// 會員卡插件 V2.0 - START
if($membercardstatus[7] == 1 && $cardno && $cardid) {
$db->query("UPDATE {$tablepre}membercards SET uid='$uid', `update`='$timestamp' WHERE cardid='$cardid'");
$membercardcondition = unserialize($membercardcondition);
if($membercardcondition[7]) {
$db->query("UPDATE {$tablepre}members SET groupid='{$membercardcondition[7]}' WHERE uid='$uid'");
}
}
// 會員卡插件 V2.0 - END儲存檔案
13. 修改 viewthread.php
找到:
複製內容到剪貼簿
代碼:
$postlist[$post['pid']] = viewthread_procpost($post);下面增加:
複製內容到剪貼簿
代碼:
// 會員卡插件 V2.0 - START
$authorids[] = $post['uid'];
// 會員卡插件 V2.0 - END找到:
複製內容到剪貼簿
代碼:
if($pagebydesc) {
$postlist = array_reverse($postlist, TRUE);
}上面增加:複製內容到剪貼簿
代碼:
// 會員卡插件 V2.0 - START
$authorids = implodeids(array_unique($authorids));
$query = $db->query("SELECT uid, cardno FROM {$tablepre}membercards WHERE uid IN ($authorids) AND cardid<>'0'");
while($membercard = $db->fetch_array($query)) {
$membercards[$membercard['uid']] = $membercard['cardno'];
}
// 會員卡插件 V2.0 - END儲存檔案
修改完畢
[
本帖最後由 zhujinyan 於 2008-1-20 18:53 編輯 ]