查看完整版本: 勋章中心 v1.0 for Discuz! 6.0.0【2008-1-6更新版】

伊泽浩 2008-1-6 19:10

勋章中心 v1.0 for Discuz! 6.0.0【2008-1-6更新版】

【DST】勋章中心 v1.0 for Discuz! 6.0.0正式版说明文件
一、版权信息:
-----------------------------------------------
插件名称:DST_MedalCenter
作者:【DST】独自流浪
【DST】ID:hnxxwyq
支持版本:Discuz! 6.0.0正式版
支持站点:[url]www.17dst.com[/url]
演示站点:[url]www.32dm.com[/url]

感谢:
[DST]末夜孤魂 [DST]小铭铭 [DST]LiHu 在制作中测试和及时提供BUG和建议
[DST]伊泽浩 [DST]末夜孤魂 整理文档
------------------------------------------------

更新记录
2008-1-6
修复勋章一天后自动消失的问题

[color=Red][b]说明:我们努力尝试修复,但无奈在本地始终没有测试出此bug,十分感谢[url=http://www.17dst.com/space.php?action=viewpro&uid=10896]Eiffel[/url]帮助我们找到此bug并修复。
并不是我们不负责地不修复此bug,特此说明。[/b][/color]

升级方法:
下载本次更新包(除了你的配置文件/plugins/medalcenterconfig.cfg.php)全部覆盖即可


2007-10-30
修复勋章购买不减少积分的问题
修复等级勋章在linux下白屏的问题
修复排行信息不正常的问题
修复拍卖勋章日期不正常的提示问题
计划任务的优化

升级方法:
下载本次更新包(除了你的配置文件/plugins/medalcenterconfig.cfg.php)全部覆盖即可


2007-10-27
修复竞拍以后积分减少扣取变负的问题
修复购买/颁发出现白屏幕以及报错的问题
修复函数未定义错误
修复只有在头贴显示系统等级勋章的问题(插件钩子的更新)
修复会员勋章记录缓存时间更新问题
2007-10-27以前的包请下载本次更新包(除了你的配置文件/plugins/medalcenterconfig.cfg.php)全部覆盖即可修复以上问题

------------------------------------------------

功能说明:
1、内置手动颁发/回收(荣誉勋章)、勋章商店、勋章拍卖(系统拍卖特殊勋章,增加可玩性)、系统等级勋章4大功能模块,可根据论坛需要选择开放的功能模块。

2、后台批量上传勋章功能,免去您的勋章更新烦恼。

3、个性化配置勋章种类,让您DIY自己的勋章功能

4、勋章排名更可靠,综合类勋章排名展现会员个性喜好,荣誉勋章排名让您更了解会员对社区做出贡献的多少!

------------------------------------------------

文件说明
medalcenter
◇upload--------------------------根目录文件
  •plugins------------------------DZ插件目录文件
     - medalcenter----------------勋章中心核心代码文件包
  •forumdata----------------------DZ论坛数据保存文件
     - dacxml---------------------DAC安装程序检测包(dac安装需要)
  •include-----------------------dz程序包含文件目录
     - crons----------------------计划任务文件目录
  •templates----------------------DZ模板包
     - default------------------默认模板包,内含勋章中心模块文件
  •mc_install.php--------------不用DAC安装的自动安装文件
◇discuz_plugin_DST_MedalCenter.txt----------勋章中心导入文件

------------------------------------------------

安装方法(三方法选其一)(凡自动安装或手动安装,都有需要手动改的地方,请参看下文)
[b]一、手动安装:[/b]
[quote]
1、上传upload下所有文件到指定目录
2、数据库升级:将以下内容复制到数据库升级里并执行……[code]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'
);[/code]3、导入勋章中心
全选并复制discuz_plugin_DST_MedalCenter.txt里的内容,进入后台——扩展设置——插件管理——导入插件数据
填上复制内容后确定即可
4、手动修改部分很简单(系统勋章需要这一部的支持,可选),因为3种安装都需要进行本修改,因此,放到最后再说明,请大家注意后面内容
[/quote]

[b]二、DAC一键安装[/b]
[quote]
1、下载DAC资源包
[url]http://www.17dst.com/dacserver.php?action=show&prodid=28[/url]
您也可以直接下载本帖的附件,同样可以DAC进行安装

2、上传至论坛根目录,访问dac.php开始安装(前提是您已经安装了DAC)

——————————————————

