Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[修改] DiscuzX用户组过期问题解决方法

[复制链接]
折中扇 发表于 2015-1-26 17:47:37 | 显示全部楼层 |阅读模式

在仔细看完了discuz论坛的整个代码后发现,官方给出的代码大部分是没有错误的,但是有一个致命的问题写错了,导致不能正常过期。

下面我们就来修改这个bug。首先我们要找到打开source\include\spacecp\spacecp_usergroup.php这个文件,找到299行左右,



下面我们就来修改这个bug。首先我们要找到打开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文件,大概在433行左右,找到

  1. if($user && $user['groupexpiry'] > 0 && $user['groupexpiry'] < TIMESTAMP && (getgpc('mod') != 'spacecp' || CURSCRIPT != 'home')) {
复制代码

在他上面添加内容并重写成一下的代码

                       
  1. $groupterms = unserialize(DB::result_first("SELECT groupterms FROM ".DB::table('common_member_field_forum')." WHERE uid='".getglobal('uid', 'member')."'"));
  2.                         $termsarray = array();
  3.                         if(!empty($groupterms['ext']) && is_array($groupterms['ext'])) {
  4.                                 $termsarray = $groupterms['ext'];
  5.                 }
  6.                         if(!empty($groupterms['main']['time']) && (empty($termsarray[$_G['groupid']]) || $termsarray[$_G['groupid']] > $groupterm['main']['time'])) {
  7.                                 $termsarray[$_G['groupid']] = $groupterms['main']['time'];
  8.                         }

  9.                         foreach($termsarray as $expgroupid => $expiry) {
  10.                                 if($expiry <= TIMESTAMP) {
  11.                                         $user_expiry = 1;
  12.                                 }
  13.                         }

  14.                         if($user && (( $user['groupexpiry'] > 0 && $user['groupexpiry'] < TIMESTAMP) || $user_expiry == 1) && (getgpc('mod') != 'spacecp' || CURSCRIPT != 'home')) {
  15.                                  dheader('location: home.php?mod=spacecp&ac=usergroup&do=expiry');
  16.                          }
复制代码

保存文件,修改完成。
爱修图 发表于 2015-3-15 22:14:05 | 显示全部楼层
虽然没有用到,但是还是支持一下楼主的热情,
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-15 19:33 , Processed in 0.021675 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表