2016-05-05 14:33:36 +02:00

86 lines
2.9 KiB
PHP

<?php
class Application_Controller_Plugin_Menu extends Zend_Controller_Plugin_Abstract
{
/**
* Créer le menu en fonction des besoins et des paramètres en entrée
* @param Zend_Controller_Request_Abstract $request
*/
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
Zend_Registry::get('firebug')->info('PLUGIN MENU - START');
$layout = Zend_Layout::getMVCInstance();
$user = new Scores_Utilisateur();
$module = $request->getModuleName();
$controller = $request->getControllerName();
$action = $request->getActionName();
if ( $user->isLog() && $layout->isEnabled() && $controller != 'print' ) {
/**
* Définition du menu à afficher par module
* admin => Administration : Liste des utilisateurs, etc
* file => Distribution des fichier, pas de navbar
* help => Aide, Faq, Nouveautés
* legal => Identite, Dirigeants, Finance, Juridique, Evaluation, Pieces Officielles, BDF !!!!!
* order => Commandes
* user => Paramètres, Portefeuille, Surveillances
* saisie => Element de saisie pas de navbar
* search => Formulaire de recherche
*/
// --- Override SIRET to complete with zero by left
$siret = $request->getParam('siret');
if ( intval($siret)>100 ) {
$request->setParam('siret', str_pad($siret, 9, '0', STR_PAD_LEFT));
}
// --- Génération du menu
$computeMenu = new Scores_Menu($request->getParams());
$menu = $computeMenu->getMenu();
$view = $layout->getView();
$view->navigation($menu);
// --- Identifiant Menu
$view->menuId = $computeMenu->getIdMenu($controller, $action);
// --- Page Access
$hasPerm = true;
$permPage = $computeMenu->getPagePermission($controller, $action);
if ( !empty($permPage) ) {
$hasPerm = false;
if (is_array($permPage)){
$list = $permPage;
} else if (is_string($permPage)){
$list = (array)$permPage;
}
foreach($list as $permission){
if ($user->checkPerm($permission)){
$hasPerm = true;
break;
}
}
}
if ( !$hasPerm ) {
$request->setModuleName('default')->setControllerName('error')->setActionName('perms');
} else {
//Gestion affichage Lien Print / PDF / XML
$page = new Scores_Export_Print($controller, $action);
if ($page->exportable('print')){
$view->print = $page->filename('print', $request->getParams());
}
if ($page->exportable('pdf')){
$view->pdf = $page->filename('pdf', $request->getParams());
}
if ($page->exportable('xml') && in_array($user->getIdClient(), array(1,147)) ){
$view->xml = $page->filename('xml', $request->getParams());
}
}
}
Zend_Registry::get('firebug')->info('PLUGIN MENU - END');
}
}