<?php
//require_once 'config.php';
require_once 'database_class.php';
/*********************************************************
* CATEGORY FUNCTIONS
*********************************************************/
/*
Return the current category list which only shows
the currently selected category and it's children.
This function is made so it can also handle deep
category levels ( more than two levels )
*/
class cat_func_class{
//var $navCat;
//var $cat;
function formatCategories($categories, $parentId){
// $navCat stores all children categories
// of $parentId
$navCat = array();
// expand only the categories with the same parent id
// all other remain compact
$ids = array();
foreach ($categories as $category) {
if ($category['cat_parent_id'] == $parentId) {
$navCat[] = $category;
}
// save the ids for later use
$ids[$category['cat_id']] = $category;
}
$tempParentId = $parentId;
// keep looping until we found the
// category where the parent id is 0
while ($tempParentId != 0) {
$parent = array($ids[$tempParentId]);
$currentId = $parent[0]['cat_id'];
// get all categories on the same level as the parent
$tempParentId = $ids[$tempParentId]['cat_parent_id'];
foreach ($categories as $category) {
// found one category on the same level as parent
// put in $parent if it's not already in it
if ($category['cat_parent_id'] == $tempParentId && !in_array($category, $parent)) {
$parent[] = $category;
}
}
// sort the category alphabetically
array_multisort($parent);
// merge parent and child
$n = count($parent);
$navCat2 = array();
for ($i = 0; $i < $n; $i++) {
$navCat2[] = $parent[$i];
if ($parent[$i]['cat_id'] == $currentId) {
$navCat2 = array_merge($navCat2, $navCat);
}
}
$navCat = $navCat2;
}
return $navCat;
}
function getCategoryList(){
$db=new database_class;
$sql = "SELECT cat_id, cat_name,cat_title,cat_description, cat_image
FROM ".PREFIX."category
WHERE cat_parent_id = 0
ORDER BY cat_name";
$result=$db->dbQuery($sql);
$cat = array();
while ($row = $db->dbFetchAssoc($result)) {
extract($row);
if ($cat_image) {
$cat_image = CATEGORY_IMAGE_DIR . $cat_image;
} else {
$cat_image =BASE_IMAGE_DIR.'no-image-small.png';
}
$cat[] = array('url' => $_SERVER['PHP_SELF'] . '?c=' . $cat_id,
'image' => $cat_image,
'name' => $cat_name,
'title'=>$cat_title,
'description'=>$cat_description);
}
//$this->cat=$cat;
return $cat;
}
function getChildCategories($categories, $id, $recursive = true)
{
if ($categories == NULL) {
$categories = $this->fetchCategories();
}
$n = count($categories);
$child = array();
for ($i = 0; $i < $n; $i++) {
$catId = $categories[$i]['cat_id'];
$parentId = $categories[$i]['cat_parent_id'];
if ($parentId == $id) {
$child[] = $catId;
if ($recursive) {
$child = array_merge($child, $this->getChildCategories($categories, $catId));
}
}
}
return $child;
}
function fetchCategories(){
$db=new database_class;
$sql = "SELECT cat_id, cat_parent_id, cat_name,cat_title, cat_image, cat_description
FROM ".PREFIX."category
ORDER BY cat_id, cat_parent_id ";
$result =$db->dbQuery($sql);
$cat = array();
while ($row = $db->dbFetchAssoc($result)) {
$cat[] = $row;
}
return $cat;
}
}
?>