function arr_tag2atm(&$item, $fmode = '') { if (in_array($fmode, array('', 'f', 'm', 'ma'))) { $fields = read_cache($fmode . 'fields', $item[$fmode == 'm' ? 'mchid' : ($fmode == 'ma' ? 'matid' : 'chid')]); } elseif (in_array($fmode, array('ca', 'cc'))) { $fields = reload_cache($fmode . 'fields'); } foreach ($fields as $k => $v) { if (isset($item[$k]) && $v['datatype'] == 'htmltext') { $item[$k] = tag2atm($item[$k], 1); } } }
function save_cnode($cnstr, $sid, $cncid, $tpls = '') { global $timestamp, $db, $tblprefix, $cn_max_addno; parse_str($cnstr, $idsarr); $cnconfigs = reload_cache('cnconfigs', '', '', $sid); if (!($cnconfig = @$cnconfigs[$cncid])) { return; } $cnode = array('caid' => 0, 'cnlevel' => count($idsarr), 'mainline' => 0); $i = 0; foreach ($idsarr as $k => $v) { !$i && ($cnode['mainline'] = $k == 'caid' ? 0 : str_replace('ccid', '', $k)); $k == 'caid' && ($cnode['caid'] = $v); $i++; } unset($idsarr); if ($cnid = $db->result_one("SELECT cnid FROM {$tblprefix}cnodes WHERE sid={$sid} AND ename='{$cnstr}'")) { $sqlstr = ''; foreach (array('tpls', 'wtpls', 'urls', 'statics', 'periods') as $var) { $cnconfig[$var . 'mode'] == 2 && ($sqlstr .= ',' . $var . "='" . $cnconfig[$var] . "'"); } $db->query("UPDATE {$tblprefix}cnodes SET cncids = CONCAT(cncids,'|{$cncid}|') {$sqlstr} WHERE cnid='{$cnid}' AND sid='{$sid}'"); return; } $needstatics = ''; for ($i = 0; $i <= $cn_max_addno; $i++) { $needstatics = $timestamp . ','; } $sqlstr = ''; $tpls && ($sqlstr .= ",tpls='{$tpls}'"); $vararr = array('wtpls', 'urls', 'statics', 'periods'); !$tpls && ($vararr[] = 'tpls'); foreach ($vararr as $var) { $cnconfig[$var . 'mode'] && ($sqlstr .= ',' . $var . "='" . $cnconfig[$var] . "'"); } $db->query("INSERT INTO {$tblprefix}cnodes SET \n\t\tename='{$cnstr}', \n\t\tsid='{$sid}', \n\t\tinconfig='1',\n\t\tcncids='|{$cncid}|',\n\t\tmainline='{$cnode['mainline']}',\n\t\tcaid='{$cnode['caid']}',\n\t\tcnlevel='{$cnode['cnlevel']}',\n\t\tneedstatics='{$needstatics}' \n\t\t{$sqlstr}\n\t\t"); return; }
$subsitenew['dirname'] = trim(strip_tags($subsitenew['dirname'])); if (!$subsitenew['sitename'] || !$subsitenew['dirname']) { amessage('subdatamiss', M_REFERER); } if (preg_match("/[^a-zA-Z_0-9]+/", $subsitenew['dirname'])) { amessage('substadirill', M_REFERER); } $subsitenew['dirname'] = strtolower($subsitenew['dirname']); if (!mmkdir(M_ROOT . $subsitenew['dirname'], 0)) { anmessage('nowcresubstadir', M_REFERER); } $db->query("INSERT INTO {$tblprefix}subsites SET \n\t\t\t\t\tsitename='{$subsitenew['sitename']}',\n\t\t\t\t\tdirname='{$subsitenew['dirname']}',\n\t\t\t\t\ttemplatedir='{$templatedir}',\n\t\t\t\t\tineedstatic='{$timestamp}'\n\t\t\t\t\t"); if ($nsid = $db->insert_id()) { updatecache('subsites'); //需要先将模板目录放入子站内存之中,才能进行模板的转换 $subsites = reload_cache('subsites'); include_once M_ROOT . "./include/cparse.fun.php"; cn_blank('', $nsid, 0); foreach (array('catalogs', 'cnconfigs', 'cnodes', 'archives', 'freeinfos', 'gmissions', 'gmodels', 'gurls') as $dbtable) { $db->query("UPDATE {$tblprefix}{$dbtable} SET sid='{$nsid}' WHERE sid='0'"); } //将在子站记录中要保留的记录存下来 $s_config = array(); load_cache('channels'); foreach ($channels as $k => $v) { $v = read_cache('channel', $k, '', $sid); $s_config[$k]['available'] = $v['available']; $s_config[$k]['arctpls'] = $v['arctpls']; $s_config[$k]['pretpl'] = $v['pretpl']; $s_config[$k]['srhtpl'] = $v['srhtpl']; }
// $useTable = MERGELOGTABLE; $useTable = USETABLE; } elseif ($table) { $useTable = $table; } else { $useTable = DEFAULTLOGTABLE; } //------------------------------------------------------------------------ // Use cache? //------------------------------------------------------------------------ if (USE_CACHE && table_exists(CACHETABLENAME, $dbLink)) { // If the cache table is empty then reload it. $sql = "SELECT * FROM " . CACHETABLENAME . " WHERE tablename='" . $useTable . "'"; $queryresult = perform_query($sql, $dbLink); if (num_rows($queryresult) == 0) { reload_cache($useTable, $dbLink); } // Get the timestamp for the last update. $sql = "SELECT updatetime FROM " . CACHETABLENAME . " WHERE tablename='" . $useTable . "'"; $queryresult = perform_query($sql, $dbLink); $row = fetch_array($queryresult); $cacheUpdate = $row['updatetime']; // Print info about the cache. echo "<table class=\"searchform\">"; echo "<tr class=\"lighter\"><td>"; echo "<b>USING CACHE TO POPULATE HOST, FACILITY, AND PROGRAM FIELDS.</b>"; echo "<br />Cache last updated on " . $cacheUpdate . "."; echo "</td></tr></table>"; // Get the HOST list $sql = "SELECT DISTINCT value FROM " . CACHETABLENAME . " WHERE type='HOST'\n\t\t \tAND tablename='" . $useTable . "'"; $queryresult = perform_query($sql, $dbLink);
$sql = "SELECT * FROM ".MERGELOGTABLE." LIMIT 1"; $result = perform_query($sql, $dbLink); if(num_rows($result)) { echo "Loading the cache with data from the merge table\n"; reload_cache(MERGELOGTABLE, $dbLink); } } else { // Else load the cache with data from each log table */ $tableArray = get_logtables($dbLink); foreach ($tableArray as $table) { if ($table == MERGELOGTABLE) { continue; } echo "Loading the cache with data from: " . $table . "\n"; reload_cache($table, $dbLink); } // } // Delete rows with data from log tables that do not exist echo "\nDeleting cache entries for tables that no longer exist...\n"; $tableArray = get_logtables($dbLink); $sql = "SELECT DISTINCT tablename FROM " . CACHETABLENAME; $result = perform_query($sql, $dbLink); while ($row = fetch_array($result)) { if (array_search($row['tablename'], $tableArray) === FALSE) { $sql = "DELETE FROM " . CACHETABLENAME . " WHERE tablename='" . $row['tablename'] . "'"; perform_query($sql, $dbLink); } } if ($mergelog) { $sql = "DELETE FROM " . CACHETABLENAME . " WHERE tablename!='" . MERGELOGTABLE . "'";
function cacheinit() { global $langs; include_once M_ROOT . './include/ios.fun.php'; include_once M_ROOT . './include/cache.fun.php'; showjsmessage(ilang('init_cache')); $langs = reload_cache('langs'); rebuild_cache(-1); }
$db->query("UPDATE {$tblprefix}amconfigs SET \n\t\t\t\t\t\t\t\tcname='{$amconfignew['cname']}'\n\t\t\t\t\t\t\t\tWHERE amcid='{$amcid}'"); } } } adminlog(lang('editbaprojectlist')); updatecache('amconfigs'); amessage('bapmodifyfinish', "?entry=amconfigs&action=amconfigsedit"); } } elseif ($action == 'amconfigdetail' && !empty($amcid)) { empty($amconfigs[$amcid]) && amessage('chooseadminbap'); $amconfig = $amconfigs[$amcid]; if ($amconfig['sid'] && empty($subsites[$amconfig['sid']])) { amessage('nosite'); } $menus = reload_cache($amconfig['sid'] ? 'mnmenuss' : 'mnmenus'); $mnlangs = reload_cache($amconfig['sid'] ? 'mnlangss' : 'mnlangs'); $langs += $mnlangs; if (!submitcheck('bamconfigdetail')) { $url_type = 'amconfigdetail'; include 'urlsarr.inc.php'; url_nav('[' . $amconfigs[$amcid]['cname'] . '] ' . lang('amconfig'), $urlsarr, 'base'); foreach (array('menus', 'funcs', 'caids', 'fcaids', 'mchids', 'cuids', 'mcuids', 'matids', 'checks') as $var) { $amconfig[$var] = array_filter(explode(',', $amconfig[$var])); } tabheader(lang('msitebasshieldmenu') . ' <input class="checkbox" type="checkbox" name="mchkall" onclick="checkall(this.form,\'menusnew\',\'mchkall\')">' . lang('selectall'), 'amconfigdetail', '?entry=amconfigs&action=amconfigdetail&amcid=' . $amcid, 6); foreach ($menus as $k1 => $v1) { $menusarr = array(); foreach ($v1 as $k2 => $v2) { $menusarr[$k2] = lang('menuitem_' . $k2); } trbasic(lang('menutype_' . $k1), '', makecheckbox("menusnew[]", $menusarr, empty($amconfig['menus']) ? array() : $amconfig['menus'], 5), '');
} } if (!empty($stepadds['initfields'])) { //删除通用字段在主表中增加的字段 foreach ($stepadds['initfields'] as $ename) { $db->query("ALTER TABLE {$tblprefix}archives DROP {$ename}", 'SILENT'); //还要删除每个模型中该通用字段的缓存 } } if (!empty($stepadds['fields'])) { //删除在mfields表中增加的记录 $db->query("DELETE FROM {$tblprefix}fields WHERE fid " . multi_str($stepadds['fields']), 'SILENT'); } updatecache('initfields'); updatecache('channels'); $channels = reload_cache('channels'); foreach ($channels as $k => $v) { updatecache('fields', $k); } $db->query("UPDATE {$tblprefix}subsites SET channels='' WHERE sid='{$nsid}'"); updatecache('subsites'); unset($stepeds['channels'], $idsmap['chids'], $stepadds['channels'], $stepadds['initfields'], $stepadds['fields']); ocache2file($stepeds, 'stepeds'); ocache2file($idsmap, 'idsmap'); ocache2file($stepadds, 'stepadds'); amessage('undosuc', '?entry=subsetup&action=channels'); } } elseif ($action == 'altypes') { load_cache('altypes', $nsid); $oaltypes = oread_cache('altypes', '', '', 'cache'); $n_operated = isset($stepeds['altypes']);
tabheader(lang('editusergroup') . '-' . $grouptype['cname'], 'usergroupdetail', "?entry=usergroups&action=usergroupdetail>id={$gtid}&ugid={$ugid}&forward=" . rawurlencode($forward), 2, 0, 0, 1); trbasic(lang('usergroupcname'), 'usergroupnew[cname]', $usergroup['cname']); trbasic(lang('inchallowuse'), '', makecheckbox('usergroupnew[mchids][]', mchidsarr(), !empty($usergroup['mchids']) ? explode(',', $usergroup['mchids']) : array(), 5), ''); trbasic(lang('uservalid') . '(' . lang('day') . ')', 'usergroupnew[limitday]', $usergroup['limitday']); if (!$grouptype['issystem'] && $grouptype['mode'] != 2) { trbasic(lang('autoinit'), 'usergroupnew[autoinit]', $usergroup['autoinit'], 'radio', lang('agautoinit')); } if ($grouptype['forbidden']) { trbasic(lang('alloissuearch'), 'usergroupnew[issuepermit]', $usergroup['issuepermit'], 'radio'); trbasic(lang('allissuecomm'), 'usergroupnew[commentpermit]', $usergroup['commentpermit'], 'radio'); trbasic(lang('allpurcgoods'), 'usergroupnew[purchasepermit]', $usergroup['purchasepermit'], 'radio'); trbasic(lang('alloissans'), 'usergroupnew[answerpermit]', $usergroup['answerpermit'], 'radio'); trbasic(lang('allouploattach'), 'usergroupnew[uploadpermit]', $usergroup['uploadpermit'], 'radio'); trbasic(lang('allodownattach'), 'usergroupnew[downloadpermit]', $usergroup['downloadpermit'], 'radio'); } elseif ($grouptype['afunction']) { $amconfigs = reload_cache('amconfigs'); $sidsarr = array('m' => lang('msite')); foreach ($subsites as $k => $v) { $sidsarr[$k] = $v['sitename']; } foreach ($sidsarr as $k => $v) { $amcidarr = array('0' => lang('noset')); foreach ($amconfigs as $k1 => $v1) { if ($v1['sid'] == intval($k)) { $amcidarr[$k1] = $v1['cname']; } } trbasic($v . lang('admibackaproje'), "usergroupnew[amcids][{$k}]", makeoption($amcidarr, empty($usergroup['amcids'][$k]) ? 0 : $usergroup['amcids'][$k]), 'select'); } trbasic(lang('allouploattach'), 'usergroupnew[uploadpermit]', $usergroup['uploadpermit'], 'radio'); trbasic(lang('allinsisear'), 'usergroupnew[searchpermit]', $usergroup['searchpermit'], 'radio');
function deal_btagnames() { global $btagnames; $commus = reload_cache('commus'); sys_cache('btagnames'); $commoned = 0; $channels = reload_cache('channels'); foreach ($channels as $chid => $channel) { $fields = reload_cache('fields', $chid); foreach ($fields as $k => $field) { if ($field['mcommon']) { !$commoned && ($btagnames[] = array('ename' => $k, 'cname' => $field['cname'], 'bclass' => 'archive', 'sclass' => '', 'datatype' => $field['datatype'])); } else { $btagnames[] = array('ename' => $k, 'cname' => $field['cname'], 'bclass' => 'archive', 'sclass' => $chid, 'datatype' => $field['datatype']); } } if (@$commus[$channel['cuid']]['cclass'] == 'answer') { $btagnames[] = array('ename' => 'appeals', 'cname' => lang('appealamount'), 'bclass' => 'archive', 'sclass' => $chid, 'datatype' => 'int'); $btagnames[] = array('ename' => 'appealdate', 'cname' => lang('appeendtime'), 'bclass' => 'archive', 'sclass' => $chid, 'datatype' => 'date'); } $commoned = 1; } unset($channels, $fields); $commoned = 0; $fchannels = reload_cache('fchannels'); foreach ($fchannels as $chid => $fchannel) { $fields = reload_cache('ffields', $chid); foreach ($fields as $k => $field) { if ($k == 'subject') { !$commoned && ($btagnames[] = array('ename' => $k, 'cname' => $field['cname'], 'bclass' => 'freeinfo', 'sclass' => '', 'datatype' => $field['datatype'])); } else { $btagnames[] = array('ename' => $k, 'cname' => $field['cname'], 'bclass' => 'freeinfo', 'sclass' => $chid, 'datatype' => $field['datatype']); } } $commoned = 1; } unset($fchannels, $fields); $cotypes = reload_cache('cotypes'); foreach ($cotypes as $coid => $cotype) { $btagnames[] = array('ename' => 'ccid' . $coid . 'title', 'cname' => $cotype['cname'] . lang('cocname'), 'bclass' => 'archive', 'sclass' => '', 'datatype' => 'text'); $btagnames[] = array('ename' => "ccid{$coid}", 'cname' => $cotype['cname'] . lang('coclass') . 'id', 'bclass' => 'archive', 'sclass' => '', 'datatype' => 'int'); } unset($cotypes, $cotype); $cafields = reload_cache('cafields'); foreach ($cafields as $field) { $btagnames[] = array('ename' => $field['ename'], 'cname' => $field['cname'], 'bclass' => 'cnode', 'sclass' => 'catalog', 'datatype' => $field['datatype']); } unset($cafields, $field); $ccfields = reload_cache('ccfields'); foreach ($ccfields as $field) { $btagnames[] = array('ename' => $field['ename'], 'cname' => $field['cname'], 'bclass' => 'cnode', 'sclass' => 'coclass', 'datatype' => $field['datatype']); } unset($ccfields, $field); $commoned = 0; $mchannels = reload_cache('mchannels'); foreach ($mchannels as $chid => $mchannel) { $mfields = reload_cache('mfields', $chid); foreach ($mfields as $k => $field) { if ($field['mcommon']) { !$commoned && !in_array($k, array('password')) && ($btagnames[] = array('ename' => $k, 'cname' => $field['cname'], 'bclass' => 'member', 'sclass' => '', 'datatype' => $field['datatype'])); } else { $btagnames[] = array('ename' => $k, 'cname' => $field['cname'], 'bclass' => 'member', 'sclass' => $chid, 'datatype' => $field['datatype']); } } $commoned = 1; } unset($mchannels, $mfields, $field); $currencys = reload_cache('currencys'); foreach ($currencys as $crid => $currency) { $btagnames[] = array('ename' => 'currency' . $crid, 'cname' => $currency['cname'] . lang('amount'), 'bclass' => 'member', 'sclass' => '', 'datatype' => 'int'); } unset($currencys, $currency); $grouptypes = reload_cache('grouptypes'); foreach ($grouptypes as $gtid => $grouptype) { $btagnames[] = array('ename' => 'grouptype' . $gtid, 'cname' => $grouptype['cname'] . lang('usergroup') . 'id', 'bclass' => 'member', 'sclass' => '', 'datatype' => 'int'); $btagnames[] = array('ename' => 'grouptype' . $gtid . 'name', 'cname' => $grouptype['cname'] . lang('usergroup'), 'bclass' => 'member', 'sclass' => '', 'datatype' => 'text'); } unset($grouptypes, $grouptype); $bnames = array(); foreach ($btagnames as $k => $v) { if (!array_key_exists($v['ename'], $bnames)) { $bnames[$v['ename']] = $v['cname']; } elseif (!in_array($v['cname'], array_filter(explode(' | ', $bnames[$v['ename']])))) { $bnames[$v['ename']] .= ' | ' . $v['cname']; } } cache2file($btagnames, 'btagnames'); cache2file($bnames, 'bnames'); unset($btagnames, $bnames); }