1、我论坛的自定义用户组:
2、站帮网vip插件绑定的分组:
遇到问题:
新用户开通VIP会员都是正常的,但VIP会员到期后,用户续费或者开通更高级别的会员就会出现 “自定义用户组没有自动切换” 的bug,举例说明:比如我的账号是qq1234,之前第一次开通会员时,购买的是一个月的会员(月卡VIP),会员到期后,我想升级为永久会员(终身VIP),开通永久会员成功后,发现会员组还是月卡VIP,如下图:
解决方法:
打开source/plugin/zb7com_vip/source/include/pay/pay_result.inc.php文件,在第125行之后添加如下代码:
$vipGroupid=vip_core::$plugin['forever_group'];
通过分析续费的代码逻辑,发现代码少了这一句,用户购买的是永久会员时,应该设置vipGroupid为永久会员的分组,整段代码如下:
if(empty($vip_user)){
//新加入
$add_user=array(
'uid'=>$uid,
'username'=>$member['username'],
'starttime'=>$timeNow,//开通会员时间,固定值,以后不能修改
'endtime'=>$endtime,
'isforever'=>$order['isforever'],
'exp'=>$exp
);
if($order['isforever']==0){
if($month>=12){
$vipGroupid=vip_core::$plugin['year_group'];
$add_user['isyear']=1;
/*
$add_user['yearstart']=$timeNow;//年费开通时间,固定值,以后不能修改
$add_user['yearend']=$endtime;//年费结束
$add_user['yeardiff']=0;//年费间隔时间
*/
}else{
$vipGroupid=vip_core::$plugin['group'];
//$add_user['difftime']=0;//续费间隔时间
}
}else{
$vipGroupid=vip_core::$plugin['forever_group'];
$add_user['isforever']=1;
}
$vip_status=C::t('#zb7com_vip#zb7com_vip')->insert($add_user);
}else{
/*续费*/
$update_user=array();
if($order['isforever']==0){
if($vip_user['endtime']>=$timeNow){
//会员期间续费
$endtime=gmmktime(gmdate('H',$vip_user['endtime']),gmdate('i',$vip_user['endtime']),gmdate('s',$vip_user['endtime']),gmdate('n',$vip_user['endtime'])+$month,gmdate('j',$vip_user['endtime']),gmdate('Y',$vip_user['endtime']));
/*
if($month>=12&&$vip_user['yearstart']&&($vip_user['endtime']>$vip_user['yearend'])&&($timeNow>$vip_user['endtime'])){
//续费年费会员,加中断时间原因:可能过期后续月会员再续年会员
if($vip_user['yearstart'])$update_user['yeardiff']=array($timeNow-$vip_user['yearend'],'+');//年费中断时间
}
*/
}
//续费操作
$update_user['endtime']=$endtime;//会员结束时间
if($month>=12){
//续年费会员
$vipGroupid=vip_core::$plugin['year_group'];
$update_user['isyear']=1;
/*
$update_user['yearend']=$endtime;//年费结束
if(empty($vip_user['yearstart'])){
$update_user['yearstart']=$timeNow;//年费开始,固定值
}
*/
}else{
//续普通会员
if($vip_user['isyear']){
//之前是年会员
$vipGroupid=vip_core::$plugin['year_group'];
$update_user['isyear']=1;
/*
$update_user['yearend']=$endtime;//年费结束
*/
}else{
$vipGroupid=vip_core::$plugin['group'];
$update_user['isyear']=0;
}
}
}else{
$vipGroupid=vip_core::$plugin['forever_group'];
$update_user['isforever']=1;
$update_user['isyear']=0;
}
// $update_user['exp']=$vip_user['exp']+$exp;
$vip_status=C::t('#zb7com_vip#zb7com_vip')->update_by_uid($uid,$update_user);
}