Newer
Older
WebMCR / upload / engine / menu.class.php
@Qexy Qexy on 3 May 2015 2 KB WebMCR_Reloaded_Alpha_v1.0.0
<?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();
	}
}

?>