
\section{SecureMenu }


\par Cette classe permet la création d'un menu dont les
élements ({\em items}) ne seront affichés qu'aux utilisateurs 
ayant les droits d'accès suffisants pour y accéder.

\subsection{Création d'un menu}

Pour créer un menu, il suffit de créer un objet en appelant \verb+SecureMenu($level=0)+, où \verb+$level+ est le niveau d'accès nécessaire pour les futurs élements du menus si les droits d'accès ne leurs sont pas explicitement fixés.
Si \verb+$level+ n'est pas spécifié, alors les élements seront accessibles à tous par défaut.

\par Pour créer un menu il suffit donc de :
\lstset{language=PHP}
\begin{lstlisting}
$exempleMenu1=new SecureMenu();
$exempleMenu2=new SecureMenu();
\end{lstlisting}

\subsection{Ajouter des élements}
\par Pour l'ajout d'un élements, on fait appel à la fonction 
\verb+addItem($identifiant,$titre,$page)+, où \verb+$identifiant+ 
est l'identifiant interne de l'élément du menu, \verb+$titre+ est
le titre de l'élément, tel qu'il apparaîtra aux utilisateurs du menu,
\verb+$page+ est la page cible affichée lors d'un clic sur l'élément 
du menu.

\par Par exemple:
\lstset{language=PHP}
\begin{lstlisting}
$exempleMenu1->addItem("id_interne_sommaire",
                       "Sommaire",
                       "index.php");
$exempleMenu1->addItem("id_interne2",
                       "Definitions"
                       "lexique.php");
\end{lstlisting}
aura pour effet d'ajouter {\em "Sommaire"}\/ et {\em "Definitions"}\/ au menu, qui pointent
respectivement sur les pages "\verb+index.php+" et "\verb+lexique.php+"

\subsection{Gestion des droits}
\par Par définition, une application utilisable par des utilisateurs n'ayant
pas le droit aux mêmes actions, doit explicitement {\em restreindre} certaines 
zones à certaines personnes.
\par Pour ce faire, il est nécessaire d'indiquer quels "les droits d'accès"
autorisés aux zones restreintes, et indiquer a ces zones le droit d'accès de 
l'utilisateur actuel.

\subsubsection{Fixer les droits sur un élément}

\par Pour fixer un droit d'accès (qui régira son affichage en fonction de l'utilisateur) 
à un élement du menu, il suffit d'utiliser la méthode \verb+setItemLevel($identifiant,$level)+. Dans le prototype de cette fonction, \verb+$identifiant+ indique l'identifiant de
l'élément du menu (comme vu dans \verb+addItem(...)+) et \verb+$level+ est le "droit 
d'accès minimum autorisé".


\subsubsection{Indiquer au menu les droits actuels}
\par Afin que le menu soit utilisable, il est nécessaire d'indiquer au menu les 
droits de l'utilisateur courant par la méthode \verb+setCurrentLevel($level)+, où
\verb+$level+ est le "droit d'accès" de l'utilisateur courrant.

Par exemple :
\lstset{language=PHP}
\begin{lstlisting}
$menu=new SecureMenu(0);
$menu->addItem("sommaire ",
               "Sommaire",
               "index.php");
$menu->setItemLevel("sommaire",
                    0);

$menu->addItem("page_invisible",
               "Acces Membres"
               "membres.php");
$menu->setItemLevel("page_invisible",
                    1);
					
$menu->setCurrentLevel(0);
\end{lstlisting}
aura pour effet de créer un menu dont seul l'élément {\em "Sommaire"}
sera affiché, car le droit d'accès de l'utilisateur indiqué est 
insuffisant pour afficher l'entrée {\em "Acces Membres"} du menu.


\subsection{Utiliser le menu}

\par Une fois que les éléments ont été ajoutés et les droits d'accès fixés, le menu
est prêt a être utilisé : il suffit d'appeller la méthode \verb+toHTML()+ qui génère 
et renvoie le code HTML correspondant au menu à l'endroit où la fonction est appelée. 

\lstset{language=PHP}
\begin{lstlisting}
$menu=new SecureMenu();
[...]
print $menu->toHTML();
\end{lstlisting}


