<?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 . '/';
}
}
}