01.upload\forumdata\dacxml\plugin\medal_center_60.xml复制内容到剪贴板
代码:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<identifier>medal_center_60</identifier>
<name>[DST]插件:勳章中心 1.0 For DZ60</name>
<version>6.0.0</version>
<author>hnxxwyq(獨自流浪)</author>
<time>2007-9-27</time>
<lastmodified>2007-10-14</lastmodified>
<copyright>由 hnxxwyq(獨自流浪) 獨立開發,依法擁有版權</copyright>
<describe><![CDATA[
插件名稱:DST_MedalCenter
作者:【DST】獨自流浪
【DST】ID:hnxxwyq
支持版本:Discuz! 6.0.0正式版
支持站點:www.discuzsupport.net
演示站點:www.32dm.com
功能說明:
1、 內置手動頒發/回收(榮譽勳章)、勳章商店、勳章拍賣(系統拍賣特殊勳章,增加可玩性)、系統等級勳章4大功能模塊,可根據論壇需要選擇開放的功能模塊。
2、後臺批量上傳勳章功能,免去您的勳章更新煩惱。
3、個性化配置勳章種類,讓您DIY自己的勳章功能
4、勳章排名更可靠,綜合類勳章排名展現會員個性喜好,榮譽勳章排名讓您更瞭解會員對社區做出貢獻的多少!
]]></describe>
<installsql>
DROP TABLE IF EXISTS cdb_membermedal;
CREATE TABLE cdb_membermedal (
uid mediumint(8) unsigned NOT NULL,
medalid smallint(5) unsigned NOT NULL,
outtime int(10) NOT NULL default '-1',
KEY uid (uid),
KEY medalid (medalid)
) TYPE=MyISAM;
DROP TABLE IF EXISTS cdb_memberprice;
CREATE TABLE cdb_memberprice (
uid mediumint(8) unsigned NOT NULL,
username char(15) NOT NULL,
medalid smallint(6) unsigned NOT NULL,
price int(10) NOT NULL,
pricetime int(10) NOT NULL,
KEY uid (uid),
KEY medalid (medalid),
KEY price (price)
) type=MyISAM;
ALTER TABLE cdb_medals ADD type tinyint(2) UNSIGNED NOT NULL DEFAULT '1';
ALTER TABLE cdb_medals ADD groupid int(8) UNSIGNED NOT NULL DEFAULT '0';
ALTER TABLE cdb_medals ADD price int(8) UNSIGNED NOT NULL DEFAULT '0';
ALTER TABLE cdb_medals ADD endtime int(10) UNSIGNED NOT NULL DEFAULT '0';
ALTER TABLE cdb_medals ADD outtime int(10) NOT NULL DEFAULT '-1';
INSERT INTO cdb_crons ( cronid , available , type , name , filename , lastrun , nextrun , weekday , day , hour , minute )
VALUES (
NULL , '1', 'system', ' 勳章中心配置文件', 'medalcenter.inc.php', '0', '0', '-1', '-1', '0', '0'
);
</installsql>
<unstallsql>
ALTER TABLE cdb_medals DROP type;
ALTER TABLE cdb_medals DROP groupid;
ALTER TABLE cdb_medals DROP price;
ALTER TABLE cdb_medals DROP endtime;
ALTER TABLE cdb_medals DROP outtime;
DROP TABLE IF EXISTS cdb_membermedal;
DROP TABLE IF EXISTS cdb_memberprice;
DELETE FROM cdb_crons WHERE filename='medalcenter.inc.php';
</unstallsql>
<comment>升級完後,請到論壇後臺更新緩存</comment>
<contents>
</contents>
<demopic><![CDATA[
]]></demopic>
<demo><![CDATA[<a href='http://www.32dm.com' target="_blank">演示站點</a>]]></demo>
<filelist><![CDATA[
./include/crons/medalcenter.inc.php
./templates/default/medals_artificially.htm
./templates/default/medals_auction.htm
./templates/default/medals_index.htm
./templates/default/medals_navbar.htm
./templates/default/medals_order.htm
./templates/default/medals_trade.htm
./templates/default/medals.lang.php
./plugins/medalcenter/main.inc.php
./plugins/medalcenter/medalcenter.func.php
./plugins/medalcenter/settings.inc.php
./plugins/medalcenter/config.cfg.php
]]></filelist>
<lockfilelist><![CDATA[
]]></lockfilelist>
<import><![CDATA[
# Discuz! Plugin Dump
# Version: Discuz! 6.0.0
# Time: 2007-10-30 13:35
# From: Discuz! Board (http://localhost/dz60/)
#
# Discuz! Community: http://www.Discuz.net
# Please visit our website for latest news about Discuz!
# --------------------------------------------------------
YTozOntzOjY6InBsdWdpbiI7YTo5OntzOjk6ImF2YWlsYWJsZSI7czoxOiIx
IjtzOjc6ImFkbWluaWQiO3M6MToiMSI7czo0OiJuYW1lIjtzOjE1OiJEU1Rf
TWVkYWxDZW50ZXIiO3M6MTA6ImlkZW50aWZpZXIiO3M6MTU6IkRTVF9NZWRh
bENlbnRlciI7czoxMToiZGVzY3JpcHRpb24iO3M6OTQ6IqG+RGlzY3V6ISBT
dXBwb3J0IFRlYW0gs/bGt6G/obzRq9XC1tDQxCBGb3IgRGlzY3V6ITYuMC4w
1f3KvbDmob0tLbbA19TB98DLDQrKudPDx+uxo8H0sObIqKOhDQoiO3M6MTA6
ImRhdGF0YWJsZXMiO3M6MDoiIjtzOjk6ImRpcmVjdG9yeSI7czoxMjoibWVk
YWxjZW50ZXIvIjtzOjk6ImNvcHlyaWdodCI7czozMToiW0RTVCAtIFBsdWdp
biBHcm91cF1kdXppbGl1bGFuZyI7czo3OiJtb2R1bGVzIjtzOjI2NToiYToy
OntpOjA7YTo1OntzOjQ6Im5hbWUiO3M6ODoic2V0dGluZ3MiO3M6NDoibWVu
dSI7czoxNjoi0avVwtbQ0MS688yoyejWwyI7czo0OiJ0eXBlIjtzOjE6IjMi
O3M6NzoiYWRtaW5pZCI7czoxOiIxIjtzOjEyOiJkaXNwbGF5b3JkZXIiO2k6
MDt9aToxO2E6NTp7czo0OiJuYW1lIjtzOjQ6Im1haW4iO3M6NDoibWVudSI7
czo4OiLRq9XC1tDQxCI7czo0OiJ0eXBlIjtzOjE6IjYiO3M6NzoiYWRtaW5p
ZCI7czoxOiIwIjtzOjEyOiJkaXNwbGF5b3JkZXIiO2k6MDt9fSI7fXM6Nzoi
dmVyc2lvbiI7czo1OiI2LjAuMCI7czo1OiJob29rcyI7YToxOntpOjA7YTo0
OntzOjk6ImF2YWlsYWJsZSI7czoxOiIxIjtzOjU6InRpdGxlIjtzOjEwOiJn
cm91cG1lZGFsIjtzOjExOiJkZXNjcmlwdGlvbiI7czoyOToi08O7p7XIvLbR
q9XC0OjSqrG+ubPX07XE1qez1iEiO3M6NDoiY29kZSI7czo3MjM6ImlmKEBm
aWxlX2V4aXN0cyhESVNDVVpfUk9PVC4nL3BsdWdpbnMvbWVkYWxjZW50ZXIv
Y29uZmlnLmNmZy5waHAnKSAmJiBAaW5jbHVkZShESVNDVVpfUk9PVC4nL3Bs
dWdpbnMvbWVkYWxjZW50ZXIvY29uZmlnLmNmZy5waHAnKSkgewkNCgkNCglp
ZigkY2VudGVyc2V0Wydncm91cCddKSB7DQoJCUByZXF1aXJlX29uY2UoRElT
Q1VaX1JPT1QuJy9wbHVnaW5zL21lZGFsY2VudGVyL21lZGFsY2VudGVyLmZ1
bmMucGhwJyk7CQkNCgkJDQoJCWlmKCRtZWRhbHMgPSBnZXRNZWRhbENhY2hl
KCdncm91cCcpKSB7DQoJCQlpZighaXNzZXQoJHBvc3RbJ21lZGFscyddKSB8
fCAhaXNfYXJyYXkoJHBvc3RbJ21lZGFscyddKSkgJHBvc3RbJ21lZGFscydd
ID0gYXJyYXkoKTsNCgkJCQ0KCQkJZm9yZWFjaCgkbWVkYWxzIGFzICRtZWRh
bCkgewkJCQkNCgkJCQlpZihpbnR2YWwoJG1lZGFsWydncm91cGlkJ10pID09
ICRwb3N0Wydncm91cGlkJ10pIHsNCgkJCQkJJHBvc3RbJ21lZGFscyddW10g
PSAkbWVkYWw7DQoJCQkJCS8vJGdyb3VwX21lZGFsc1tdID0gJG1lZGFsOw0K
CQkJCQkvL2FycmF5X3B1c2goJHBvc3RbJ21lZGFscyddLCRtZWRhbCk7CQkJ
DQoJCQkJfQ0KCQkJfQ0KLy8JCQlpZigkZ3JvdXBfbWVkYWxzKSB7DQovLwkJ
CQkkcG9zdFsnbWVkYWxzJ10gPSBhcnJheV9tZXJnZSgkcG9zdFsnbWVkYWxz
J10sICRncm91cF9tZWRhbHMpOw0KLy8JCQl9CQkJCQ0KCQl9DQoJfQ0KfSI7
fX19
]]></import>
</root>02.upload\include\crons\medalcenter.inc.php复制内容到剪贴板
代码:
<?php
/**
* medalcneter.inc.php by [DST - Plugin Group]hnxxwyq
* [Discuz! Support Team]
* 2007-9-23 01:22:19
* ver 1.0
**/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
$configfile = DISCUZ_ROOT.'./plugins/medalcenter/config.cfg.php';
if(file_exists($configfile) && @include_once($configfile)) {
if($centerset['status']) {
require_once DISCUZ_ROOT.'/plugins/medalcenter/medalcenter.func.php';
//revoke outtime medal
$query = $db->query("SELECT * FROM {$tablepre}membermedal WHERE outtime >= 0 AND outtime < '$timestamp'");
while($result = $db->fetch_array($query)){
revokeMedals($result['uid'], $result['medalid']);
}
//auction medal
if($centerset['auction']) {
$medalids = $medalid = $outtimes = array();
$query = $db->query("SELECT medalid, outtime FROM {$tablepre}medals WHERE type = 4 AND endtime > 0 AND endtime < '$timestamp'");
while($result = $db->fetch_array($query)) {
$medalids[] = $result['medalid'];
$outtimes[] = $result['outtime'];
}
if($medalids && $centerset['extcreditid']) {
foreach($medalids as $key => $medalid) {
/*
$query = $db->query("SELECT m1.uid, m1.medalid FROM {$tablepre}memberprice AS m1 " .
"WHERE m1.medalid in ($medalid) AND price = (SELECT MAX(m2.price) FROM {$tablepre}memberprice AS m2 WHERE m1.medalid = m2.medalid)");
*/
// $query = $db->query("SELECT m1.uid, m1.medalid " .
// "FROM (SELECT * FROM {$tablepre}memberprice AS m2 WHERE m2.medalid in ($medalid) ORDER BY m2.price DESC) AS m1 " .
// "GROUP BY m1.medalid");
$query = $db->query("SELECT mp.uid, mp.price, m.extcredits{$centerset['extcreditid']} " .
"FROM {$tablepre}memberprice AS mp " .
"LEFT JOIN {$tablepre}members AS m ON mp.uid = m.uid " .
"WHERE mp.medalid = '$medalid' ORDER BY mp.price DESC ");
while($result = $db->fetch_array($query)){
if($result['extcredits'.$centerset['extcreditid']] >= $result['price']) {
grantMedals($result['uid'], $medalid, $outtimes[$key]);
updatecredits($result['uid'], array($centerset['extcreditid'] => $result['price']), -1);
break;
}
}
$db->query("DELETE FROM {$tablepre}memberprice WHERE medalid =" . $medalid);
$db->query("UPDATE {$tablepre}medals SET endtime = '0', type = 3, price = '0' WHERE medalid = '$medalid'");
}
}
}
getMedalCache('noread', true);
}
}
?>03.upload\plugins\medalcenter\config.cfg.php复制内容到剪贴板
代码:
<?php
/*this is the MedalCenter config file!*/
$centerset = array (
'status' => '0',
'artificially' => '0',
'trade' => '0',
'auction' => '0',
'auto' => '0',
'group' => '0',
)
?>04.upload\plugins\medalcenter\main.inc.php复制内容到剪贴板
代码:
<?php
/**
* main.php by [DST - Plugin Group]duziliulang
* [Discuz! Support Team]
* 2007-9-23 01:22:19
* ver 1.0
**/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
if(!$discuz_uid) {
showmessage('not_loggedin', NULL, 'HALTED');
}
require_once DISCUZ_ROOT.'/plugins/medalcenter/medalcenter.func.php';
include_once language('medals');
$configfile = DISCUZ_ROOT.'./plugins/medalcenter/config.cfg.php';
if(!file_exists($configfile)) {
showmessage($lang['config_not_exist'], $indexname);
}
require_once $configfile;
if(!$centerset['status']) {
showmessage($lang['center_closed'], $indexname);
}
if($centerset['arti_admins'][$adminid]) {
$artiallow = true;
} else {
$artoallow = false;
}
define('MEDALIMG', 'images/common/');
$phpself = $boardurl . $BASESCRIPT . '?identifier=' . $identifier . '&module=' . $module;
$discuz_medal = '';
$query = $db->query("SELECT medals FROM {$tablepre}memberfields WHERE uid = '$discuz_uid' LIMIT 0,1");
$discuz_medals = explode("\t", $db->result($query, 0));
@include_once DISCUZ_ROOT.'./forumdata/cache/cache_medals.php';
foreach($discuz_medals as $mid) {
if(isset($_DCACHE['medals'][$mid])) {
$discuz_medal .= '<img src="'.MEDALIMG.$_DCACHE['medals'][$mid]['image'].'" alt="'.$_DCACHE['medals'][$mid]['name'].'" /> ';
}
}
if(!in_array($action, array('trade', 'artificially', 'auction', 'order'))) {
$action = 'order';
}
$headername = $lang['medal_'.$action];
$list_num = 10;
$page = max(1, intval($page));
$start_limit = ($page - 1) * $list_num;
if(in_array($action, array('trade', 'artificially', 'auction'))){
$medals = $medal = array();
$medals = getMedalCache($action);
if($medalid) {
$tmp = $medals[$medalid];
$medals = array();
$medals[$medalid] = $tmp;
} elseif($medalcount = count($medals)) {
$medals = array_splice($medals, $start_limit, $list_num);
}
$medalnum = 0;
if(!empty($medals)){
foreach($medals as $id => $medal) {
$medals[$id]['image'] = MEDALIMG.$medal['image'];
$medals[$id]['enddate'] = $medal['endtime'] ? strftime('%Y-%m-%d', $medal['endtime']) : '';
$medalnum++;
}
}
}
if($action == 'trade') {
if(!$centerset['trade']) {
showmessage($lang['trade_closed'], $phpself);
}
if($operation) {
if(!$medalid || !is_numeric($medalid)) {
showmessage($lang['no_set_medalid'], $phpself.'&action='.$action);
}
if($medal = $medals[$medalid]) {
if(${'extcredits'.$centerset['extcreditid']} < $medal['price']) {
showmessage($lang['error_exteredit'], $phpself.'&action='.$action);
}
grantMedals($discuz_uid, $medal['medalid'], $medal['outtime'], true);
updatecredits($discuz_uid, array($centerset['extcreditid'] => $medal['price']), -1);
showmessage($lang['trade_succeed'], $phpself.'&action='.$action);
} else {
showmessage($lang['no_exists_medalid'], $phpself.'&action='.$action);
}
}
} elseif($action == 'artificially') {
if(!$centerset['artificially']) {
showmessage($lang['artificially_closed'], $phpself);
}
if(!$artiallow) {
showmessage($lang['access_denied'], $phpself);
}
$membermedals = $member = array();
if(submitcheck('usersubmit') || $uid){
$where = '';
if($searchname) {
$where = "m.username = '$searchname'";
} elseif($uid) {
$where = "m.uid = '$uid'";
}
if($where) {
$query = $db->query("SELECT m.uid, m.username, mf.medals FROM {$tablepre}memberfields mf, {$tablepre}members m WHERE $where AND m.uid = mf.uid LIMIT 0,1");
if($member = $db->fetch_array($query)){
$uid = $member['uid'];
$membermedals = $member['medals'] ? explode("\t", $member['medals']) : array();
}
}
}
if($operation && $uid) {
if(!$medalid || !is_numeric($medalid)) {
showmessage($lang['no_set_medalid'], $phpself.'&action='.$action.'&operation='.$operation.'&uid='.$uid);
}
if($medal = $medals[$medalid]) {
if($operation == 'grant') {
grantMedals($uid, $medal['medalid'], $medal['outtime']);
showmessage($lang['grant_succeed'], $phpself.'&action='.$action.'&uid='.$uid);
} elseif($operation == 'revoke') {
revokeMedals($uid, $medal['medalid']);
showmessage($lang['revoke_succeed'], $phpself.'&action='.$action.'&uid='.$uid);
}
} else {
showmessage($lang['no_exists_medalid'], $phpself.'&action='.$action);
}
}
} elseif($action == 'auction') {
if(!$centerset['auction']) {
showmessage($lang['auction_closed'], $phpself);
}
if($operation) {
if(!$medalid || !is_numeric($medalid)) {
showmessage($lang['no_set_medalid'], $phpself.'&action='.$action);
}
if($medals[$medalid]['endtime'] < $timestamp) {
showmessage($lang['error_endtime'], $phpself.'&action='.$action);
}
if(submitcheck('auctionsubmit')) {
if(!$newprice || !($newprice = intval($newprice))) {
showmessage($lang['error_price_1']);
}
if(${'extcredits'.$centerset['extcreditid']} < $newprice) {
showmessage($lang['error_exteredit']);
}
$query = $db->query("SELECT MAX(price) FROM {$tablepre}memberprice WHERE medalid = '$medalid'");
if(!$maxprice = $db->result($query, 0)) {
$maxprice = $medals[$medalid]['price'];
}
if($newprice <= intval($maxprice)) {
showmessage($lang['error_price_2']);
}
$db->query("DELETE FROM {$tablepre}memberprice WHERE medalid = '$medalid' AND uid = '$discuz_uid'");
$db->query("INSERT INTO {$tablepre}memberprice (uid, username, medalid, price, pricetime)" .
"VALUES ('$discuz_uid', '$discuz_user', '$medalid', '$newprice', '$timestamp')");
}
$list_num = 10;
$listpage = max(1, intval($listpage));
$start_limit = ($listpage - 1) * $list_num;
$query = $db->query("SELECT COUNT(*) FROM {$tablepre}memberprice WHERE medalid = '$medalid'");
$usercount = $db->result($query, 0);
$usermultipage = str_replace('page=', '&listpage=', multi($usercount, $list_num, $page, "$phpself&action=$action&operation=$operation&medalid=$medalid"));
$auctioninfos = $auctioninfo = array();
$query = $db->query("SELECT * FROM {$tablepre}memberprice WHERE medalid = '$medalid' ORDER BY pricetime DESC LIMIT $start_limit,$list_num");
while($auctioninfo = $db->fetch_array($query)) {
$auctioninfo['pricetime'] = gmdate("$dateformat $timeformat", $auctioninfo['pricetime'] + $_DCACHE['settings']['timeoffset'] * 3600);
$auctioninfos[] = $auctioninfo;
}
}
} elseif($action == 'order') {
if((!$centerset['cache_hour'] && !is_numeric($centerset['cache_hour'])) || (ceil($centerset['cache_hour']) < 0)) {
$centerset['cache_hour'] = 2;
}
$membermedals = array();
if($orderby == '3' || $orderby == '4') {
$memberMedals = getMemberMedalCache(ceil($centerset['cache_hour']),'credit');
} else {
$memberMedals = getMemberMedalCache(ceil($centerset['cache_hour']),'default');
}
if($orderby == '2' || $orderby == '4') {
$memberMedals = array_reverse($memberMedals, true);
}
if($medalcount = count($memberMedals)) {
$members = array_splice($memberMedals, $start_limit, $list_num);
}
}
$multipage = multi($medalcount, $list_num, $page, "$phpself&action=$action".($uid ? "&uid=$uid" : ''));
include template('medals_index');
?>05.upload\plugins\medalcenter\medalcenter.func.php复制内容到剪贴板
代码:
<?php
/**
* medalcenter.func.php by [DST - Plugin Group]duziliulang
* [Discuz! Support Team]
* 2007-9-25 11:18:46
* ver 1.0
**/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
if(!function_exists('array_combine')) {
function array_combine($keys, $values) {
$result = array();
if(is_array($keys) && is_array($values)) {
if(count($keys) >= count($values)) {
foreach($values as $value) {
$key = $key ? next($keys) : current($keys);
$result[] = array_combine($key, $value);
}
} else {
foreach($keys as $key) {
$value = $value ? next($values) : current($values);
$result[] = array_combine($key, $value);
}
}
} elseif(!is_array($keys) && !is_array($values)) {
$keys = is_string($keys) ? '\''.addcslashes($keys, '\'\\').'\'' : $keys;
$values = (!preg_match("/^\-?[1-9]\d*$/", $values) || strlen($values) > 12) ? '\''.addcslashes($values, '\'\\').'\'' : $values;
$result = array($keys => $values);
} elseif(is_array($keys) && !is_array($values)) {
foreach($keys as $key) {
$result[] = array_combine($key, $values);
}
} elseif(!is_array($keys) && is_array($values)) {
foreach($values as $value) {
$result[] = array_combine($keys, $value);
}
}
return $result;
}
}
function grantMedals($uids, $medalids, $outtimes, $system = false) {
global $db, $tablepre, $timestamp, $discuz_userss, $onlineip;
if(!$uids || !$medalids || !$outtimes) return;
$where = $medalsnew = '';
$user = $system ? 'MedalCenter' : $discuz_userss;
$logs = array();
if(is_array($uids)) { //array
$where = 'WHERE m.uid in(\'' . implode('\', \'', $uids). '\')';
} else {
$where = 'WHERE m.uid = \'' . $uids .'\'';
}
$medalids = array($medalids);
$outtimes = array($outtimes);
$outtimes = array_combine($medalids, $outtimes); //array(medalid=>outtime)
$query = $db->query("SELECT m.uid, m.username, mf.medals " .
"FROM {$tablepre}memberfields mf, {$tablepre}members m " .
"$where AND m.uid=mf.uid");
while($result = $db->fetch_array($query)) {
$oldmedalids = array();
if($result['medals']) {
$oldmedalids = explode("\t", $result['medals']);
$medalsnew = implode("\t", array_unique(array_merge_recursive($oldmedalids, $medalids)));
} else {
$medalsnew = implode("\t", $medalids);
}
$db->query("UPDATE {$tablepre}memberfields SET medals='$medalsnew' WHERE uid='". $result['uid'] ."'");
//log
foreach(array_diff($medalids, $oldmedalids) as $medalid) {
if($outtimes[$medalid] != -1) {
$db->query("INSERT INTO {$tablepre}membermedal (uid, medalid, outtime) VALUES ('". $result['uid'] ."', '$medalid', '". ($timestamp + $outtimes[$medalid] * 24 * 3600) ."')");
}
$logs[] = dhtmlspecialchars("$timestamp\t$user\t$onlineip\t$result[username]\t$medalid\tgrant\tMedalCenter grant");
}
}
//write logs files
writelog('medalslog', $logs);
}//End function grantMedal
function revokeMedals($uids, $medalids, $system = false) {
global $db, $tablepre, $timestamp, $discuz_userss, $onlineip;
if(!$uids || !$medalids) return;
$where = $medalsnew = '';
$user = $system ? 'MedalCenter' : $discuz_userss;
$logs = array();
if(is_array($uids)) { //array
$where = 'WHERE m.uid in(\'' . implode('\', \'', $uids). '\')';
} else {
$where = 'WHERE m.uid = \'' . $uids .'\'';
$medalids = array($medalids);
}
$query = $db->query("SELECT m.uid, m.username, mf.medals " .
"FROM {$tablepre}memberfields mf, {$tablepre}members m " .
"$where AND m.uid=mf.uid");
while($result = $db->fetch_array($query)) {
$oldmedalids = array();
if($result['medals']) {
$oldmedalids = explode("\t", $result['medals']);
$medalsnew = implode("\t", array_diff($oldmedalids, $medalids));
} else {
continue;
}
$db->query("UPDATE {$tablepre}memberfields SET medals='$medalsnew' WHERE uid='". $result['uid'] ."'");
//log
foreach(array_intersect($oldmedalids, $medalids) as $medalid) {
$db->query("DELETE FROM {$tablepre}membermedal WHERE uid='". $result['uid'] ."' AND medalid='$medalid'");
$logs[] = dhtmlspecialchars("$timestamp\t$user\t$onlineip\t$result[username]\t$medalid\trevoke\tMedalCenter revoke");
}
}
//write logs files
writelog('medalslog', $logs);
}//End function revokeMedals
function medalmessgae() {
}//End function medalmessgae
function getMedalCache($type, $updatecache=false){
global $centerset, $db, $tablepre;
if(!trim($type)) return;
$expiration = '';
$_USERMEDAL = $_USERCREDITMEDAL = array();
if($updatecache || (@!include(DISCUZ_ROOT.'forumdata/cache/cache_medals_type.php'))) {
//require_once './include/common.inc.php';
$data = array();
$query = $db->query("SELECT * FROM {$tablepre}medals WHERE available = 1");
while ($row = $db->fetch_array($query)) {
switch (intval($row['type'])) {
case 1:
$data['_trade'][$row['medalid']] = $row;
break;
case 2:
$data['_group'][$row['medalid']] = $row;
break;
case 3:
$data['_artificially'][$row['medalid']] = $row;
break;
case 4:
$data['_auction'][$row['medalid']] = $row;
break;
}
}
require_once DISCUZ_ROOT.'./include/cache.func.php';
writetocache('medals_type', '', getcachevars($data));
if($type != 'noread') {
include(DISCUZ_ROOT.'./forumdata/cache/cache_medals_type.php');
}
}
switch ($type) {
case 'trade':
return $_trade;
case 'group':
return $_group;
case 'artificially':
return $_artificially;
case 'auction':
return $_auction;
default:
return false;
}
}//End function getMemberMedalCache
function getMemberMedalCache($hour, $type='default', $updatecache=false){
global $centerset, $db, $tablepre;
$expiration = '';
$_USERMEDAL = $_USERCREDITMEDAL = array();
if($updatecache || (@!include(DISCUZ_ROOT.'forumdata/cache/cache_user_medal.php')) || intval($expiration) < time() || intval($expiration) > time() + $hour * 3600) {
//require_once './include/common.inc.php';
$query = $db->query("SELECT medalid FROM {$tablepre}medals WHERE type = 3 AND available = 1");
while($creditmedal = $db->fetch_array($query)){
$creditmedals[$creditmedal['medalid']] = $creditmedal['medalid'];
}
$data = array();
$data['expiration'] = $hour * 3600 + time();
$query = $db->query("SELECT m.uid, m.username, mf.medals " .
"FROM {$tablepre}members m " .
"LEFT JOIN {$tablepre}memberfields mf ON mf.uid = m.uid " .
"WHERE mf.medals <> '' ORDER BY CHAR_LENGTH(mf.medals) DESC");
while ($row = $db->fetch_array($query)) {
$data['_USERMEDAL'][] = $row;
foreach(explode("\t", $row['medals']) as $key => $medalid) {
if(isset($creditmedals[$medalid])) {
$data['_USERCREDITMEDAL'][] = $row;
break;
}
}
}
require_once DISCUZ_ROOT.'./include/cache.func.php';
writetocache('user_medal', '', getcachevars($data));
if($type != 'noread') {
include(DISCUZ_ROOT.'./forumdata/cache/cache_user_medal.php');
}
}
if($type == 'default') {
return $_USERMEDAL;
} elseif($type == 'credit') {
return $_USERCREDITMEDAL;
}
}//End function getMemberMedalCache
function parseMedal($medalStr, $imgpath){
global $_DCACHE;
foreach($medalStr = explode("\t", $medalStr) as $key => $medalid) {
if(isset($_DCACHE['medals'][$medalid])) {
echo ' <img src="'.$imgpath.$_DCACHE['medals'][$medalid]['image'].'" alt="'.$_DCACHE['medals'][$medalid]['name'].'" /> ';
}
}
}//End function parseMedal
?>06.upload\plugins\medalcenter\settings.inc.php复制内容到剪贴板
代码:
<?php
/**
* settings.php by [DST - Plugin Group]duziliulang
* [Discuz! Support Team]
* 2007-9-26 12:35:58
* ver 1.0
**/
if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP') || $adminid != 1) {
exit('Access Denied');
}
//http://localhost/dz60/admincp.php?action=plugins&identifier=DST_MedalCenter&mod=settings&method=system
//$phpself = $boardurl . $BASESCRIPT . '?' .$_SERVER['QUERY_STRING']; //莉ゅンurl
$phpself = $boardurl . $BASESCRIPT . '?action=' . $action . '&identifier=' . $identifier . '&mod=' . $mod; //莉ゅンurl
$configfile = DISCUZ_ROOT.'./plugins/medalcenter/config.cfg.php'; //いみ皌竚ゅン
$centerset = array(); //﹍て砞竚计舱
if(!file_exists($configfile)) {
writeCfg();
}
require($configfile);
shownav('吃彻いみ籓砞竚');
?>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="tableborder">
<tr class="header"><td>吃彻いみ砞竚翾旧</td></tr>
<tr><td>
<input type="button" class="button" value="吃彻いみ么参砞﹚" onclick="window.location.href='<?=$phpself?>&method=system'">
<input type="button" class="button" value="吃彻砞﹚" onclick="window.location.href='<?=$phpself?>&method=medal'">
<input type="button" class="button" value="у秖肚吃彻" onclick="window.location.href='<?=$phpself?>&method=upload'">
<!--<input type="button" class="button" value="笆箋祇/Μ砞﹚" onclick="window.location.href='<?=$phpself?>&method=auto'">-->
</td></tr>
</table>
<?php
if(!$method) {
showtips('<ul><li>狦眤Τぐ或某┪BUG,叫<a href="http://www.discuzsupport.net" target="_blank" style="color: #666"><b>[Discuz! Support Team]</b></a>﹛よ阶韭は鮔!</ul>' .
'<ul><li><A href="http://www.discuzsupport.net/forum-3-1.html" target=_blank>' .
'杆程みDiscuz!础ン
杆程竒ㄥDiscuz!础ン
硂ち[DST]眤ЧΘ</A>' .
'
斑﹛よ粄靡崩滤刮钉Discuz! Support Team </ul>');
} elseif($method == 'system') {
if(!submitcheck('centersubmit')) {
$checks = array();
$check = array('status', 'artificially', 'trade', 'auction', 'group', 'auto');
foreach($check as $val) {
$checks[$val] = radioChick($centerset[$val]);
}
$checked = '';
$admins = array();
$query = $db->query("SELECT a.admingid, u.grouptitle FROM {$tablepre}admingroups a " .
"LEFT JOIN {$tablepre}usergroups u ON u.groupid=a.admingid " .
"ORDER BY a.admingid");
while($admins = $db->fetch_array($query)) {
$checked .= '<input type="checkbox" name="newcenterset[arti_admins]['.$admins['admingid'].']" value="yes" '.(isset($centerset['arti_admins'][$admins['admingid']]) ? 'checked' : '').'/>'. $admins['grouptitle'];
}
$extcredits = array();
@require(DISCUZ_ROOT.'./forumdata/cache/cache_settings.php');
$extcredits = $_DCACHE['settings']['extcredits'];
unset($_DCACHE['settings']);
$selected = '<select name="newcenterset[extcreditid]">';
foreach($extcredits as $key => $val) {
$selected .= '<option value="'.$key.'" '.($centerset['extcreditid'] == $key ? 'selected' : '').'>'.$val['title'].'</option>';
}
$selected .= '</select>';
?>
<form method="post" action="<?=$phpself?>&method=system">
<input type="hidden" name="formhash" value="<?=FORMHASH?>">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="tableborder">
<tr class="header"><td colspan="2">吃彻いみ么参砞﹚</td></tr>
<tr><td class="altbg1" width="40%">吃彻いみ币ノ</td><td><input type="radio" name="newcenterset[status]" value="1" <?=$checks['status'][1]?> />币ノ <input type="radio" name="newcenterset[status]" value="0" <?=$checks['status'][0]?> />闽超</td></tr>
<tr><td class="altbg1">箋祇家遏币ノ</td><td><input type="radio" name="newcenterset[artificially]" value="1" <?=$checks['artificially'][1]?> />币ノ <input type="radio" name="newcenterset[artificially]" value="0" <?=$checks['artificially'][0]?> />闽超</td></tr>
<tr><td class="altbg1">ユ家遏币ノ</td><td><input type="radio" name="newcenterset[trade]" value="1" <?=$checks['trade'][1]?> />币ノ <input type="radio" name="newcenterset[trade]" value="0" <?=$checks['trade'][0]?> />闽超</td></tr>
<tr><td class="altbg1">╃芥家遏币ノ</td><td><input type="radio" name="newcenterset[auction]" value="1" <?=$checks['auction'][1]?> />币ノ <input type="radio" name="newcenterset[auction]" value="0" <?=$checks['auction'][0]?> />闽超</td></tr>
<tr><td class="altbg1">ノめ单家遏币ノ</td><td><input type="radio" name="newcenterset[group]" value="1" <?=$checks['group'][1]?> />币ノ <input type="radio" name="newcenterset[group]" value="0" <?=$checks['group'][0]?> />闽超</td></tr>
<tr><td class="altbg1">ノめ逼︽篯絯秅戳()</td><td><input type="text" name="newcenterset[cache_hour]" value="<?=$centerset['cache_hour']?>" size="5" /></td></tr>
<!--<tr><td class="altbg1">笆箋祇家遏币ノ
(惠璶睰璸购ヴ叭や)</td><td><input type="radio" name="newcenterset[auto]" value="1" <?=$checks['auto'][1]?> />币ノ <input type="radio" name="newcenterset[auto]" value="0" <?=$checks['auto'][0]?> />闽超</td></tr>-->
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="tableborder">
<tr class="header"><td colspan="2">も笆箋祇砞﹚</td></tr>
<tr><td class="altbg1" width="40%">箋祇舦</td><td><?=$checked?></td></tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="tableborder">
<tr class="header"><td colspan="2">ユ/╃芥砞﹚</td></tr>
<tr><td class="altbg1" width="40%">ノㄓユ┪╃芥縩だ</td><td><?=$selected?></td></tr>
</table>
<center><input class="button" type="submit" name="centersubmit" value="<?=$lang['submit']?>"></center>
</form>
<?php
} else {
foreach($newcenterset as $key => $val) {
$centerset[$key] = $val;
}
writeCfg();
cpmsg('砞竚Θ!', $phpself.'&method=system');
}
} elseif($method == 'medal') {
if(!submitcheck('medalsubmit') && !submitcheck('changesubmit')) {
//1.ユ吃彻 2.╰参单吃彻 3.篴臕吃彻 4.╃芥吃彻
$medaltypes = array(1=>'ユ吃彻', 2=>'╰参单吃彻', 3=>'篴臕吃彻', 4=>'╃芥吃彻');
$type = $type ? $type : 1; //讽玡吃彻摸
$selects = '<option value="">吃彻摸</option>';
foreach($medaltypes as $key => $val) {
$selects .= '<option value="' . $key . '">' . $val . '</option>';
}
$selects .= '</select>';
$limit = 10; //–陪ボ计
$page = max(1, intval($page));
$start_limit = ($page - 1) * $limit;
$query = $db->query("SELECT COUNT(*) FROM {$tablepre}medals WHERE type = '$type'");
$num = $db->result($query, 0);
$usergroups = array();
require(DISCUZ_ROOT.'./forumdata/cache/cache_usergroups.php');
foreach($_DCACHE['usergroups'] as $key => $val) {
$usergroups[$key] = $val['grouptitle'];
}
unset($_DCACHE['usergroups']);
$medals = '';
$query = $db->query("SELECT * FROM {$tablepre}medals WHERE type = '$type' LIMIT $start_limit, $limit");
while($medal = $db->fetch_array($query)) {
$medal['endtime'] = $medal['endtime'] ? strftime('%Y-%m-%d', $medal['endtime']) : '';
$checkavailable = $medal['available'] ? 'checked' : '';
$selected = '<select name="groupids['.$medal['medalid'].']"><option value="">匡拒ノめ舱</option>';
foreach($usergroups as $key => $val) {
$selected .= '<option value="'.$key.'" '.($medal['groupid'] == $key ? 'selected' : '').'>'.$val.'</option>';
}
$selected .= '</select>';
$medals .= "<tr align=\"center\">\n".
"<td class=\"altbg1\" ><input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$medal[medalid]\"></td>\n".
"<td class=\"altbg2\" ><input class=\"checkbox\" type=\"checkbox\" name=\"change[]\" value=\"$medal[medalid]\"></td>\n".
"<td class=\"altbg1\"><input type=\"text\" size=\"20\" name=\"name[$medal[medalid]]\" value=\"$medal[name]\"></td>\n".
"<td class=\"altbg2\"><input type=\"text\" size=\"5\" name=\"outtime[$medal[medalid]]\" value=\"$medal[outtime]\"></td>\n".
(($type == 1||$type == 4) ? "<td class=\"altbg1\"><input type=\"text\" size=\"5\" name=\"price[$medal[medalid]]\" value=\"$medal[price]\"></td>\n" : "<input type=\"hidden\" name=\"price[$medal[medalid]]\" value=\"$medal[price]\">").
(($type == 2) ? "<td class=\"altbg1\">$selected</td>\n" : "<input type=\"hidden\" name=\"groupids[$medal[medalid]]\" value=\"$medal[groupid]\">").
(($type == 4) ? "<td class=\"altbg2\"><input type=\"text\" size=\"10\" name=\"endtime[$medal[medalid]]\" value=\"$medal[endtime]\" onclick=\"showcalendar(event, this)\"></td>\n" : "<input type=\"hidden\" name=\"endtime[$medal[medalid]]\" value=\"$medal[endtime]\">").
"<td class=\"altbg2\"><input class=\"checkbox\" type=\"checkbox\" name=\"available[$medal[medalid]]\" value=\"1\" $checkavailable></td>\n".
"<td class=\"altbg1\"><input type=\"text\" size=\"20\" name=\"image[$medal[medalid]]\" value=\"$medal[image]\">\n".
"<img src=\"images/common/$medal[image]\"></td></tr>\n";
}
$multipage = multi($num, $limit, $page, $phpself.'&method=medal&type='.$type);
?>
<script language="JavaScript" type="text/javascript">
function jumpchange(objselect) {
if(objselect.value != ''){
window.location.href = "<?=$phpself?>&method=medal&type=" + objselect.value;
}
}
function checkchange(){
var objselect = document.getElementById('changetype');
if(objselect.value != ''){
return true;
}else{
alert('匡拒э跑摸');
objselect.focus();
return false;
}
}
</script>
<script type="text/javascript" src="include/javascript/calendar.js"></script>
<form method="post" action="<?=$phpself?>&method=medal">
<input type="hidden" name="formhash" value="<?=FORMHASH?>">
<input type="hidden" name="type" value="<?=$type?>">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="tableborder">
<tr class="header"><td colspan="8"><?=$medaltypes[$type]?><select name="typeselect" onchange="jumpchange(this)"><?=$selects?></td></tr>
<tr align="center" class="category">
<td><input class="checkbox" type="checkbox" name="deletechkall" class="category" onclick="checkall(this.form, 'delete', 'deletechkall')"><?=$lang['del']?></td>
<td><input class="checkbox" type="checkbox" name="changechkall" class="category" onclick="checkall(this.form, 'change', 'changechkall')">э摸?</td>
<td><?=$lang['name']?></td>
<td>筁戳丁(ぱ计)</td>
<?if($type == 1){?><td>基</td><?}elseif($type == 2){?><td>ノめ舱id</td><?}elseif($type == 4){?><td>基</td><td>篒丁</td><?}?>
<td><?=$lang['available']?></td>
<td><?=$lang['medals_image']?></td>
</tr>
<?=$medals?>
</table><?=$multipage?>
<center><select name="changetype" id="changetype"><?=$selects?><input class="button" type="submit" name="changesubmit" value="э跑摸" onclick="return checkchange();">
<input class="button" type="submit" name="medalsubmit" value="<?=$lang['submit']?>"></center>
</form>
<?
} elseif($medalsubmit) {
require_once DISCUZ_ROOT.'/plugins/medalcenter/medalcenter.func.php';
if(is_array($delete)) {
$ids = $comma = '';
foreach($delete as $id) {
$ids .= "$comma'$id'";
$comma = ',';
}
//delete user medals
&