NaszvadiG
4/17/2014 - 9:01 AM

menu.php

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
 * Menu Navigation model
 * 
 * @author		João Paulo Pinheiro <jotapepinheiro@gmail.com>
 * @package		Projac
 * @subpackage	Modulo de menu de navegação CodeIgniter
 *
 */
class Menu_model extends CI_Model {
	
	
	public function __construct()
	{
		parent::__construct();
		
	}

	/**
	 * [imprimeMenu description]
	 * @param  array   $menuTotal [description]
	 * @param  integer $idPai     [description]
	 * @param  integer $nivel     [description]
	 * @return [type]             [description]
	 */
	function imprimeMenu( array $menuTotal , $idPai = 0, $nivel = 0 )
	{
	        // abrimos a ul do menu principal
	        if($nivel > 0)
	        	echo str_repeat( "\t" , $nivel ),'<ul class="dropdown-menu sub-menu">',PHP_EOL;
	        // itera o array de acordo com o idPai passado como parâmetro na função
	        foreach( $menuTotal[$idPai] as $idMenu => $menuItem)
	        {
	                // imprime o item do menu
	                if($menuItem['parent'] == 0)
	                {
	                	echo str_repeat( "\t" , $nivel + 1 ),
	                	'<li class="dropdown"><a class="dropdown-toggle" href="',$menuItem['link'],'" title="',$menuItem['title'],'">',$menuItem['name'],'<b class="caret"></b></a>',PHP_EOL;
	                }
	                else if($menuItem['leaf'])
	                {
	                	echo str_repeat( "\t" , $nivel + 1 ),
	                	'<li><a href="',$menuItem['link'],'" title="',$menuItem['title'],'">',$menuItem['name'],'</a>',PHP_EOL;
	                }
	                else
	                {
	                	echo str_repeat( "\t" , $nivel + 1 ),
	                	'<li class="dropdown"><a class="dropdown-toggle" href="',$menuItem['link'],'" title="',$menuItem['title'],'"><i class="icon-arrow-right"></i> ',$menuItem['name'],'</a>',PHP_EOL;	
	                }
	                // se o menu desta iteração tiver submenus, chama novamente a função
	                if( isset( $menuTotal[$idMenu] ) ) $this->imprimeMenu( $menuTotal , $idMenu , $nivel + 2);
	                // fecha o li do item do menu
	                echo str_repeat( "\t" , $nivel + 1 ),'</li>',PHP_EOL;
	        }
	        // fecha o ul do menu principal
	        	echo str_repeat( "\t" , $nivel ),'</ul>',PHP_EOL;
	}

	/**
	 * [RetornaMenu description]
	 */
	public function RetornaMenu()
	{
		$this->db
			 ->select('*')
			 ->where(array('ter_tipo' => 'CATEGORIA'))
			 ->order_by("ter_nome", "asc");

		$query = $this->db->get('termos');	

		if ($query->num_rows() > 0)
		{
			foreach($query->result_array() as $data) {

				array_walk($data, 'toUtf8');

				$menuItens[$data['ter_parent']][$data['cod']] = array(
					'parent' => (int) $data['ter_parent'],
					//'link' => $this->getParentLink($data['ter_parent']).$data['ter_slug'],
					'link' 	=> (string) $data['ter_slug'],
					'leaf' 	=> (bool) ($data['ter_leaf']=='t'?true:false),
					'name' 	=> (string) acento($data['ter_nome'],'LOWER'),
					'title' => (string) $data['ter_descricao']
				);

			}
		}

		return $this->imprimeMenu($menuItens);
	}

	/**
	 * [getParentLink description]
	 * @param  integer $parent [description]
	 * @return [type]          [description]
	 */
	public function getParentLink($parent = 0)
	{
		$this->db
			 ->select('ter_parent,ter_slug')
			 ->where(array('ter_tipo' => 'CATEGORIA', 'cod' => $parent));

		$query = $this->db->get('termos');

		if ($query->num_rows() > 0)
		{
		   $row = $query->row();

		   return $this->getParentLink($row->ter_parent).$row->ter_slug . '/';
		}
	}
	
}