使用DAC安装包进行一键安装之前请确定您已经安装了DAC客户端:
[url=http://www.17dst.com/dacserver.php?action=show&prodid=46]http://www.17dst.com/dacserver.php?action=show&prodid=46[/url]


相关阅读:
[url=http://www.17dst.com/dac][b]DAC介绍[/b][/color][/url]
[url=http://www.17dst.com/thread-4151-1-1.html][color=#215ca1]Tips:在DAC发布作品教程[/color][/url]
[url=http://www.17dst.com/thread-2437-1-1.html][color=#215ca1]DAC客户端试用报告[/color][/url](DAC使用图片教程)
[/quote]

[b]三、不用DAC的自动安装[/b]
[quote]
1、上传upload下所有文件到指定目录
2、在浏览器地址栏里输入http://您的网站URL/mc_install.php 并根据提示安装即可。
[/quote]

[b]四、手动修改部分(必须),如果不需要用户等级勋章可以不修改(根据不同的用户组显示不同的勋章)![/b]
[quote]
1、BBS根目录下viewthread.php文件
查找:[code]$firstpid, $videoopen;[/code]在$videoopen后加 ,$hooks [注意”,”和”;”的位置] 为:[code]$firstpid, $videoopen, $hooks;[/code]② 同文件下查找:[code]unset($post['medals'][$key]);
}
}
}[/code]在下面加[code]eval($hooks['DST_MedalCenter_groupmedal']);[/code]手动修改完毕
[/quote]
安装结束,后台进行设置,最后更新缓存,看看效果吧……




插件下载(DAC资源包,包括普通安装包):

[url]http://www.17dst.com/dacserver.php?action=show&prodid=28[/url]

shy9000 2008-1-6 19:22

占SF!
/plugins/medalcenterconfig.cfg.php
应该是
/plugins/medalcenter/config.cfg.php


另期待分栏的问题能早日解决!

[[i] 本帖最后由 shy9000 于 2008-1-6 19:24 编辑 [/i]]

lanhe 2008-1-6 19:57

好东西,我试试

muzi 2008-1-8 14:35

哦买嘎~~为什么我打了补丁以后 问题依旧????
真是郁闷的要死

zhangjinlu 2008-1-8 15:27

有删除方法吗?安装后数据库有问题.

vamphyri 2008-1-8 16:12

有一个问题,如果一个用户有很多种勋章,那么是都显示么?还是只显示一部份呢?
这个显示数量是否可以控制?

wyxsun 2008-1-9 20:01

现在是不是繁体(big5)版的不出了
[quote]01.upload\forumdata\dacxml\plugin\medal_center_60.xml[code]<?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>[/code]02.upload\include\crons\medalcenter.inc.php[code]<?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);
        }
}

?>[/code]03.upload\plugins\medalcenter\config.cfg.php[code]<?php
/*this is the MedalCenter config file!*/
$centerset = array (
  'status' => '0',
  'artificially' => '0',
  'trade' => '0',
  'auction' => '0',
  'auto' => '0',
  'group' => '0',
)
?>[/code]04.upload\plugins\medalcenter\main.inc.php[code]<?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'].'" />&nbsp;';
        }
}

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');

?>[/code]05.upload\plugins\medalcenter\medalcenter.func.php[code]<?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 '&nbsp;<img src="'.$imgpath.$_DCACHE['medals'][$medalid]['image'].'" alt="'.$_DCACHE['medals'][$medalid]['name'].'" />&nbsp;';
                }
        }
}//End function parseMedal
?>[/code]06.upload\plugins\medalcenter\settings.inc.php[code]<?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
                       
                        $query = $db->query("SELECT uid FROM {$tablepre}memberfields WHERE medals <> ''");
                        while($result = $db->fetch_array($query)) {
                                revokeMedals($result['uid'], $delete);
                        }
                       
                        if(file_exists(DISCUZ_ROOT . 'images/common/'.$image[$id])) {
                                @unlink(DISCUZ_ROOT . 'images/common/'.$image[$id]);
                        }
                       
                        $db->query("DELETE FROM        {$tablepre}medals WHERE medalid IN ($ids)");
                }

                if(is_array($name)) {
                        foreach($name as $id =>        $val) {
                                $outtime[$id] = !$outtime[$id] || intval($outtime[$id]) < -1 ? -1 : $outtime[$id];
                                $price[$id] = !$price[$id] || intval($price[$id]) < 0 ? 0 : $price[$id];
                                $groupids[$id] = !$groupids[$id] ? 0 : $groupids[$id];
                                $endtime[$id] = $endtime[$id] ? strtotime($endtime[$id]) : 0;
                                $db->query("UPDATE {$tablepre}medals SET name=".($name[$id] ? '\''.dhtmlspecialchars($name[$id]).'\'' : 'name').", available='$available[$id]', outtime='$outtime[$id]', price='$price[$id]', groupid='$groupids[$id]', endtime='$endtime[$id]', image=".($image[$id] ? '\''.$image[$id].'\'' : 'image')." WHERE medalid='$id'");
                        }
                }

