📄 forums.inc.php
字号:
<?php
/*
[Discuz!] (C)2001-2007 Comsenz Inc.
This is NOT a freeware, use is subject to license terms
$Id: forums.inc.php 13772 2008-05-23 03:09:33Z liuqiang $
*/
if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
exit('Access Denied');
}
cpheader();
if(!$operation) {
if(!submitcheck('editsubmit')) {
shownav('forum', 'nav_forums');
showsubmenu('nav_forums');
showtips('forums_tips');
$projectselect = '<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['name'].'</option>';
}
?>
<script type="text/JavaScript">
var rowtypedata = [
[[1,'<input type="text" class="txt" name="newcatorder[]" value="0" />', 'td25'], [3, '<input name="newcat[]" value="<?=$lang['forums_add_category_name']?>" size="20" type="text" class="txt" />']],
[[1,'<input type="text" class="txt" name="neworder[{1}][]" value="0" />', 'td25'], [3, '<div class="board"><input name="newforum[{1}][]" value="<?=$lang['forums_add_forum_name']?>" size="20" type="text" class="txt" /><select name="projectid[{1}][]"><?=$projectselect?></select></div>']],
[[1,'<input type="text" class="txt" name="neworder[{1}][]" value="0" />', 'td25'], [3, '<div class="childboard"><input name="newforum[{1}][]" value="<?=$lang['forums_add_forum_name']?>" size="20" type="text" class="txt" /><select name="projectid[{1}][]"><?=$projectselect?></select></div>']],
];
</script>
<?
showformheader('forums');
showtableheader('');
showsubtitle(array('display_order', 'forums_name', 'forums_moderators', ''));
$forums = $showedforums = array();
$query = $db->query("SELECT f.fid, f.type, f.status, f.name, f.fup, f.displayorder, f.inheritedmod, ff.moderators, ff.password, ff.redirect
FROM {$tablepre}forums f LEFT JOIN {$tablepre}forumfields ff USING(fid)
ORDER BY f.type<>'group', f.displayorder");
while($forum = $db->fetch_array($query)) {
$forums[] = $forum;
}
for($i = 0; $i < count($forums); $i++) {
if($forums[$i]['type'] == 'group') {
echo showforum($i, 'group');
for($j = 0; $j < count($forums); $j++) {
if($forums[$j]['fup'] == $forums[$i]['fid'] && $forums[$j]['type'] == 'forum') {
echo showforum($j);
$lastfid = 0;
for($k = 0; $k < count($forums); $k++) {
if($forums[$k]['fup'] == $forums[$j]['fid'] && $forums[$k]['type'] == 'sub') {
echo showforum($k, 'sub');
$lastfid = $forums[$k]['fid'];
}
}
echo showforum($j, $lastfid, 'lastchildboard');
}
}
echo showforum($i, '', 'lastboard');
} elseif(!$forums[$i]['fup'] && $forums[$i]['type'] == 'forum') {
echo showforum($i);
for($j = 0; $j < count($forums); $j++) {
if($forums[$j]['fup'] == $forums[$i]['fid'] && $forums[$j]['type'] == 'sub') {
echo showforum($j, 'sub');
}
}
echo showforum($i, '', 'lastchildboard');
}
}
foreach($forums as $key => $forum) {
if(!in_array($key, $showedforums)) {
$db->query("UPDATE {$tablepre}forums SET fup='0', type='forum' WHERE fid='$forum[fid]'");
echo showforum($key);
}
}
echo showforum($i, '', 'last');
showsubmit('editsubmit');
showtablefooter();
showformfooter();
} else {
// read from groups
$usergroups = array();
$query = $db->query("SELECT groupid, type, creditshigher, creditslower FROM {$tablepre}usergroups");
while($group = $db->fetch_array($query)) {
$usergroups[$group['groupid']] = $group;
}
if(is_array($order)) {
foreach($order as $fid => $value) {
$db->query("UPDATE {$tablepre}forums SET name='$name[$fid]', displayorder='$order[$fid]' WHERE fid='$fid'");
}
}
if(is_array($newcat)) {
foreach($newcat as $key => $forumname) {
if(empty($forumname)) {
continue;
}
$db->query("INSERT INTO {$tablepre}forums (type, name, status, displayorder)
VALUES ('group', '$forumname', '1', '$newcatorder[$key]')");
$fid = $db->insert_id();
$db->query("INSERT INTO {$tablepre}forumfields (fid)
VALUES ('$fid')");
}
}
$table_forum_columns = array('fup', 'type', 'name', 'status', 'displayorder', 'styleid', 'allowsmilies', 'allowhtml', 'allowbbcode', 'allowimgcode', 'allowanonymous', 'allowshare', 'allowpostspecial', 'alloweditrules', 'alloweditpost', 'modnewposts', 'recyclebin', 'jammer', 'forumcolumns', 'threadcaches', 'disablewatermark', 'autoclose', 'simple');
$table_forumfield_columns = array('fid', 'attachextensions', 'threadtypes', 'postcredits', 'replycredits', 'digestcredits', 'postattachcredits', 'getattachcredits', 'viewperm', 'postperm', 'replyperm', 'getattachperm', 'postattachperm');
$projectdata = array();
if(is_array($newforum)) {
foreach($newforum as $fup => $forums) {
$forum = $db->fetch_first("SELECT * FROM {$tablepre}forums WHERE fid='$fup'");
foreach($forums as $key => $forumname) {
if(empty($forumname)) {
continue;
}
$forumfields = array();
$id = $projectid[$fup][$key];
if(!empty($id)) {
$projectdata[$id] = empty($projectdata[$id]) ? unserialize($db->result_first("SELECT value FROM {$tablepre}projects WHERE id='$id'")) : $projectdata[$id];
foreach($table_forum_columns as $field) {
$forumfields[$field] = $projectdata[$id][$field];
}
foreach($table_forumfield_columns as $field) {
$forumfields[$field] = $projectdata[$id][$field];
}
} else {
$forumfields['allowsmilies'] = $forumfields['allowbbcode'] = $forumfields['allowimgcode'] = $forumfields['allowshare'] = 1;
$forumfields['allowpostspecial'] = 127;
}
$forumfields['fup'] = $forum ? $fup : 0;
$forumfields['type'] = $forum['type'] == 'forum' ? 'sub' : 'forum';
$forumfields['name'] = $forumname;
$forumfields['status'] = 1;
$forumfields['displayorder'] = $neworder[$fup][$key];
$sql1 = $sql2 = $comma = '';
foreach($table_forum_columns as $field) {
if(isset($forumfields[$field])) {
$sql1 .= "$comma$field";
$sql2 .= "$comma'{$forumfields[$field]}'";
$comma = ', ';
}
}
$db->query("INSERT INTO {$tablepre}forums ($sql1) VALUES ($sql2)");
$forumfields['fid'] = $fid = $db->insert_id();
$sql1 = $sql2 = $comma = '';
foreach($table_forumfield_columns as $field) {
if(isset($forumfields[$field])) {
$sql1 .= "$comma$field";
$sql2 .= "$comma'{$forumfields[$field]}'";
$comma = ', ';
}
}
$db->query("INSERT INTO {$tablepre}forumfields ($sql1) VALUES ($sql2)");
$query = $db->query("SELECT uid, inherited FROM {$tablepre}moderators WHERE fid='$fup'");
while($mod = $db->fetch_array($query)) {
if($mod['inherited'] || $forum['inheritedmod']) {
$db->query("REPLACE INTO {$tablepre}moderators (uid, fid, inherited)
VALUES ('$mod[uid]', '$fid', '1')");
}
}
}
}
}
updatecache('forums');
cpmsg('forums_update_succeed', 'admincp.php?action=forums', 'succeed');
}
} elseif($operation == 'moderators' && $fid) {
if(!submitcheck('modsubmit')) {
shownav('forum', 'forums_moderators_edit');
showsubmenu(lang('forums_moderators_edit').' - '.$forum['name']);
showtips('forums_moderators_tips');
showformheader("forums&operation=moderators&fid=$fid&");
showtableheader('', 'fixpadding');
showsubtitle(array('', 'display_order', 'username', 'forums_moderators_inherited'));
$query = $db->query("SELECT m.username, mo.* FROM {$tablepre}members m, {$tablepre}moderators mo WHERE mo.fid='$fid' AND m.uid=mo.uid ORDER BY mo.inherited, mo.displayorder");
while($mod = $db->fetch_array($query)) {
showtablerow('', array('class="td25"', 'class="td28"'), array(
'<input type="checkbox" class="checkbox" name="delete[]" value="'.$mod[uid].'"'.($mod['inherited'] ? ' disabled' : '').' />',
'<input type="text" class="txt" name="displayordernew['.$mod[uid].']" value="'.$mod[displayorder].'" size="2" />',
"<a href=\"space.php?uid=$mod[uid]\" target=\"_blank\">$mod[username]</a>",
lang($mod['inherited'] ? 'yes' : 'no'),
));
}
if($forum['type'] == 'group' || $forum['type'] == 'sub') {
$checked = $forum['type'] == 'group' ? 'checked' : '';
$disabled = 'disabled';
} else {
$checked = $forum['inheritedmod'] ? 'checked' : '';
$disabled = '';
}
showtablerow('', array('class="td25"', 'class="td28"'), array(
lang('add_new'),
'<input type="text" class="txt" name="newdisplayorder" value="0" size="2" />',
'<input type="text" class="txt" name="newmoderator" value="" size="20" />',
''
));
showsubmit('modsubmit', 'submit', 'del', '<input class="checkbox" type="checkbox" name="inheritedmodnew" value="1" '.$checked.' '.$disabled.' id="inheritedmodnew" /><label for="inheritedmodnew">'.lang('forums_moderators_inherit').'</label>');
showtablefooter();
showformfooter();
} else {
if($forum['type'] == 'group') {
$inheritedmodnew = 1;
} elseif($forum['type'] == 'sub') {
$inheritedmodnew = 0;
}
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();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -