本帖最后由 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
- $groupexpirynew = $groupterms['ext'][$groupid];
复制代码
修改成
- $groupexpirynew = $groupterms['ext'][$extgroupidsnew];
复制代码
然后找到代码
- $expirylist[$group['groupid']]['grouptitle'] = $isexp ? '<s>'.$group['grouptitle'].'</s>' : $group['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]'");
- }
复制代码
以上修改大部份代码来自:@m.king
|