<?php
class menu{
private $core, $db; // , $user, $lng
public function __construct($core){
$this->core = $core;
$this->db = $core->db;
$this->user = $core->user;
//$this->lng = $core->lng;
}
private function generate_sub_menu($tree){
ob_start();
foreach ($tree as $key=>$ar){
$id = intval($ar['id']);
$parent = intval($ar['parent']);
$data = array(
"TITLE" => $this->db->HSC($ar['title']),
"URL" => $this->db->HSC($ar['url']),
"TARGET" => $this->db->HSC($ar['target']),
"SUB_MENU" => (!empty($ar['sons'])) ? $this->generate_sub_menu($ar['sons']) : "",
);
if(!empty($ar['sons'])){
echo $this->core->sp(MCR_THEME_PATH."menu/menu-id-sub-parented.html", $data);
continue;
}
echo $this->core->sp(MCR_THEME_PATH."menu/menu-id-sub.html", $data);
}
return ob_get_clean();
}
private function generate_menu($array){
ob_start();
$tree = $this->create_tree($array);
foreach ($tree as $key=>$ar){
$id = intval($ar['id']);
$parent = intval($ar['parent']);
$data = array(
"TITLE" => $this->db->HSC($ar['title']),
"URL" => $this->db->HSC($ar['url']),
"TARGET" => $this->db->HSC($ar['target']),
"SUB_MENU" => (!empty($ar['sons'])) ? $this->generate_sub_menu($ar['sons']) : "",
);
if(!empty($ar['sons'])){
echo $this->core->sp(MCR_THEME_PATH."menu/menu-id-parented.html", $data);
continue;
}
echo $this->core->sp(MCR_THEME_PATH."menu/menu-id.html", $data);
}
return ob_get_clean();
}
private function create_tree($categories){
$tree = array();
$this->new_tree_element($categories, $tree, null);
return $tree;
}
private function new_tree_element(&$categories, &$tree, $parent){
foreach($categories as $key => $ar){
if(intval($ar['parent']) == $parent){
$tree[$key] = $categories[$key];
$tree[$key]['sons'] = array();
$this->new_tree_element($categories, $tree[$key]['sons'], $key);
}
if(empty($tree['sons'])){ unset ($tree['sons']); }
}
unset($categories[$parent]);
return;
}
private function menu_array(){
ob_start();
$query = $this->db->query("SELECT id, title, `parent`, `url`, `target`, `permissions`
FROM `mcr_menu`
ORDER BY `parent` DESC");
if(!$query || $this->db->num_rows($query)<=0){ return ob_get_clean(); }
$array = array();
while($ar = $this->db->fetch_assoc($query)){
if(!$this->core->is_access($ar['permissions'])){ continue; }
$array[$ar['id']] = array(
"id" => $ar['id'],
"title" => $ar['title'],
"parent" => $ar['parent'],
"url" => $ar['url'],
"target" => $ar['target'],
"permissions" => $ar['permissions']
);
}
$tree = $this->generate_menu($array);
echo $tree;
return ob_get_clean();
}
public function _list(){
ob_start();
echo $this->menu_array();
return ob_get_clean();
}
}
?>