0 && $_G['member']['groupexpiry'] > TIMESTAMP) { showmessage('usergroup_switch_not_allow'); } $groupid = intval($_GET['groupid']); $group = C::t('common_usergroup')->fetch($groupid); if($group['type'] != 'special' || $group['system'] == 'private' || $group['radminid'] != 0) { $group = null; } if(empty($group)) { showmessage('usergroup_not_found'); } $join = $do == 'buy' ? 1 : 0; $group['dailyprice'] = $group['minspan'] = 0; if($group['system'] != 'private') { list($group['dailyprice'], $group['minspan']) = explode("\t", $group['system']); if($group['dailyprice'] > -1 && $group['minspan'] == 0) { $group['minspan'] = 1; } } $creditstrans = $_G['setting']['creditstrans']; if(!isset($_G['setting']['creditstrans'])) { showmessage('credits_transaction_disabled'); } if(!submitcheck('buysubmit')) { $usermoney = $space['extcredits'.$creditstrans]; $usermaxdays = $group['dailyprice'] > 0 ? intval($usermoney / $group['dailyprice']) : 0; $group['minamount'] = $group['dailyprice'] * $group['minspan']; } else { $memberfieldforum = C::t('common_member_field_forum')->fetch($_G['uid']); $groupterms = dunserialize($memberfieldforum['groupterms']); unset($memberfieldforum); require_once libfile('function/forum'); if($join) { $extgroupidsarray = array(); foreach(array_unique(array_merge($extgroupids, array($groupid))) as $extgroupid) { if($extgroupid) { $extgroupidsarray[] = $extgroupid; } } $extgroupidsnew = implode("\t", $extgroupidsarray); if($group['dailyprice']) { if(($days = intval($_GET['days'])) < $group['minspan']) { showmessage('usergroups_span_invalid', '', array('minspan' => $group['minspan'])); } if($space['extcredits'.$creditstrans] - ($amount = $days * $group['dailyprice']) < ($minbalance = 0)) { showmessage('credits_balance_insufficient', '', array('title'=> $_G['setting']['extcredits'][$creditstrans]['title'],'minbalance' => ($minbalance + $amount))); } $groupterms['ext'][$groupid] = ($groupterms['ext'][$groupid] > TIMESTAMP ? $groupterms['ext'][$groupid] : TIMESTAMP) + $days * 86400; $groupexpirynew = groupexpiry($groupterms); C::t('common_member')->update($_G['uid'], array('groupexpiry' => $groupexpirynew, 'extgroupids' => $extgroupidsnew)); updatemembercount($_G['uid'], array($creditstrans => "-$amount"), true, 'UGP', $extgroupidsnew); C::t('common_member_field_forum')->update($_G['uid'], array('groupterms' => serialize($groupterms))); } else { C::t('common_member')->update($_G['uid'], array('extgroupids' => $extgroupidsnew)); } showmessage('usergroups_join_succeed', "home.php?mod=spacecp&ac=usergroup".($_GET['gid'] ? "&gid=$_GET[gid]" : '&do=list'), array('group' => $group['grouptitle']), array('showdialog' => 3, 'showmsg' => true, 'locationtime' => true)); } else { if($groupid != $_G['groupid']) { if(isset($groupterms['ext'][$groupid])) { unset($groupterms['ext'][$groupid]); } $groupexpirynew = groupexpiry($groupterms); C::t('common_member_field_forum')->update($_G['uid'], array('groupterms' => serialize($groupterms))); } else { $groupexpirynew = 'groupexpiry'; } $extgroupidsarray = array(); foreach($extgroupids as $extgroupid) { if($extgroupid && $extgroupid != $groupid) { $extgroupidsarray[] = $extgroupid; } } $extgroupidsnew = implode("\t", array_unique($extgroupidsarray)); C::t('common_member')->update($_G['uid'], array('groupexpiry' => $groupexpirynew, 'extgroupids' => $extgroupidsnew)); showmessage('usergroups_exit_succeed', "home.php?mod=spacecp&ac=usergroup".($_GET['gid'] ? "&gid=$_GET[gid]" : '&do=list'), array('group' => $group['grouptitle']), array('showdialog' => 3, 'showmsg' => true, 'locationtime' => true)); } } } elseif($do == 'switch') { $groupid = intval($_GET['groupid']); if(!in_array($groupid, $extgroupids)) { showmessage('usergroup_not_found'); } if($_G['groupid'] == 4 && $_G['member']['groupexpiry'] > 0 && $_G['member']['groupexpiry'] > TIMESTAMP) { showmessage('usergroup_switch_not_allow'); } $group = C::t('common_usergroup')->fetch($groupid); if(submitcheck('groupsubmit')) { $memberfieldforum = C::t('common_member_field_forum')->fetch($_G['uid']); $groupterms = dunserialize($memberfieldforum['groupterms']); unset($memberfieldforum); $extgroupidsnew = $_G['groupid']; $groupexpirynew = $groupterms['ext'][$groupid]; foreach($extgroupids as $extgroupid) { if($extgroupid && $extgroupid != $groupid) { $extgroupidsnew .= "\t".$extgroupid; } } if($_G['adminid'] > 0 && $group['radminid'] > 0) { $newadminid = $_G['adminid'] < $group['radminid'] ? $_G['adminid'] : $group['radminid']; } elseif($_G['adminid'] > 0) { $newadminid = $_G['adminid']; } else { $newadminid = $group['radminid']; } C::t('common_member')->update($_G['uid'], array('groupid' => $groupid, 'adminid' => $newadminid, 'groupexpiry' => $groupexpirynew, 'extgroupids' => $extgroupidsnew)); showmessage('usergroups_switch_succeed', "home.php?mod=spacecp&ac=usergroup".($_GET['gid'] ? "&gid=$_GET[gid]" : '&do=list'), array('group' => $group['grouptitle']), array('showdialog' => 3, 'showmsg' => true, 'locationtime' => true)); } } elseif($do == 'forum') { if($_G['setting']['verify']['enabled']) { $myverify= array(); getuserprofile('verify1'); for($i = 1; $i < 6; $i++) { if($_G['member']['verify'.$i] == 1) { $myverify[] = $i; } } $ar = array(1, 2, 3, 4, 5); } $language = lang('forum/misc'); $permlang = $language; loadcache('forums'); $fids = array_keys($_G['cache']['forums']); $perms = array('viewperm', 'postperm', 'replyperm', 'getattachperm', 'postattachperm', 'postimageperm'); $defaultperm = array( array('viewperm' => 1, 'postperm' => 0, 'replyperm' => 0, 'getattachperm' => 1, 'postattachperm' => 0, 'postimageperm' => 0), array('viewperm' => 1, 'postperm' => 1, 'replyperm' => 1, 'getattachperm' => 1, 'postattachperm' => 1, 'postimageperm' => 1), ); if($_G['setting']['verify']['enabled']) { for($i = 1; $i < 6; $i++) { if($_G['setting']['verify'][$i]['available']) { $verifyicon[$i] = !empty($_G['setting']['verify'][$i]['icon']) ? ''.$_G['setting']['verify'][$i]['title'].'' : $_G['setting']['verify'][$i]['title']; } } } $forumperm = $verifyperm = $myverifyperm = array(); $query = C::t('forum_forum')->fetch_all_info_by_fids($fids); foreach($query as $forum) { foreach($perms as $perm) { if($forum[$perm]) { if($_G['setting']['verify']['enabled']) { for($i = 1; $i < 6; $i++) { $verifyperm[$forum['fid']][$perm] .= preg_match("/(^|\t)(v".$i.")(\t|$)/", $forum[$perm]) ? $verifyicon[$i] : ''; if(in_array($i, $myverify)) { $myverifyperm[$forum['fid']][$perm] = 1; } } } $forumperm[$forum['fid']][$perm] = preg_match("/(^|\t)(".$_G['groupid'].")(\t|$)/", $forum[$perm]) ? 1 : 0; } else { $forumperm[$forum['fid']][$perm] = $defaultperm[$_G['groupid'] != 7 ? 1 : 0][$perm]; } } } } elseif($do == 'list' || $do == 'expiry') { $memberfieldforum = C::t('common_member_field_forum')->fetch($_G['uid']); $groupterms = dunserialize($memberfieldforum['groupterms']); unset($memberfieldforum); $expgrouparray = $expirylist = $termsarray = array(); if(!empty($groupterms['ext']) && is_array($groupterms['ext'])) { $termsarray = $groupterms['ext']; } if(!empty($groupterms['main']['time']) && (empty($termsarray[$_G['groupid']]) || $termsarray[$_G['groupid']] > $groupterm['main']['time'])) { $termsarray[$_G['groupid']] = $groupterms['main']['time']; } foreach($termsarray as $expgroupid => $expiry) { if($expiry <= TIMESTAMP) { $expgrouparray[] = $expgroupid; } } if(!empty($groupterms['ext'])) { foreach($groupterms['ext'] as $extgroupid => $time) { $expirylist[$extgroupid] = array('time' => dgmdate($time, 'd'), 'type' => 'ext', 'noswitch' => $time < TIMESTAMP); } } if(!empty($groupterms['main'])) { $expirylist[$_G['groupid']] = array('time' => dgmdate($groupterms['main']['time'], 'd'), 'type' => 'main'); } $groupids = array(); foreach($_G['cache']['usergroups'] as $groupid => $usergroup) { if(!empty($usergroup['pubtype'])) { $groupids[] = $groupid; } } $expiryids = array_keys($expirylist); if(!$expiryids && $_G['member']['groupexpiry']) { C::t('common_member')->update($_G['uid'], array('groupexpiry' => 0)); } $groupids = array_merge($extgroupids, $expiryids, $groupids); $usermoney = $space['extcredits'.$_G['setting']['creditstrans']]; if($groupids) { foreach(C::t('common_usergroup')->fetch_all($groupids) as $group) { $isexp = in_array($group['groupid'], $expgrouparray); if($_G['cache']['usergroups'][$group['groupid']]['pubtype'] == 'buy') { list($dailyprice) = explode("\t", $group['system']); $expirylist[$group['groupid']]['dailyprice'] = $dailyprice; $expirylist[$group['groupid']]['usermaxdays'] = $dailyprice > 0 ? round($usermoney / $dailyprice) : 0; } else { $expirylist[$group['groupid']]['usermaxdays'] = 0; } $expirylist[$group['groupid']]['maingroup'] = $group['type'] != 'special' || $group['system'] == 'private' || $group['radminid'] > 0; $expirylist[$group['groupid']]['grouptitle'] = $isexp ? ''.$group['grouptitle'].'' : $group['grouptitle']; } } } else { $language = lang('forum/misc'); require_once libfile('function/forumlist'); $permlang = $language; unset($language); $maingroup = $_G['group']; $ptype = in_array($_GET['ptype'], array(0, 1, 2)) ? intval($_GET['ptype']) : 0; foreach($_G['cache']['usergroups'] as $gid => $value) { $cachekey[] = 'usergroup_'.$gid; } loadcache($cachekey); $_G['group'] = $maingroup; $sidegroup = $usergroups = $activegs = array(); $nextupgradeid = $nextexist = 0; $memberfieldforum = C::t('common_member_field_forum')->fetch($_G['uid']); $groupterms = dunserialize($memberfieldforum['groupterms']); unset($memberfieldforum); $switchmaingroup = $_G['group']['grouppublic'] || isset($groupterms['ext']) ? 1 : 0; foreach($_G['cache']['usergroups'] as $gid => $group) { $group['grouptitle'] = strip_tags($group['grouptitle']); if($group['type'] == 'special') { $type = $_G['cache']['usergroup_'.$gid]['radminid'] ? 'admin' : 'user'; } elseif($group['type'] == 'system') { $type = $_G['cache']['usergroup_'.$gid]['radminid'] ? 'admin' : 'user'; } elseif($group['type'] == 'member') { $type = 'upgrade'; } if($nextupgradeid && $group['type'] == 'member') { $_GET['gid'] = $gid; $nextupgradeid = 0; } $g = ''.$group['grouptitle'].''; if(in_array($gid, $extgroupids)) { $usergroups['my'] .= $g; } $usergroups[$type] .= $g; if(!empty($_GET['gid']) && $_GET['gid'] == $gid) { $switchtype = $type; if(!empty($_GET['gid'])) { $activegs[$switchtype] = ' a'; } $currentgrouptitle = $group['grouptitle']; $sidegroup = $_G['cache']['usergroup_'.$gid]; if($_G['cache']['usergroup_'.$gid]['radminid']) { $admingids[] = $gid; } } elseif(empty($_GET['gid']) && $_G['groupid'] == $gid && $group['type'] == 'member') { $nextupgradeid = 1; } } $usergroups['my'] = ''.$maingroup['grouptitle'].''.$usergroups['my']; if($activegs == array()) { $activegs['my'] = ' a'; } $bperms = array('allowvisit','readaccess','allowinvisible','allowsearch','allowcstatus','disablepostctrl', 'allowsendpm', 'allowfriend', 'allowstatdata', 'allowmyop'); if($_G['setting']['portalstatus']) { $bperms[] = 'allowpostarticle'; } $pperms = array('allowpost','allowreply','allowpostpoll','allowvote','allowpostreward','allowpostactivity','allowpostdebate','allowposttrade','allowat', 'allowreplycredit', 'allowposttag', 'allowcreatecollection','maxsigsize','allowsigbbcode','allowsigimgcode','allowrecommend','raterange','allowcommentpost','allowmediacode'); $aperms = array('allowgetattach', 'allowgetimage', 'allowpostattach', 'allowpostimage', 'allowsetattachperm', 'maxattachsize', 'maxsizeperday', 'maxattachnum', 'attachextensions'); $sperms = array('allowpoke', 'allowclick', 'allowcomment', 'maxspacesize', 'maximagesize'); if(helper_access::check_module('blog')) {$sperms[] = 'allowblog';} if(helper_access::check_module('album')) {$sperms[] = 'allowupload';} if(helper_access::check_module('share')) {$sperms[] = 'allowshare';} if(helper_access::check_module('doing')) {$sperms[] = 'allowdoing';} $allperms = array(); $allkey = array_merge($bperms, $pperms, $aperms, $sperms); if($sidegroup) { foreach($allkey as $pkey) { if(in_array($pkey, array('maxattachsize', 'maxsizeperday', 'maxspacesize', 'maximagesize'))) { $sidegroup[$pkey] = $sidegroup[$pkey] ? sizecount($sidegroup[$pkey]) : 0; } $allperms[$pkey][$sidegroup['groupid']] = $sidegroup[$pkey]; } } foreach($maingroup as $pkey => $v) { if(in_array($pkey, array('maxattachsize', 'maxsizeperday', 'maxspacesize', 'maximagesize'))) { $maingroup[$pkey] = $maingroup[$pkey] ? sizecount($maingroup[$pkey]) : 0; } } $publicgroup = array(); $extgroupids[] = $_G['groupid']; foreach(C::t('common_usergroup')->fetch_all_switchable(array_unique($extgroupids)) as $group) { $group['allowsetmain'] = in_array($group['groupid'], $extgroupids); $publicgroup[$group['groupid']] = $group; } $group = $group[count($group)]; $_GET['perms'] = 'member'; if($sidegroup) { $group = $sidegroup; } } include_once template("home/spacecp_usergroup"); ?>