Discuz! X3.* 红包任务限制用户积分低于多少时才能领取
分类 网站技术/村民张先生 发布于 2015-04-15 08:46
应用场景:在版块A发帖时需要支付金币,普通用户靠每日登录、签到、充值等方式获得金币,而VIP用户本身是付费的,我们可以给予他一定频率的免费领金币权限。在站点任务中添加一个红包任务,设置每X天可以领取X个金币。但问题来了,如果某些VIP用户一直领金币但没有使用,不是会积存下很多金币吗?我们可以额外限制领取条件:当该用户的金币少于多少时才能领取,这样很好避免了用户积存过多金币。
修改方法很简单,只用改一处!
打开 source/class/class_task.php 文件,
查找:
C::t('common_mytask')->insert(array( 'uid' => $_G['uid'], 'username' => $_G['username'], 'taskid' => $this->task['taskid'], 'csc' => '0\t'.$_G['timestamp'], 'dateline' => $_G['timestamp'] ), false, true); C::t('common_task')->update_applicants($this->task['taskid'], 1);
在前面加上:
if($id == 指定红包任务的ID号 && getuserprofile(extcredits扩展积分编号) >= 大于多少时不能领取) { showmessage('很抱歉,只有在金币低于XX时才能免费申领。', 'home.php?mod=task&item=new'); } else {
在后面加上:
}
2015/06/21新增:添加更多条件判断。参考以下代码:
$posts = DB::result_first("SELECT posts FROM ".DB::table('common_member_count')." where uid=".$_G['uid']); $oltime = DB::result_first("SELECT oltime FROM ".DB::table('common_member_count')." where uid=".$_G['uid']); if(in_array($id, array(48,17))&& getuserprofile(extcredits6) >= 30) { showmessage('很抱歉,您当前活力值高于30,无法领取此礼包。', 'home.php?mod=task&item=new'); } elseif($id == 17 && !($posts >= 10 || $oltime >= 2)) { showmessage('很抱歉,此帐号活跃度极低,请使用一段时间后再试。', 'home.php?mod=task&do=view&id=17'); }
说明:第一行为从数据库读取用户的发帖数量,第二行为读取用户的在线时间。之后第一个 if 同前文,第二个 if 表示当发帖量大于等于10或在线时间大于等于2小时这两个条件都不满足时,任务申请失败。
欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截