* This class is used to create
* and manage categories
* its an abstract class
* it will be used in custom plugins or built-in sections
* sections like videos, groups , channels etc use this category system
*
* this abstract class has some rules
* each section's category column should be named as "category"
* each section's category table must have same columns as video_categories
*/
abstract class CBCategory
{
var $cat_tbl = ''; //Name of category Table
var $section_tbl = ''; //Name of table that related to $cat_tbl
var $use_sub_cats = FALSE; // Set to true if you using Sub-Cateogires
var $cat_thumb_height = '125';
var $cat_thumb_width = '125';
var $default_thumb = 'no_thumb.jpg';
/**
* Function used to check weather category exists or not
*/
function category_exists($cid)
{
global $db;
return $this->get_category($cid);
}
/**
* Function used to get category details
*/
function get_category($cid)
{
global $db;
$results = $db->select(tbl($this->cat_tbl),"*"," category_id='$cid'");
if($db->num_rows>0)
{
return $results[0];
}else{
return false;
}
}
/**
* Function used to get category by name
*/
function get_cat_by_name($name)
{
global $db;
$results = $db->select(tbl($this->cat_tbl),"*"," category_name='$name' ");
if($db->num_rows>0)
{
return $results[0];
}else{
return false;
}
}
/**
* Function used to add new category
*/
function add_category($array)
{
global $db;
$name = ($array['name']);
$desc = ($array['desc']);
$default = mysql_clean($array['default']);
$flds = array("category_name","category_desc","date_added");
$values = array($name,$desc,now());
if(!empty($this->use_sub_cats))
{
$parent_id = mysql_clean($array['parent_cat']);
$flds[] = "parent_id";
$values[] = $parent_id;
}
if($this->get_cat_by_name($name))
{
e(lang("add_cat_erro"));
}elseif(empty($name))
{
e(lang("add_cat_no_name_err"));
}else{
$cid = $db->insert(tbl($this->cat_tbl),$flds,$values);
$cid = $db->insert_id();
if($default=='yes' || !$this->get_default_category())
$this->make_default_category($cid);
e(lang("cat_add_msg"),'m');
//Uploading thumb
if(!empty($_FILES['cat_thumb']['tmp_name']))
$this->add_category_thumb($cid,$_FILES['cat_thumb']);
}
}
/**
* Function used to make category as default
*/
function make_default_category($cid)
{
global $db;
if($this->category_exists($cid))
{
$db->update(tbl($this->cat_tbl),array("isdefault"),array("no")," isdefault='yes' ");
$db->update(tbl($this->cat_tbl),array("isdefault"),array("yes")," category_id='$cid' ");
e(lang("cat_set_default_ok"),'m');
}else
e(lang("cat_exist_error"));
}
/**
* Function used to get list of categories
*/
function get_categories()
{
global $db;
$select = $db->select(tbl($this->cat_tbl),"*",NULL,NULL," category_order ASC");
return $select;
}
function getCbCategories($params)
{
global $db;
$params['use_sub_cats'] = $params['use_sub_cats'] ? $params['use_sub_cats'] : "yes";
if($this->use_sub_cats && config('use_subs') == 1 && $params['use_sub_cats'] == "yes" &&
($params['type'] == "videos" || $params['type'] == "video" || $params['type'] == "v"))
{
$cond = " parent_id = 0";
$subCategories = TRUE;
} else
$cond = NULL;
$orderby = $params['orderby'] ? $params['orderby'] : "category_order";
$order = $params['order'] ? $params['order'] : "ASC";
$categories = $db->select(tbl($this->cat_tbl),"*",$cond,NULL," $orderby $order");
$finalArray = array();
if($params['with_all'])
$finalArray[] = array("category_id"=>"all","category_name"=>lang("cat_all"));
foreach($categories as $cat)
{
$finalArray[$cat['category_id']] = $cat;
if($subCategories === TRUE && $this->is_parent($cat['category_id']))
$finalArray[$cat['category_id']]['children'] = $this->getCbSubCategories($cat['category_id'],$params);
}
return $finalArray;
}
function getCbSubCategories($category_id,$params)
{
global $db;
if(empty($category_id))
return false;
{
$subCats = $db->select(tbl($this->cat_tbl),"*"," parent_id = '$category_id'");
if($subCats)
{
$subArray = array();
foreach($subCats as $subCat)
{
$subArray[$subCat['category_id']] = $subCat;
if($this->is_parent($subCat['category_id']))
{
$subArray[$subCat['category_id']]['children'] = $this->getCbSubCategories($subCat['category_id'],$params);
}
}
return $subArray;
}
}
}
function displayListCategories($catArray,$params)
{
$html = '';
foreach($catArray as $catID=>$cat)
{
if($_GET['cat'] == $cat['category_id'] || (empty($_GET['cat']) && $cat['category_id'] == 'all'))
$selected = " selected ";
else
$selected = "";
if($params['class'])
$class = $params['class'];
$html .= "