请选择 进入手机版 | 继续访问电脑版
开启辅助访问
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

点击进入授权页面

只需一步,快速开始

Discuz X2-x3.2用户组到期后不自动切换解决方案

回复:3 | 查看:1279 | admin 发表于 2015-7-21 20:48:58 |阅读模式 |复制链接
Discuz X论坛中很多同学都出现VIP会员或其他用户组到期后不自动切换到默认用户组的问题,下面分享下用户组到期后不自动切换解决方案。

方法一:

可以直接下载附件替换文件:
source/include/spacecp/spacecp_usergroup.php


请点击此处下载

百度网盘高速下载

有问题请咨询客服

下载所需积分:0 金币

充值金币   购买VIP   免费赚金币   联系客服




方法二:

打开文件:source/include/spacecp/spacecp_usergroup.php
找到代码



  1. $groupexpirynew = $groupterms['ext'][$groupid];
复制代码




替换为

游客,如果您要查看本帖隐藏内容请回复



然后找到代码

  1. $expirylist[$group['groupid']]['grouptitle'] = in_array($group['groupid'], $expgrouparray) ? '<s>'.$group['grouptitle'].'</s>' : $group['grouptitle'];
  2.                 }
  3.         }
复制代码



在它的下面加上如下代码:






  1.         if($expgrouparray) {

  2.                 $extgroupidarray = array();
  3.                 foreach(explode("\t", $_G['forum_extgroupids']) as $extgroupid) {
  4.                         if(($extgroupid = intval($extgroupid)) && !in_array($extgroupid, $expgrouparray)) {
  5.                                 $extgroupidarray[] = $extgroupid;
  6.                         }
  7.                 }

  8.                 $groupidnew = $_G['groupid'];
  9.                 $adminidnew = $_G['adminid'];
  10.                 foreach($expgrouparray as $expgroupid) {
  11.                         if($expgroupid == $_G['groupid']) {
  12.                                 if(!empty($groupterms['main']['groupid'])) {
  13.                                         $groupidnew = $groupterms['main']['groupid'];
  14.                                         $adminidnew = $groupterms['main']['adminid'];
  15.                                 } else {
  16.                                         $groupidnew = DB::result_first("SELECT groupid FROM ".DB::table('common_usergroup')." WHERE type='member' AND '".$_G['member']['credits']."'>=creditshigher AND '$credits'<creditslower LIMIT 1");
  17.                                         if(in_array($_G['adminid'], array(1, 2, 3))) {
  18.                                                 $query = DB::query("SELECT groupid FROM ".DB::table('common_usergroup')." WHERE groupid IN (".dimplode($extgroupidarray).") AND radminid='$_G[adminid]' LIMIT 1");
  19.                                                 $adminidnew = (DB::num_rows($query)) ? $_G['adminid'] : 0;
  20.                                         } else {
  21.                                                 $adminidnew = 0;
  22.                                         }
  23.                                 }
  24.                                 unset($groupterms['main']);
  25.                         }
  26.                         unset($groupterms['ext'][$expgroupid]);
  27.                 }

  28.                 require_once libfile('function/forum');
  29.                 $groupexpirynew = groupexpiry($groupterms);
  30.                 $extgroupidsnew = implode("\t", $extgroupidarray);
  31.                 $grouptermsnew = addslashes(serialize($groupterms));

  32.                 DB::query("UPDATE ".DB::table('common_member')." SET adminid='$adminidnew', groupid='$groupidnew', extgroupids='$extgroupidsnew', groupexpiry='$groupexpirynew' WHERE uid='$_G[uid]'");
  33.                 DB::query("UPDATE ".DB::table('common_member_field_forum')." SET groupterms='$grouptermsnew' WHERE uid='$_G[uid]'");

  34.         }
复制代码





此方法适用于Discuz X2到X3.2,如果你的用户组到期可以正常切换就不需要进行以上修改,如果存在问题可以根据上面的丰富进行相应的调整,调整前请记住备份。







回复

使用道具 举报

发表于 2015-7-22 22:23:06
太棒了,感谢楼主提供这么好的资源。
发表于 2016-11-26 23:17:24
好东西,谢谢楼主!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2018-1-13 01:47:43
正需要,以后我会常来的,支持天天源码支持资源共享!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

快速回复 返回列表 客服中心





企业站定制,我们更专业!

联系我们
快速回复 返回顶部 返回列表