站长之家 - 站长资讯 - 易采站长站

当前位置: > 建站教程 > 源码教程 > 论坛程序 >

解决Discuz!X2和Discuz!X3用户组到期后不自动更改用户组的问题

2015-04-18 08:04 | 来源:网络整理 | 编辑:秋军 |

没想到这个问题到了Discuz! X3了还没解决,不知道官方团队是没注意到这个问题,还是遇到了瓶颈,下面是我搜到的网上的教程,但大部分教程不是隐藏就是需要注册回复,转发到这儿,方便大家直接查阅。

修改文件:source/include/spacecp/spacecp_usergroup.php

找到代码:

$groupexpirynew = $groupterms['ext'][$groupid];

替换为:

$groupexpirynew = $groupterms['ext'][$extgroupidsnew];

找到代码:

$expirylist[$group['groupid']]['grouptitle'] = in_array($group['groupid'], $expgrouparray) ? '' : $group['grouptitle'];

}

}

因为不同版本代码有变,所以如果搜不到全部,就只搜一下:

$expirylist[$group['groupid']]['grouptitle']

在这段代码下面(注意:一定是在两个大括号之后)添加:

if($expgrouparray) {

$extgroupidarray = array();

foreach(explode("\t", $_G['forum_extgroupids']) as $extgroupid) {

if(($extgroupid = intval($extgroupid)) && !in_array($extgroupid, $expgrouparray)) {

$extgroupidarray[] = $extgroupid;

}

}

$groupidnew = $_G['groupid'];

$adminidnew = $_G['adminid'];

foreach($expgrouparray as $expgroupid) {

if($expgroupid == $_G['groupid']) {

if(!empty($groupterms['main']['groupid'])) {

$groupidnew = $groupterms['main']['groupid'];

$adminidnew = $groupterms['main']['adminid'];

} else {

$groupidnew = DB::result_first("SELECT groupid FROM ".DB::table('common_usergroup')." WHERE type='member' AND '".$_G['member']['credits']."'>=creditshigher AND '$credits'<creditslower LIMIT 1");

if(in_array($_G['adminid'], array(1, 2, 3))) {

$query = DB::query("SELECT groupid FROM ".DB::table('common_usergroup')." WHERE groupid IN (".dimplode($extgroupidarray).") AND radminid='$_G[adminid]' LIMIT 1");

$adminidnew = (DB::num_rows($query)) ? $_G['adminid'] : 0;

} else {

$adminidnew = 0;

}

}

unset($groupterms['main']);

}

unset($groupterms['ext'][$expgroupid]);

}

require_once libfile('function/forum');

$groupexpirynew = groupexpiry($groupterms);

$extgroupidsnew = implode("\t", $extgroupidarray);


$grouptermsnew = addslashes(serialize($groupterms));

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

DB::query("UPDATE ".DB::table('common_member_field_forum')." SET groupterms='$grouptermsnew' WHERE uid='$_G[uid]'");

}

正常情况下,直接生效,但如果看不出来变化,就后台更新一下缓存,就OK了。

  • 查看discuz!论坛管理纪录
  • discuz 修改创始人密码、管理员登录密码的方法
  • Discuz! X3怎样进行内存优化提升程序性能和服务器的负载能力
  • discuz x后台设置各种用户组个性签名的长度无效
  • discuz x2修改密码注册用户获取密码放在第三方平台
  • Discuz! X3.1 判断会员登录状态及外部调用注册登录框的实现代码
  • discuzx3.1文章进行全文检索的实现方法
  • discuz批量修改论坛版块权限和用户组权限的方法
  • discuz怎么设置屏蔽论坛用户发布的站外链接
  • Discuz修改文章标题更好的SEO的方法
  • 网友评论

    关于我们 - 联系我们 - 广告服务 - 版权声明 - 人才招聘 - 友情链接 - 网站地图 - 帮助 - -

    CopyRight © 2010-2016 源码下载 easck.com , All Rights Reserved

    蒙公网安备 15052402000103号

    蒙ICP备14002389-1号