<?php
class PageCategory{
	private $id;
	private $db;
	private $nwtm;
	
	function __construct(){
		global $db, $nwtm;
		$this->db = $db;
		$this->nwtm = $nwtm;
		$this->id = '';
	}
	
	function setId($id){
		$this->id = $this->db->clean($id);
	}
		
	function getPageCategoryList($mode = '',$parentid = ''){
		$sqls = array();
		if ($mode == 'partial'){
			array_push($sqls,'status = 1');
		}
		else if ($mode == 'allparent'){
			array_push($sqls,'parentid =-1');
			array_push($sqls,'status =1');
		}
		else if ($mode == 'specific'){
			array_push($sqls,'parentid = \''.$this->db->clean($parentid).'\'');
			array_push($sqls,'status =1');
		}
		
		$sql = '';
		if (sizeof($sqls) > 0){
			$sql = ' WHERE '.implode(' AND ',$sqls);
		}
		$dbcategory = $this->db->fetch_all("SELECT * FROM category_page".$sql." ORDER BY sort");
		
		return $dbcategory;
	}
	
	function getPageCategoryDetail(){
		$sqls = array();
		$dbcategory = array();
		if (!empty($this->id)){
			array_push($sqls,'categoryid = \''.$this->id.'\'');
			
			$sql = '';
			if (sizeof($sqls) > 0){
				$sql = ' WHERE '.implode(' AND ',$sqls);
			}
			$dbcategory = $this->db->fetch_one("SELECT * FROM category_page".$sql);
		}
		
		return $dbcategory;
	}
	
	function getLastOrder($parentid){
		if (!empty($parentid)){
			$lastorder = $this->db->fetch_one("SELECT * FROM category_page WHERE parentid='".$this->db->clean($parentid)."' ORDER BY sort DESC LIMIT 1");
			if (sizeof($lastorder) > 0){
				return $lastorder['sort'] + 1;
			}
		}
		return 1;
	}
	
	function getParentID($cid){
		$dbctg = $this->db->fetch_one("SELECT parentid FROM category_page WHERE categoryid='".$this->db->clean($cid)."'");
		return $dbctg['parentid'];
	}
	
	function buildParentList($parentid){
		$prlist = '';
		$dbctg = $this->db->fetch_one("SELECT parentid FROM category_page WHERE categoryid='".$this->db->clean($parentid)."'");
		if (!empty($dbctg['parentid'])){
			$prlist .= ",".$parentid.$this->buildParentList($dbctg['parentid']);
		}
		else{
			$prlist = '';
		}
		return $prlist;
	}
	
	function savePageCategory($categoryname,$categoryname2,$parentid,$categorystatus,$orders,$userid){
		$inserts['categoryname_1'] = $categoryname;
		$inserts['categoryname_2'] = $categoryname2;
		$inserts['parentid'] = $parentid;
		$inserts['createddate'] = $this->nwtm;
		$inserts['createdby'] = $userid;
		$inserts['lastediteddate'] = $this->nwtm;
		$inserts['lasteditedby'] = $userid;
		$inserts['sort'] = $orders;
		$inserts['status'] = $categorystatus;
		
		$lastid = $this->db->insert("category_page",$inserts);
		
		return $lastid;
	}
	
	function updatePageCategory($categoryname,$categoryname2,$parentid,$categorystatus,$userid){
		if (!empty($this->id)){
			$updates['categoryname_1'] = $categoryname;
			$updates['categoryname_2'] = $categoryname2;
			$updates['parentid'] = $parentid;
			$updates['lastediteddate'] = $this->nwtm;
			$updates['lasteditedby'] = $userid;
			$updates['status'] = $categorystatus;
		
			$this->db->update("category_page",$updates,"categoryid='".$this->id."'");
		
			return true;
		}
	}
	
	function updateSort($categoryorder){
		if (!empty($this->id)){
			$updates['sort'] = $categoryorder;
			
			$this->db->update("category_page",$updates,"categoryid='".$this->id."'");
		
			return true;
		}
	}
	
