📄 forums.inc.php
字号:
if(!empty($delete) || $newmoderator || (bool)$forum['inheritedmod'] != (bool)$inheritedmodnew) {
$fidarray = $newmodarray = $origmodarray = array();
if($forum['type'] == 'group') {
$query = $db->query("SELECT fid FROM {$tablepre}forums WHERE type='forum' AND fup='$fid'");
while($sub = $db->fetch_array($query)) {
$fidarray[] = $sub['fid'];
}
$query = $db->query("SELECT fid FROM {$tablepre}forums WHERE type='sub' AND fup IN ('".implode('\',\'', $fidarray)."')");
while($sub = $db->fetch_array($query)) {
$fidarray[] = $sub['fid'];
}
} elseif($forum['type'] == 'forum') {
$query = $db->query("SELECT fid FROM {$tablepre}forums WHERE type='sub' AND fup='$fid'");
while($sub = $db->fetch_array($query)) {
$fidarray[] = $sub['fid'];
}
}
if(is_array($delete)) {
foreach($delete as $uid) {
$db->query("DELETE FROM {$tablepre}moderators WHERE uid='$uid' AND ((fid='$fid' AND inherited='0') OR (fid IN ('".implode('\',\'', $fidarray)."') AND inherited='1'))");
}
$excludeuids = 0;
$deleteuids = '\''.implode('\',\'', $delete).'\'';
$query = $db->query("SELECT uid FROM {$tablepre}moderators WHERE uid IN ($deleteuids)");
while($mod = $db->fetch_array($query)) {
$excludeuids .= ','.$mod['uid'];
}
$usergroups = array();
$query = $db->query("SELECT groupid, type, radminid, creditshigher, creditslower FROM {$tablepre}usergroups");
while($group = $db->fetch_array($query)) {
$usergroups[$group['groupid']] = $group;
}
$query = $db->query("SELECT uid, groupid, credits FROM {$tablepre}members WHERE uid IN ($deleteuids) AND uid NOT IN ($excludeuids) AND adminid NOT IN (1,2)");
while($member = $db->fetch_array($query)) {
if($usergroups[$member['groupid']]['type'] == 'special' && $usergroups[$member['groupid']]['radminid'] != 3) {
$adminidnew = -1;
$groupidnew = $member['groupid'];
} else {
$adminidnew = 0;
foreach($usergroups as $group) {
if($group['type'] == 'member' && $member['credits'] >= $group['creditshigher'] && $member['credits'] < $group['creditslower']) {
$groupidnew = $group['groupid'];
break;
}
}
}
$db->query("UPDATE {$tablepre}members SET adminid='$adminidnew', groupid='$groupidnew' WHERE uid='$member[uid]'");
}
}
if((bool)$forum['inheritedmod'] != (bool)$inheritedmodnew) {
$query = $db->query("SELECT uid FROM {$tablepre}moderators WHERE fid='$fid' AND inherited='0'");
while($mod = $db->fetch_array($query)) {
$origmodarray[] = $mod['uid'];
if(!$forum['inheritedmod'] && $inheritedmodnew) {
$newmodarray[] = $mod['uid'];
}
}
if($forum['inheritedmod'] && !$inheritedmodnew) {
$db->query("DELETE FROM {$tablepre}moderators WHERE uid IN ('".implode('\',\'', $origmodarray)."') AND fid IN ('".implode('\',\'', $fidarray)."') AND inherited='1'");
}
}
if($newmoderator) {
$member = $db->fetch_first("SELECT uid FROM {$tablepre}members WHERE username='$newmoderator'");
if(!$member) {
cpmsg('members_edit_nonexistence', '', 'error');
} else {
$newmodarray[] = $member['uid'];
$db->query("UPDATE {$tablepre}members SET groupid='3' WHERE uid='$member[uid]' AND adminid NOT IN (1,2,3,4,5,6,7,8,-1)");
$db->query("UPDATE {$tablepre}members SET adminid='3' WHERE uid='$member[uid]' AND adminid NOT IN (1,2)");
$db->query("REPLACE INTO {$tablepre}moderators (uid, fid, displayorder, inherited)
VALUES ('$member[uid]', '$fid', '$newdisplayorder', '0')");
}
}
foreach($newmodarray as $uid) {
$db->query("REPLACE INTO {$tablepre}moderators (uid, fid, displayorder, inherited)
VALUES ('$uid', '$fid', '$newdisplayorder', '0')");
if($inheritedmodnew) {
foreach($fidarray as $ifid) {
$db->query("REPLACE INTO {$tablepre}moderators (uid, fid, inherited)
VALUES ('$uid', '$ifid', '1')");
}
}
}
if($forum['type'] == 'group') {
$inheritedmodnew = 1;
} elseif($forum['type'] == 'sub') {
$inheritedmodnew = 0;
}
$db->query("UPDATE {$tablepre}forums SET inheritedmod='$inheritedmodnew' WHERE fid='$fid'");
}
if(is_array($displayordernew)) {
foreach($displayordernew as $uid => $order) {
$db->query("UPDATE {$tablepre}moderators SET displayorder='$order' WHERE fid='$fid' AND uid='$uid'");
}
}
$moderators = $tab = '';
$query = $db->query("SELECT m.username FROM {$tablepre}members m, {$tablepre}moderators mo WHERE mo.fid='$fid' AND mo.inherited='0' AND m.uid=mo.uid ORDER BY mo.displayorder");
while($mod = $db->fetch_array($query)) {
$moderators .= $tab.addslashes($mod['username']);
$tab = "\t";
}
$db->query("UPDATE {$tablepre}forumfields SET moderators='$moderators' WHERE fid='$fid'");
cpmsg('forums_moderators_update_succeed', "$BASESCRIPT?action=forums&operation=moderators&fid=$fid", 'succeed');
}
} elseif($operation == 'merge') {
if(!submitcheck('mergesubmit') || $source == $target) {
require_once DISCUZ_ROOT.'./include/forum.func.php';
require_once DISCUZ_ROOT.'./forumdata/cache/cache_forums.php';
$forumselect = "<select name=\"%s\">\n<option value=\"\"> > $lang[select]</option><option value=\"\"> </option>".str_replace('%', '%%', forumselect()).'</select>';
shownav('forum', 'forums_merge');
showsubmenu('forums_merge');
showformheader('forums&operation=merge');
showtableheader();
showsetting('forums_merge_source', '', '', sprintf($forumselect, 'source'));
showsetting('forums_merge_target', '', '', sprintf($forumselect, 'target'));
showsubmit('mergesubmit');
showtablefooter();
showformfooter();
} else {
if($db->result_first("SELECT COUNT(*) FROM {$tablepre}forums WHERE fid IN ('$source', '$target') AND type<>'group'") != 2) {
cpmsg('forums_nonexistence', '', 'error');
}
if($db->result_first("SELECT COUNT(*) FROM {$tablepre}forums WHERE fup='$source'")) {
cpmsg('forums_merge_source_sub_notnull', '', 'error');
}
$db->query("UPDATE {$tablepre}threads SET fid='$target' WHERE fid='$source'");
$db->query("UPDATE {$tablepre}posts SET fid='$target' WHERE fid='$source'");
$sourceforum = $db->fetch_first("SELECT threads, posts FROM {$tablepre}forums WHERE fid='$source'");
$db->query("UPDATE {$tablepre}forums SET threads=threads+$sourceforum[threads], posts=posts+$sourceforum[posts] WHERE fid='$target'");
$db->query("DELETE FROM {$tablepre}forums WHERE fid='$source'");
$db->query("DELETE FROM {$tablepre}forumfields WHERE fid='$source'");
$db->query("DELETE FROM {$tablepre}moderators WHERE fid='$source'");
$query = $db->query("SELECT * FROM {$tablepre}access WHERE fid='$source'");
while($access = $db->fetch_array($query)) {
$db->query("INSERT INTO {$tablepre}access (uid, fid, allowview, allowpost, allowreply, allowgetattach)
VALUES ('$access[uid]', '$target', '$access[allowview]', '$access[allowpost]', '$access[allowreply]', '$access[allowgetattach]')", 'SILENT');
}
$db->query("DELETE FROM {$tablepre}access WHERE fid='$source'");
updatecache('forums');
cpmsg('forums_merge_succeed', $BASESCRIPT.'?action=forums', 'succeed');
}
} elseif($operation == 'edit') {
if(empty($fid)) {
require_once DISCUZ_ROOT.'./include/forum.func.php';
cpmsg('forums_edit_nonexistence', $BASESCRIPT.'?action=forums&operation=edit'.(!empty($highlight) ? "&highlight=$highlight" : '').(!empty($anchor) ? "&anchor=$anchor" : ''), 'form', '<select name="fid">'.forumselect().'</select>');
}
$perms = array('viewperm', 'postperm', 'replyperm', 'getattachperm', 'postattachperm');
$forum = $db->fetch_first("SELECT *, f.fid AS fid FROM {$tablepre}forums f
LEFT JOIN {$tablepre}forumfields ff USING (fid)
WHERE f.fid='$fid'");
if(!$forum) {
cpmsg('forums_nonexistence', '', 'error');
}
$query = $db->query("SELECT disabledactions FROM {$tablepre}adminactions WHERE admingid='$groupid'");
$dactionarray = ($dactionarray = unserialize($db->result($query, 0))) ? $dactionarray : array();
$allowthreadtypes = !in_array('threadtypes', $dactionarray);
if(!empty($projectid)) {
$query = $db->query("SELECT value FROM {$tablepre}projects WHERE id='$projectid'");
$forum = @array_merge($forum, unserialize($db->result($query, 0)));
}
if(!submitcheck('detailsubmit') && !submitcheck('saveconfigsubmit')) {
$anchor = in_array($anchor, array('basic', 'extend', 'posts', 'credits', 'threadtypes', 'threadsorts', 'perm')) ? $anchor : 'basic';
shownav('forum', 'forums_edit');
if($forum['type'] == 'group') {
showsubmenu("$lang[forums_cat_detail] - $forum[name]");
} else {
showsubmenuanchors(lang('forums_edit').' - '.$forum['name'], array(
array('forums_edit_basic', 'basic', $anchor == 'basic'),
array('forums_edit_extend', 'extend', $anchor == 'extend'),
array('forums_edit_posts', 'posts', $anchor == 'posts'),
array('forums_edit_credits', 'credits', $anchor == 'credits'),
array('forums_edit_threadtypes', 'threadtypes', $anchor == 'threadtypes'),
array('forums_edit_threadsorts', 'threadsorts', $anchor == 'threadsorts'),
array('forums_edit_perm', 'perm', $anchor == 'perm')
));
}
showtips('forums_edit_tips');
showformheader("forums&operation=edit&fid=$fid&");
showhiddenfields(array('type' => $forum['type']));
$sideselect = array();
$infosidestatus[0] && $sideselect[0] = '<select name="foruminfosidestatus[0]">
<option value="">'.$lang['forums_edit_extend_sideselect_global'].'</option>
<option value="-1"'.($infosidestatus['f'.$fid][0] == -1 ? ' selected="selected"' : '').'>'.$lang['forums_edit_extend_sideselect_off'].'</option>';
if($sideselect) {
$query = $db->query("SELECT variable FROM {$tablepre}request WHERE type=-2");
while($side = $db->fetch_array($query)) {
$infosidestatus[0] && $sideselect[0] .= "<option value=\"$side[variable]\" ".($infosidestatus['f'.$fid][0] == $side['variable'] ? 'selected="selected"' : NULL).">$side[variable]</option>\n";
}
$infosidestatus[0] && $sideselect[0] .= '</select>';
}
if($forum['type'] == 'group') {
showtableheader();
showsetting('forums_edit_basic_cat_name', 'namenew', $forum['name'], 'text');
showsetting('forums_edit_extend_sub_horizontal', 'forumcolumnsnew', $forum['forumcolumns'], 'text');
showsetting('forums_cat_display', 'statusnew', $forum['status'], 'radio');
if($sideselect) {
showsetting('forums_cat_extend_sideselect', '', '', $sideselect[0]);
}
showsubmit('detailsubmit');
showtablefooter();
} else {
require_once DISCUZ_ROOT.'./include/editor.func.php';
$projectselect = "<select name=\"projectid\" onchange=\"window.location='$BASESCRIPT?action=forums&operation=edit&fid=$fid&projectid='+this.options[this.options.selectedIndex].value\"><option value=\"0\" selected=\"selected\">".$lang['none']."</option>";
$query = $db->query("SELECT id, name FROM {$tablepre}projects WHERE type='forum'");
while($project = $db->fetch_array($query)) {
$projectselect .= "<option value=\"$project[id]\" ".($project['id'] == $projectid ? 'selected="selected"' : NULL).">$project[name]</option>\n";
}
$projectselect .= '</select>';
$fupselect = "<select name=\"fupnew\">\n";
$query = $db->query("SELECT fid, type, name, fup FROM {$tablepre}forums WHERE fid<>'$fid' AND type<>'sub' ORDER BY displayorder");
while($fup = $db->fetch_array($query)) {
$fups[] = $fup;
}
if(is_array($fups)) {
foreach($fups as $forum1) {
if($forum1['type'] == 'group') {
$selected = $forum1['fid'] == $forum['fup'] ? "selected=\"selected\"" : NULL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -