Beispiel #1
0
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;
}
Beispiel #2
0
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;
}
Beispiel #3
0
 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)';
Beispiel #4
0
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;
}
Beispiel #5
0
 $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";
 //搜索关键词处理
Beispiel #6
0
     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']}'";
Beispiel #7
0
     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)) {