function ordercatalogs(&$catalogs, $pid) { $tempids = $ocatalogs = array(); $tempids = son_ids($catalogs, $pid, $tempids); foreach ($tempids as $tempid) { $ocatalogs[$tempid] = $catalogs[$tempid]; } unset($tempids); return $ocatalogs; }
function cfgs2ids($configs, $sid) { global $cotypes, $catalogs; if (!$configs) { return array(); } $rets = array(); foreach ($configs as $k => $v) { $sarr = $k ? read_cache('coclasses', $k) : read_cache('catalogs', '', '', $sid); $ret = array(); if (empty($v['mode'])) { foreach ($sarr as $x => $y) { $ret[] = $x; } } elseif ($v['mode'] > 0) { foreach ($sarr as $x => $y) { if ($y['level'] == $v['mode'] - 1) { $ret[] = $x; } } } elseif ($v['mode'] == -1) { if ($ids = array_filter(explode(',', @$v['ids']))) { if (!empty($v['son'])) { $sonids = array(); foreach ($ids as $id) { $sonids = son_ids($sarr, $id, $sonids); } $ids = array_unique(array_merge($ids, $sonids)); } foreach ($sarr as $x => $y) { in_array($x, $ids) && ($ret[] = $x); } } } if ($noids = array_filter(explode(',', @$v['noids']))) { if (!empty($v['noson'])) { foreach ($noids as $id) { $sonids = son_ids($sarr, $id, $sonids); } $noids = array_unique(array_merge($noids, $sonids)); } foreach ($ret as $x => $y) { if (in_array($y, $noids)) { unset($ret[$x]); } } } $rets[$k] = $ret; } return $rets; }
if ($caid) { $filterstr .= ($filterstr ? '&' : '') . "caid={$caid}"; $caids = array($caid); $tempids = array(); $tempids = son_ids($catalogs, $caid, $tempids); $caids = array_merge($caids, $tempids); $wherestr .= ($wherestr ? ' AND ' : '') . "a.caid " . multi_str($caids); } foreach ($cotypes as $coid => $cotype) { if (!$chid || !$cotype['chids'] || !in_array($chid, explode(',', $cotype['chids']))) { if (${"ccid{$coid}"}) { $filterstr .= ($filterstr ? '&' : '') . "ccid{$coid}=" . ${"ccid{$coid}"}; $ccids = array(${"ccid{$coid}"}); $tempids = array(); $coclasses = read_cache('coclasses', $coid); $tempids = son_ids($coclasses, ${"ccid{$coid}"}, $tempids); $ccids = array_merge($ccids, $tempids); if (empty($cotype['self_reg'])) { $wherestr .= ($wherestr ? ' AND ' : '') . "a.ccid{$coid} " . multi_str($ccids); } else { $tempstr = self_sqlstr($coid, $ccids, 'a.'); $tempstr && ($wherestr .= (!$wherestr ? '' : ' AND ') . $tempstr); unset($tempstr); } } } } if ($chid) { $filterstr .= ($filterstr ? '&' : '') . "chid={$chid}"; $customtable = "archives_{$chid}"; $fromstr .= ' LEFT JOIN {$tblprefix}' . $customtable . ' AS c ON (a.aid=c.aid)';
function son_ids(&$arr, $pid, &$ids) { $narr = $arr; foreach ($narr as $k => $v) { if ($v['pid'] == $pid) { $ids[] = $k; $ids = son_ids($arr, $k, $ids); } } unset($narr); return $ids; }
$keyword = empty($keyword) ? '' : $keyword; $appealed = isset($appealed) ? $appealed : '-1'; $filterstr = ''; foreach (array('caid', 'keyword', 'nauid') as $k) { ${$k} && ($filterstr .= "&{$k}=" . rawurlencode(${$k})); } foreach (array('appealed') as $k) { ${$k} != -1 && ($filterstr .= "&{$k}=" . ${$k}); } $wheresql = "WHERE a.sid={$sid} AND a.checked=1 AND a.chid " . multi_str($chids) . " AND s.notaclosed=0 AND s.appealdate<{$timestamp}"; //栏目范围 $caids = array(-1); if (!empty($caid)) { $caids = array($caid); $tempids = array(); $tempids = son_ids($catalogs, $caid, $tempids); $caids = array_merge($caids, $tempids); } if (!in_array(-1, $a_caids)) { $caids = in_array(-1, $caids) ? $a_caids : array_intersect($caids, $a_caids); } if (!$caids) { $no_list = true; } elseif (!in_array(-1, $caids)) { $wheresql .= " AND a.caid " . multi_str($caids); } if ($appealed != -1) { $wheresql .= " AND s.appeals" . ($appealed ? '!' : '') . "='0'"; } $fromsql = "FROM {$tblprefix}archives a LEFT JOIN {$tblprefix}archives_sub s ON s.aid=a.aid"; //搜索关键词处理
foreach ($catalogs as $k => $v) { $enamearr[] = $v['dirname']; } foreach ($cotypes as $k => $v) { $arr = read_cache('coclasses', $k); foreach ($arr as $k1 => $v1) { $enamearr[] = $v1['dirname']; } } unset($arr); if (in_array($coclassnew['dirname'], $enamearr)) { amessage('coclassenamerepeat', axaction(2, M_REFERER)); } } $sonids = array(); $sonids = son_ids($coclasses, $ccid, $sonids); in_array($coclassnew['pid'], array_merge(array($ccid), $sonids)) && amessage('catas_forbidmove', axaction(2, M_REFERER)); $coclassnew['level'] = !$coclassnew['pid'] ? 0 : $coclasses[$coclassnew['pid']]['level'] + 1; $sqlstr0 = "isframe='{$coclassnew['isframe']}',\n\t\t\t\t\tdirname='{$coclassnew['dirname']}',\n\t\t\t\t\tlevel='{$coclassnew['level']}',\n\t\t\t\t\tpid='{$coclassnew['pid']}'"; if (empty($cotype['self_reg'])) { $coclassnew['chids'] = !empty($coclassnew['chids']) ? implode(',', $coclassnew['chids']) : ''; $coclassnew['apmid'] = $cotype['permission'] ? $coclassnew['apmid'] : 0; $coclassnew['rpmid'] = $cotype['permission'] ? $coclassnew['rpmid'] : 0; $coclassnew['crpmid'] = $cotype['permission'] ? $coclassnew['crpmid'] : 0; $coclassnew['dpmid'] = $cotype['permission'] ? $coclassnew['dpmid'] : 0; $coclassnew['awardcp'] = $cotype['awardcp'] ? $coclassnew['awardcp'] : 0; $coclassnew['taxcp'] = $cotype['taxcp'] ? $coclassnew['taxcp'] : 0; $coclassnew['ftaxcp'] = $cotype['ftaxcp'] ? $coclassnew['ftaxcp'] : 0; $coclassnew['allowsale'] = $cotype['sale'] ? $coclassnew['allowsale'] : 0; $coclassnew['allowfsale'] = $cotype['fsale'] ? $coclassnew['allowfsale'] : 0; $sqlstr0 .= ",awardcp='{$coclassnew['awardcp']}',\n\t\t\t\t\t\ttaxcp='{$coclassnew['taxcp']}',\n\t\t\t\t\t\tftaxcp='{$coclassnew['ftaxcp']}',\n\t\t\t\t\t\tallowsale='{$coclassnew['allowsale']}',\n\t\t\t\t\t\tallowfsale='{$coclassnew['allowfsale']}',\n\t\t\t\t\t\tapmid='{$coclassnew['apmid']}',\n\t\t\t\t\t\trpmid='{$coclassnew['rpmid']}',\n\t\t\t\t\t\tcrpmid='{$coclassnew['crpmid']}',\n\t\t\t\t\t\tdpmid='{$coclassnew['dpmid']}',\n\t\t\t\t\t\tchids='{$coclassnew['chids']}'";
foreach ($catalogs as $k => $v) { $enamearr[] = $v['dirname']; } foreach ($cotypes as $coid => $cotype) { $coclasses = read_cache('coclasses', $coid); foreach ($coclasses as $k => $v) { $enamearr[] = $v['dirname']; } } unset($coclasses); if (in_array($catalognew['dirname'], $enamearr)) { amessage('catalogenamerepeat', M_REFERER); } } $sonids = array(); $sonids = son_ids($catalogs, $caid, $sonids); in_array($catalognew['pid'], array_merge(array($caid), $sonids)) && amessage('catas_forbidmove', "?entry=catalogs&action=catalogdetail&caid={$caid}{$param_suffix}"); $catalognew['chids'] = !empty($catalognew['chids']) ? implode(',', $catalognew['chids']) : ''; $catalognew['level'] = !$catalognew['pid'] ? 0 : $catalogs[$catalognew['pid']]['level'] + 1; $catalognew['customurl'] = preg_replace("/^\\/+/", '', trim($catalognew['customurl'])); $catalognew['tpls'] = !empty($catalognew['tpls']) ? implode(',', $catalognew['tpls']) : ''; $c_upload = new cls_upload(); $cafields = fields_order($cafields); $a_field = new cls_field(); $sqlstr = ""; foreach ($cafields as $k => $v) { $a_field->init(); $a_field->field = $v; $a_field->oldvalue = isset($catalog[$k]) ? $catalog[$k] : ''; $a_field->deal('catalognew'); if (!empty($a_field->error)) {