Lister tous les actions des Modules Existant
Salut,
Existe-t-il une fonction qui permette de lister toutes les Actions de tout les Modules ?
Je pose la question car j'aimerais pour la gestion des permissions créer une page où l'on trouve un tableau avec en ligne tout les Modules voulus, en Colonnes les Groupes d'appartenance des utilisateurs et en intersection un bouton liste ou l'on choisie Access ou Denied.
En dessous de ce tableau on aurait un bouton liste avec tout les modules connus et un bouton ajouter pour les glisser dans le tableau précédent.
Cela serait plus lisible pour la gestion d'accès.
Sinon je le ferais avec quatre tables (Auth, Group, Permission et Element) et je déclarerais les modules / actions à la main.
Mise à Jour de la Fonction
Je ne déterre pas, Je profite d'une mise à jour de cette fonction pour partager ça mise à jour.
Excusez-moi pour la poussière. :mouarf:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
/*
* Retourne la liste des modules et leurs méthodes, exclu ceux contenus dans $tExclusion ainsi que ceux ne contenant pas un main.php
* @access private
* @param array $tExclusion tableau des modules a exclure
* @return array multidimentionnel [ModuleName]=>[0]=>'METHODS'
*/
private function getListAllModulesMethods($tExclusion=array()) {
$oDir = new _dir('../module');
$tDir = $oDir->getListDir();
$tModuleMethods = array();
foreach ($tDir as $oDirModule) {
$sModuleName = 'module_'.$oDirModule->getName();
$sSimpleModuleName = $oDirModule->getName();
$sPathModule = $oDirModule->getAdresse();
if (in_array($sSimpleModuleName, $tExclusion)) {
continue;
}
if (!file_exists($sPathModule . '/main.php')) {
continue;
}
$oModule=new $sModuleName();
//on demande la liste des methodes public
$tMethods=get_class_methods($oModule);
$tModuleMethods[$sSimpleModuleName]=array();
foreach($tMethods as $sMethod){
//on exclue les methodes __get, __set
if(substr($sMethod,0,2)=='__'){ continue ; }
//on garde que les methodes commencant par _ (signe des actions)
if(substr($sMethod,0,1)!='_'){ continue ; }
$tModuleMethods[$sSimpleModuleName][$sSimpleModuleName.$sMethod]=$sMethod;
}
}
return $tModuleMethods;
} |