<?php

class Agro_Plugin_Navigation extends Zend_Controller_Plugin_Abstract {
	private $Menu;

	public function preDispatch(Zend_Controller_Request_Abstract $Request) {

		// Adiciona umas variaveis na view
		$View = Zend_Layout::getMvcInstance()->getView();
		$View->controllerName = $Request->getControllerName();
		$View->moduleName = $Request->getModuleName();
		$View->actionName = $Request->getActionName();

		$User = Zend_Auth::getInstance()->getIdentity();

		//Monta a Navigation
		$this->Menu = new Agro_Plugin_Navigation_Create();

		//Cria o menu mais acessado
		$this->menuMaisAcessados();

		//Cria link penhor rural
		$this->penhorRural();

		$Navigation = new Zend_Navigation($this->Menu->pages);

		// Instancia e cria o menu do perfil
		//$View = Zend_Layout::getMvcInstance()->getView();
		$View->navigation($Navigation);
		//$View->navigation()->setAcl(Agro_Acl::getInstance())->setRole($User->role);
	}

	// Gera link para acesso externo ao Penho Rural
	private function penhorRural() {

		$root = array(
			'uri'    => 'http://portal.essor.com.br',
			'title'  => 'Acesso ao sistema de Penhor Rural',
			'target' => '_blank',
			'label'  => 'Penhor Rural',
			'params' => array('menu' => 1),
			'pages'  => array(),
			'type'   => 'uri'
		);

		$this->Menu->pages[max(array_keys($this->Menu->pages)) + 1] = $root;
	}

	// Após carregar o menu padrão, adiciona um menu com as ações mais acessadas para cada usuário
	private function menuMaisAcessados() {
		$User = Zend_Auth::getInstance()->getIdentity();

		if ($User->id) {
			$ModelMaisAcessados = new Log_Model_MaisAcessados();
			$Acessos = $ModelMaisAcessados->getMaisAcessados($User->id);

			$root = array(
				'uri'    => '#',
				'title'  => 'Mais acessados',
				'label'  => 'Mais acessados',
				'params' => array('menu' => 1),
				'pages'  => array()
			);

			foreach ($Acessos as $link) {

				if (Agro_Util::checkPermission($link['ds_module'].':'.$link['ds_controller'].':'.$link['ds_action'])) {
					$mais_acessados = array(
						'controller' => $link['ds_controller'],
						'module' => $link['ds_module'],
						'action' => $link['ds_action'],
						'title'  => $link['ds_label'],
						'label'  => ucfirst($link['ds_module'])." » ".ucfirst($link['ds_controller'])." » ".$link['ds_label'],
						'params' => array(
							'menu' => 1,
							'ds_chave_menu' => ($link['ds_chave_menu'] ? $link['ds_chave_menu'] : null)
						),
						'pages'  => array()
					);

					if ($mais_acessados['ds_chave_menu']['params']['ds_chave_menu'] == null) {
						unset($mais_acessados['ds_chave_menu']['params']['ds_chave_menu']);
					}

					array_push($root['pages'], $mais_acessados);
					unset($mais_acessados);
				}
			}

			$this->Menu->pages[max(array_keys($this->Menu->pages)) + 1] = $root;
		}
	}
}
