【即将关站通知●已关闭注册功能】,倒计时剩余:计算中...

Discuz颁发勋章有效期累计修改


Discuz的勋章颁发有一定问题,如果给用户颁发一个勋章,有效期30天,那么在用户的勋章还有5天到期的时候再次给用户颁发这个勋章,那么会是一个全新的有效期,即30天,今天帮客户解决的就是多次颁发勋章,有效期累计的问题。

通过分析源码发现,给用户颁发一次勋章就会往form_medallog表里插入一条记录,其中expiration字段代表有效期,大体思路有了,在颁发勋章操作里,插入新的勋章前,先查找表里该用户已经有的这个勋章是否过了有效期,如果没有,那么用这个有效期减去当前时间戳得到上个勋章剩余的有效期,插入新的勋章的时候,把这个剩余有效期添加进去,代码其实很简单。

修改的文件为source/admincp/admincp_members.php
foreach($medalsnewarray as $medalnewarray) {
        $sql = "select * from ".DB::table('forum_medallog')." where uid = {$medalnew['uid']} and medalid = {$medalnewarray['medalid']} order by id desc limit 1";
        $lastmedal = DB::fetch_first($sql);
        // 旧勋章未到期的时间
        $lasttime = $lastmedal['expiration'] > TIMESTAMP ? $lastmedal['expiration'] - TIMESTAMP : 0;
        
        $data = array(
                'uid' => $medalnew['uid'],
                'medalid' => $medalnewarray['medalid'],
                'type' => 0,
                'dateline' => $_G['timestamp'],
                'expiration' => $medalnewarray['expiration'] + $lasttime,
                'status' => $medalnewarray['status'],
        );
        C::t('forum_medallog')->insert($data);
        C::t('common_member_medal')->insert(array('uid' => $medalnew['uid'], 'medalid' => $medalnewarray['medalid']), 0, 1);
}
写完,收工!

转载于:http://www.nciaer.com/thread-15-1-1.html
收藏 邀请

路过

雷人

握手

鲜花

鸡蛋


最新评论

在线支持
关闭
欢迎来到魔趣吧
如果你有建站技术问题、仿站需求、模板插件修改需求,请联系我们的技术支持!高效率,低价格的帮你搞定!
请认准魔趣吧唯一官网:www.moqu8.com,谨防假冒网站!

一般问题请到【求助区】发帖咨询(免费)!

邮箱咨询:
winkill2012@qq.com

邮箱咨询需注明:资源地址+本站用户名+具体问题,三者缺一不做处理。非本站资源不处理!
在线支持

关于魔趣吧|魔趣建站

魔趣吧,志在打造全国最大的建站资源共享平台。 本站提供海量免费的建站资源,包括WordPress模板、Discuz精仿模板、PHPWind模板、phpcms模板、Discuz精仿插件、帝国cms模板、织梦模板等上万精品模板!同时,提供各种建站素材、JS特效、整站程序源码!
服务中文站长,传播分享精神!建站,就来魔趣吧!!
2015-2024 魔趣吧 ( 豫ICP备2021024354号 )   豫公网安备41030402000182号 百度统计
HTTPS安全认证
|网站地图 | 已运行:天 
温馨提示:本站所有资源、教程、源码,不得用于非法站点及用途,否则,本站将终止提供任何服务! Powered by Discuz! Licensed