📄 category.class.php
字号:
if($cat['module']=='phpcms') $this->url($catid);
}
}
$this->cache();
return TRUE;
}
function join($sourcecatid, $targetcatid)
{
$arrchildid = $this->category[$sourcecatid]['arrchildid'];
$arrparentid = $this->category[$sourcecatid]['arrparentid'];
$this->db->query("DELETE FROM `$this->table` WHERE `catid` IN ($arrchildid)");
$this->db->query("UPDATE ".DB_PRE."content set catid='$targetcatid' WHERE catid IN ($arrchildid)");
$catids = explode(',', $arrchildid);
foreach($catids as $id)
{
$this->db->query("DELETE FROM ".DB_PRE."menu WHERE keyid='catid_$id' LIMIT 1");
unset($this->category[$id]);
}
if($arrparentid)
{
$arrparentids = explode(',', $arrparentid);
foreach($arrparentids as $id)
{
if($id == 0) continue;
$arrchildid = $this->get_arrchildid($id);
$child = is_numeric($arrchildid) ? 0 : 1;
$this->db->query("UPDATE `$this->table` SET arrchildid='$arrchildid',child=$child WHERE catid='$id'");
}
}
$this->cache();
return true;
}
function get_arrparentid($catid, $arrparentid = '', $n = 1)
{
if($n > 5 || !is_array($this->category) || !isset($this->category[$catid])) return false;
$parentid = $this->category[$catid]['parentid'];
$arrparentid = $arrparentid ? $parentid.','.$arrparentid : $parentid;
if($parentid)
{
$arrparentid = $this->get_arrparentid($parentid, $arrparentid, ++$n);
}
else
{
$this->category[$catid]['arrparentid'] = $arrparentid;
}
return $arrparentid;
}
function get_arrchildid($catid)
{
$arrchildid = $catid;
if(is_array($this->category))
{
foreach($this->category as $id => $cat)
{
if($cat['parentid'] && $id != $catid)
{
$arrparentids = explode(',', $cat['arrparentid']);
if(in_array($catid, $arrparentids)) $arrchildid .= ','.$id;
}
}
}
return $arrchildid;
}
function get_parentdir($catid)
{
if($this->category[$catid]['parentid']==0) return '';
$arrparentid = $this->category[$catid]['arrparentid'];
$arrparentid = explode(',', $arrparentid);
$arrcatdir = array();
foreach($arrparentid as $id)
{
if($id==0) continue;
$arrcatdir[] = $this->category[$id]['catdir'];
}
return implode('/', $arrcatdir).'/';
}
function move($catid, $parentid, $oldparentid)
{
$arrchildid = $this->category[$catid]['arrchildid'];
$oldarrparentid = $this->category[$catid]['arrparentid'];
$oldparentdir = $this->category[$catid]['parentdir'];
$child = $this->category[$catid]['child'];
$oldarrparentids = explode(',', $this->category[$catid]['arrparentid']);
$arrchildids = explode(',', $this->category[$catid]['arrchildid']);
if(in_array($parentid, $arrchildids)) return FALSE;
$this->category[$catid]['parentid'] = $parentid;
if($child)
{
foreach($arrchildids as $cid)
{
if($cid==$catid) continue;
$newarrparentid = $this->get_arrparentid($cid);
$this->category[$cid]['arrparentid'] = $newarrparentid;
$newparentdir = $this->get_parentdir($cid);
$this->db->query("UPDATE `$this->table` SET arrparentid='$newarrparentid',parentdir='$newparentdir' WHERE catid='$cid'");
}
}
if($parentid)
{
$arrparentid = $this->category[$parentid]['arrparentid'].",".$parentid;
$this->category[$catid]['arrparentid'] = $arrparentid;
$parentdir = $this->category[$parentid]['parentdir'].$r['catdir']."/";
$arrparentids = explode(",", $arrparentid);
foreach($arrparentids as $pid)
{
if($pid==0) continue;
$newarrchildid = $this->get_arrchildid($pid);
$this->db->query("UPDATE `$this->table` SET arrchildid='$newarrchildid',child=1 WHERE catid=$pid");
}
}
else
{
$arrparentid = 0;
$parentdir = '/';
$this->category[$catid]['arrparentid'] = $arrparentid;
}
$this->db->query("UPDATE `$this->table` SET arrparentid='$arrparentid',parentdir='$parentdir' WHERE catid=$catid");
if($oldparentid)
{
foreach($oldarrparentids as $pid)
{
if($pid==0) continue;
$oldarrchildid = $this->get_arrchildid($pid);
$child = is_numeric($oldarrchildid) ? 0 : 1;
$this->db->query("UPDATE `$this->table` SET arrchildid='$oldarrchildid' ,child=$child WHERE catid=$pid");
}
}
return TRUE;
}
function depth($catid)
{
return (substr_count($this->category[$catid]['arrparentid'], ',') + 1);
}
function url($catid, $is_update = 1)
{
global $MODEL;
$data = $this->get($catid);
if(!$data) return false;
$this->u->CATEGORY[$catid] = $data;
if($this->category[$catid]['type'] == 2) return false;
cache_write('category_'.$catid.'.php', $data);
if($MODEL[$this->category[$catid]['modelid']]['ishtml'])
{
if(!preg_match('/:\/\//',$data['url']))
{
$url = $this->u->category($catid);
}
else
{
$url = $data['url'];
}
}
else
{
$url = $this->u->category($catid);
}
$url = preg_replace('/index\.[a-z]{3,5}$/', '', $url);
if($is_update)
{
$categorys_c = array();
$result = $this->db->query("SELECT * FROM `$this->table` WHERE `module`='$this->module'");
while($r = $this->db->fetch_array($result))
{
$categorys_c[$r['catid']] = $r;
}
if(!$categorys_c[$catid]['parentid'])
{
$this->db->query("UPDATE `$this->table` SET url='$url' WHERE catid=$catid");
$arrchildid = $data['arrchildid'];
$arrchild = explode(',',$arrchildid);
foreach($arrchild AS $k)
{
$parentdir = $second_domain = '';
if($categorys_c[$k]['modelid'])
{
if($k == $catid || !$MODEL[$categorys_c[$k]['modelid']]['ishtml'] || $categorys_c[$k]['type'] == 2) continue;
}
else
{
$child_array_data = $this->get($k);
if($k == $catid || !$child_array_data['ishtml'] || $categorys_c[$k]['type'] == 2) continue;
}
$arrparentid = $categorys_c[$k]['arrparentid'];
$arrparentid = explode(',',$arrparentid);
array_shift($arrparentid);
if(preg_match('/:\/\//',$categorys_c[$arrparentid[0]]['url']))
{
$second_domain = $categorys_c[$arrparentid[0]]['url'];
array_shift($arrparentid);
}
foreach($arrparentid AS $p)
{
$parentdir .= $categorys_c[$p]['catdir'].'/';
}
$caturl = $second_domain.'/'.$parentdir.$categorys_c[$k]['catdir'].'/';
$this->db->query("UPDATE `$this->table` SET url='$caturl' WHERE catid=$k");
}
}
else
{
$this->db->query("UPDATE `$this->table` SET url='$url' WHERE catid=$catid");
}
unset($url);
}
return $url;
}
function count($catid, $status = null)
{
if(!isset($this->category[$catid])) return false;
$where = '';
$where .= $this->category[$catid]['child'] ? "AND `catid` IN(".$this->category[$catid]['arrchildid'].") " : "AND `catid`=$catid ";
$where .= $status == null ? '' : "AND status='$status' ";
if($where) $where = ' WHERE '.substr($where, 3);
return cache_count("SELECT COUNT(*) AS `count` FROM `".DB_PRE."content` $where");
}
function cache()
{
@set_time_limit(600);
cache_category();
cache_common();
}
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -