$userService->update($rt['uid'], array('groups' => $rt['groups'])); } if (in_array($rt['groupid'], array('-1', '6', '7')) && $rt['groups'] == '') { $db->update("DELETE FROM pw_administrators WHERE uid=" . S::sqlEscape($rt['uid'], false)); } else { $db->update("REPLACE INTO pw_administrators SET" . S::sqlSingle(array('uid' => $rt['uid'], 'username' => $rt['username'], 'groupid' => $rt['groupid'], 'groups' => $rt['groups']), false)); } } } } $newadmin = addslashes(implode(',', $newadmin)); //$db->update("UPDATE pw_forums SET forumadmin=',$newadmin,' WHERE fid=".S::sqlEscape($fid)); pwQuery::update('pw_forums', 'fid=:fid', array($fid), array('forumadmin' => ",{$newadmin},")); require_once R_P . 'admin/cache.php'; updatecache_forums($fid); updatecache_fd(true); } if ($errorname) { $errorname = S::escapeChar(substr($errorname, 1)); Showmsg('user_not_exists'); } else { refreshto("forumcp.php?action=edit&type={$type}&fid={$fid}", 'operate_success'); } } } elseif ($type == 'trecycle' && $db_recycle) { require_once R_P . 'require/updateforum.php'; require_once R_P . 'require/writelog.php'; S::gp(array('page', 'step'), 'GP', 2); if (empty($step)) { S::gp(array('username', 'starttime', 'endtime', 't_type')); $page < 1 && ($page = 1);
admincheck($rt['uid'], $rt['username'], $newgid, $newgroups, 'delete'); } else { admincheck($rt['uid'], $rt['username'], $newgid, $newgroups, 'update'); } continue; } if ($rt['gid'] != $rt['groupid'] && strpos($rt['groups'], "," . $rt['gid'] . ",") === false) { $db->update("DELETE FROM pw_extragroups WHERE uid=" . pwEscape($rt['uid'], false) . 'AND gid=' . pwEscape($rt['gid'], false)); continue; } $rt['startdate'] = get_date($rt['startdate']); $rt['slevel'] = $ltitle[$rt['gid']]; $rt['tolevel'] = $ltitle[$rt['togid']]; $memberdb[] = $rt; } $updatecache_fd && updatecache_fd(); include PrintEot('uptime'); exit; } elseif ($action == 'setlevel') { if (!$_POST['step']) { include PrintEot('uptime'); exit; } elseif ($_POST['step'] == 1) { PostCheck($verify); InitGP(array('username'), 'P'); !$username && adminmsg('operate_error'); $rt = $db->get_one("SELECT uid,username,groupid,groups FROM pw_members WHERE username=" . pwEscape($username)); if (!$rt) { $errorname = $username; adminmsg('user_not_exists'); } elseif (in_array($rt['username'], $manager) && !If_manager) {
function updatecache_f($return = 0) { global $db; updatecache_fd(false); $db->update("UPDATE pw_forums SET ifsub='0' WHERE type<3"); $db->update("UPDATE pw_forums SET ifsub='1' WHERE type>2"); $appdb = array(); $query = $db->query("SELECT f.*,fe.creditset,fe.forumset,fe.commend,fe.appinfo FROM pw_forums f LEFT JOIN pw_forumsextra fe ON f.fid=fe.fid ORDER BY f.vieworder,f.fid"); $fkeys = array('fid', 'fup', 'ifsub', 'childid', 'type', 'name', 'style', 'f_type', 'cms', 'ifhide', 'title', 'metadescrip', 'descrip', 'keywords'); $catedb = $forumdb = $subdb1 = $subdb2 = $forum_cache = $fname = array(); while ($forums = $db->fetch_array($query)) { writeforumscache($forums); $fname[$forums['fid']] = str_replace(array("\\", "'", '<', '>'), array("\\\\", "\\'", '<', '>'), strip_tags($forums['name'])); $forum = array(); foreach ($fkeys as $k) { $forum[$k] = $forums[$k]; } if ($forums['appinfo']) { $forums['appinfo'] = unserialize($forums['appinfo']); $appdb[$forums['fid']] = $forums['appinfo']; } if ($forum['type'] == 'category') { $catedb[] = $forum; } elseif ($forum['type'] == 'forum') { $forumdb[$forum['fup']] || ($forumdb[$forum['fup']] = array()); $forumdb[$forum['fup']][] = $forum; } elseif ($forum['type'] == 'sub') { $subdb1[$forum['fup']] || ($subdb1[$forum['fup']] = array()); $subdb1[$forum['fup']][] = $forum; } else { $subdb2[$forum['fup']] || ($subdb2[$forum['fup']] = array()); $subdb2[$forum['fup']][] = $forum; } } $forumcache = ''; foreach ($catedb as $cate) { if (!$cate) { continue; } $forum_cache[$cate['fid']] = $cate; if ($cate['f_type'] != 'hidden' && $cate['childid'] > 0) { $forumlist_cache[$cate['fid']]['name'] = strip_tags($cate['name']); } if ($cate['cms']) { $cmscache .= "<option value=\"{$cate['fid']}\">>> {$fname[$cate[fid]]}</option>\r\n"; } elseif ($cate['f_type'] != 'hidden') { $forumcache .= "<option value=\"{$cate['fid']}\">>> {$fname[$cate[fid]]}</option>\r\n"; } if (!$forumdb[$cate['fid']]) { continue; } foreach ($forumdb[$cate['fid']] as $forum) { $forum_cache[$forum['fid']] = $forum; if ($forum['f_type'] != 'hidden' && $forumlist_cache[$cate['fid']]) { $forumlist_cache[$cate['fid']]['child'][$forum['fid']] = strip_tags($forum['name']); } if ($forum['cms']) { $cmscache .= "<option value=\"{$forum['fid']}\"> |- {$fname[$forum[fid]]}</option>\r\n"; } elseif ($forum['f_type'] != 'hidden') { $forumcache .= "<option value=\"{$forum['fid']}\"> |- {$fname[$forum[fid]]}</option>\r\n"; } if (!$subdb1[$forum['fid']]) { continue; } foreach ($subdb1[$forum['fid']] as $sub1) { $forum_cache[$sub1['fid']] = $sub1; if ($sub1['cms']) { $cmscache .= "<option value=\"{$sub1['fid']}\"> |- {$fname[$sub1[fid]]}</option>\r\n"; } elseif ($sub1['f_type'] != 'hidden') { $forumcache .= "<option value=\"{$sub1['fid']}\"> |- {$fname[$sub1[fid]]}</option>\r\n"; } if (!$subdb2[$sub1['fid']]) { continue; } foreach ($subdb2[$sub1['fid']] as $sub2) { $forum_cache[$sub2['fid']] = $sub2; if ($sub2['cms']) { $cmscache .= "<option value=\"{$sub2['fid']}\"> |- {$fname[$sub2[fid]]}</option>\r\n"; } elseif ($sub2['f_type'] != 'hidden') { $forumcache .= "<option value=\"{$sub2['fid']}\"> |- {$fname[$sub2[fid]]}</option>\r\n"; } } } } } //主题分类缓存 $query = $db->query("SELECT * FROM pw_topictype ORDER BY vieworder "); while ($rt = $db->fetch_array($query)) { if ($rt['upid'] == 0) { $typedb[$rt['id']] = $rt; } else { $subtypedb[$rt['upid']][] = $rt; } } foreach ($typedb as $key => $value) { $t_typedb[$value['fid']][$key] = $value; empty($subtypedb[$value['id']]) && ($subtypedb[$value['id']] = array()); foreach ($subtypedb[$value['id']] as $k => $v) { $t_typedb[$v['fid']][$v['id']] = $v; } } $forum_cache = "\$forum=" . pw_var_export($forum_cache) . ";"; $forumcache = "\$forumcache='\r\n{$forumcache}';\r\n\$cmscache='\r\n{$cmscache}';"; $forumlist_cache = "\$pwForumList=" . pw_var_export($forumlist_cache) . ";"; $topic_type_cache = "\$topic_type_cache=" . pw_var_export($t_typedb) . ";"; $forum_appinfo = "\$forum_appinfo=" . pw_var_export($appdb) . ";"; writeover(D_P . "data/bbscache/forumcache.php", "<?php\r\n" . $forumcache . "\r\n?>"); writeover(D_P . 'data/bbscache/forum_cache.php', "<?php\r\n" . $forum_cache . "\r\n?>"); writeover(D_P . 'data/bbscache/forumlist_cache.php', "<?php\r\n" . $forumlist_cache . "\r\n?>"); writeover(D_P . 'data/bbscache/forum_appinfo.php', "<?php\r\n" . $forum_appinfo . "\r\n?>"); $cache = $forum_cache . "\r\n" . $forumcache . "\r\n" . $forumlist_cache . "\r\n" . $topic_type_cache; $db->pw_update("SELECT * FROM pw_cache WHERE name='forum_cache'", "UPDATE pw_cache SET cache=" . pwEscape($cache, false) . " WHERE name='forum_cache'", "INSERT INTO pw_cache SET name='forum_cache',cache=" . pwEscape($cache, false)); updateCatedbs(); if (empty($return)) { cache_read(); } }
function updatecache_f($return = 0) { global $db; updatecache_fd(false); //* $db->update("UPDATE pw_forums SET ifsub='0' WHERE type<3"); $db->update(pwQuery::buildClause("UPDATE :pw_table SET ifsub='0' WHERE type<3", array('pw_forums'))); //* $db->update("UPDATE pw_forums SET ifsub='1' WHERE type>2"); $db->update(pwQuery::buildClause("UPDATE :pw_table SET ifsub='1' WHERE type>2", array('pw_forums'))); $t_typedb = getTopictypeCache(); $appdb = array(); $query = $db->query("SELECT f.*,fe.creditset,fe.forumset,fe.commend,fe.appinfo,c.ifopen as cnifopen FROM pw_forums f LEFT JOIN pw_forumsextra fe ON f.fid=fe.fid LEFT JOIN pw_cnclass c ON f.fid=c.fid ORDER BY f.vieworder,f.fid"); $fkeys = array('fid', 'fup', 'ifsub', 'childid', 'type', 'name', 'style', 'f_type', 'ifcms', 'ifhide', 'title', 'metadescrip', 'descrip', 'keywords', 'forumadmin'); $catedb = $forumdb = $subdb1 = $subdb2 = $forum_cache = $fname = array(); while ($forums = $db->fetch_array($query)) { $forums['topictype'] = $t_typedb[$forums['fid']]; writeforumscache($forums); $fname[$forums['fid']] = str_replace(array("\\", "'", '<', '>'), array("\\\\", "\\'", '<', '>'), strip_tags($forums['name'])); $forum = array(); foreach ($fkeys as $k) { $forum[$k] = $forums[$k]; } if ($forums['appinfo']) { $forums['appinfo'] = unserialize($forums['appinfo']); $appdb[$forums['fid']] = $forums['appinfo']; } if ($forum['type'] == 'category') { $catedb[] = $forum; } elseif ($forum['type'] == 'forum') { $forumdb[$forum['fup']] || ($forumdb[$forum['fup']] = array()); $forumdb[$forum['fup']][] = $forum; } elseif ($forum['type'] == 'sub') { $subdb1[$forum['fup']] || ($subdb1[$forum['fup']] = array()); $subdb1[$forum['fup']][] = $forum; } else { $subdb2[$forum['fup']] || ($subdb2[$forum['fup']] = array()); $subdb2[$forum['fup']][] = $forum; } } $forumcache = ''; $pwForumAllList = $forumlist_cache = array(); foreach ($catedb as $cate) { if (!$cate) { continue; } $forum_cache[$cate['fid']] = $cate; if ($forumdb[$cate['fid']]) { if ($cate['f_type'] != 'hidden') { $forumlist_cache[$cate['fid']]['name'] = strip_tags($cate['name']); } else { $pwForumAllList[$cate['fid']]['name'] = strip_tags($cate['name']); } } if ($cate['cms']) { $cmscache .= "<option value=\"{$cate['fid']}\">>> {$fname[$cate[fid]]}</option>\r\n"; } elseif ($cate['f_type'] != 'hidden') { $forumcache .= "<option value=\"{$cate['fid']}\">>> {$fname[$cate[fid]]}</option>\r\n"; } if (!$forumdb[$cate['fid']]) { continue; } foreach ($forumdb[$cate['fid']] as $forum) { $forum_cache[$forum['fid']] = $forum; if ($forum['f_type'] != 'hidden') { if (!isset($forumlist_cache[$cate['fid']]['name'])) { $forumlist_cache[$cate['fid']]['name'] = $pwForumAllList[$cate['fid']]['name']; } $forumlist_cache[$cate['fid']]['child'][$forum['fid']] = strip_tags($forum['name']); } else { if (!isset($pwForumAllList[$cate['fid']]['name'])) { $pwForumAllList[$cate['fid']]['name'] = $forumlist_cache[$cate['fid']]['name']; } $pwForumAllList[$cate['fid']]['child'][$forum['fid']] = strip_tags($forum['name']); } if ($forum['cms']) { $cmscache .= "<option value=\"{$forum['fid']}\"> |- {$fname[$forum[fid]]}</option>\r\n"; } elseif ($forum['f_type'] != 'hidden') { $forumcache .= "<option value=\"{$forum['fid']}\"> |- {$fname[$forum[fid]]}</option>\r\n"; } if (!$subdb1[$forum['fid']]) { continue; } foreach ($subdb1[$forum['fid']] as $sub1) { $forum_cache[$sub1['fid']] = $sub1; if ($sub1['cms']) { $cmscache .= "<option value=\"{$sub1['fid']}\"> |- {$fname[$sub1[fid]]}</option>\r\n"; } elseif ($sub1['f_type'] != 'hidden') { $forumcache .= "<option value=\"{$sub1['fid']}\"> |- {$fname[$sub1[fid]]}</option>\r\n"; } if (!$subdb2[$sub1['fid']]) { continue; } foreach ($subdb2[$sub1['fid']] as $sub2) { $forum_cache[$sub2['fid']] = $sub2; if ($sub2['cms']) { $cmscache .= "<option value=\"{$sub2['fid']}\"> |- {$fname[$sub2[fid]]}</option>\r\n"; } elseif ($sub2['f_type'] != 'hidden') { $forumcache .= "<option value=\"{$sub2['fid']}\"> |- {$fname[$sub2[fid]]}</option>\r\n"; } } } } } $forum_cache = "\$forum=" . pw_var_export($forum_cache) . ";"; $forumcache = "\$forumcache='\r\n{$forumcache}';\r\n\$cmscache='\r\n{$cmscache}';"; $forumlist_cache = "\$pwForumList=" . pw_var_export($forumlist_cache) . ";\r\n\$pwForumAllList = " . pw_var_export($pwForumAllList) . ";"; $topic_type_cache = "\$topic_type_cache=" . pw_var_export($t_typedb) . ";"; $forum_appinfo = "\$forum_appinfo=" . pw_var_export($appdb) . ";"; pwCache::setData(D_P . "data/bbscache/forumcache.php", "<?php\r\n" . $forumcache . "\r\n?>"); pwCache::setData(D_P . 'data/bbscache/forum_cache.php', "<?php\r\n" . $forum_cache . "\r\n?>"); pwCache::setData(D_P . 'data/bbscache/forumlist_cache.php', "<?php\r\n" . $forumlist_cache . "\r\n?>"); pwCache::setData(D_P . 'data/bbscache/forum_appinfo.php', "<?php\r\n" . $forum_appinfo . "\r\n?>"); pwCache::setData(D_P . 'data/bbscache/forum_typecache.php', "<?php\r\n" . $topic_type_cache . "\r\n?>"); $cache = $forum_cache . "\r\n" . $forumlist_cache; $db->pw_update("SELECT * FROM pw_cache WHERE name='forum_cache'", "UPDATE pw_cache SET cache=" . S::sqlEscape($cache, false) . " WHERE name='forum_cache'", "INSERT INTO pw_cache SET name='forum_cache',cache=" . S::sqlEscape($cache, false)); if (empty($return)) { cache_read(); } }