'RECHERCHES', 'pages' => array( array( 'label' => "Rechercher une entreprise", 'title' => "Rechercher une entreprise", 'controller' => 'recherche', 'action' => 'entreprise', ), array( 'label' => "Rechercher par dirigeant", 'controller' => 'recherche', 'action' => 'dirigeant', ), array( 'label' => "Recherche Internationale", 'controller' => '', 'action' => '', 'permission' => 'INTERNATIONAL' ), array( // idClient = 1 'label' => "Rechercher une annonce", 'controller' => '', 'action' => '', ), array( // ModeEdition 'label' => "Rechercher par actionnaire", 'controller' => '', 'action' => '' ), array( // Vérifier la présence d'au moins une recherche 'label' => "Dernière recherche", 'controller' => 'recherche', 'action' => 'last', ), array( // Vérifier la présence d'au moins une recherche 'label' => "Liste des dernières recherches", 'controller' => 'recherche', 'action' => 'list', ), array( 'label' => "Centrale IparI", 'controller' => 'recherche', 'action' => 'ipari', 'permission' => 'ipari', ), ), ), array( 'label' => 'IDENTITE', 'pages' => array( array( // Vérification paramètres 'label' => "Fiche d'identité", 'controller' => 'identite', 'action' => 'fiche', ), array( // Vérification paramètres 'label' => "Fiche Procédure Collective", 'controller' => 'identite', 'action' => 'fichepc', ), array( // Vérification paramètres 'label' => "Liste des établissements", 'controller' => 'identite', 'action' => 'etablissements', ), array( // Vérificaiton paramètres 'label' => "Liens inter-entreprise", 'controller' => 'identite', 'action' => 'liens', ), array( 'label' => "Modifications Insee", 'controller' => 'identite', 'action' => 'insee', ), ), ), array( 'label' => 'DIRIGEANTS', 'pages' => array( array( // Vérification paramètres 'label' => "Liste des dirigeants", 'controller' => 'dirigeant', 'action' => 'liste', ), array( // Vérification paramètres 'label' => "Historique des dirigeants", 'controller' => 'dirigeant', 'action' => 'histo', ), ), ), array( 'label' => 'ELEMENTS FINANCIERS', 'pages' => array( array( 'label' => "Synthèse", 'controller' => 'finance', 'action' => 'synthese', ), array( 'label' => "Bilans, Compte de résultat", 'controller' => 'finance', 'action' => 'bilan', ), array( 'label' => "Ratios", 'controller' => 'finance', 'action' => 'ratios', ), array( 'label' => "Liasse fiscale", 'controller' => 'finance', 'action' => 'liasse', ), array( 'label' => "Bourse & Cotations", 'controller' => 'finance', 'action' => 'bourse', ), array( 'label' => "Relations bancaires", 'controller' => 'finance', 'action' => 'banque', ), ), ), array( 'label' => 'ELEMENTS JURIDIQUES', 'pages' => array( array( 'label' => "Annonces Légales", 'controller' => 'juridique', 'action' => 'annonces', ), array( 'label' => "Information Réglementée", 'controller' => 'juridique', 'action' => 'infosreg', ), array( 'label' => "Compétences Territoriales", 'controller' => 'juridique', 'action' => 'competences', ), array( 'label' => "Conventions collectives", 'controller' => 'juridique', 'action' => 'conventions', ), array( 'label' => "Marques déposées", 'controller' => 'juridique', 'action' => 'marque', ), ), ), array( 'label' => 'BANQUE DE FRANCE', 'permission' => 'BDF', 'pages' => array( array( 'label' => "27. Panorama", 'controller' => 'bdf', 'action' => '', ), array( 'label' => "28. Concours Bancaires", 'controller' => 'bdf', 'action' => '', ), array( 'label' => "29. Impayés", 'controller' => 'bdf', 'action' => '', ), array( 'label' => "37. Cotation", 'controller' => 'bdf', 'action' => '', ), array( 'label' => "40. Relations Bancaires", 'controller' => 'bdf', 'action' => '', ), array( 'label' => "51. Dirigeants", 'controller' => 'bdf', 'action' => '', ), array( 'label' => "Autres", 'controller' => 'bdf', 'action' => '', ), ), ), array( 'label' => 'EVALUATION', 'pages' => array( array( 'label' => "IndiScore", 'controller' => 'evaluation', 'action' => '', ), array( 'label' => "Rapport de synthèse", 'controller' => 'evaluation', 'action' => '', ), array( 'label' => "Rapport complet", 'controller' => 'evaluation', 'action' => '', ), array( 'label' => "Scoring Credit Safe", 'controller' => 'evaluation', 'action' => '', ), array( 'label' => "Enquête commerciale", 'controller' => 'evaluation', 'action' => '', ), ), ), array( 'label' => 'PIECES OFFICIELLES', 'pages' => array( array( 'label' => "Commande de Pièces", 'controller' => 'pieces', 'action' => '', ), array( 'label' => "Comptes annuels", 'controller' => 'pieces', 'action' => '', ), array( 'label' => "Actes & Statuts", 'controller' => 'pieces', 'action' => '', ), array( 'label' => "Suivi Privilèges", 'controller' => 'pieces', 'action' => '', ), ), ), array( 'label' => 'OPTIONS', 'pages' => array( array( 'label' => "Mes options", 'controller' => 'user', 'action' => 'index', ), array( 'label' => "Mes surveillances", 'controller' => 'surveillance', 'action' => 'liste', ), array( 'label' => "Mon portefeuille", 'controller' => 'surveillance', 'action' => 'portefeuille', ), array( 'label' => "Administration", 'controller' => 'administration', 'action' => '', ), array( 'label' => "Commandes Greffe", 'controller' => 'dashboard', 'action' => '', ), array( 'label' => "Commandes International", 'controller' => '', 'action' => '', ), array( 'label' => "Commandes Giant", 'controller' => '', 'action' => '', ), array( 'label' => "Surveillances", 'controller' => '', 'action' => '', ), array( 'label' => "Se déconnecter", 'controller' => 'user', 'action' => 'logout', ), ), ), ); public function __construct($siret = null, $id = 0){ $this->siret = $siret; $this->id = $id; $this->menu = new Zend_Navigation(); $this->computeMenu(); } public function getMenu(){ return $this->menu; } protected function computeMenu(){ foreach($this->defineMenu as $element){ $perm = true; if (array_key_exists('permission', $element)){ $perm = $this->checkPermission($element['permission']); } if ($perm){ $menu = array(); $menu['label'] = $element['label']; $menu['uri'] = '#'; $menu['class'] = 'header'; if (array_key_exists('pages', $element)){ $menu['pages'] = $this->computePage($element['pages']); } $this->menu->addPage($menu); } } } protected function computePage($pages) { $computePages = array(); foreach($pages as $page){ $visible = false; if (array_key_exists('visibleSansPermission', $page)){ $visible = $page['visibleSansPermission']; //unset($page['visibleSansPermission']); } $perm = true; if (array_key_exists('permission', $page)){ $perm = $this->checkPermission($page['permission']); //unset($page['permission']); } if ($perm){ $computePage = array(); $computePage = $page; $computePage['params'] = $this->setParams($page['controller'], $page['action']); $computePages[] = $computePage; } elseif (!$perm && $visible){ $computePage = array(); $computePage['label'] = $page['label']; $computePage['uri'] = '#'; $computePages[] = $computePage; } } return $computePages; } protected function checkPermission($perm) { $hasPerm = false; if (is_array($perm)){ $list = $perm; } else if (is_string($perm)){ $list = (array)$perm; } $auth = Zend_Auth::getInstance(); $droits = $auth->getIdentity()->droits; foreach($list as $permission){ if (preg_match('/\b'.$permission.'\b/i', $droits)){ $hasPerm = true; break; } } return $hasPerm; } protected function checkModeEdition() { } protected function setParams($controller, $action){ $params = array(); switch($controller) { case 'recherche': case 'finance': if (!empty($this->siret)) { $params['siret'] = $this->siret; } if (!empty($this->id)) { $params['id'] = $this->id; } break; case 'identite': if (!empty($this->siret)) { $params['siret'] = $this->siret; } if (!empty($this->id)) { $params['id'] = $this->id; } break; case 'dirigeant': if (!empty($this->siret)) { $params['siret'] = $this->siret; } if (!empty($this->id)) { $params['id'] = $this->id; } break; } return $params; } protected function checkParams($controller, $action) { } }