糖果VR分享网

标题: 修复Discuz X3.2 3.3付费用户组无法自动退出BUG [打印本页]

作者: 柳含烟    时间: 2018-9-30 11:35
标题: 修复Discuz X3.2 3.3付费用户组无法自动退出BUG
打开文件:source/include/spacecp/spacecp_usergroup.php
找到代码
  1. $groupexpirynew = $groupterms['ext'][$groupid];
复制代码
替换为
  1. $groupexpirynew = $groupterms['ext'][$extgroupidsnew];
复制代码
然后找到代码
  1. $expirylist[$group['groupid']]['grouptitle'] = in_array($group['groupid'], $expgrouparray) ? '<s>'.$group['grouptitle'].'</s>' : $group['grouptitle'];
  2.                 }
  3.         }
复制代码
因为不同版本代码有变,所以如果搜不到全部,就只搜一下:

  1. $expirylist[$group['groupid']]['grouptitle']
复制代码
在它的下面加上如下代码:
此方法适用于Discuz X2到X3.2,如果你的用户组到期可以正常切换就不需要进行以上修改,如果存在问题可以根据上面的方法进行相应的调整,调整前请记住备份。如果以上方法不能解决你的问题,再尝试以下方法(这里找不到的可以不操作):
首先我们要找到打开source\include\spacecp\spacecp_usergroup.php这个文件,找到299行左右,
  1. foreach(explode("\t", $_G['forum_extgroupids']) as $extgroupid) {
复制代码
修改为
  1. foreach(explode("\t", $_G['member']['extgroupids']) as $extgroupid) {
复制代码
修改完后,以后的用户组过期就会得到解决。

如果你以前就有很多的过期用户想清理掉怎么办呢?这个的要修改source\class\discuz\discuz_application.php这个文件了。
原理就是在用户今日论坛的时候自动检测一下是否过期,如果过期就自动切换到原来的用户组上去。

打开discuz_application.php文件,大概在470行左右,找到
  1. if($user && $user['groupexpiry'] > 0 && $user['groupexpiry'] < TIMESTAMP && (getgpc('mod') != 'spacecp' || CURSCRIPT != 'home')) {
复制代码
如果搜索不到,可以只搜索
保存文件,修改完成。

每当用户刷新页面的时候,自动检测是否到达过期时间,如果到达的话,就自动切换当前用户组。

作者: 还是第一次    时间: 2019-10-14 12:41
修复Discuz
作者: seven55    时间: 2023-3-4 03:02
谢谢分享..................
作者: 阿牛哥给力    时间: 2024-5-26 04:21
谢谢分享,辛苦了




欢迎光临 糖果VR分享网 (https://www.tangguo2.com/) Powered by Discuz! X3.3