//                if($newname != '' && $newimage != '') {
//                        $db->query("INSERT INTO        {$tablepre}medals (name, available, image) VALUES ('".dhtmlspecialchars($newname)."', '$newavailable', '$newimage')");
//                }
               
                getMedalCache('noread', true);
                getMemberMedalCache(4, 'noread', true);
                updatecache('medals');
                cpmsg('medals_succeed', $phpself.'&method=medal&type='.$type);
       
        } elseif($changesubmit) {
               
                $changetype = $changetype ? $changetype : 1;
               
                if(is_array($change)) {
                        $ids = $comma =        '';
                        foreach($change        as $id)        {
                                $ids .=        "$comma'$id'";
                                $comma = ',';
                        }
                        $db->query("UPDATE {$tablepre}medals SET type = '$changetype' WHERE medalid IN ($ids)");
                }       
               
                updatecache('medals');
                cpmsg('medals_succeed', $phpself.'&method=medal&type='.$type);
        }
} elseif($method == 'upload') {
       
        if(!submitcheck('uplaodsubmit')) {               
       
                $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>';
?>
<script type="text/javascript">
        function showfiles() {
                var testlist = document.all('files');
                var showlist = document.all('showimg');
                if(testlist != null) {        //耞琌Τ硂ID
                        if(testlist.length == undefined) {
                                showimg(showlist, testlist.value);
                        } else {
                                for(var i=0; i < testlist.length; i++) {
                                        showimg(showlist[i], testlist[i].value);
                                }
                        }
                }
        }
        function showimg(image, value) {
                if(value != '') {
                        image.src = value;
                        image.style.display = '';                       
                } else {
                        image.src = '';
                        image.style.display = 'none';
                }
        }
</script>
<form method="post" action="<?=$phpself?>&method=upload" enctype="multipart/form-data">
<input type="hidden" name="formhash" value="<?=FORMHASH?>">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="tableborder">
<tr align="center" class="category"><td>穝糤: <a href="###" onclick="newnode = $('addnewmedal2').firstChild.cloneNode(true); $('addnewmedal').appendChild(newnode)">[+]</a></td>
<td>吃彻嘿</td>
<td>吃彻币ノ</td>
<td>吃彻ゅン</td>
<td>箇凝瓜</td>
<td>吃彻摸</td>
</tr>

<tbody id="addnewmedal">
<tr align="center"><td>&nbsp;</a></td>
<td><input type="text" size="15" name="medaladd[name][]"></td>
<td><input type="checkbox" name="medaladd[available][]"></td>
<td><input type="file" name="medaladd[]" id="files" onchange="showfiles()"></td>
<td><img style="display:none" id="showimg" src=""></td>
<td align="right"><select name="medaladd[type][]" style="vertical-align: middle;"><?=$selects?></td>
</tr>
</tbody>

<tbody id="addnewmedal2" style="display: none;">
<tr align="center"><td>&nbsp;</td>
<td><input type="text" size="15" name="medaladd[name][]"></td>
<td><input type="checkbox" name="medaladd[available][]"></td>
<td><input type="file" name="medaladd[]" id="files" onchange="showfiles()"></td>
<td><img style="display:none" id="showimg" src=""></td>
<td align="right"><select name="medaladd[type][]" style="vertical-align: middle;"><?=$selects?></td>
</tr></tbody>
</table>
<center><input class="button" type="submit" name="uplaodsubmit" value="<?=$lang['submit']?>"></center>
</form>
<?php
        } else {
               
                $imgpath = DISCUZ_ROOT . 'images/common/';
                $attachpath = DISCUZ_ROOT.'/attachments/';
                $medalpath = 'medal/';
                if(!is_dir($imgpath.$medalpath)) {
                        @mkdir($imgpath.$medalpath, 0777);
                        @fclose(fopen($imgpath.$medalpath.'/index.htm', 'w'));
                }
               
                $imgs = array();
                $values = $comma = '';
                require_once DISCUZ_ROOT.'/include/post.func.php';
                if($imgs = attach_upload('medaladd')) {
                        foreach($imgs as $key => $img) {
                                if($img['attachment'] && $medaladd['name'][$key]) {
                                        @copy($attachpath.$img['attachment'], $imgpath.$medalpath.$_FILES['medaladd']['name'][$key]);                                       
                                        $medaladd['available'][$key] = $medaladd['available'][$key] ? 1 : 0;
                                        $medaladd['type'][$key] = $medaladd['type'][$key] ? $medaladd['type'][$key] : 1;
                                        $values .= $comma.'(\''.$medaladd['name'][$key].'\', \''.$medaladd['available'][$key].'\', \''.$medalpath.$_FILES['medaladd']['name'][$key].'\', \''.$medaladd['type'][$key].'\')';
                                        $comma = ',';
                                }
                                @unlink($attachpath.$img['attachment']);
                        }
                }
               
                if($values) {
                        $db->query("INSERT INTO {$tablepre}medals (name, available, image, type) VALUES $values");
                }
               
                cpmsg('medals_succeed', $phpself.'&method=upload');
        }
}
?>
</td></tr></table>


<div class="footer"><hr size="0" noshade color="#9DB3C5" width="80%">
Powered by <a href="http://www.discuzsupport.net" target="_blank" style="color: #666"><b>[Discuz! Support Team]</b></a> MedalCenter 1.0.0  by [DST - Plugin Group]hnxxwyq </div>
</body>
</html>
<?php

function radioChick($set){
        $tmp = array();
        if(!$set) {
                $tmp[0] = 'checked';
                $tmp[1] = '';
        } else {
                $tmp[1] = 'checked';
                $tmp[0] = '';
        }
        return $tmp;
}

function writeCfg() {
        global $centerset, $configfile;
        if(!function_exists(arrayeval)) {
                require DISCUZ_ROOT.'./include/cache.func.php';
        }
       
        $data = "<?php\n/*this is the MedalCenter config file!*/\n";
        $data .= '$centerset = ' . arrayeval($centerset);
        $data .= "\n?>";
       
        if($fp = fopen($configfile, 'wb+')) {
                fwrite($fp, $data);
                fclose($fp);
        } else {
                exit('check '.str_replace(DISCUZ_ROOT, '', $configfile).' is writable!');
        }
}

/* 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'
);
*/
?>[/code]07.upload\templates\default\medals.lang.php[code]<?php

// MedalCenter Language Pack for Discuz! Version 6.0.0
// Translated by Duziliulang

$lang = array
(
        'center_closed' => '眤吃彻いみ恨瞶⊿Τ币ノ叫',
        'trade_closed' => '眤吃彻坝┍恨瞶⊿Τ币ノ叫',
        'artificially_closed' => '眤箋祇恨瞶⊿Τ币ノ叫',
        'auction_closed' => '眤澈╃いみ恨瞶⊿Τ币ノ叫',
        'config_not_exist' => 'ぃ莉吃彻いみ皌竚ゅン,叫籓砞竚吃彻いみ',
        'access_denied' => '礚舦砐拜赣',
       

        'medal_center' => '吃彻いみ',
        'medal_welcome' => '舧羬吃彻いみ!',
        'medal_trade' => '吃彻坝┍',       
        'medal_artificially' => '箋祇/Μ',
        'medal_auction' => '澈╃いみ',
       
        'medal_order' => '吃彻逼︽',
       
        'member_medal_info' => 'и吃彻',
        'no_medals_info' => '﹟ゼ莉ヴ吃彻',       
       
        'medal_price' => '吃彻基',
        'medal_outtime' => '筁戳丁(ぱ计)',
        'medal_no_outtime' => 'ッぃ筁戳',
        'trade_exist' => '竒局Τ赣吃彻',
        'trade_buy' => '潦禦',
        'trade_succeed' => '潦禦吃彻Θ',
        'no_set_medalid' => '⊿Τ砞竚潦禦吃彻',
        'no_exists_medalid' => 'ぃ赣吃彻',
        'no_exists_medal_info' => '⊿Τ摸吃彻獺',
        'error_exteredit' => '禬縩だ程,',
       
        'medal_min_price' => '澈╃┏基',
        'medal_endtime' => '篒丁',
        'param_error' => '把计砞竚岿粇,叫硄恨瞶',
        'auction_access' => '把籔膙╃',
        'auction_user_num' => '把セΩ膙╃计',
        'auction_user_price' => '基',
        'auction_submit' => '膙╃',
        'auction_info' => '把籔セΩ膙╃ノめ',
        'auction_price_time' => '膙╃丁',
        'no_has_user' => '⊿Τノめ把セΩ膙╃',
        'error_price_1' => '基砞竚岿粇,э',
        'error_price_2' => '基程蔼基,э',
        'error_endtime' => 'セΩ膙╃竒沧ゎ',
       
        'search_user_tip' => '琩т璶箋祇┪Μ吃彻ノめ :',
        'search_user' => '琩тノめ',       
        'user_has_medal' => '局Τ吃彻獺:',
        'artificially_grant' => '箋祇',
        'artificially_revoke' => 'Μ',
        'grant_succeed' => '箋祇吃彻Θ',
        'revoke_succeed' => 'Μ吃彻Θ',
       
        'order_num' => '吃彻逼',
        'order_username' => 'ノめ',
        'order_medal_info' => '吃彻獺',
        'no_exists_member_info' => '⊿Τノめ莉眔ヴ吃彻',
        'order_more_less' => ' > ぶ',
        'order_less_more' => 'ぶ > ',
        'order_default' => '侯摸逼',
        'order_credit' => '篴臕吃彻逼',

        'author' => 'Plugin&nbsp;Designed&nbsp;by&nbsp;Discuz!&nbsp;Support&nbsp;Team&#10础ンパDiscuz!や刮钉[DST]hnxxwyq砞璸籹',
        'DAC' => '珇把籔Discuz!材よ璸购'
);

