📄 category.class.php
字号:
<?php
class category
{
var $module;
var $db;
var $table;
var $category;
var $menu;
var $u;
function __construct($module = 'phpcms')
{
global $db, $CATEGORY;
$this->db = &$db;
$this->table = DB_PRE.'category';
$this->category = $CATEGORY;
$this->module = $module;
$this->menu = load('menu.class.php');
$this->u = load('url.class.php');
}
function category($module = 'phpcms')
{
$this->__construct($module);
}
function get($catid)
{
$data = $this->db->get_one("SELECT * FROM `$this->table` WHERE `catid`=$catid");
if(!$data) return false;
if($data['setting'])
{
$setting = $data['setting'];
eval("\$setting = $setting;");
unset($data['setting']);
if(is_array($setting)) $data = array_merge($data, $setting);
}
return $data;
}
function add($category, $setting = array())
{
if(!is_array($category)) return FALSE;
$category['module'] = $this->module;
$this->db->insert($this->table, $category);
$catid = $this->db->insert_id();
if($category['parentid'])
{
$category['arrparentid'] = $this->category[$category['parentid']]['arrparentid'].','.$category['parentid'];
$category['parentdir'] = $this->category[$category['parentid']]['parentdir'].$this->category[$category['parentid']]['catdir'].'/';
$parentids = explode(',', $category['arrparentid']);
foreach($parentids as $parentid)
{
if($parentid)
{
$arrchildid = $this->category[$parentid]['arrchildid'].','.$catid;
$this->db->query("UPDATE `$this->table` SET child=1,arrchildid='$arrchildid' WHERE catid='$parentid'");
}
}
}
else
{
$category['arrparentid'] = '0';
$category['parentdir'] = '';
}
$arrparentid = $category['arrparentid'];
$parentdir = $category['parentdir'];
$this->db->query("UPDATE `$this->table` SET `arrchildid`='$catid',`listorder`=$catid,`arrparentid`='$arrparentid',`parentdir`='$parentdir' WHERE catid=$catid");
if($setting) setting_set($this->table, "catid=$catid", $setting);
if($this->module == 'phpcms' && $category['type'] < 2)
{
$parentid = $category['parentid'];
$this->menu->update('catid_'.$catid, array('parentid'=>$this->menu->menuid('catid_'.$parentid), 'name'=>$category['catname'], 'url'=>'?mod=phpcms&file=content&action=manage&catid='.$catid));
if($parentid) $this->menu->update('catid_'.$parentid, array('url'=>''));
}
if($category['type'] < 2) $this->url($catid);
$this->repair();
return $catid;
}
function edit($catid, $category, $setting = array())
{
$parentid = $category['parentid'];
$oldparentid = $this->category[$catid]['parentid'];
if($parentid != $oldparentid)
{
$this->move($catid, $parentid, $oldparentid);
}
$category['module'] = $this->module;
$this->db->update($this->table, $category, "catid=$catid");
if($setting) setting_set($this->table, "catid=$catid", $setting);
if($this->module == 'phpcms' && $category['type'] < 2)
{
$url = $this->category[$catid]['child'] ? '' : '?mod=phpcms&file=content&action=manage&catid='.$catid;
$this->menu->update('catid_'.$catid, array('parentid'=>$this->menu->menuid('catid_'.$parentid), 'name'=>$category['catname'], 'url'=>$url));
if($parentid) $this->menu->update('catid_'.$parentid, array('url'=>''));
}
if($category['type'] < 2) $this->url($catid);
$this->repair();
$this->cache();
return true;
}
function link($catid, $category)
{
$this->db->update($this->table, $category, "catid=$catid");
$this->cache();
return true;
}
function page($catid, $category)
{
$this->db->update($this->table, $category, "catid=$catid");
$this->cache();
return true;
}
function delete($catid)
{
global $MODEL,$MODULE;
if(!array_key_exists($catid, $this->category)) return false;
@set_time_limit(600);
$arrparentid = $this->category[$catid]['arrparentid'];
$arrchildid = $this->category[$catid]['arrchildid'];
$catids = explode(',', $arrchildid);
if($this->category[$catid]['type'] == 0)
{
if(isset($MODULE['search']) || isset($MODULE['comment']))
{
$sids = array();
$result = $this->db->query("SELECT contentid,searchid FROM ".DB_PRE."content WHERE catid IN($arrchildid)");
while($r = $this->db->fetch_array($result))
{
if(isset($MODULE['comment']))
{
$keyid = 'phpcms-content-title-'.$r['contentid'];
$this->db->query("DELETE FROM ".DB_PRE."comment WHERE keyid='$keyid'");
}
$sids[] = $r['searchid'];
}
if(isset($MODULE['search']) && $sids)
{
$this->search = load('search.class.php', 'search', 'include');
foreach($sids as $searchid)
{
$this->search->delete($searchid, 'searchid');
}
}
}
if(isset($MODULE['digg']))
{
$data = $this->db->select("SELECT `contentid` FROM `".DB_PRE."content` WHERE `catid` IN($arrchildid)", 'contentid');
if($data)
{
$contentids = implode(',', array_keys($data));
$this->db->query("DELETE `".DB_PRE."digg`,`".DB_PRE."digg_log` FROM `".DB_PRE."digg`,`".DB_PRE."digg_log` WHERE `".DB_PRE."digg`.contentid=`".DB_PRE."digg_log`.contentid AND `".DB_PRE."digg`.contentid IN($contentids)");
}
}
foreach($catids as $id)
{
$modelid = $this->category[$id]['modelid'];
if($this->category[$id]['type']) continue;
$tablename = $MODEL[$modelid]['tablename'];
if($tablename && $this->db->table_exists(DB_PRE.'c_'.$tablename))
{
$this->db->query("DELETE `".DB_PRE."content`,`".DB_PRE."c_$tablename` FROM `".DB_PRE."content`,`".DB_PRE."c_$tablename` WHERE `".DB_PRE."content`.contentid=`".DB_PRE."c_$tablename`.contentid AND `".DB_PRE."content`.catid='$id'");
}
if($this->module == 'phpcms' && $this->category[$id]['type'] < 2) $this->menu->update('catid_'.$id);
unset($this->category[$id]);
}
}
else
{
$this->menu->update('catid_'.$catid);
}
$this->db->query("DELETE FROM `$this->table` WHERE `catid` IN($arrchildid)");
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'");
if($this->module == 'phpcms' && $this->category[$id]['type'] < 2) $this->menu->update('catid_'.$id, array('isfolder'=>$child));
}
}
$this->cache();
return true;
}
function listorder($listorder)
{
if(!is_array($listorder)) return FALSE;
foreach($listorder as $catid=>$value)
{
$value = intval($value);
$this->db->query("UPDATE `$this->table` SET listorder=$value WHERE catid=$catid");
}
$this->cache();
return TRUE;
}
function recycle($catid)
{
$modelid = $this->category[$catid]['modelid'];
$m = cache_read('model_'.$modelid.'.php');
$this->db->query("DELETE FROM `".DB_PRE."content` ,`".DB_PRE."c_".$m['tablename']."` USING `".DB_PRE."content`,`".DB_PRE."c_".$m['tablename']."` WHERE `".DB_PRE."content`.catid='$catid' AND `".DB_PRE."content`.contentid=`".DB_PRE."c_".$m['tablename']."`.contentid");
return TRUE;
}
function listinfo($parentid = -1)
{
$categorys = array();
$where = $parentid > -1 ? " AND parentid='$parentid'" : '';
$result = $this->db->query("SELECT `catid` FROM `$this->table` WHERE `module`='$this->module' $where ORDER BY `listorder`,`catid`");
while($r = $this->db->fetch_array($result))
{
$categorys[$r['catid']] = $this->get($r['catid']);
}
$this->db->free_result($result);
return $categorys;
}
function repair()
{
@set_time_limit(600);
if(is_array($this->category))
{
foreach($this->category as $catid => $cat)
{
if($catid == 0) continue;
$arrparentid = $this->get_arrparentid($catid);
$parentdir = $this->get_parentdir($catid);
$arrchildid = $this->get_arrchildid($catid);
$child = is_numeric($arrchildid) ? 0 : 1;
$this->db->query("UPDATE `$this->table` SET arrparentid='$arrparentid',parentdir='$parentdir',arrchildid='$arrchildid',child='$child' WHERE catid=$catid");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -