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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[修改] X3.1 用户组到期不会切换的问题解决方案

[复制链接]
zhouen 发表于 2014-8-11 15:00:58 | 显示全部楼层 |阅读模式
本帖最后由 zhouen 于 2014-9-9 15:52 编辑

用户组到期不会自动切换回原普通用户组的BUG从2.0到2.5 3.1 一直陆续存在。具体症状:

一,比如禁言到期后不会恢复到普通用户组,强制跳转到购买用户组的页面,发帖回帖均无法操作

二、比如VIP到期后,不会恢复到普通用户组,强制跳转到购买用户组的页面,发帖回帖均无法操作

三、禁言到期后,虽然有些用户显示的用户组是在普通用户组,但还是会强制跳转到购买用户组的页面,发帖回帖均无法操作


解决方法:


一、后台——性能优化——内存优化——内存优化功能设置 中的 用户数据 的自动更新时间一定不能为0,否则只有手动清理内存后才能生效。可以关闭此项,或者较短时间。比如你设置了60秒,那么当用户登录后要过60秒才能恢复到普通用户组。我关闭了此项。因为开启了的话,跳转到购买页面很影响用户体验。比发被禁言的到期后,在购物页面还显示为禁止用户,并提示购买VIP用户组,然后过了十几秒刷新一下页面后又不用强制购物了,让用户有被骗的感觉。VIP用户到期后的提示也不好。

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

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

修改成
  1.                 $groupexpirynew = $groupterms['ext'][$extgroupidsnew];
复制代码



然后找到代码
  1.                         $expirylist[$group['groupid']]['grouptitle'] = $isexp ? '<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.         }
复制代码


以上修改大部份代码来自:@m.king
sonhill 发表于 2014-8-12 03:51:21 | 显示全部楼层
太贵了吧,卖了短裤也不够500金币啊
回复

使用道具 举报

折中扇 发表于 2014-10-15 12:25:08 | 显示全部楼层
不知道是否有效?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 00:41 , Processed in 0.024268 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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