?>[/code]08.upload\templates\default\medals_artificially.htm[code]<table summary="$headername" cellspacing="0" cellpadding="0">
<!--{if !$uid}-->
        <tr><td class="attriblist" align="center">               
                <form action="$phpself&action=$action" method="post" id="myform">
                        <input type="hidden" name="formhash" value="{FORMHASH}">
                        $lang['search_user_tip']
                        <input type="text" name="searchname" value="" size="20" maxlength="20" />
                        <input type="submit" name="usersubmit" value="$lang['search_user']"/>       
                </form>               
        </td></tr>
</table>
</div>
</div>
<div style="display:none">
<div>
<!--{else}-->       
        <tr>
                <td style="text-align:center" colspan="2">
                        $member['username'] $lang[user_has_medal]
                        <!--{if $membermedals}-->
                                <!--{loop $membermedals $mid}-->
                                        <img src="{MEDALIMG}$_DCACHE[medals][$mid][image]" alt="$_DCACHE[medals][$mid][name]" />&nbsp;
                                <!--{/loop}-->
                        <!--{else}-->
                                $lang[no_medals_info]
                        <!--{/if}-->
                </td>
        </tr>
        <!--{if $medals}-->
                <!--{eval $key = 0;}-->
                <!--{loop $medals $medal}-->
                        <!--{if $key % 2 == 0}-->
                                </tr>
                                <!--{if $key < $medalnum}-->
                                        <tr>
                                <!--{/if}-->
                        <!--{/if}-->
                        <!--{eval $key++;}-->
                        <td width="50%" class="attriblist">
                                <dl>                               
                                        <dt style="height:80px"><img src="$medal[image]" alt="$medal[name]" /></dt>
                                        <dd class="name">$medal[name]</dd>                               
                                        <dd>$lang['medal_outtime']:        <b><!--{if $medal[outtime] != -1}-->$medal[outtime]<!--{else}-->$lang['medal_no_outtime']<!--{/if}--></b></dd>
                                        <dd>
                                                <!--{if !in_array($medal[medalid], $membermedals)}-->
                                                        <a href="$phpself&action=artificially&operation=grant&uid=$uid&medalid=$medal[medalid]">$lang[artificially_grant]</a>                               
                                                <!--{else}-->
                                                        <a href="$phpself&action=artificially&operation=revoke&uid=$uid&medalid=$medal[medalid]">$lang[artificially_revoke]</a>
                                                <!--{/if}-->
                                        </dd>                               
                                </dl>
                        </td>
                <!--{/loop}-->
        <!--{else}-->
        <tr><td>$lang[no_exists_medal_info]</td></tr>
        <!--{/if}-->       
</table>
<!--{/if}-->[/code]09.upload\templates\default\medals_auction.htm[code]<table summary="$headername" cellspacing="0" cellpadding="0">
<!--{if !$operation}-->
        <!--{if $medals}-->
                <!--{eval $key = 0;}-->
                <!--{loop $medals $medal}-->
                        <!--{if $key % 2 == 0}-->
                                </tr>
                                <!--{if $key < $medalnum}-->
                                        <tr>
                                <!--{/if}-->
                        <!--{/if}-->
                        <!--{eval $key++;}-->
                        <td width="50%" class="attriblist">
                                <dl>                               
                                        <dt style="height:80px"><img src="$medal[image]" alt="$medal[name]" /></dt>
                                        <dd class="name">$medal[name]</dd>                               
                                        <dd>$lang[medal_min_price]: <b>$medal[price]</b> $extcredits[$centerset[extcreditid]][title]</dd>
                                        <dd>$lang['medal_outtime']:        <b><!--{if $medal[outtime] != -1}-->