⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 category.class.php

📁 Phpcms2008 是一款基于 PHP+Mysql 架构的网站内容管理系统
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?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 + -