	function searchPageCategory($keyword,$mode){
		$sqls = array();
		if ($mode == 'partial'){
			array_push($sqls,'status = 1');
		}
		
		if (!empty($keyword)){
			array_push($sqls,'categoryname LIKE (\'%'.$this->db->clean($keyword).'%\')');
		}
		
		$sql = '';
		if (sizeof($sqls) > 0){
			$sql = ' WHERE '.implode(' AND ',$sqls);
		}
		$dbcategory = $this->db->fetch_all("SELECT * FROM category_page".$sql." ORDER BY sort");
		
		return $dbcategory;
	}
	
	function deletePageCategory(){
		if (!empty($this->id)){			
			$this->db->query("DELETE FROM category_page WHERE categoryid='".$this->id."'");
		}
	}
	
	function buildAllChildID($cid){
		$dbchild = $this->db->fetch_all("SELECT categoryid FROM category_page WHERE parentid='".$this->db->clean($cid)."'");
		$numchild = sizeof($dbchild);
		$chlistid = '';
		if ($numchild > 0){
			foreach ($dbchild as $rschild){
				$childid = $rschild['categoryid'];
				$chlistid .= ','.$childid.$this->buildAllChildID($childid);
			}
		}
		else{
			$chlistid = '';
		}
		return $chlistid;
	}
	
	function buildChildAdmin($oldID,$idSel,$fromtemplate='',$disableid=false,$idtodisable=array()){
		global $exclude, $depth, $langid;
		$tempTree ='';
		$totalproducts = 0;
		
		if (!empty($fromtemplate)){
			$contentdb = gettemplate($fromtemplate);
		}
		$child_query = $this->db->fetch_all("SELECT * FROM category_page WHERE parentid='".$this->db->clean($oldID)."' ORDER BY sort");
		if (sizeof($child_query) > 0){
			foreach ($child_query as $child){
				$cid = $child['categoryid'];
				$cname = $child['categoryname_'.$langid];
				$csort = $child['sort'];
				$cpid = $child['parentid'];
				$cstatus = '';
				switch ($child['status']){
					case '1' : $cstatus = 'Aktif'; break;
					case '2' : $cstatus = 'Tidak Aktif'; break;
				}
				
				if ($cid != $cpid){
					$tab = str_repeat('-',$depth * 2);
					if (!empty($fromtemplate)){
						eval("\$tempTree .= \"$contentdb\";");
					}
					else{
						if ($disableid){
							if (!in_array($cid,$idtodisable)){
								if ($cid == $idSel){
									$tempTree .= '<option value="'.$cid.'" selected>'.$tab.'--'.$cname.'</option>';
								}
								else{
									$tempTree .= '<option value="'.$cid.'">'.$tab.'--'.$cname.'</option>';
								}
							}
							else{
								$tempTree .= '<option value="'.$cid.'" disabled>'.$tab.'--'.$cname.'</option>';
							}
						}
						else{
							if ($cid == $idSel){
								$tempTree .= '<option value="'.$cid.'" selected>'.$tab.'--'.$cname.'</option>';
							}
							else{
								$tempTree .= '<option value="'.$cid.'">'.$tab.'--'.$cname.'</option>';
							}
						}
					}
					$depth++;
					$tempTree .= $this->buildChildAdmin($cid,$idSel,$fromtemplate,$disableid,$idtodisable);
					$depth--;
					array_push($exclude, $cid);
				}
			}
		}
		return $tempTree;
	}
	
	function getAllLowestPageCategory($mode){
		$dball = $this->getPageCategoryList($mode);
		$arraytd = array();
		if (sizeof($dball) > 0){
			foreach ($dball as $dba){
				$lastid = $this->buildAllChildID($dba['categoryid']);
				if (empty($lastid)){
					$lastid = $dba['categoryid'];
				}
				else{
					continue;
				}
				
				if (!array_key_exists($lastid,$arraytd)){
					$arraytd[$lastid] = $dba['categoryname'];
				}
			}
			asort($arraytd);
		}
		return $arraytd;
	}
}
?>