<?xml version="1.0" encoding="UTF-8" ?>
<!-- RSS generated by PHPBoost on Wed, 29 Apr 2026 03:32:08 +0200 -->
<rss version="2.0" xmlns:atom="https://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Wiki]]></title>
		<atom:link href="https://www.phpboost.com/syndication/rss/wiki/5" rel="self" type="application/rss+xml"/>
		<link>https://www.phpboost.com</link>
		<description><![CDATA[Derniers articles de la catégorie V. Développer avec PHPBoost]]></description>
		<copyright>(C) 2005-2026 PHPBoost</copyright>
		<language>en</language>
		<generator>PHPBoost</generator>
		
            <item>
                <title><![CDATA[Système de Templates]]></title>
                <link>https://www.phpboost.com/wiki/systeme-de-templates</link>
                <guid>https://www.phpboost.com/wiki/systeme-de-templates</guid>
                <description><![CDATA[Afin d'offrir de nouvelles possibilités, le moteur de template de PHPBoost 4.0 a été entièrement revu.<br />
<br />
<br />
Cette page décrit en détails les possibilités (les nouvelles comme les anciennes) offertes par le moteur de template de PHPBoost.<br />
<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-la-syntaxe-des-templates">La syntaxe des templates</h2><br />

<br />
Un template se compose de différents éléments de syntaxe.<br />
<br />
<ul class="formatter-ul">
<li class="formatter-li"> Du texte simple
</li><li class="formatter-li"> Des variables
</li><li class="formatter-li"> Des conditions
</li><li class="formatter-li"> Des boucles
</li><li class="formatter-li"> Des inclusions de sous-templates
</li><li class="formatter-li"> Des expressions qui écrivent dans le template
</li><li class="formatter-li"> Des expressions qui n'écrivent pas dans le template
</li><li class="formatter-li"> Du PHP<br />
<br />
</li></ul><br />
<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-texte-simple">Texte simple</h2><br />

<br />
<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;">Il est possible d'écrire du texte simplement dans un template, c'est le contenu par défaut</pre></div></div><br />
<br />
Le résultat :<br />
<br />
<div class="formatter-container formatter-code code-HTML"><span class="formatter-title">Code HTML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="html" style="font-family:monospace;">Il est possible d'écrire du texte simplement dans un template, c'est le contenu par défaut</pre></pre></div></div><br />
<br />
<span class="message-helper bgc notice">Il est possible d'échapper des caractères spéciaux qui pourraient être interprétés par le moteur de template en les faisant précéder par un antislash : &#8220;\&#8221;.<br />
<br />
La liste des caractères spéciaux qu'il peut être nécessaire d'échapper est la suivante : \, $, #, {, }</span><br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-variables">Variables</h2><br />

Le moteur de templates supporte différents types de variables. Dans cette partie, nous détaillerons les variables simples et les variables de langues.<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-variable-simple">Variable Simple</h3><br />

Une variable simple sera remplacée par la valeur assignée à la variable côté PHP.<br />
<br />
<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;">Il est possible d'écrire du texte avec des <span style="color:#7F3300;">{</span><span style="color:#FF6600; font-weight: bold;">VARS</span><span style="color:#7F3300;">}</span></pre></div></div><br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$template</span><span style="color: #8000FF;">-></span><span style="color: #000000;">put</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'VARS'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'variables'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
Le résultat :<br />
<br />
<div class="formatter-container formatter-code code-HTML"><span class="formatter-title">Code HTML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="html" style="font-family:monospace;">Il est possible d'écrire du texte avec des variables</pre></pre></div></div><br />
<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-variable-de-langue">Variable de langue</h3><br />

<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;">#{resources('monmodule/meslangues')}
{@hello.world}</pre></div></div><br />
<br />
Le fichier de langues associé se trouvant dans le répertoire /monmodule/french/meslangues.php<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$lang</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'hello.world'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'Bonjour'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
Le résultat :<br />
<br />
<div class="formatter-container formatter-code code-HTML"><span class="formatter-title">Code HTML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="html" style="font-family:monospace;">Bonjour</pre></pre></div></div><br />
<br />
Dans cette exemple on voit deux choses. Tout d'abord, il faut associer la langue au Template avec la méthode resources qui prend en argument le chemin vers la langue à charger. Cette langue sera prise en compte à l'exécution pour savoir si il faut aller la chercher dans le répertoire french, english ou autre.<br />
<br />
<span class="message-helper bgc notice">Ceci peut également se faire directement en PHP. L'exemple suivant est équivalent :<br />
<br />
<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;">{@hello.world}</pre></div></div><br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$template</span><span style="color: #8000FF;">-></span><span style="color: #000000;">add_lang</span><span style="color: #8000FF;">&#40;</span>LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'meslangues'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'monmodule'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
Le fichier de langue associé se trouvant dans le répertoire /monmodule/french/meslangues.php<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$lang</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'hello.world'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'Bonjour'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div></span><br />
<br />
Ici, la variable de langue est appelée en utilisant la syntaxe @nomDeLaVariableDeLangue. Cette syntaxe est un raccourci pour l'appel i18n('nomDeLaVariableDeLangue'). Cette seconde méthode sera détaillée dans la partie méthode de template.<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-conditions">Conditions</h2><br />

Le moteur de templates supporte les conditions de type IF (not) une condition / ELSE. La condition peut être une variable, une constante, ou bien le retour d'une méthode.<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-condition-simple">Condition simple</h3><br />

<h4 class="formatter-title wiki-paragraph-4" id="paragraph-le-template">Le template</h4><br />

<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;"># IF VAR1 #
la variable "VAR1" vaut TRUE
<span style="color:#9915AF; font-weight: bold;">#</span> <span style="color:#000066; font-weight: bold;">ELSE</span> <span style="color:#9915AF; font-weight: bold;">#</span>
la variable "VAR1" vaut FALSE
# END #
&nbsp;</pre></div></div><br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$template</span><span style="color: #8000FF;">-></span><span style="color: #000000;">put</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'VAR1'</span><span style="color: #8000FF;">,</span>  <span style="">true</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
<br />
<br />
Le résultat :<br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-HTML"><span class="formatter-title">Code HTML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="html" style="font-family:monospace;">la variable "VAR1" vaut TRUE</pre></pre></div></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-condition-negative">Condition négative</h3><br />

<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;"># IF NOT DayTime::is_lunch_time() #
Ce n'est pas l'heure de manger
<span style="color:#9915AF; font-weight: bold;">#</span> <span style="color:#000066; font-weight: bold;">ELSE</span> <span style="color:#9915AF; font-weight: bold;">#</span>
A table
# END #
&nbsp;</pre></div></div><br />
<br />
<br />
<br />
Le résultat si la statique méthode <pre style="display:inline;">DayTime<span style="color: #8000FF;">::</span><span style="color: #000000;">is_lunch_time</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span></pre> retourne <pre style="display:inline;"><span style="">false</span></pre><br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-HTML"><span class="formatter-title">Code HTML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="html" style="font-family:monospace;">A table</pre></pre></div></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-boucles">Boucles</h2><br />

<h3 class="formatter-title wiki-paragraph-3" id="paragraph-boucle-simple">Boucle simple</h3><br />

<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;"><span style="color:#9915AF; font-weight: bold;">#</span> <span style="color:#000066; font-weight: bold;">START</span> <span style="color:#8F5211;"></span><span style="color:#FF6600; font-weight: bold;">boucle</span> <span style="color:#9915AF; font-weight: bold;">#</span>
Code répété dans la boucle
<span style="color:#9915AF; font-weight: bold;">#</span> <span style="color:#000066; font-weight: bold;">END</span> <span style="color:#8F5211;"></span><span style="color:#FF6600; font-weight: bold;">boucle</span> <span style="color:#9915AF; font-weight: bold;">#</span></pre></div></div><br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$my_loop</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #0000FF; font-weight: bold;">for</span> <span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$i</span> <span style="color: #8000FF;">=</span> <span style="color: #FF8000;">0</span><span style="color: #8000FF;">;</span> <span style="color: #000080;">$i</span> <span style="color: #8000FF;"><</span> <span style="color: #FF8000;">3</span><span style="color: #8000FF;">;</span> <span style="color: #000080;">$i</span><span style="color: #8000FF;">++</span><span style="color: #8000FF;">&#41;</span> <span style="color: #8000FF;">&#123;</span>
    <span style="color: #000080;">$my_loop</span><span style="color: #8000FF;">&#91;</span><span style="color: #8000FF;">&#93;</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #000080;">$template</span><span style="color: #8000FF;">-></span><span style="color: #000000;">put</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'boucle'</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$my_loop</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
<br />
<br />
Le résultat :<br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-HTML"><span class="formatter-title">Code HTML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="html" style="font-family:monospace;">Code répété dans la boucle
Code répété dans la boucle
Code répété dans la boucle</pre></pre></div></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-boucle-simple-avec-des-variables">Boucle simple avec des variables</h3><br />

<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;">Nom de la boucle : $<span style="color:#7F3300;">{</span><span style="color:#FF6600; font-weight: bold;">LOOP_NAME</span><span style="color:#7F3300;">}</span>
<span style="color:#9915AF; font-weight: bold;">#</span> <span style="color:#000066; font-weight: bold;">START</span> <span style="color:#8F5211;"></span><span style="color:#FF6600; font-weight: bold;">boucle</span> <span style="color:#9915AF; font-weight: bold;">#</span>
$<span style="color:#7F3300;">{</span><span style="color:#8F5211;">boucle.</span><span style="color:#FF6600; font-weight: bold;">I</span><span style="color:#7F3300;">}</span> * 2 = $<span style="color:#7F3300;">{</span><span style="color:#8F5211;">boucle.</span><span style="color:#FF6600; font-weight: bold;">2I</span><span style="color:#7F3300;">}</span>
<span style="color:#9915AF; font-weight: bold;">#</span> <span style="color:#000066; font-weight: bold;">END</span> <span style="color:#8F5211;"></span><span style="color:#FF6600; font-weight: bold;">boucle</span> <span style="color:#9915AF; font-weight: bold;">#</span></pre></div></div><br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$template</span><span style="color: #8000FF;">-></span><span style="color: #000000;">put</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'LOOP_NAME'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'table de 2'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #000080;">$my_loop</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #0000FF; font-weight: bold;">for</span> <span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$i</span> <span style="color: #8000FF;">=</span> <span style="color: #FF8000;">0</span><span style="color: #8000FF;">;</span> <span style="color: #000080;">$i</span> <span style="color: #8000FF;"><</span> <span style="color: #FF8000;">3</span><span style="color: #8000FF;">;</span> <span style="color: #000080;">$i</span><span style="color: #8000FF;">++</span><span style="color: #8000FF;">&#41;</span> <span style="color: #8000FF;">&#123;</span>
    <span style="color: #000080;">$my_loop</span><span style="color: #8000FF;">&#91;</span><span style="color: #8000FF;">&#93;</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'I'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$i</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'2I'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$i</span> <span style="color: #8000FF;">*</span> <span style="color: #FF8000;">2</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #000080;">$template</span><span style="color: #8000FF;">-></span><span style="color: #000000;">put</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'boucle'</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$my_loop</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
<br />
<br />
Le résultat :<br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-HTML"><span class="formatter-title">Code HTML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="html" style="font-family:monospace;">Nom de la boucle : table de 2
0 * 2 = 0
1 * 2 = 2
2 * 2 = 4</pre></pre></div></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-boucles-imbriquees">Boucles imbriquées</h3><br />

<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;"><span style="color:#9915AF; font-weight: bold;">#</span> <span style="color:#000066; font-weight: bold;">START</span> <span style="color:#8F5211;"></span><span style="color:#FF6600; font-weight: bold;">boucle1</span> <span style="color:#9915AF; font-weight: bold;">#</span>
Code répété dans la boucle 1: <span style="color:#7F3300;">{</span><span style="color:#8F5211;">boucle1.</span><span style="color:#FF6600; font-weight: bold;">VARBOUCLE_1</span><span style="color:#7F3300;">}</span>
    <span style="color:#9915AF; font-weight: bold;">#</span> <span style="color:#000066; font-weight: bold;">START</span> <span style="color:#8F5211;">boucle1.</span><span style="color:#FF6600; font-weight: bold;">boucle2</span> <span style="color:#9915AF; font-weight: bold;">#</span>
    Code répété dans la boucle 2: <span style="color:#7F3300;">{</span><span style="color:#8F5211;">boucle1.boucle2.</span><span style="color:#FF6600; font-weight: bold;">VARBOUCLE_2</span><span style="color:#7F3300;">}</span>
    <span style="color:#9915AF; font-weight: bold;">#</span> <span style="color:#000066; font-weight: bold;">END</span> <span style="color:#8F5211;">boucle1.</span><span style="color:#FF6600; font-weight: bold;">boucle2</span> <span style="color:#9915AF; font-weight: bold;">#</span>
<span style="color:#9915AF; font-weight: bold;">#</span> <span style="color:#000066; font-weight: bold;">END</span> <span style="color:#8F5211;"></span><span style="color:#FF6600; font-weight: bold;">boucle1</span> <span style="color:#9915AF; font-weight: bold;">#</span></pre></div></div><br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$loop1</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #0000FF; font-weight: bold;">for</span> <span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$i</span> <span style="color: #8000FF;">=</span> <span style="color: #FF8000;">1</span><span style="color: #8000FF;">;</span> <span style="color: #000080;">$i</span> <span style="color: #8000FF;"><=</span> <span style="color: #FF8000;">3</span><span style="color: #8000FF;">;</span> <span style="color: #000080;">$i</span><span style="color: #8000FF;">++</span><span style="color: #8000FF;">&#41;</span> <span style="color: #8000FF;">&#123;</span>
   <span style="color: #000080;">$loop2</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
   <span style="color: #0000FF; font-weight: bold;">for</span> <span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$j</span> <span style="color: #8000FF;">=</span> <span style="color: #FF8000;">1</span><span style="color: #8000FF;">;</span> <span style="color: #000080;">$j</span> <span style="color: #8000FF;"><=</span> <span style="color: #FF8000;">2</span><span style="color: #8000FF;">;</span> <span style="color: #000080;">$j</span><span style="color: #8000FF;">++</span><span style="color: #8000FF;">&#41;</span> <span style="color: #8000FF;">&#123;</span>
       <span style="color: #000080;">$loop2</span><span style="color: #8000FF;">&#91;</span><span style="color: #8000FF;">&#93;</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'VARBOUCLE_2'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$j</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
   <span style="color: #8000FF;">&#125;</span>
   <span style="color: #000080;">$loop1</span><span style="color: #8000FF;">&#91;</span><span style="color: #8000FF;">&#93;</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'VARBOUCLE_1'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$i</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'boucle2'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$loop2</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #000080;">$template</span><span style="color: #8000FF;">-></span><span style="color: #000000;">put</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'boucle1'</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$loop1</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;</pre></pre></div></div><br />
<br />
<br />
<br />
Le résultat :<br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-HTML"><span class="formatter-title">Code HTML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="html" style="font-family:monospace;">Code répété dans la boucle 1: 1
    Code répété dans la boucle 2: 1
    Code répété dans la boucle 2: 2
Code répété dans la boucle 1: 2
    Code répété dans la boucle 2: 1
    Code répété dans la boucle 2: 2
Code répété dans la boucle 1: 3
    Code répété dans la boucle 2: 1
    Code répété dans la boucle 2: 2</pre></pre></div></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-inclusions">Inclusions</h2><br />

<h3 class="formatter-title wiki-paragraph-3" id="paragraph-inclusion-directe">Inclusion directe</h3><br />

<h4 class="formatter-title wiki-paragraph-4" id="paragraph-le-template">Le template</h4><br />

<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;">Ceci est <span style="color:#9915AF; font-weight: bold;">#</span> <span style="color:#000066; font-weight: bold;">INCLUDE </span> <span style="color:#8F5211;"></span><span style="color:#FF6600; font-weight: bold;">SUBTEMPLATE</span> <span style="color:#9915AF; font-weight: bold;">#</span> dans un autre</pre></div></div><br />
<br />
<br />
<br />
<h4 class="formatter-title wiki-paragraph-4" id="paragraph-le-template-a-inclure">Le template à inclure</h4><br />

<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;">un template inclus</pre></div></div><br />
<br />
<br />
<br />
<h4 class="formatter-title wiki-paragraph-4" id="paragraph-le-php">Le PHP</h4><br />

<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$subtemplate</span> <span style="color: #8000FF;">=</span> <span style="color: #008000; font-style: italic;">// un objet de type Template ou View</span>
<span style="color: #000080;">$template</span><span style="color: #8000FF;">-></span><span style="color: #000000;">put</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'SUBTEMPLATE'</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$subtemplate</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
<br />
<br />
<h4 class="formatter-title wiki-paragraph-4" id="paragraph-le-resultat">Le résultat</h4><br />

<div class="formatter-container formatter-code code-HTML"><span class="formatter-title">Code HTML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="html" style="font-family:monospace;">Ceci est un template inclus dans un autre</pre></pre></div></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-inclusion-dans-une-boucle">Inclusion dans une boucle</h3><br />

<h4 class="formatter-title wiki-paragraph-4" id="paragraph-le-template">Le template</h4><br />

<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;">Ceci est <span style="color:#9915AF; font-weight: bold;">#</span> <span style="color:#000066; font-weight: bold;">START</span> <span style="color:#8F5211;"></span><span style="color:#FF6600; font-weight: bold;">loop</span> <span style="color:#9915AF; font-weight: bold;">#</span> <span style="color:#9915AF; font-weight: bold;">#</span> <span style="color:#000066; font-weight: bold;">INCLUDE </span> <span style="color:#8F5211;">loop.</span><span style="color:#FF6600; font-weight: bold;">SUBTEMPLATE</span> <span style="color:#9915AF; font-weight: bold;">#</span> # END # dans un autre</pre></div></div><br />
<br />
<br />
<br />
Le premier template à inclure<br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;">un temp</pre></div></div><br />
<br />
<br />
<br />
Le second template à inclure<br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;">late inclus</pre></div></div><br />
<br />
<br />
<br />
Le PHP<br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$subtemplates</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$subtemplate1</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$subtemplate2</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Objets de type Template ou View</span>
<span style="color: #000080;">$loop</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #0000FF; font-weight: bold;">for</span> <span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$subtemplates</span> <span style="color: #0000FF; font-weight: bold;">as</span> <span style="color: #000080;">$subtemplate</span><span style="color: #8000FF;">&#41;</span> <span style="color: #8000FF;">&#123;</span>
   <span style="color: #000080;">$loop</span><span style="color: #8000FF;">&#91;</span><span style="color: #8000FF;">&#93;</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'SUBTEMPLATE'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$subtemplate</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #000080;">$template</span><span style="color: #8000FF;">-></span><span style="color: #000000;">put</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'loop'</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$loop</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
<br />
<br />
Le résultat :<br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-HTML"><span class="formatter-title">Code HTML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="html" style="font-family:monospace;">Ceci est un template inclus dans un autre</pre></pre></div></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-expressions-qui-ecrivent-dans-le-template">Expressions qui écrivent dans le template</h2><br />

Les expressions permettent d'appeler du PHP directement depuis un template. Ceci est utile car cela permet de ne plus assigner les langues dans le PHP et de mettre en forme les messages directement dans les templates.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Pour cela, il est possible d'appeler soit des fonctions de templates, soit des méthodes statiques sur de vraies classes PHP.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-methodes-de-templates">Méthodes de templates</h3><br />

Les méthodes de templates sont des méthodes qui permettent d'appeler certains services directement depuis le template. Voici la liste de ces méthodes :<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<ul class="formatter-ul">
<li class="formatter-li"> resources(String languageFile) : Charge le fichier de langue et l'associé au template.
</li><li class="formatter-li"> i18n(String messageId) : retourne le message de langue identifier par l'identifiant messageId trouvé dans les fichiers de langues chargés par la méthode resources() ci-dessus. Le caractères XML '<', '>', '"' et '&' sont échappés
</li><li class="formatter-li"> i18nraw(String messageId) : pareil que i18n, mais n'échappe pas le xml
</li><li class="formatter-li"> i18njs(String messageId) :  pareil que i18n mais échappe les "'" et les "\n"
</li><li class="formatter-li"> i18njsraw(String messageId) :  pareil que i18nraw mais échappe les "'" et les "\n"
</li><li class="formatter-li"> setvars(String message, String[String] variables) : remplace les occurences des éléments de la forme ":nom" par la valeur associée à la clé "nom" dans le dictionnaire variables
</li><li class="formatter-li"> escape(String message) : échappe le xml
</li><li class="formatter-li"> escapejs(String message, boolean add_quotes = true) : échappe le javascript. Par défaut, la chaîne résultante est entourée de 'simples guillements'<br />
<br />
<br />
<br />
</li></ul><br />
<br />
<br />
<br />
Pour plus d'informations sur ces méthodes, il faut se reporter à la PHPDoc de la classe TemplateFunctions<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;">${i18n('welcome.message')}</pre></div></div><br />
<br />
<br />
<br />
Le résultat :<br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-HTML"><span class="formatter-title">Code HTML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="html" style="font-family:monospace;">Le message de bienvenue contenu dans le fichier langue</pre></pre></div></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-methode-statique">Méthode statique</h3><br />

<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;">${LangLoader::get_message('step.welcome.message', 'install', 'install')}</pre></div></div><br />
<br />
<br />
<br />
Le résultat :<br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-HTML"><span class="formatter-title">Code HTML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="html" style="font-family:monospace;">Bienvenue dans l'assistant d'installation de PHPBoost</pre></pre></div></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-expressions-qui-n-ecrivent-pas-dans-le-template">Expressions qui n'écrivent pas dans le template</h2><br />

Si l'on comprend bien  l'intérêt des expressions pour modifier la mise en page des variables passées au template, il est peut-être plus difficile de comprendre l'intérêt des expressions qui n'écrivent rien dans les templates. Pourtant elles sont également très importantes.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
En effet, pour associer un fichier de langue à un template, on peut soit le faire en PHP, soit directement dans le template. Dans le cas où cela se fait directement dans le template, aucun élément ne sera à écrire dans le template.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-association-d-un-fichier-de-langue">Association d'un fichier de langue</h3><br />

<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;">#{resources('install/install')}
<span style="color: #009900;"><<a href="https://www.w3schools.com/tags/tag_h1.asp"><span style="color: #000000; font-weight: bold;">h1</span></a>></span>${i18n('step.welcome.message')}<span style="color: #009900;"><<span style="color: #66cc66;">/</span><a href="https://www.w3schools.com/tags/tag_h1.asp"><span style="color: #000000; font-weight: bold;">h1</span></a>></span></pre></div></div><br />
<br />
<br />
<br />
Le résultat:<br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-HTML"><span class="formatter-title">Code HTML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="html" style="font-family:monospace;"><span style="color: #009900;"><<a href="https://www.w3schools.com/tags/tag_h1.asp"><span style="color: #000000; font-weight: bold;">h1</span></a>></span>Bienvenue dans l'assistant d'installation de PHPBoost<span style="color: #009900;"><<span style="color: #66cc66;">/</span><a href="https://www.w3schools.com/tags/tag_h1.asp"><span style="color: #000000; font-weight: bold;">h1</span></a>></span></pre></pre></div></div><br />
<br />
<br />
<br />
Dans le cas ou le #{resources()} n'aurait pas été fait, il aurait fallut faire cette association en php de la façon suivante : <div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$template</span><span style="color: #8000FF;">-></span><span style="color: #000000;">add_lang</span><span style="color: #8000FF;">&#40;</span>LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'install'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'install'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
<br />
<br />
Si aucune de ces deux méthodes n'est employée alors un message d'erreur indiquera que la langue n'a pas été trouvée.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-php">PHP</h2><br />

Il est possible d&#8217;inclure du PHP dans les templates, cependant, ceci est à proscrire pour plusieurs raisons :<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<ol class="formatter-ol">
<li class="formatter-li"> Cela risque fort de mener à avoir des traitements dans le template qui n&#8217;ont rien à voir avec la mise en page, ce qui rend la future maintenance du module beaucoup plus compliquée, car en plus de changer la logique dans le code PHP du module, il faudra également retravailler de façon approfondie les templates.
</li><li class="formatter-li"> Cela n&#8217;est pas performant. En effet le moteur de rendu de PHPBoost permet d&#8217;afficher le template directement avec une instruction echo, ou bien de pouvoir l&#8217;injecter ailleurs en donnant un rendu sous forme de chaîne de caractères. Ce second cas rend la gestion des echos qui pourraient être fait dans le code PHP appelé très compliquée .
</li><li class="formatter-li"> La solution utilisée par le moteur de templates pour supporter ces echos consiste à stocker dans le buffer de sortie ce qui va être écrit. Or l&#8217;opération visant à préserver ce buffer est extrêmement coûteuse en terme de performances.<br />
<br />
<br />
<br />
</li></ol><br />
<br />
<br />
<br />
Si malgré ceci vous avez tout de même besoin d&#8217;utiliser du PHP dans vos templates, voici un exemple.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-exemple">Exemple</h3><br />

<div class="formatter-container formatter-code code-TPL"><span class="formatter-title">Code TPL : </span><div class="formatter-content"><pre class="html" style="font-family:monospace;">ceci est du <span style="color: #009900;"><?php echo ?PHP?; ?></span></pre></div></div><br />
<br />
<br />
<br />
Le résultat :<br />
<br />
<br />
<br />
<div class="formatter-container formatter-code code-HTML"><span class="formatter-title">Code HTML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="html" style="font-family:monospace;">ceci est du PHP</pre></pre></div></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-les-templates-en-php">Les Templates en PHP</h2><br />

Nous venons de voir comment écrire des templates et quels étaient les mécanismes PHP pour communiquer avec ceux-ci.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Nous allons maintenant voir quelques fonctionnalités côté PHP permettant de créer un objet Template et l'utiliser assez simplement.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-creation-instanciation-d-un-objet-template">Création / instanciation d'un objet Template</h2><br />

<h3 class="formatter-title wiki-paragraph-3" id="paragraph-a-partir-d-un-fichier-filetemplate">A partir d'un fichier : FileTemplate</h3><br />

<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$my_template</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> FileTemplate<span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'mymodule/mytpl.tpl'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
<br />
<br />
Ce bout de code va chercher à créer un objet Template en utilisant le premier fichier de template existant.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<ol class="formatter-ol">
<li class="formatter-li"> /templates/$theme/modules/mymodule/mytpl.tpl : C&#8217;est le fichier de template fourni par le thème utilisé. Il est utilisé prioritairement s'il est trouvé car il est en accord avec le thème.
</li><li class="formatter-li"> /mymodule/templates/mytpl.tpl : C&#8217;est le fichier de template fourni par le module à utiliser si le thème ne propose pas sa propre version.<br />
<br />
<br />
<br />
</li></ol><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-a-partir-d-une-chaine-de-caractere-stringtemplate">A partir d'une chaîne de caractère : StringTemplate</h3><br />

<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$my_template</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> StringTemplate<span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'Ceci est mon template'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Dans les deux cas précédent, un objet template à été créé. Il se comportement indifféremment, peu importe que le template soit issu d&#8217;un fichier ou d&#8217;une chaîne de caractères.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-assignation-automatique">Assignation automatique</h2><br />

Afin de faciliter le travail des développeurs, un certain nombre de variables sont assignés au template par défaut. En voici la liste :<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<ul class="formatter-ul">
<li class="formatter-li"> THEME : le nom du dossier du thème courant
</li><li class="formatter-li"> LANG : le nom du dossier de la langue courante
</li><li class="formatter-li"> IS_USER_CONNECTED : true si l&#8217;utilisateur est connecté
</li><li class="formatter-li"> IS_ADMIN : true si l'utilisateur est un administrateur
</li><li class="formatter-li"> IS_MODERATOR : true si l'utilisateur est un modérateur
</li><li class="formatter-li"> PATH_TO_ROOT : le chemin jusqu&#8217;à la racine de PHPBoost
</li><li class="formatter-li"> TOKEN : le token de session permettant de se prémunir des attaques CSRF. Pour plus d&#8217;informations, lire <a href="https://fr.wikipedia.org/wiki/Cross-Site Request Forgery" class="wikipedia-link offload">Cross-Site Request Forgery</a><br />
<br />
<br />
<br />
</li></ul><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-compatibilite">Compatibilité</h2><br />

Le moteur de templates de PHPBoost 4.0 est (presque) entièrement compatible avec les templates de la version 3.0.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<span class="message-helper bgc notice">Ceci signifie que tous les templates de la 3.0 continueront à fonctionner sans nécessiter d'adaptation sur la 4.0 (à de rares exceptions près).<br />
<br />
<br />
<br />
Pour adapter un thème 3.0 en version 4.0, utilisez cette procédure : <a class="offload" href="https://www.phpboost.com/wiki/mettre-a-jour-son-theme-3-0-en-4-0">Mettre à jour son thème 3.0 en 4.0</a><br />
<br />
<br />
<br />
</span>]]></description>
                <pubDate>Sat, 25 May 2024 11:54:10 +0200</pubDate>
                
            </item>
		
            <item>
                <title><![CDATA[Utiliser les alertes administrateurs]]></title>
                <link>https://www.phpboost.com/wiki/utiliser-les-alertes-administrateurs</link>
                <guid>https://www.phpboost.com/wiki/utiliser-les-alertes-administrateurs</guid>
                <description><![CDATA[PHPBoost est doté d'un système permettant d'envoyer des alertes aux administrateurs. Ce système est notamment utilisé quand un utilisateur souhaite s'inscrire et qu'il faut l'approbation d'un administrateur ou bien encore pour alerter d'une mise à jour d'un module ou de PHPBoost.<br />
<br />
Pour ajouter une alerte, rien de plus simple, il vous faudra instancier la classe <pre style="display:inline;">AdministratorAlert</pre> et définir un certain nombre d'informations aux variables de cette classe.<br />
<br />
Pour cela :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$alert</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> AdministratorAlert<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #000080;">$alert</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_entitled</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'valeur'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Titre que vous souhaitez afficher</span>
<span style="color: #000080;">$alert</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_fixing_url</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'valeur'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Url où rediriger l'administrateur</span>
<span style="color: #000080;">$alert</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_priority</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'valeur'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>  <span style="color: #008000; font-style: italic;">// Niveau de priorité</span>
<span style="color: #008000; font-style: italic;">/* Valeurs : 
AdministratorAlert::ADMIN_ALERT_VERY_LOW_PRIORITY, 
AdministratorAlert::ADMIN_ALERT_LOW_PRIORITY, 
AdministratorAlert::ADMIN_ALERT_MEDIUM_PRIORITY, 
AdministratorAlert::ADMIN_ALERT_HIGH_PRIORITY, 
AdministratorAlert::ADMIN_ALERT_VERY_HIGH_PRIORITY
*/</span>
<span style="color: #000080;">$alert</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_status</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'valeur'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Status : AdministratorAlert::ADMIN_ALERT_STATUS_UNREAD, AdministratorAlert::ADMIN_ALERT_STATUS_PROCESSED</span>
<span style="color: #000080;">$alert</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_id_in_module</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'valeur'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Identifiant de l'élément dans le module</span>
<span style="color: #000080;">$alert</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_type</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'member_account_to_approbate'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Définit le type de l'évènement. Pour récupérer votre cas, vous pourriez avoir besoin d'avoir un type d'évènement, par exemple si votre module possède différents types d'évènements. Avec ce champ, vous pouvez le spécifier.</span></pre></pre></div></div><br />
<br />
Pour enregistrer ou modifier l'alerte :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">AdministratorAlertService<span style="color: #8000FF;">::</span><span style="color: #000000;">save_alert</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$alert</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
Pour la supprimer utilisez :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">AdministratorAlertService<span style="color: #8000FF;">::</span><span style="color: #000000;">delete_alert</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$alert</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div>]]></description>
                <pubDate>Sat, 04 Mar 2023 08:07:06 +0100</pubDate>
                
            </item>
		
            <item>
                <title><![CDATA[Utilisateur courant]]></title>
                <link>https://www.phpboost.com/wiki/utilisateur-courant</link>
                <guid>https://www.phpboost.com/wiki/utilisateur-courant</guid>
                <description><![CDATA[La classe <em>CurrentUser</em> gère l'utilisateur au cours de sa session. Elle permet notamment de récupérer ses informations et gérer les autorisations pour les niveaux et groupes d'utilisateurs, sachant qu'elle supporte le fait qu'un utilisateur soit inscrit dans plusieurs groupes.<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-informations-de-l-utilisateur">Informations de l'utilisateur</h2><br />

Pour récupérer une instance de la classe <em>CurrentUser</em> il suffit d'utiliser <em>AppContext</em> :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">AppContext<span style="color: #8000FF;">::</span><a href="http://www.php.net/get_current_user"><span style="color: #0000FF; font-weight: bold;">get_current_user</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span></pre></pre></div></div><br />
<br />
Un certain nombre d'informations peuvent ensuite être récupérées grâce à cette classe :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$user</span> <span style="color: #8000FF;">=</span> AppContext<span style="color: #8000FF;">::</span><a href="http://www.php.net/get_current_user"><span style="color: #0000FF; font-weight: bold;">get_current_user</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #000080;">$user</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_id</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Identifiant de l'utilisateur</span>
<span style="color: #000080;">$user</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_display_name</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Nom d'affichage de l'utilisateur</span>
<span style="color: #000080;">$user</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_email</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Email de l'utilisateur</span>
<span style="color: #000080;">$user</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_show_email</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Autorisation d'afficher ou non l'email de l'utilisateur</span>
<span style="color: #000080;">$user</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_level</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// RangRetourne une des valeurs suivantes en fonction du rang de l'utilisateur : User::VISITOR_LEVEL, User::MEMBER_LEVEL, User::MODERATOR_LEVEL, User::ADMIN_LEVEL</span>
<span style="color: #000080;">$user</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_locale</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Langue de l'utilisateur</span>
<span style="color: #000080;">$user</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_theme</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Thème de l'utilisateur</span>
<span style="color: #000080;">$user</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_timezone</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Fuseau horaire de l'utilisateur</span>
<span style="color: #000080;">$user</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_editor</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Éditeur de texte de l'utilisateur</span>
<span style="color: #000080;">$user</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_groups</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Groupes de l'utilisateur</span></pre></pre></div></div><br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-gestion-des-autorisations">Gestion des autorisations</h2><br />

<h3 class="formatter-title wiki-paragraph-3" id="paragraph-verification-du-rang">Vérification du rang</h3><br />

Un utilisateur a un rang, qui lui est assigné, qui peut aller de visiteur à administrateur.<br />
<br />
Pour vérifier s'il a bien le rang pour accéder à une page, il faut procéder ainsi :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #0000FF; font-weight: bold;">if</span> <span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">!</span>AppContext<span style="color: #8000FF;">::</span><a href="http://www.php.net/get_current_user"><span style="color: #0000FF; font-weight: bold;">get_current_user</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">check_level</span><span style="color: #8000FF;">&#40;</span>User<span style="color: #8000FF;">::</span><span style="color: #000000;">MEMBER_LEVEL</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span>
<span style="color: #8000FF;">&#123;</span>
<span style="color: #0000FF; font-weight: bold;">echo</span> <span style="color: #808080;">'Tu n\'es pas membre, donc tu es un visiteur !'</span><span style="color: #8000FF;">;</span>
<span style="color: #8000FF;">&#125;</span></pre></pre></div></div><br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-verification-sur-les-groupes">Vérification sur les groupes</h3><br />

La gestion des groupes est à la base de la puissance du système d'autorisations sur PHPBoost. Vous pouvez donner des droits en plus des rangs. Ces droits peuvent être donnés à des utilisateurs d'un groupe, et même membre par membre.<br />
<br />
La gestion des autorisations est basée sur les opérateurs de bits. Sachant que la majorité des serveurs fonctionnent sur des architectures 32 bits (bien que les architectures 64 bits commencent à se démocratiser) nous pourrons gérer 32 types d'autorisations en une seule variable (il est fortement recommandé de ne pas dépasser ce nombre pour ne pas avoir des dépassements de capacité sur les architectures 32 bits).<br />
<br />
<span class="message-helper bgc warning">En réalité en PHP nous n'avons pas la maîtrise totale des types et donc les entiers sont forcément signés (c'est-à-dire qu'ils peuvent être négatifs ou positifs) et donc le bit de poids fort (le plus à gauche) est utilisé pour le signe du nombre. <strong>Sur une architecture 32 bits nous pourrons effectivement uniquement gérer 31 autorisations par variable.</strong></span><br />
<br />
Dans les cas où l'on souhaite gérer plus de 31 autorisations (très très rare) il faudra gérer les droits en plusieurs variables.<br />
<br />
<h4 class="formatter-title wiki-paragraph-4" id="paragraph-stockage-des-regles-pour-chaque-action">Stockage des règles pour chaque action</h4><br />

Commençons par un schéma représentant la façon dont un ordinateur stocke des nombres (l'exemple est pris en architecture 32 bits).<br />
<br />
<p style="text-align: center;"><img src="https://resources.phpboost.com/documentation/developpement/user/bit_representation.png" alt="bit_representation" /></p><br />
<br />
Comme nous l'avons vu nous pouvons traiter les autorisations par séries de 31. Chaque règle (de 1 à 31) est repérée par son numéro et correspond au bit qui est à 1 si l'action est permise ou 0 sinon. Voici un schéma illustrant le stockage des autorisations de chaque utilisateur.<br />
<br />
<p style="text-align: center;"><img src="https://resources.phpboost.com/documentation/developpement/user/authorizations_representation.png" alt="authorizations_representation" /></p><br />
<br />
Utilisation :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">AppContext<span style="color: #8000FF;">::</span><a href="http://www.php.net/get_current_user"><span style="color: #0000FF; font-weight: bold;">get_current_user</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">check_auth</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$tableau</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$bit</span><span style="color: #8000FF;">&#41;</span></pre></pre></div></div>]]></description>
                <pubDate>Sat, 04 Mar 2023 06:12:29 +0100</pubDate>
                
            </item>
		
            <item>
                <title><![CDATA[Fichiers de langue]]></title>
                <link>https://www.phpboost.com/wiki/fichiers-de-langue</link>
                <guid>https://www.phpboost.com/wiki/fichiers-de-langue</guid>
                <description><![CDATA[Dans PHPBoost, nous utilisons des fichiers de langues pour permettre l'utilisation de plusieurs langues sur le CMS.<br />
<br />
Il y a des fichiers de langues principaux (utilisés dans beaucoup d'endroit) et ceux des modules.<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-fichiers-de-langues-principaux">Fichiers de langues principaux</h2><br />

Les principaux fichiers de langues sont stockés dans le dossier <em>lang</em> à la racine de votre site. Ils contiennent les textes de l'administration, de la gestion utilisateurs, mais aussi certains textes souvent utilisés.<br />
<br />
Les fichiers présents dans ce dossier ne doivent pas être modifiés, ils sont gérés par l'équipe de développement et toute modification pourra être perdue lors d'une mise à jour. Si vous avez des propositions, n'hésitez pas à nous contacter par le biais du forum.<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-fichiers-de-langues-des-modules">Fichiers de langues des modules</h2><br />

Les fichiers de langues des modules sont stockés directement dans le dossier des modules. A la racine d'un module, il y a un dossier lang.<br />
<br />
Ce répertoire contient un dossier par langue dont le nom est le nom anglais de la langue. Par exemple pour le français vous trouverez un dossier <em>/lang/french</em> contenant un fichier php contenant la déclaration d'un tableau associatif. Ce dernier associe à chaque identifiant l'expression écrite dans la langue correspondante au fichier. L'identifiant étant invariable de la langue de l'utilisateur, il est utilisé dans le code pour identifier une expression et le noyau y associera automatiquement l'expression dans la langue de l'utilisateur.<br />
<br />
Vous pouvez donner n'importe quel nom à votre fichier php mais il doit être le même pour toutes les langues.<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-mise-en-situation">Mise en situation</h3><br />

Créez deux dossiers dans le dossier <em>lang</em> de votre module : <em>english</em> et <em>french</em><br />
<br />
Dans ces deux dossiers créez un fichier <em>nom_du_module_common.php</em> (avec <em>nom_du_module</em> le nom de votre module) avec comme contenu pour la langue française :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #000080;">$lang</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'module.title'</span><span style="color: #8000FF;">&#93;</span> <span style="color: #8000FF;">=</span> <span style="color: #808080;">'Titre de votre module'</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
Et pour la langue anglaise :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #000080;">$lang</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'module.title'</span><span style="color: #8000FF;">&#93;</span> <span style="color: #8000FF;">=</span> <span style="color: #808080;">'Module title'</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-chargement-de-la-langue">Chargement de la langue</h2><br />

<br />
Pour utiliser les fichiers de langue, rien de plus simple, une classe permet de les gérer : <em>LangLoader</em><br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-chargement-d-un-fichier-de-langue-en-entier">Chargement d'un fichier de langue en entier</h3><br />

<br />
Pour charger un fichier de langue en entier, vous pouvez utiliser :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$lang</span> <span style="color: #8000FF;">=</span> LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'nom_du_module_common'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'nom_du_module'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-chargement-d-un-seul-message">Chargement d'un seul message</h3><br />

<br />
Si le message fait partie des fichiers de langue principaux :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$msg</span> <span style="color: #8000FF;">=</span> LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get_message</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'identifiant_du_message'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'nom_du_fichier'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #008000; font-style: italic;">// Exemple</span>
<span style="color: #000080;">$lang_guest</span> <span style="color: #8000FF;">=</span> LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get_message</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'common.home'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'common-lang'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
Si le message fait partie du fichier de langue du module :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$msg</span> <span style="color: #8000FF;">=</span> LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get_message</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'identifiant_du_message'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'nom_du_fichier'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'nom_du_module'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-conventions-d-ecriture">Conventions d'écriture</h2><br />

Afin de limiter les résultats de recherche d'une variable, et de différencier les variables de langue des variables php, nous avons formé comme suis :<br />
<ul class="formatter-ul">
    <li class="formatter-li">la variable commence par le nom du fichier ou du module
    </li><li class="formatter-li">les noms sont séparés par des points<br />
</li></ul><br />
exemple<br />
<pre style="display:inline;">common.ma.variable.de.langue</pre> pour une variable du fichier /lang/common-lang.php<br />
<pre style="display:inline;">news.ma.variable.de.langue</pre> pour une variable d'un fichier de langue du module news]]></description>
                <pubDate>Wed, 01 Mar 2023 14:29:28 +0100</pubDate>
                
            </item>
		
            <item>
                <title><![CDATA[Créer un Captcha]]></title>
                <link>https://www.phpboost.com/wiki/creer-un-captcha</link>
                <guid>https://www.phpboost.com/wiki/creer-un-captcha</guid>
                <description><![CDATA[Le framework de PHPBoost permet de mettre en place un captcha facilement et rapidement.<br />
<br />
Nous allons voir comment en créer un.<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-creation-de-la-base-du-module-du-captcha">Création de la base du module du Captcha</h2><br />

Premièrement, il faut mettre en place la <a class="offload" href="https://www.phpboost.com/wiki/1-les-bases-structure-du-module">Structure de base du module</a>.<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-creation-de-la-classe-principale-de-votre-captcha">Création de la classe principale de votre Captcha</h2><br />

Créer une classe avec le nom de votre Captcha dans le dossier phpboost de votre module. Cette classe doit être une classe fille de la classe <strong>Captcha</strong>.<br />
<br />
Celle-ci doit comprendre à minima les fonctions suivantes :<br />
<ul class="formatter-ul">
    <li class="formatter-li"> <pre style="display:inline;"><span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_name<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span></pre> : retourne le nom du Captcha.
    </li><li class="formatter-li"> <pre style="display:inline;"><span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> is_available<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span></pre> : permet de réaliser des tests afin de déterminer si le Captcha est disponible, utile s'il utilise une librairie distante par exemple. Mettre <pre style="display:inline;"><span style="">true</span></pre> s'il n'y a pas besoin de faire de test de disponibilité.
    </li><li class="formatter-li"> <pre style="display:inline;"><span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> is_valid<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span></pre> : permet de vérifier la validité du Captcha.
    </li><li class="formatter-li"> <pre style="display:inline;"><span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> display<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span></pre> : permet d'afficher le Captcha.<br />
</li></ul><br />
<br />
Exemple :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span> 
<span style="color: #008000; font-style: italic;">/**
 * @copyright   © 2005-2022 PHPBoost
 * @license     https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL-3.0
 * @author      Prénom NOM <pseudonyme@site.ext>
 * @version     PHPBoost 6.0 - last update: 2022 11 18
 * @since       PHPBoost 6.0 - 2022 11 18
 * @contributor Prénom NOM <pseudonyme@site.ext>
 */</span>
&nbsp;
<span style="color: #0000FF; font-weight: bold;">class</span> QuestionCaptcha <span style="color: #0000FF; font-weight: bold;">extends</span> Captcha
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">private</span> static <span style="color: #000080;">$questions</span><span style="color: #8000FF;">;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> static <span style="color: #0000FF; font-weight: bold;">function</span> __static<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000080;">$questions</span> <span style="color: #8000FF;">=</span> QuestionCaptchaConfig<span style="color: #8000FF;">::</span><span style="color: #000000;">load</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_questions</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_name<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #808080;">'QuestionCaptcha'</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> is_available<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="">true</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> is_valid<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">if</span> <span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">!</span><span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">is_available</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span> <span style="color: #8000FF;">||</span> AppContext<span style="color: #8000FF;">::</span><a href="http://www.php.net/get_current_user"><span style="color: #0000FF; font-weight: bold;">get_current_user</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">check_level</span><span style="color: #8000FF;">&#40;</span>User<span style="color: #8000FF;">::</span><span style="color: #000000;">MEMBER_LEVEL</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span>
        <span style="color: #8000FF;">&#123;</span>
            <span style="color: #0000FF; font-weight: bold;">return</span> <span style="">true</span><span style="color: #8000FF;">;</span>
        <span style="color: #8000FF;">&#125;</span>
&nbsp;
        <span style="color: #000080;">$answer</span> <span style="color: #8000FF;">=</span> AppContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_request</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_value</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_html_id</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">''</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #000080;">$question_id</span> <span style="color: #8000FF;">=</span> AppContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_request</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_int</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_html_id</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span> <span style="color: #8000FF;">.</span> <span style="color: #808080;">'_question_id'</span><span style="color: #8000FF;">,</span> <span style="color: #FF8000;">0</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;
        <span style="color: #0000FF; font-weight: bold;">if</span> <span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">!</span><a href="http://www.php.net/empty"><span style="color: #0000FF; font-weight: bold;">empty</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$question_id</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span>
        <span style="color: #8000FF;">&#123;</span>
            <span style="color: #000080;">$question</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> QuestionCaptchaQuestion<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #000080;">$question</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_properties</span><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000080;">$questions</span><span style="color: #8000FF;">&#91;</span><span style="color: #000080;">$question_id</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;
            <span style="color: #0000FF; font-weight: bold;">return</span> <a href="http://www.php.net/in_array"><span style="color: #0000FF; font-weight: bold;">in_array</span></a><span style="color: #8000FF;">&#40;</span><a href="http://www.php.net/trim"><span style="color: #0000FF; font-weight: bold;">trim</span></a><span style="color: #8000FF;">&#40;</span><a href="http://www.php.net/strtolower"><span style="color: #0000FF; font-weight: bold;">strtolower</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$answer</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$question</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_formated_answers</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #8000FF;">&#125;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="">false</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> display<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #000080;">$question_id</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array_rand"><span style="color: #0000FF; font-weight: bold;">array_rand</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000080;">$questions</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">//Question aléatoire</span>
&nbsp;
        <span style="color: #000080;">$question</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> QuestionCaptchaQuestion<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #000080;">$question</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_properties</span><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000080;">$questions</span><span style="color: #8000FF;">&#91;</span><span style="color: #000080;">$question_id</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;
        <span style="color: #000080;">$tpl</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> FileTemplate<span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'QuestionCaptcha/QuestionCaptcha.tpl'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #000080;">$tpl</span><span style="color: #8000FF;">-></span><span style="color: #000000;">put_all</span><span style="color: #8000FF;">&#40;</span><a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span>
            <span style="color: #808080;">'QUESTION_ID'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$question_id</span><span style="color: #8000FF;">,</span>
            <span style="color: #808080;">'QUESTION'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$question</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_label</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span>
            <span style="color: #808080;">'HTML_ID'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_html_id</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
        <span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #000080;">$tpl</span><span style="color: #8000FF;">-></span><span style="color: #000000;">render</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span></pre></pre></div></div><br />
<span class="message-helper bgc success">Il est possible de créer une <a class="offload" href="https://www.phpboost.com/wiki/creer-une-configuration-pour-votre-module">configuration pour le module</a> afin de permettre la personnalisation de certaines options lors de l'affichage des questions.</span><br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-extensionpointprovider">ExtensionPointProvider</h2><br />

L'ExtensionPointProvider est à remplir comme tout autre module, il faut en plus y indiquer la fonction <pre style="display:inline;">captcha<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span></pre> qui va retourner la classe principale de votre module.<br />
<br />
Exemple :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<span style="color: #008000; font-style: italic;">/**
 * @copyright   © 2005-2022 PHPBoost
 * @license     https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL-3.0
 * @author      Prénom NOM <pseudonyme@site.ext>
 * @version     PHPBoost 6.0 - last update: 2022 11 18
 * @since       PHPBoost 6.0 - 2022 11 18
 * @contributor Prénom NOM <pseudonyme@site.ext>
 */</span>
&nbsp;
<span style="color: #0000FF; font-weight: bold;">class</span> QuestionCaptchaExtensionPointProvider <span style="color: #0000FF; font-weight: bold;">extends</span> ExtensionPointProvider
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> __construct<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        parent<span style="color: #8000FF;">::</span>__construct<span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'QuestionCaptcha'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> captcha<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #0000FF; font-weight: bold;">new</span> QuestionCaptcha<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> css_files<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #000080;">$module_css_files</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> ModuleCssFiles<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #000080;">$module_css_files</span><span style="color: #8000FF;">-></span><span style="color: #000000;">adding_running_module_displayed_file</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'QuestionCaptcha.css'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #000080;">$module_css_files</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> url_mappings<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #0000FF; font-weight: bold;">new</span> UrlMappings<span style="color: #8000FF;">&#40;</span><a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">new</span> DispatcherUrlMapping<span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'/QuestionCaptcha/index.php'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span>
&nbsp;</pre></pre></div></div><br />
<br />
Tout le reste fonctionne comme tout autre module pour l'utilisation des fichiers css, la création de templates, etc...<br />
<span class="message-helper bgc success"> Vous pouvez vous inspirer du code du module <a class="offload" href="https://www.phpboost.com/download/47-modules-phpboost-5-0/394-recaptcha/">ReCaptcha</a>, le Captcha de Google, qui fait appel à une librairie externe de Google et a une partie configuration ou du module <a class="offload" href="https://www.phpboost.com/download/47-modules-phpboost-5-0/393-questioncaptcha/">QuestionCaptcha</a> qui permet de définir des questions personnalisées dans la partie configuration du module.</span>]]></description>
                <pubDate>Wed, 01 Mar 2023 10:25:39 +0100</pubDate>
                
            </item>
		
            <item>
                <title><![CDATA[Système de catégories - Utilisation basique]]></title>
                <link>https://www.phpboost.com/wiki/systeme-de-categories-utilisation-basique</link>
                <guid>https://www.phpboost.com/wiki/systeme-de-categories-utilisation-basique</guid>
                <description><![CDATA[Cet article indique les différents éléments à mettre en place pour utiliser le système de catégories dans un module.<br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-mise-en-place-des-categories">Mise en place des catégories</h2><br />

<br />
<br />
Pour mettre en place les catégories, il faut déclarer la table dans votre ModuleSetup et créer le fichier de Cache de vos catégories.<br />
<br />
Deux types de catégories sont déclarées dans le noyau :<br />
<br />
<ul class="formatter-ul">
    <li class="formatter-li"> <span style="font-family: courier new;">Category</span> : catégorie de base avec un nom et des autorisations
    </li><li class="formatter-li"> <span style="font-family: courier new;">RichCategory</span> : catégorie de base + description et image<br />
<br />
</li></ul><br />
<br />
Rien ne vous empêche de créer votre propre type de catégorie en créant une classe fille de Category ou RichCategory, nous verrons ça dans l'utilisation avancée des catégories.<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-creation-de-la-table-dans-la-base-de-donnees">Création de la table dans la base de données</h3><br />

<br />
<br />
Pour créer la table dans la base de données, il suffit de déclarer son nom dans votre ModuleSetup et d'appeler la fonction de création de table de la classe Category ou RichCategory en fonction de votre besoin.<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<span style="color: #0000FF; font-weight: bold;">class</span> MyModuleSetup <span style="color: #0000FF; font-weight: bold;">extends</span> DefaultModuleSetup
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> static <span style="color: #000080;">$mymodule_cats_table</span><span style="color: #8000FF;">;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> static <span style="color: #0000FF; font-weight: bold;">function</span> __static<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000080;">$mymodule_cats_table</span> <span style="color: #8000FF;">=</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'mymodule_cats'</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> install<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">create_tables</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">private</span> <span style="color: #0000FF; font-weight: bold;">function</span> create_tables<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">create_mymodule_cats_table</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic;">// Appel de la fonction pour créer la table</span>
    <span style="color: #0000FF; font-weight: bold;">private</span> <span style="color: #0000FF; font-weight: bold;">function</span> create_mymodule_cats_table<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        RichCategory<span style="color: #8000FF;">::</span><span style="color: #000000;">create_categories_table</span><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000080;">$mymodule_cats_table</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span></pre></pre></div></div><br />
<br />
Pensez également à mettre un champ <span style="font-family: courier new;">id_category</span> de type entier dans la table principale de votre module.<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-classe-qui-va-gerer-le-cache-des-categories-du-module">Classe qui va gérer le cache des catégories du module</h3><br />

<br />
<br />
Créez le fichier <em>/mymodule/services/MyModuleCategoriesCache.class.php</em>. Cette classe doit être une classe fille de <strong>CategoriesCache</strong>.<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<span style="color: #0000FF; font-weight: bold;">class</span> DownloadCategoriesCache <span style="color: #0000FF; font-weight: bold;">extends</span> CategoriesCache
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #008000; font-style: italic;">// Fonction qui retourne le nom de la table des catégories du module</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_table_name<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> MyModuleSetup<span style="color: #8000FF;">::</span><span style="color: #000080;">$mymodule_cats_table</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic;">// Fonction qui retourne la classe de la catégorie (CategoriesManager::STANDARD_CATEGORY_CLASS ou CategoriesManager::RICH_CATEGORY_CLASS)</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_category_class<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> CategoriesManager<span style="color: #8000FF;">::</span><span style="color: #000000;">RICH_CATEGORY_CLASS</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic;">// Fonction qui retourne le nom du module</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_module_identifier<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #808080;">'mymodule'</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic;">// Fonction qui permet de compter le nombre d'éléments dans une catégorie</span>
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_category_elements_number<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$id_category</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #000080;">$now</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> <a href="http://www.php.net/date"><span style="color: #0000FF; font-weight: bold;">Date</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> MyModuleService<span style="color: #8000FF;">::</span><a href="http://www.php.net/count"><span style="color: #0000FF; font-weight: bold;">count</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'WHERE id_category = :id_category AND approved = 1'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic;">// Fonction qui permet de spécifier les autorisations (et la description si RICH_CATEGORY) de la catégorie racine du module</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_root_category<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #000080;">$root</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> RichRootCategory<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #000080;">$root</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_authorizations</span><span style="color: #8000FF;">&#40;</span>MyModuleConfig<span style="color: #8000FF;">::</span><span style="color: #000000;">load</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_authorizations</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #000080;">$root</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_description</span><span style="color: #8000FF;">&#40;</span>MyModuleConfig<span style="color: #8000FF;">::</span><span style="color: #000000;">load</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_root_category_description</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #000080;">$root</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span>
&nbsp;</pre></pre></div></div><br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-services-du-module">Services du module</h3><br />

<br />
<br />
Créez le fichier <em>/mymodule/services/MyModuleService.class.php</em>. Ce module contiendra les différentes actions à effectuer vis à vis de la base de données du module (ajout, édition, suppression, ...) et permet de récupérer la classe de gestion des catégories adaptée au module (ce qui nous intéresse ici, donc seule cette partie apparait ci-dessous).<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<span style="color: #0000FF; font-weight: bold;">class</span> MyModuleService
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">private</span> static <span style="color: #000080;">$categories_manager</span><span style="color: #8000FF;">;</span>
&nbsp;
     <span style="color: #008000; font-style: italic;">/**
     * @desc Return the authorized categories.
     */</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> static <span style="color: #0000FF; font-weight: bold;">function</span> get_authorized_categories<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$current_id_category</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #000080;">$search_category_children_options</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> SearchCategoryChildrensOptions<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #000080;">$search_category_children_options</span><span style="color: #8000FF;">-></span><span style="color: #000000;">add_authorizations_bits</span><span style="color: #8000FF;">&#40;</span>Category<span style="color: #8000FF;">::</span><span style="color: #000000;">READ_AUTHORIZATIONS</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;
        <span style="color: #0000FF; font-weight: bold;">if</span> <span style="color: #8000FF;">&#40;</span>AppContext<span style="color: #8000FF;">::</span><a href="http://www.php.net/get_current_user"><span style="color: #0000FF; font-weight: bold;">get_current_user</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">is_guest</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span>
            <span style="color: #000080;">$search_category_children_options</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_allow_only_member_level_authorizations</span><span style="color: #8000FF;">&#40;</span>MyModuleConfig<span style="color: #8000FF;">::</span><span style="color: #000000;">load</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">are_descriptions_displayed_to_guests</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;
        <span style="color: #000080;">$categories</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000000;">get_categories_manager</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_children</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$current_id_category</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$search_category_children_options</span><span style="color: #8000FF;">,</span> <span style="">true</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <a href="http://www.php.net/array_keys"><span style="color: #0000FF; font-weight: bold;">array_keys</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$categories</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
     <span style="color: #008000; font-style: italic;">/**
     * @desc Return the categories manager.
     */</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> static <span style="color: #0000FF; font-weight: bold;">function</span> get_categories_manager<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">if</span> <span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000080;">$categories_manager</span> <span style="color: #8000FF;">===</span> <span style="">null</span><span style="color: #8000FF;">&#41;</span>
        <span style="color: #8000FF;">&#123;</span>
            <span style="color: #000080;">$categories_items_parameters</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> CategoriesItemsParameters<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #008000; font-style: italic;">//Table principale du module</span>
            <span style="color: #000080;">$categories_items_parameters</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_table_name_contains_items</span><span style="color: #8000FF;">&#40;</span>MyModuleSetup<span style="color: #8000FF;">::</span><span style="color: #000080;">$mymodule_table</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000080;">$categories_manager</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> CategoriesManager<span style="color: #8000FF;">&#40;</span>MyModuleCategoriesCache<span style="color: #8000FF;">::</span><span style="color: #000000;">load</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$categories_items_parameters</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #8000FF;">&#125;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000080;">$categories_manager</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span></pre></pre></div></div><br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-autorisations">Autorisations</h2><br />

<br />
<br />
La mise en place d'un service pour les autorisations vous permettra d'accéder facilement aux différentes autorisations des catégories de votre module.<br />
<br />
Créez le fichier <em>/mymodule/services/MyModuleAuthorizationsService.class.php</em>.<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<span style="color: #0000FF; font-weight: bold;">class</span> MyModuleAuthorizationsService
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #000080;">$id_category</span><span style="color: #8000FF;">;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> static <span style="color: #0000FF; font-weight: bold;">function</span> check_authorizations<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$id_category</span> <span style="color: #8000FF;">=</span> Category<span style="color: #8000FF;">::</span><span style="color: #000000;">ROOT_CATEGORY</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #000080;">$instance</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> <span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #000080;">$instance</span><span style="color: #8000FF;">-></span><span style="color: #000000;">id_category</span> <span style="color: #8000FF;">=</span> <span style="color: #000080;">$id_category</span><span style="color: #8000FF;">;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #000080;">$instance</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> read<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">is_authorized</span><span style="color: #8000FF;">&#40;</span>Category<span style="color: #8000FF;">::</span><span style="color: #000000;">READ_AUTHORIZATIONS</span><span style="color: #8000FF;">,</span> Authorizations<span style="color: #8000FF;">::</span><span style="color: #000000;">AUTH_PARENT_PRIORITY</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> write<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">is_authorized</span><span style="color: #8000FF;">&#40;</span>Category<span style="color: #8000FF;">::</span><span style="color: #000000;">WRITE_AUTHORIZATIONS</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> contribution<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">is_authorized</span><span style="color: #8000FF;">&#40;</span>Category<span style="color: #8000FF;">::</span><span style="color: #000000;">CONTRIBUTION_AUTHORIZATIONS</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> moderation<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">is_authorized</span><span style="color: #8000FF;">&#40;</span>Category<span style="color: #8000FF;">::</span><span style="color: #000000;">MODERATION_AUTHORIZATIONS</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">private</span> <span style="color: #0000FF; font-weight: bold;">function</span> is_authorized<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$bit</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$mode</span> <span style="color: #8000FF;">=</span> Authorizations<span style="color: #8000FF;">::</span><span style="color: #000000;">AUTH_CHILD_PRIORITY</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #000080;">$auth</span> <span style="color: #8000FF;">=</span> MyModuleService<span style="color: #8000FF;">::</span><span style="color: #000000;">get_categories_manager</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_heritated_authorizations</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">id_category</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$bit</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$mode</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> AppContext<span style="color: #8000FF;">::</span><a href="http://www.php.net/get_current_user"><span style="color: #0000FF; font-weight: bold;">get_current_user</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">check_auth</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$auth</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$bit</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span>
&nbsp;</pre></pre></div></div><br />
<br />
Pour vérifier l'autorisation d'écriture dans une catégorie, il suffit ensuite d'utiliser l'appel ($id_category est optionnel, s'il est omis les autorisations générales du module s'appliquent) :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">MyModuleAuthorizationsService<span style="color: #8000FF;">::</span><span style="color: #000000;">check_authorizations</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$id_category</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">read</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span></pre></pre></div></div><br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-mise-en-place-des-url">Mise en place des url</h2><br />

<br />
<br />
Cette partie traite la mise en place des différentes url sur les pages pour accéder à la gestion et l'affichage des catégories.<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-constructeur-d-url">Constructeur d'Url</h3><br />

<br />
<br />
L'UrlBuilder permet de définir les url qui seront utilisées dans votre module. Créez le fichier <em>/mymodule/util/MyModuleUrlBuilder.class.php</em> si ce n'est pas fait.<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<span style="color: #0000FF; font-weight: bold;">class</span> MyModuleUrlBuilder
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">private</span> static <span style="color: #000080;">$dispatcher</span> <span style="color: #8000FF;">=</span> <span style="color: #808080;">'/mymodule'</span><span style="color: #8000FF;">;</span>
&nbsp;
    <span style="color: #008000; font-style: italic;">//Ajout d'une catégorie</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> static <span style="color: #0000FF; font-weight: bold;">function</span> add_category<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$id_parent</span> <span style="color: #8000FF;">=</span> <span style="">null</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #000080;">$id_parent</span> <span style="color: #8000FF;">=</span> <span style="color: #8000FF;">!</span><a href="http://www.php.net/empty"><span style="color: #0000FF; font-weight: bold;">empty</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$id_parent</span><span style="color: #8000FF;">&#41;</span> ? <span style="color: #000080;">$id_parent</span> <span style="color: #8000FF;">.</span> <span style="color: #808080;">'/'</span> <span style="color: #8000FF;">:</span> <span style="color: #808080;">''</span><span style="color: #8000FF;">;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> DispatchManager<span style="color: #8000FF;">::</span><span style="color: #000000;">get_url</span><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000080;">$dispatcher</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'/admin/categories/add/'</span> <span style="color: #8000FF;">.</span> <span style="color: #000080;">$id_parent</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic;">//Edition d'une catégorie</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> static <span style="color: #0000FF; font-weight: bold;">function</span> edit_category<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$id</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> DispatchManager<span style="color: #8000FF;">::</span><span style="color: #000000;">get_url</span><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000080;">$dispatcher</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'/admin/categories/'</span> <span style="color: #8000FF;">.</span> <span style="color: #000080;">$id</span> <span style="color: #8000FF;">.</span> <span style="color: #808080;">'/edit/'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic;">//Suppression d'une catégorie</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> static <span style="color: #0000FF; font-weight: bold;">function</span> delete_category<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$id</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> DispatchManager<span style="color: #8000FF;">::</span><span style="color: #000000;">get_url</span><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000080;">$dispatcher</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'/admin/categories/'</span> <span style="color: #8000FF;">.</span> <span style="color: #000080;">$id</span> <span style="color: #8000FF;">.</span> <span style="color: #808080;">'/delete/'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic;">//Gestion des catégories</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> static <span style="color: #0000FF; font-weight: bold;">function</span> manage_categories<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> DispatchManager<span style="color: #8000FF;">::</span><span style="color: #000000;">get_url</span><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000080;">$dispatcher</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'/admin/categories/'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic;">//Affichage d'une catégorie</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> static <span style="color: #0000FF; font-weight: bold;">function</span> display_category<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$id</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$rewrited_name</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$page</span> <span style="color: #8000FF;">=</span> <span style="color: #FF8000;">1</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #000080;">$category</span> <span style="color: #8000FF;">=</span> <span style="color: #000080;">$id</span> <span style="color: #8000FF;">></span> <span style="color: #FF8000;">0</span> ? <span style="color: #000080;">$id</span> <span style="color: #8000FF;">.</span> <span style="color: #808080;">'-'</span> <span style="color: #8000FF;">.</span> <span style="color: #000080;">$rewrited_name</span> <span style="color: #8000FF;">.</span> <span style="color: #808080;">'/'</span> <span style="color: #8000FF;">:</span> <span style="color: #808080;">''</span><span style="color: #8000FF;">;</span>
        <span style="color: #000080;">$page</span> <span style="color: #8000FF;">=</span> <span style="color: #000080;">$page</span> <span style="color: #8000FF;">!==</span> <span style="color: #FF8000;">1</span> ? <span style="color: #000080;">$page</span> <span style="color: #8000FF;">.</span> <span style="color: #808080;">'/'</span> <span style="color: #8000FF;">:</span> <span style="color: #808080;">''</span><span style="color: #8000FF;">;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> DispatchManager<span style="color: #8000FF;">::</span><span style="color: #000000;">get_url</span><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000080;">$dispatcher</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'/'</span> <span style="color: #8000FF;">.</span> <span style="color: #000080;">$category</span> <span style="color: #8000FF;">.</span> <span style="color: #000080;">$page</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span></pre></pre></div></div><br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-index">index</h3><br />

<br />
<br />
Le fichier index.php de votre module permet de faire le lien entre l'url demandée par l'utilisateur et le contrôleur à utiliser pour la traiter. indiquez les 5 <strong>UrlControllerMapper</strong> suivants :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'PATH_TO_ROOT'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'..'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #0000FF; font-weight: bold;">require_once</span> PATH_TO_ROOT <span style="color: #8000FF;">.</span> <span style="color: #808080;">'/kernel/init.php'</span><span style="color: #8000FF;">;</span>
<span style="color: #000080;">$url_controller_mappers</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span>
    <span style="color: #008000; font-style: italic;">//Categories</span>
    <span style="color: #0000FF; font-weight: bold;">new</span> UrlControllerMapper<span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'MyModuleCategoriesManageController'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'`^/admin/categories/?$`'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span>
    <span style="color: #0000FF; font-weight: bold;">new</span> UrlControllerMapper<span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'MyModuleCategoriesFormController'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'`^/admin/categories/add/?([0-9]+)?/?$`'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'id_parent'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span>
    <span style="color: #0000FF; font-weight: bold;">new</span> UrlControllerMapper<span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'MyModuleCategoriesFormController'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'`^/admin/categories/([0-9]+)/edit/?$`'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'id'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span>
    <span style="color: #0000FF; font-weight: bold;">new</span> UrlControllerMapper<span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'MyModuleDeleteCategoryController'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'`^/admin/categories/([0-9]+)/delete/?$`'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'id'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span>
    <span style="color: #0000FF; font-weight: bold;">new</span> UrlControllerMapper<span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'MyModuleDisplayCategoryController'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'`^(?:/([0-9]+)-([a-z0-9-_]+))?/?([0-9]+)?/?$`'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'id_category'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'rewrited_name'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'page'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span>
<span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
DispatchManager<span style="color: #8000FF;">::</span><span style="color: #000000;">dispatch</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$url_controller_mappers</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #FF0000; font-weight: normal;">?></span></pre></pre></div></div><br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-liens-dans-l-administration">Liens dans l'administration</h3><br />

<br />
<br />
Pour que les liens vers la gestion et l'ajout de catégories soit visibles dans l'administration, ajoutez le contenu suivant dans votre fichier <em>/mymodule/util/AdminMyModuleDisplayResponse.class.php</em>.<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">add_link</span><span style="color: #8000FF;">&#40;</span>LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get_message</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'categories.management'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'categories-common'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> MyModuleUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">manage_categories</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">add_link</span><span style="color: #8000FF;">&#40;</span>LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get_message</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'category.add'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'categories-common'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> MyModuleUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">add_category</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-menu-d-actions">Menu d'actions</h3><br />

<br />
<br />
Pour que la gestion des catégories apparaisse dans le menu d'actions du module, ajoutez le contenu suivant dans votre fichier <em>/mymodule/phpboost/MyModuleTreeLinks.class.php</em>.<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$manage_categories_link</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> AdminModuleLink<span style="color: #8000FF;">&#40;</span>LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get_message</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'categories.manage'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'categories-common'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> MyModuleUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">manage_categories</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #000080;">$manage_categories_link</span><span style="color: #8000FF;">-></span><span style="color: #000000;">add_sub_link</span><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">new</span> AdminModuleLink<span style="color: #8000FF;">&#40;</span>LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get_message</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'categories.manage'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'categories-common'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> MyModuleUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">manage_categories</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #000080;">$manage_categories_link</span><span style="color: #8000FF;">-></span><span style="color: #000000;">add_sub_link</span><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">new</span> AdminModuleLink<span style="color: #8000FF;">&#40;</span>LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get_message</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'category.add'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'categories-common'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> MyModuleUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">add_category</span><span style="color: #8000FF;">&#40;</span>AppContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_request</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_getint</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'id_category'</span><span style="color: #8000FF;">,</span> Category<span style="color: #8000FF;">::</span><span style="color: #000000;">ROOT_CATEGORY</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #000080;">$tree</span><span style="color: #8000FF;">-></span><span style="color: #000000;">add_link</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$manage_categories_link</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-administration">Administration</h2><br />

<br />
<br />
Au niveau administration, la gestion des catégories (et leur ajout / édition / suppression) est automatique, il suffit de mettre en place les contrôleurs suivants dans le dossier <em>controllers</em> de votre module. Pour plus de lisibilité, créez le répertoire <em>/mymodule/controllers/categories</em>.<br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-controleur-de-gestion-des-categories">Contrôleur de gestion des catégories</h3><br />

<br />
<br />
Dans ce dossier, créez le fichier <em>MyModuleCategoriesManageController.class.php</em>. La classe doit être une classe fille de <strong>AbstractCategoriesManageController</strong>.<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<span style="color: #0000FF; font-weight: bold;">class</span> MyModuleCategoriesManageController <span style="color: #0000FF; font-weight: bold;">extends</span> AbstractCategoriesManageController
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> generate_response<span style="color: #8000FF;">&#40;</span>View <span style="color: #000080;">$view</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #0000FF; font-weight: bold;">new</span> AdminMyModuleDisplayResponse<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$view</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_title</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_categories_manager<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> MyModuleService<span style="color: #8000FF;">::</span><span style="color: #000000;">get_categories_manager</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_display_category_url<span style="color: #8000FF;">&#40;</span>Category <span style="color: #000080;">$category</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> MyModuleUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">display_category</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$category</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_id</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$category</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_rewrited_name</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_edit_category_url<span style="color: #8000FF;">&#40;</span>Category <span style="color: #000080;">$category</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> MyModuleUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">edit_category</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$category</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_id</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_delete_category_url<span style="color: #8000FF;">&#40;</span>Category <span style="color: #000080;">$category</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> MyModuleUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">delete_category</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$category</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_id</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span></pre></pre></div></div><br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-controleur-d-ajout-edition">Contrôleur d'ajout / édition</h3><br />

<br />
<br />
Créez le fichier <em>MyModuleCategoriesFormController.class.php</em>. La classe doit être une classe fille de <strong>AbstractRichCategoriesFormController</strong> si votre catégorie est une catégorie enrichie, <strong>AbstractCategoriesFormController</strong> sinon.<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<span style="color: #0000FF; font-weight: bold;">class</span> MyModuleCategoriesFormController <span style="color: #0000FF; font-weight: bold;">extends</span> AbstractRichCategoriesFormController
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> generate_response<span style="color: #8000FF;">&#40;</span>View <span style="color: #000080;">$view</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #0000FF; font-weight: bold;">new</span> AdminMyModuleDisplayResponse<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$view</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_title</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_categories_manager<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> MyModuleService<span style="color: #8000FF;">::</span><span style="color: #000000;">get_categories_manager</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_id_category<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> AppContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_request</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_getint</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'id'</span><span style="color: #8000FF;">,</span> <span style="color: #FF8000;">0</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_categories_management_url<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> MyModuleUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">manage_categories</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span></pre></pre></div></div><br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-controleur-de-suppression">Contrôleur de suppression</h3><br />

<br />
<br />
Créez le fichier <em>MyModuleDeleteCategoryController .class.php</em>. La classe doit être une classe fille de <strong>AbstractDeleteCategoryController</strong>.<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<span style="color: #0000FF; font-weight: bold;">class</span> MyModuleDeleteCategoryController <span style="color: #0000FF; font-weight: bold;">extends</span> AbstractDeleteCategoryController
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> generate_response<span style="color: #8000FF;">&#40;</span>View <span style="color: #000080;">$view</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #0000FF; font-weight: bold;">new</span> AdminMyModuleDisplayResponse<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$view</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_title</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_categories_manager<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> MyModuleService<span style="color: #8000FF;">::</span><span style="color: #000000;">get_categories_manager</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_id_category<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> AppContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_request</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_getint</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'id'</span><span style="color: #8000FF;">,</span> <span style="color: #FF8000;">0</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_categories_management_url<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> MyModuleUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">manage_categories</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span></pre></pre></div></div><br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-flux-rss">Flux RSS</h2><br />

<br />
<br />
Si vous souhaitez utiliser les flux RSS dans votre module, crééez le fichier <em>/mymodule/phpboost/MyModuleFeedProvider.class.php</em>. Cette classe doit implémenter la classe <strong>FeedProvider</strong>.<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<span style="color: #0000FF; font-weight: bold;">class</span> MyModuleFeedProvider implements FeedProvider
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_feeds_list<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> MyModuleService<span style="color: #8000FF;">::</span><span style="color: #000000;">get_categories_manager</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_feeds_categories_module</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_feed_list</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_feed_data_struct<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$idcat</span> <span style="color: #8000FF;">=</span> <span style="color: #FF8000;">0</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$name</span> <span style="color: #8000FF;">=</span> <span style="color: #808080;">''</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">if</span> <span style="color: #8000FF;">&#40;</span>MyModuleService<span style="color: #8000FF;">::</span><span style="color: #000000;">get_categories_manager</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_categories_cache</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">category_exists</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$idcat</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span>
        <span style="color: #8000FF;">&#123;</span>
            <span style="color: #000080;">$querier</span> <span style="color: #8000FF;">=</span> PersistenceContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_querier</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #000080;">$category</span> <span style="color: #8000FF;">=</span> MyModuleService<span style="color: #8000FF;">::</span><span style="color: #000000;">get_categories_manager</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_categories_cache</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_category</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$idcat</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;
            <span style="color: #000080;">$site_name</span> <span style="color: #8000FF;">=</span> GeneralConfig<span style="color: #8000FF;">::</span><span style="color: #000000;">load</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_site_name</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #000080;">$site_name</span> <span style="color: #8000FF;">=</span> <span style="color: #000080;">$idcat</span> <span style="color: #8000FF;">!=</span> Category<span style="color: #8000FF;">::</span><span style="color: #000000;">ROOT_CATEGORY</span> ? <span style="color: #000080;">$site_name</span> <span style="color: #8000FF;">.</span> <span style="color: #808080;">' : '</span> <span style="color: #8000FF;">.</span> <span style="color: #000080;">$category</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_name</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span> <span style="color: #8000FF;">:</span> <span style="color: #000080;">$site_name</span><span style="color: #8000FF;">;</span>
&nbsp;
            <span style="color: #000080;">$feed_module_name</span> <span style="color: #8000FF;">=</span> LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get_message</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'module_title'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'common'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'download'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #000080;">$data</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> FeedData<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #000080;">$data</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_title</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$feed_module_name</span> <span style="color: #8000FF;">.</span> <span style="color: #808080;">' - '</span> <span style="color: #8000FF;">.</span> <span style="color: #000080;">$site_name</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #000080;">$data</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_date</span><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">new</span> <a href="http://www.php.net/date"><span style="color: #0000FF; font-weight: bold;">Date</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #000080;">$data</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_link</span><span style="color: #8000FF;">&#40;</span>SyndicationUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">rss</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'mymodule'</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$idcat</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #000080;">$data</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_host</span><span style="color: #8000FF;">&#40;</span>HOST<span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #000080;">$data</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_desc</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$feed_module_name</span> <span style="color: #8000FF;">.</span> <span style="color: #808080;">' - '</span> <span style="color: #8000FF;">.</span> <span style="color: #000080;">$site_name</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #000080;">$data</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_lang</span><span style="color: #8000FF;">&#40;</span>LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get_message</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'xml_lang'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'main'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #000080;">$data</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_auth_bit</span><span style="color: #8000FF;">&#40;</span>Category<span style="color: #8000FF;">::</span><span style="color: #000000;">READ_AUTHORIZATIONS</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;
            <span style="color: #000080;">$categories</span> <span style="color: #8000FF;">=</span> MyModuleService<span style="color: #8000FF;">::</span><span style="color: #000000;">get_categories_manager</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_children</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$idcat</span><span style="color: #8000FF;">,</span> <span style="color: #0000FF; font-weight: bold;">new</span> SearchCategoryChildrensOptions<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> <span style="">true</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #000080;">$ids_categories</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array_keys"><span style="color: #0000FF; font-weight: bold;">array_keys</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$categories</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;
            <span style="color: #000080;">$now</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> <a href="http://www.php.net/date"><span style="color: #0000FF; font-weight: bold;">Date</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #000080;">$results</span> <span style="color: #8000FF;">=</span> <span style="color: #000080;">$querier</span><span style="color: #8000FF;">-></span><span style="color: #000000;">select</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'SELECT mymodule.*
                FROM '</span> <span style="color: #8000FF;">.</span> MyModuleSetup<span style="color: #8000FF;">::</span><span style="color: #000080;">$mymodule_table</span> <span style="color: #8000FF;">.</span> <span style="color: #808080;">' mymodule
                LEFT JOIN '</span><span style="color: #8000FF;">.</span> MyModuleSetup<span style="color: #8000FF;">::</span><span style="color: #000080;">$mymodule_cats_table</span> <span style="color: #8000FF;">.</span><span style="color: #808080;">' cat ON cat.id = mymodule.id_category
                WHERE mymodule.id_category IN :ids_categories
                AND mymodule.approved = 1
                ORDER BY mymodule.creation_date DESC'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span>
                    <span style="color: #808080;">'ids_categories'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$ids_categories</span>
            <span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;
            <span style="color: #0000FF; font-weight: bold;">foreach</span> <span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$results</span> <span style="color: #0000FF; font-weight: bold;">as</span> <span style="color: #000080;">$row</span><span style="color: #8000FF;">&#41;</span>
            <span style="color: #8000FF;">&#123;</span>
                <span style="color: #000080;">$row</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'rewrited_name_cat'</span><span style="color: #8000FF;">&#93;</span> <span style="color: #8000FF;">=</span> <span style="color: #8000FF;">!</span><a href="http://www.php.net/empty"><span style="color: #0000FF; font-weight: bold;">empty</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$row</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'id_category'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">&#41;</span> ? <span style="color: #000080;">$row</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'rewrited_name_cat'</span><span style="color: #8000FF;">&#93;</span> <span style="color: #8000FF;">:</span> <span style="color: #808080;">'root'</span><span style="color: #8000FF;">;</span>
                <span style="color: #000080;">$link</span> <span style="color: #8000FF;">=</span> MyModuleUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">display</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$row</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'id_category'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$row</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'rewrited_name_cat'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$row</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'id'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$row</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'rewrited_name'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;
                <span style="color: #000080;">$item</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> FeedItem<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
                <span style="color: #000080;">$item</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_title</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$row</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'name'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
                <span style="color: #000080;">$item</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_link</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$link</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
                <span style="color: #000080;">$item</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_guid</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$link</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
                <span style="color: #000080;">$item</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_desc</span><span style="color: #8000FF;">&#40;</span>FormatingHelper<span style="color: #8000FF;">::</span><span style="color: #000000;">second_parse</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$row</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'contents'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
                <span style="color: #000080;">$item</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_date</span><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">new</span> <a href="http://www.php.net/date"><span style="color: #0000FF; font-weight: bold;">Date</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$row</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'creation_date'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">,</span> Timezone<span style="color: #8000FF;">::</span><span style="color: #000000;">SERVER_TIMEZONE</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
                <span style="color: #000080;">$item</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_image_url</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$row</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'picture_url'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
                <span style="color: #000080;">$item</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_auth</span><span style="color: #8000FF;">&#40;</span>MyModuleService<span style="color: #8000FF;">::</span><span style="color: #000000;">get_categories_manager</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_heritated_authorizations</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$row</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'id_category'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">,</span> Category<span style="color: #8000FF;">::</span><span style="color: #000000;">READ_AUTHORIZATIONS</span><span style="color: #8000FF;">,</span> Authorizations<span style="color: #8000FF;">::</span><span style="color: #000000;">AUTH_PARENT_PRIORITY</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
                <span style="color: #000080;">$data</span><span style="color: #8000FF;">-></span><span style="color: #000000;">add_item</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$item</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #8000FF;">&#125;</span>
            <span style="color: #000080;">$results</span><span style="color: #8000FF;">-></span><span style="color: #000000;">dispose</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;
            <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #000080;">$data</span><span style="color: #8000FF;">;</span>
        <span style="color: #8000FF;">&#125;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span></pre></pre></div></div><br />
<br />
Pensez également à indiquer la fonction suivante dans l'ExtensionPointProvider de votre module :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> feeds<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #0000FF; font-weight: bold;">new</span> MyModuleFeedProvider<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;</pre></pre></div></div><br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-integration-dans-le-plan-du-site">Intégration dans le Plan du site</h2><br />

<br />
<br />
Tout a été fait pour que l'affichage des catégories dans le Plan du site se fasse automatiquement.<br />
<br />
Si vous souhaitez que vos catégories apparaissent dans le plan du site, crééez le fichier <em>/mymodule/phpboost/MyModuleSitemapExtensionPoint.class.php</em>. Cette classe doit être une classe fille de <strong>SitemapCategoriesModule</strong>.<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<span style="color: #0000FF; font-weight: bold;">class</span> MyModuleSitemapExtensionPoint <span style="color: #0000FF; font-weight: bold;">extends</span> SitemapCategoriesModule
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> __construct<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        parent<span style="color: #8000FF;">::</span>__construct<span style="color: #8000FF;">&#40;</span>MyModuleService<span style="color: #8000FF;">::</span><span style="color: #000000;">get_categories_manager</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">protected</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_category_url<span style="color: #8000FF;">&#40;</span>Category <span style="color: #000080;">$category</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> MyModuleUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">display_category</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$category</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_id</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$category</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_rewrited_name</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span></pre></pre></div></div><br />
<br />
Pensez également à indiquer la fonction suivante dans l'ExtensionPointProvider de votre module :<br />
<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> sitemap<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #0000FF; font-weight: bold;">new</span> MyModuleSitemapExtensionPoint<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;</pre></pre></div></div><br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-affichage-des-categories">Affichage des catégories</h2><br />

<br />
<br />
<span class="message-helper warning">Article en cours de rédaction</span>]]></description>
                <pubDate>Wed, 19 Feb 2020 20:53:58 +0100</pubDate>
                
            </item>
		
            <item>
                <title><![CDATA[La communication entre modules]]></title>
                <link>https://www.phpboost.com/wiki/la-communication-entre-modules</link>
                <guid>https://www.phpboost.com/wiki/la-communication-entre-modules</guid>
                <description><![CDATA[<h2 class="formatter-title wiki-paragraph-2" id="paragraph-introduction">Introduction</h2><br />
<br />
Certains modules doivent communiquer avec les autres pour avoir différentes informations.<br />
C'est le cas du module recherche par exemple qui a besoin de connaitre un certain nombre de choses.<br />
Cette communication n'est pas seulement limitée aux modules, elle peut également se faire entre plusieurs modules, l'administration ou le noyau.<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-mise-en-pratique">Mise en pratique</h2><br />
<br />
Nous avons besoin de créer un seul et même fichier dans notre module. Celui-ci contiendra une classe.<br />
La syntaxe est là suivante : <strong>LeNomDeVotreModuleExtensionPointProvider</strong>.<br />
Par exemple, pour le module newsletter, la syntaxe est : NewsletterExtensionPointProvider.<br />
Nous allons donc créer un fichier LeNomDeVotreModuleExtensionPointProvider.class.php.<br />
A l'intérieur de ce fichier, nous allons créer une classe fille de ExtensionPointProvider avec comme nom : LeNomDeVotreModuleExtensionPointProvider.<br />
Le constructeur de la classe attend un paramètre qui est l'identifiant du module (le nom du dossier du module).<br />
Cela donne :<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #0000FF; font-weight: bold;">class</span> LeNomDeVotreModuleExtensionPointProvider <span style="color: #0000FF; font-weight: bold;">extends</span> ExtensionPointProvider
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> __construct<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        parent<span style="color: #8000FF;">::</span>__construct<span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'VotreModule'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span></pre></pre></div></div><br />
Notre fichier de communication est fin prêt à être utilisé.<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-les-differentes-possibilites">Les différentes possibilités</h2><br />
<br />
Maintenant que votre fichier est prêt, il faut implémenter diverses fonctions.<br />
Nous allons citer les principales interfaces présentes au sein de PHPBoost.<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-la-reecriture-des-urls">La réécriture des urls</h3><br />
<br />
Pour ajouter la règle de réécriture des urls dans le htaccess de manière automatique, vous devez ajouter une fonction <em>url_mappings()</em> à votre ExtensionPointProvider.<br />
Celle-ci devra retourner un objet de la classe <em>UrlMappings</em> prennant en paramètre un tableau avec la liste des fichiers que vous utilisez comme Dispatcher.<br />
Exemple :<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> url_mappings<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #0000FF; font-weight: bold;">new</span> UrlMappings<span style="color: #8000FF;">&#40;</span><a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">new</span> DispatcherUrlMapping<span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'/contact/index.php'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #8000FF;">&#125;</span></pre></pre></div></div><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-les-menus">Les menus</h3><br />
<br />
Pour ajouter un ou plusieurs menus, vous devez ajouter une fonction <em>menus()</em> à votre ExtensionPointProvider.<br />
Elle doit retourner un objet <em>ModuleMenus</em> qui prend en paramètre un tableau contenant les objets de vos menus.<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> menus<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #0000FF; font-weight: bold;">new</span> ModuleMenus<span style="color: #8000FF;">&#40;</span><a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #0000FF; font-weight: bold;">new</span> NewsletterModuleMiniMenu<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #8000FF;">&#125;</span></pre></pre></div></div><br />
Ensuite il vous faut créer le menu en question. Pour l'exemple plus haut (module newsletter) voici le contenu de la classe <em>NewsletterModuleMiniMenu</em> :<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<span style="color: #008000; font-style: italic;">/*##################################################
 *                          NewsletterModuleMiniMenu.class.php
 *                            -------------------
 *   begin                : October 08, 2011
 *   copyright            : (C) 2011 Kevin MASSY
 *   email                : soldier.weasel@gmail.com
 *
 *
 ###################################################
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 ###################################################*/</span>
<span style="color: #0000FF; font-weight: bold;">class</span> NewsletterModuleMiniMenu <span style="color: #0000FF; font-weight: bold;">extends</span> ModuleMiniMenu
<span style="color: #8000FF;">&#123;</span>    
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_default_block<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #008000; font-style: italic;">// Retourne la position du block par défaut, se référer au constantes dans la classe Menu</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #0000FF; font-weight: bold;">self</span><span style="color: #8000FF;">::</span><span style="color: #000000;">BLOCK_POSITION__TOP_FOOTER</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic;">// Retourne ce qui doit être affiché dans la gestion des menus (facultatif)</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> admin_display<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #808080;">''</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_menu_id<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #808080;">'module-mini-nomdumodule'</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_menu_title<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #808080;">'Module title'</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
&nbsp;
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> is_displayed<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #008000; font-style: italic;">//Vérifiez ici les autorisations d'affichage si besoin</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="">true</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_menu_content<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #000080;">$tpl</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> FileTemplate<span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'newsletter/newsletter_mini.tpl'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;
        <span style="color: #008000; font-style: italic;">// Permet d'assigner les variables tpl au template pour pouvoir ensuite donner un affichage différent selon la colonne où est situé le menu</span>
        MenuService<span style="color: #8000FF;">::</span><span style="color: #000000;">assign_positions_conditions</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$tpl</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_block</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;
        <span style="color: #000080;">$lang</span> <span style="color: #8000FF;">=</span> LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'newsletter_common'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'newsletter'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #000080;">$tpl</span><span style="color: #8000FF;">-></span><span style="color: #000000;">put_all</span><span style="color: #8000FF;">&#40;</span><a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span>
            <span style="color: #808080;">'SUBSCRIBE'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$lang</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'newsletter.subscribe_newsletters'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">,</span>
            <span style="color: #808080;">'UNSUBSCRIBE'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$lang</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'newsletter.unsubscribe_newsletters'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">,</span>
            <span style="color: #808080;">'USER_MAIL'</span> <span style="color: #8000FF;">=></span> <span style="color: #8000FF;">&#40;</span>AppContext<span style="color: #8000FF;">::</span><a href="http://www.php.net/get_current_user"><span style="color: #0000FF; font-weight: bold;">get_current_user</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_attribute</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'user_mail'</span><span style="color: #8000FF;">&#41;</span> <span style="color: #8000FF;">!=</span> <span style="color: #808080;">''</span><span style="color: #8000FF;">&#41;</span> ? AppContext<span style="color: #8000FF;">::</span><a href="http://www.php.net/get_current_user"><span style="color: #0000FF; font-weight: bold;">get_current_user</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_attribute</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'user_mail'</span><span style="color: #8000FF;">&#41;</span> <span style="color: #8000FF;">:</span> <span style="color: #808080;">''</span><span style="color: #8000FF;">,</span>
            <span style="color: #808080;">'L_NEWSLETTER'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$lang</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'newsletter'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">,</span>
            <span style="color: #808080;">'L_SUBMIT'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$lang</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'newsletter.submit'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">,</span>
            <span style="color: #808080;">'L_ARCHIVES'</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$lang</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'newsletter.archives'</span><span style="color: #8000FF;">&#93;</span>
        <span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #008000; font-style: italic;">// Retourne l'affichage du menu</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #000080;">$tpl</span><span style="color: #8000FF;">-></span><span style="color: #000000;">render</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span></pre></pre></div></div><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-page-d-accueil">Page d'accueil</h3><br />
<br />
Vous pouvez à travers votre module, ajouter une page d'accueil pour pouvoir ensuite la définir en tant qu'index de votre site.<br />
Vous devez créer une classe (et donc un fichier) <em>MonModuleHomePageExtensionPoint</em>.<br />
Cette classe doit implémenter l'interface <em>HomePageExtensionPoint</em> et contenir une fonction <em>get_home_page()</em> renvoyant une instance de la classe <em>DefaultHomePage</em>.<br />
Exemple :<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<span style="color: #008000; font-style: italic;">/*##################################################
 *                     NewsletterHomePageExtensionPoint.class.php
 *                            -------------------
 *   begin                : February 12, 2012
 *   copyright            : (C) 2012 Julien BRISWALTER
 *   email                : j1.seth@phpboost.com
 *
 *
 ###################################################
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 ###################################################*/</span>
<span style="color: #0000FF; font-weight: bold;">class</span> NewsletterHomePageExtensionPoint implements HomePageExtensionPoint
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_home_page<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #0000FF; font-weight: bold;">new</span> DefaultHomePage<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_title</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_view</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
    <span style="color: #0000FF; font-weight: bold;">private</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_title<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #008000; font-style: italic;">// Titre de la page</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get_message</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'newsletter'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'newsletter_common'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'newsletter'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
    <span style="color: #0000FF; font-weight: bold;">private</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_view<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #008000; font-style: italic;">// Retourne un object Template (StringTemplate ou FileTemplate)</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> NewsletterModuleHomePage<span style="color: #8000FF;">::</span><span style="color: #000000;">get_view</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span></pre></pre></div></div><br />
Ensuite, vous devez ajouter une fonction <em>home_page()</em> à votre ExtensionPointProvider.<br />
Elle doit retourner l'objet de la classe que vous venez de créer précédemment.<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-fichiers-css">Fichiers CSS</h3><br />
<br />
Pour profiter du système de cache CSS et permettre la personnalisation de vos modules dans les différents thèmes, vous devez ajouter une fonction <em>css_files()</em> à votre ExtensionPointProvider.<br />
Celle-ci doit renvoyer un objet de la classe ModuleCssFiles.<br />
Exemple :<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> css_files<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #000080;">$module_css_files</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> ModuleCssFiles<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #000080;">$module_css_files</span><span style="color: #8000FF;">-></span><span style="color: #000000;">adding_running_module_displayed_file</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'ce_fichier_est_chargé_seulement_sur_le_module.css'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #000080;">$module_css_files</span><span style="color: #8000FF;">-></span><span style="color: #000000;">adding_always_displayed_file</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'ce_fichier_est_chargé_sur_toute_les_pages_du_site.css'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #000080;">$module_css_files</span><span style="color: #8000FF;">;</span>
<span style="color: #8000FF;">&#125;</span></pre></pre></div></div><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-sitemap">Sitemap</h3><br />
<br />
Pour intégrer votre module au sitemap et au plan du site, il faut créer une classe <em>MonModuleSitemapExtensionPoint </em>qui implémente l'interface <em>SitemapExtensionPoint</em>.<br />
Deux fonctions devront être présentes dans cette classe : <em>get_public_sitemap()</em> et <em>get_user_sitemap()</em>.<br />
Les deux sont identiques, sauf sur un point : l'une renvoie le sitemap public, et l'autre le sitemap pour les utilisateurs connectés.<br />
Vous devrez renvoyer un objet <em>ModuleMap</em>.<br />
Voici une implémentation type :<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #FF0000; font-weight: normal;"><?php</span>
<span style="color: #008000; font-style: italic;">/*##################################################
 *                       NewsletterSitemapExtensionPoint.class.php
*                            -------------------
*   begin                : May 30, 2012
*   copyright            : (C) 2012 Kevin MASSY
*   email                : soldier.weasel@gmail.com
*
*
###################################################
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*
###################################################*/</span>
<span style="color: #0000FF; font-weight: bold;">class</span> NewsletterSitemapExtensionPoint implements SitemapExtensionPoint
<span style="color: #8000FF;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_public_sitemap<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_module_map</span><span style="color: #8000FF;">&#40;</span>Sitemap<span style="color: #8000FF;">::</span><span style="color: #000000;">AUTH_PUBLIC</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
    <span style="color: #0000FF; font-weight: bold;">public</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_user_sitemap<span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #000080;">$this</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_module_map</span><span style="color: #8000FF;">&#40;</span>Sitemap<span style="color: #8000FF;">::</span><span style="color: #000000;">AUTH_USER</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
    <span style="color: #0000FF; font-weight: bold;">private</span> <span style="color: #0000FF; font-weight: bold;">function</span> get_module_map<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$auth_mode</span><span style="color: #8000FF;">&#41;</span>
    <span style="color: #8000FF;">&#123;</span>
        <span style="color: #000080;">$lang</span> <span style="color: #8000FF;">=</span> LangLoader<span style="color: #8000FF;">::</span><span style="color: #000000;">get</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'newsletter_common'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'newsletter'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #008000; font-style: italic;">// Informations : nom du module, url vers le module et fréquence de mise à jour du sitemap</span>
        <span style="color: #000080;">$link</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> SitemapLink<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$lang</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'newsletter'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">,</span> NewsletterUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">home</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> Sitemap<span style="color: #8000FF;">::</span><span style="color: #000000;">FREQ_MONTHLY</span><span style="color: #8000FF;">,</span> Sitemap<span style="color: #8000FF;">::</span><span style="color: #000000;">PRIORITY_MAX</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #008000; font-style: italic;">//SitemapLink et en deuxième paramètre l'identifiant du module (le nom du dossier du module)</span>
        <span style="color: #000080;">$module_map</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> ModuleMap<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$link</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'newsletter'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #000080;">$streams</span> <span style="color: #8000FF;">=</span> NewsletterStreamsCache<span style="color: #8000FF;">::</span><span style="color: #000000;">load</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_streams</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #000080;">$config</span> <span style="color: #8000FF;">=</span> NewsletterConfig<span style="color: #8000FF;">::</span><span style="color: #000000;">load</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #000080;">$user</span> <span style="color: #8000FF;">=</span> AppContext<span style="color: #8000FF;">::</span><a href="http://www.php.net/get_current_user"><span style="color: #0000FF; font-weight: bold;">get_current_user</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
        <span style="color: #0000FF; font-weight: bold;">foreach</span> <span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$streams</span> <span style="color: #0000FF; font-weight: bold;">as</span> <span style="color: #000080;">$id</span> <span style="color: #8000FF;">=></span> <span style="color: #000080;">$properties</span><span style="color: #8000FF;">&#41;</span>
        <span style="color: #8000FF;">&#123;</span>
            <span style="color: #0000FF; font-weight: bold;">if</span> <span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$auth_mode</span> <span style="color: #8000FF;">==</span> Sitemap<span style="color: #8000FF;">::</span><span style="color: #000000;">AUTH_PUBLIC</span><span style="color: #8000FF;">&#41;</span>
            <span style="color: #8000FF;">&#123;</span>
                <span style="color: #000080;">$is_authorized</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/is_array"><span style="color: #0000FF; font-weight: bold;">is_array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$properties</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'authorizations'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">&#41;</span> ? Authorizations<span style="color: #8000FF;">::</span><span style="color: #000000;">check_auth</span><span style="color: #8000FF;">&#40;</span>RANK_TYPE<span style="color: #8000FF;">,</span> User<span style="color: #8000FF;">::</span><span style="color: #000000;">VISITOR_LEVEL</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$properties</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'authorizations'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">,</span> NewsletterAuthorizationsService<span style="color: #8000FF;">::</span><span style="color: #000000;">AUTH_READ</span><span style="color: #8000FF;">&#41;</span> <span style="color: #8000FF;">:</span> Authorizations<span style="color: #8000FF;">::</span><span style="color: #000000;">check_auth</span><span style="color: #8000FF;">&#40;</span>RANK_TYPE<span style="color: #8000FF;">,</span> User<span style="color: #8000FF;">::</span><span style="color: #000000;">VISITOR_LEVEL</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$config</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_authorizations</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> NewsletterAuthorizationsService<span style="color: #8000FF;">::</span><span style="color: #000000;">AUTH_READ</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #8000FF;">&#125;</span>
            <span style="color: #0000FF; font-weight: bold;">else</span>
            <span style="color: #8000FF;">&#123;</span>
                <span style="color: #000080;">$is_authorized</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/is_array"><span style="color: #0000FF; font-weight: bold;">is_array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$properties</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'authorizations'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">&#41;</span> ? <span style="color: #000080;">$user</span><span style="color: #8000FF;">-></span><span style="color: #000000;">check_auth</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$properties</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'authorizations'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">,</span> NewsletterAuthorizationsService<span style="color: #8000FF;">::</span><span style="color: #000000;">AUTH_READ</span><span style="color: #8000FF;">&#41;</span> <span style="color: #8000FF;">:</span> <span style="color: #000080;">$user</span><span style="color: #8000FF;">-></span><span style="color: #000000;">check_auth</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$config</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_authorizations</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> NewsletterAuthorizationsService<span style="color: #8000FF;">::</span><span style="color: #000000;">AUTH_READ</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #8000FF;">&#125;</span>
            <span style="color: #0000FF; font-weight: bold;">if</span> <span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$is_authorized</span> <span style="color: #8000FF;">&&</span> <span style="color: #000080;">$properties</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'visible'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">&#41;</span>
            <span style="color: #8000FF;">&#123;</span>
                <span style="color: #008000; font-style: italic;">// On créer une section du sitemap avec le lien qui contient le nom du lien et son url</span>
                <span style="color: #000080;">$link</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> SitemapLink<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$properties</span><span style="color: #8000FF;">&#91;</span><span style="color: #808080;">'name'</span><span style="color: #8000FF;">&#93;</span><span style="color: #8000FF;">,</span> NewsletterUrlBuilder<span style="color: #8000FF;">::</span><span style="color: #000000;">archives</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$id</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
                <span style="color: #000080;">$section</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> SitemapSection<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$link</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
                <span style="color: #008000; font-style: italic;">// On ajoute la section au module map</span>
                <span style="color: #000080;">$module_map</span><span style="color: #8000FF;">-></span><span style="color: #000000;">add</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$section</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
            <span style="color: #8000FF;">&#125;</span>
        <span style="color: #8000FF;">&#125;</span>
        <span style="color: #008000; font-style: italic;">//On renvoie l'objet</span>
        <span style="color: #0000FF; font-weight: bold;">return</span> <span style="color: #000080;">$module_map</span><span style="color: #8000FF;">;</span>
    <span style="color: #8000FF;">&#125;</span>
<span style="color: #8000FF;">&#125;</span>
<span style="color: #FF0000; font-weight: normal;">?></span></pre></pre></div></div>]]></description>
                <pubDate>Fri, 20 Jan 2017 16:03:31 +0100</pubDate>
                
            </item>
		
            <item>
                <title><![CDATA[Constantes chargées avec l'environnement PHPBoost]]></title>
                <link>https://www.phpboost.com/wiki/constantes-chargees-avec-l-environnement-phpboost</link>
                <guid>https://www.phpboost.com/wiki/constantes-chargees-avec-l-environnement-phpboost</guid>
                <description><![CDATA[Un certain nombre de constantes sont chargées avec l'environnement PHPBoost.<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-divers">Divers</h2><br />
<br />
<pre style="display:inline;">HOST</pre> : Retourne l'url vers le serveur.<br />
<pre style="display:inline;">PATH_TO_ROOT</pre> : Retourne le chemin relatif depuis la racine du serveur.<br />
<pre style="display:inline;">TPL_PATH_TO_ROOT</pre> ou <pre style="display:inline;"><a href="http://www.php.net/dir"><span style="color: #0000FF; font-weight: bold;">DIR</span></a></pre> : Retourne le chemin absolu depuis la racine du serveur.<br />
<pre style="display:inline;">SCRIPT</pre> : Retourne le chemin absolu vers le script en cours d&#8217;exécution sans les paramètres passés en GET.<br />
<pre style="display:inline;">REWRITED_SCRIPT</pre> : Retourne le chemin absolu vers le script en cours d&#8217;exécution avec les paramètres passés en GET.<br />
<pre style="display:inline;">TITLE</pre> : Retourne le titre de la page.<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-operations-sur-la-base-de-donnees">Opérations sur la base de données</h2><br />
<br />
<pre style="display:inline;">PREFIX</pre> : Retourne le préfixe choisi lors de l'installation du site pour la création des tables.<br />
Pour certaines opérations sur la base de données, vous pouvez également utiliser les constantes définies dans le fichier /kernel/db/tables.php :<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_COMMENTS'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'comments'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_COMMENTS_TOPIC'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'comments_topic'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_NOTE'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'note'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_AVERAGE_NOTES'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'average_notes'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_VISIT_COUNTER'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'visit_counter'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_CONFIGS'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'configs'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_EVENTS'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'events'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_GROUP'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'group'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_KEYWORDS'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'keywords'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_KEYWORDS_RELATIONS'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'keywords_relations'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_MEMBER'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'member'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_MEMBER_EXTENDED_FIELDS'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'member_extended_fields'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_MEMBER_EXTENDED_FIELDS_LIST'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'member_extended_fields_list'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_MENUS'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'menus'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_PM_MSG'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'pm_msg'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_PM_TOPIC'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'pm_topic'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_SESSIONS'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'sessions'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_INTERNAL_AUTHENTICATION'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'internal_authentication'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_INTERNAL_AUTHENTICATION_FAILURES'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'internal_authentication_failures'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_AUTHENTICATION_METHOD'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'authentication_method'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_SMILEYS'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'smileys'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_UPLOAD'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'upload'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<a href="http://www.php.net/define"><span style="color: #0000FF; font-weight: bold;">define</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'DB_TABLE_UPLOAD_CAT'</span><span style="color: #8000FF;">,</span> PREFIX <span style="color: #8000FF;">.</span> <span style="color: #808080;">'upload_cat'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div>]]></description>
                <pubDate>Tue, 16 Feb 2016 16:01:10 +0100</pubDate>
                
            </item>
		
            <item>
                <title><![CDATA[Traitement des dates]]></title>
                <link>https://www.phpboost.com/wiki/traitement-des-dates</link>
                <guid>https://www.phpboost.com/wiki/traitement-des-dates</guid>
                <description><![CDATA[PHPBoost possède une classe permettant d'effectuer plusieurs traitements sur les dates. Nous allons vous la présenter au cours de cet article.<br /><br />
La classe va vous permettre de formater une date dans différents référentiels horaires et de récupérer plusieurs informations dessus.<br /><br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-les-referentiels-temporels">Les référentiels temporels</h2><br />
<br /><br />
Dans un monde internationnal tel qu'Internet, des gens de toutes les nationnalités et de tous les pays se retrouvent sur un même site, donc le serveur peut être basé n'importe où. Il est donc important d'adapter les dates à l'utilisateur (et notamment à son fuseau horaire). Cette classe gère aussi le changement d'heure (heure d'été/ heure d'hiver).<br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-les-differents-referentiels">Les différents référentiels</h3><br />
<br /><br />
La classe <em>Date</em> gère la notion de fuseau horaire à partir de différents référentiels qui sont les suivants :<br /><br />
<ul class="formatter-ul"><li class="formatter-li">L'heure <strong>système</strong> (ou l'heure du serveur). Toutes les données manipulées par l'application doivent être en heure système. En interne, la classe Date manipule le temps selon le référentiel du système, et tout enregistrement dans la base de données ou dans un fichier quelconque doit se faire dans ce référentiel. Cela permet d'avoir des données homogènes. Ce fuseau horaire est donné automatiquement par le serveur.
</li><li class="formatter-li">L'heure du <strong>site</strong>. Elle est dans le fuseau horaire de l'endroit où est localisé le site. Par exemple un site français sera à l'heure française, c'est à dire en GMT + 1 en hiver. Cette référence sera par ailleurs utilisée pour les invités (visiteurs non enregistrés). Le fuseau horaire du site est choisi par l'administrateur.
</li><li class="formatter-li">L'heure de l'<strong>utilisateur</strong>. Chaque utilisateur enregistré choisit son fuseau horaire, les autres auront le référentiel par défaut, à savoir celui du site.</li></ul><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-quel-referentiel-utiliser">Quel référentiel utiliser ?</h3><br />
<br /><br />
Voilà ce qu'il est important de retenir.<br /><br />
L'affichage d'une date se fait quasiment systématiquement dans le référentiel utilisateur. Lorsque l'utilisateur entre une date, elle sera aussi dans son propre référentiel.<br /><br />
L'enregistrement dans la base de données ou dans un fichier texte se fait dans le référentiel système.<br /><br />
<span class="message-helper warning">Toute date doit être enregistrée dans le référentiel système, c'est le seul référentiel qu'ont en commun tous les utilisateurs et qui fournira donc une heure équivalente à chacun d'entre eux. Il est impératif de respecter cette règle.</span><br /><br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-initialiser-la-classe">Initialiser la classe</h2><br />
<br /><br />
Selon vos besoins, vous allez avoir besoin de la date actuelle ou d'initialiser la classe avec un timestamp.<br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-date-actuelle">Date actuelle</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> <a href="http://www.php.net/date"><span style="color: #0000FF; font-weight: bold;">Date</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
Le code ci-dessus va initialiser la classe avec la date et l'heure actuelle.<br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-timestamp">Timestamp</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span> <span style="color: #8000FF;">=</span> <span style="color: #0000FF; font-weight: bold;">new</span> <a href="http://www.php.net/date"><span style="color: #0000FF; font-weight: bold;">Date</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$timestamp</span><span style="color: #8000FF;">,</span> Timezone<span style="color: #8000FF;">::</span><span style="color: #000000;">TIMEZONE_SYSTEM</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
- Le premier paramètre <pre style="display:inline;"><span style="color: #000080;">$timestamp</span></pre> spécifie le timestamp de la date.<br /><br />
- Le deuxième paramètre est le timezone, vous pouvez utiliser le timezone (décalage horaire) du serveur, de l'utilisateur ou celui de la configuration du site. Les valeurs sont : <pre style="display:inline;">Timezone<span style="color: #8000FF;">::</span><span style="color: #000000;">TIMEZONE_SITE</span><span style="color: #8000FF;">,</span> Timezone<span style="color: #8000FF;">::</span><span style="color: #000000;">TIMEZONE_SYSTEM</span><span style="color: #8000FF;">,</span> Timezone<span style="color: #8000FF;">::</span><span style="color: #000000;">TIMEZONE_USER</span></pre><br /><br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-affichage-de-la-date">Affichage de la date</h2><br />
La date peut être affichée selon différents formats :<br /><br />
<ul class="formatter-ul">
<li class="formatter-li"> Date::FORMAT_DAY_MONTH (par défaut) affichage court de la date, de la forme <strong>JJ/MM</strong>
</li><li class="formatter-li"> Date::FORMAT_DAY_MONTH_YEAR affichage de la date, de la forme <strong>JJ/MM/AAAA</strong>
</li><li class="formatter-li"> Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE affichage de la date complet avec heure et minutes, de la forme <strong>JJ/MM/AAAA à HHhMM</strong>
</li><li class="formatter-li"> Date::FORMAT_TIMESTAMP pour afficher le timestamp
</li><li class="formatter-li"> Date::FORMAT_RFC822 pour afficher la date au format RFC822
</li><li class="formatter-li"> Date::FORMAT_ISO8601 pour afficher la date au format ISO8601
</li><li class="formatter-li"> Date::FORMAT_DAY_MONTH_YEAR_LONG affichage long de la date, de la forme <strong>jour mois AAAA</strong>
</li><li class="formatter-li"> Date::FORMAT_DAY_MONTH_YEAR_TEXT affichage long de la date, de la forme <strong>jour de la semaine jour mois AAAA</strong>
</li><li class="formatter-li"> Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE_TEXT affichage long de la date, de la forme <strong>jour de la semaine jour mois AAAA à HHhMM</strong>
</li><li class="formatter-li"> Date::FORMAT_RELATIVE : affichage la différence entre la date et la date actuelle
</li><li class="formatter-li"> Date::FORMAT_ISO_DAY_MONTH_YEAR : affiche la date au format ISO, de la forme <strong>AAAA-MM-JJ</strong> (utilisé dans les input calendriers)<br /><br />
</li></ul><br /><br />
Exemple :<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #0000FF; font-weight: bold;">echo</span> <span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">format</span><span style="color: #8000FF;">&#40;</span><a href="http://www.php.net/date"><span style="color: #0000FF; font-weight: bold;">Date</span></a><span style="color: #8000FF;">::</span><span style="color: #000000;">FORMAT_DAY_MONTH_YEAR</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-traitement-sur-l-objet-date">Traitement sur l'objet Date</h2><br />
<br /><br />
Vous pouvez, après avoir instancié la classe date, utiliser plusieurs fonctions pour obtenir divers renseignements :<br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-obtenir-le-timestamp">Obtenir le timestamp</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_timestamp</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-obtenir-l-annee-de-la-date">Obtenir l'année de la date</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_year</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-obtenir-le-mois-de-la-date">Obtenir le mois de la date</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_month</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-obtenir-le-jour-de-la-date">Obtenir le jour de la date</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_day</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-obtenir-l-heure-de-la-date">Obtenir l'heure de la date</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_hours</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-obtenir-les-minutes-de-la-date">Obtenir les minutes de la date</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_minutes</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-obtenir-les-secondes-de-la-date">Obtenir les secondes de la date</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_seconds</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-obtenir-le-numero-de-semaine-dans-l-annee">Obtenir le numéro de semaine dans l'année</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_week_number</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-obtenir-le-numero-de-semaine-dans-l-annee">Obtenir le numéro de semaine dans l'année</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_day_of_week</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-obtenir-le-numero-du-jour-dans-l-annee">Obtenir le numéro du jour dans l'année</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_day_of_year</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-exporter-sous-format-annee-mois-jour">Exporter sous format année-mois-jour</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">to_date</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-verifier-si-l-annee-de-la-date-est-bissextile">Vérifier si l'année de la date est bissextile</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">is_date_year_bissextile</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-verifier-si-la-date-est-anterieure-a-une-autre-date">Vérifier si la date est antérieure à une autre date</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">is_anterior_to</span><span style="color: #8000FF;">&#40;</span><a href="http://www.php.net/date"><span style="color: #0000FF; font-weight: bold;">Date</span></a> <span style="color: #000080;">$date</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-verifier-si-la-date-est-posterieure-a-une-autre-date">Vérifier si la date est postérieure à une autre date</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">is_posterior_to</span><span style="color: #8000FF;">&#40;</span><a href="http://www.php.net/date"><span style="color: #0000FF; font-weight: bold;">Date</span></a> <span style="color: #000080;">$date</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-verifier-si-la-date-est-egale-a-une-autre-date">Vérifier si la date est égale à une autre date</h3><br />
<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">equals</span><span style="color: #8000FF;">&#40;</span><a href="http://www.php.net/date"><span style="color: #0000FF; font-weight: bold;">Date</span></a> <span style="color: #000080;">$date</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br /><br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-modifier-les-donnees-d-une-date-apres-sa-creation">Modifier les données d'une date après sa création</h2><br />
<br /><br />
Vous pouvez, après création de l'objet, modifier la date, son jour, l'année, l'heure, etc :<br /><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_year</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$year</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Change l'année</span>
<span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_month</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$month</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Change le mois</span>
<span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_day</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$day</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Change le jour</span>
<span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_hours</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$hours</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">:</span> <span style="color: #008000; font-style: italic;">// Change l'heure</span>
<span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_minutes</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$minutes</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Change les minutes</span>
<span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">set_seconds</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$second</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Change les secondes</span>
<span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">add_days</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$number_days</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Ajoute $number_days jours</span>
<span style="color: #000080;">$date</span><span style="color: #8000FF;">-></span><span style="color: #000000;">add_weeks</span><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$number_weeks</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span> <span style="color: #008000; font-style: italic;">// Ajoute $number_weeks jours</span>
&nbsp;</pre></pre></div></div>]]></description>
                <pubDate>Tue, 16 Feb 2016 15:58:27 +0100</pubDate>
                
            </item>
		
            <item>
                <title><![CDATA[Exécuter des requêtes SQL]]></title>
                <link>https://www.phpboost.com/wiki/executer-des-requetes-sql</link>
                <guid>https://www.phpboost.com/wiki/executer-des-requetes-sql</guid>
                <description><![CDATA[PHPBoost possède son propre système de gestion des requêtes SQL.<br />
Il a pour but de faciliter le développement et ainsi gagner en productivité.<br />
La classe qui regroupe les différentes fonctions se nomme DBQuerier.<br />
On peut accéder à son objet avec :<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">PersistenceContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_querier</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span></pre></pre></div></div><br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-les-requetes">Les requêtes</h2><br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-insert">INSERT</h3><br />
<br />
Fonction : <pre style="display:inline;">InjectQueryResult insert<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$table_name</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a> <span style="color: #000080;">$columns</span><span style="color: #8000FF;">&#41;</span></pre><br />
Pour insérer un élément en base de donnée, exécuter la commande suivante :<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">PersistenceContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_querier</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">insert</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'la_table_en_question'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span>
    <span style="color: #808080;">'colonne_1'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'valeur_1'</span><span style="color: #8000FF;">,</span> 
    <span style="color: #808080;">'colonne_2'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'valeur_2'</span>
<span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
Il suffit de renseigner le nom de la table et de fournir un tableau avec pour chaque élément une clé qui correspond au nom de la colonne et une valeur à lui attribuer.<br />
Les caractères spéciaux sont échappés automatiquement, vous n'avez donc pas à le faire manuellement.<br />
Le dernier id inséré peut être récupéré grâce à la fonction <em>get_last_inserted_id()</em> :<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;"><span style="color: #000080;">$result</span> <span style="color: #8000FF;">=</span> PersistenceContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_querier</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">insert</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'la_table_en_question'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span>
    <span style="color: #808080;">'colonne_1'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'valeur_1'</span><span style="color: #8000FF;">,</span> 
    <span style="color: #808080;">'colonne_2'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'valeur_2'</span>
<span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
<span style="color: #000080;">$inserted_id</span> <span style="color: #8000FF;">=</span> <span style="color: #000080;">$result</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_last_inserted_id</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span>
&nbsp;</pre></pre></div></div><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-update">UPDATE</h3><br />
<br />
Fonction : <pre style="display:inline;">InjectQueryResult update<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$table_name</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a> <span style="color: #000080;">$columns</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$condition</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a> <span style="color: #000080;">$parameters</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span></pre><br />
Voici un exemple de mise à jour d'un élément en base de données :<br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">PersistenceContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_querier</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">update</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'la_table_en_question'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span>
    <span style="color: #808080;">'colonne_1'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'valeur_1'</span><span style="color: #8000FF;">,</span> 
    <span style="color: #808080;">'colonne_2'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'valeur_2'</span>
<span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'WHERE id=:id'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'id'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'identifiant à modifier'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
De la même manière que dans un insert, le deuxième argument de la fonction est un tableau avec les colonnes à modifier.<br />
Les arguments 3 et 4 permettent de définir la condition, c'est à dire quel(s) élément(s) vous souhaitez modifier.<br />
Le troisième argument est la condition. Dans cet exemple, <em>WHERE id=:id</em>. Au lieu de faire de la concaténation, il vous suffit de mettre un double point suivit d'une clé. Dans notre cas c'est <em>:id</em>.<br />
Le quatrième argument est un tableau contenant les valeurs de remplacement. La clé du tableau est celle que vous avez renseigné dans la condition.<br />
Les caractères spéciaux sont également échappés automatiquement.<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-delete">DELETE</h3><br />
<br />
Fonction : <pre style="display:inline;">delete<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$table_name</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$condition</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a> <span style="color: #000080;">$parameters</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span></pre><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">PersistenceContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_querier</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">delete</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'la_table_en_question'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'WHERE user_id=:id'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span>
    <span style="color: #808080;">'id'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'identifiant à supprimer'</span>
<span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-select">SELECT</h2><br />
<br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-selectionner-un-seul-element">Sélectionner un seul élément</h3><br />
<br />
Fonction : <pre style="display:inline;">mixed<span style="color: #8000FF;">&#91;</span>string<span style="color: #8000FF;">&#93;</span> select_single_row<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$table_name</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a> <span style="color: #000080;">$columns</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$condition</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a> <span style="color: #000080;">$parameters</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span></pre><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">PersistenceContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_querier</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">select_single_row</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'la_table_en_question'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'les_colonnes_demandées, * pour toutes les colonnes'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'WHERE id=:id'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span>
    <span style="color: #808080;">'id'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'identifiant à sélectionner'</span>
<span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-selectionner-une-seule-colonne">Sélectionner une seule colonne</h3><br />
<br />
Fonction : <pre style="display:inline;">string get_column_value<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$table_name</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$column</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$condition</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a> <span style="color: #000080;">$parameters</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span></pre><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">PersistenceContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_querier</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">get_column_value</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'la_table_en_question'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'la_colonne_demandée'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'WHERE id=:id'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span>
    <span style="color: #808080;">'id'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'identifiant à sélectionner'</span>
<span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-selectionner-plusieurs-colonnes">Sélectionner plusieurs colonnes</h3><br />
<br />
Fonction : <pre style="display:inline;"><a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a> select_rows<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$table_name</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a> <span style="color: #000080;">$columns</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$condition</span> <span style="color: #8000FF;">=</span> <span style="color: #808080;">'WHERE 1'</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$parameters</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span></pre><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">PersistenceContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_querier</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">select_rows</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'la_table_en_question'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'les_colonnes_demandées, * pour toutes les colonnes'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'WHERE id=:id'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span>
    <span style="color: #808080;">'id'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'identifiant à sélectionner'</span>
<span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<h3 class="formatter-title wiki-paragraph-3" id="paragraph-select-personnalise">SELECT personnalisé</h3><br />
<br />
Fonction : <pre style="display:inline;">SelectQueryResult select<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$query</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$parameters</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$fetch_mode</span> <span style="color: #8000FF;">=</span> SelectQueryResult<span style="color: #8000FF;">::</span><span style="color: #000000;">FETCH_ASSOC</span><span style="color: #8000FF;">&#41;</span></pre><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">PersistenceContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_querier</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">select</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'SELECT toto FROM votre_table WHERE id=:id'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span>
    <span style="color: #808080;">'id'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'identifiant à sélectionner'</span>
<span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> SelectQueryResult<span style="color: #8000FF;">::</span><span style="color: #000000;">FETCH_ASSOC</span> ou SelectQueryResult<span style="color: #8000FF;">::</span><span style="color: #000000;">FETCH_NUM</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-count">COUNT</h2><br />
<br />
Fonction : <pre style="display:inline;">int <a href="http://www.php.net/count"><span style="color: #0000FF; font-weight: bold;">count</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$table_name</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$condition</span> <span style="color: #8000FF;">=</span> <span style="color: #808080;">'WHERE 1'</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$parameters</span> <span style="color: #8000FF;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">,</span> <span style="color: #000080;">$count_column</span> <span style="color: #8000FF;">=</span> <span style="color: #808080;">'*'</span><span style="color: #8000FF;">&#41;</span></pre><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">PersistenceContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_querier</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><a href="http://www.php.net/count"><span style="color: #0000FF; font-weight: bold;">count</span></a><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'la_table_en_question'</span><span style="color: #8000FF;">,</span> <span style="color: #808080;">'WHERE id=:id'</span><span style="color: #8000FF;">,</span> <a href="http://www.php.net/array"><span style="color: #0000FF; font-weight: bold;">array</span></a><span style="color: #8000FF;">&#40;</span>
    <span style="color: #808080;">'id'</span> <span style="color: #8000FF;">=></span> <span style="color: #808080;">'identifiant à compter'</span>
<span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div><br />
<h2 class="formatter-title wiki-paragraph-2" id="paragraph-truncate">TRUNCATE</h2><br />
<br />
Fonction : <pre style="display:inline;">truncate<span style="color: #8000FF;">&#40;</span><span style="color: #000080;">$table_name</span><span style="color: #8000FF;">&#41;</span></pre><br />
<div class="formatter-container formatter-code code-PHP"><span class="formatter-title">Code PHP : </span><div class="formatter-content"><pre style="display:inline;"><pre class="php" style="font-family:monospace;">PersistenceContext<span style="color: #8000FF;">::</span><span style="color: #000000;">get_querier</span><span style="color: #8000FF;">&#40;</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">-></span><span style="color: #000000;">truncate</span><span style="color: #8000FF;">&#40;</span><span style="color: #808080;">'la_table_de_votre_module'</span><span style="color: #8000FF;">&#41;</span><span style="color: #8000FF;">;</span></pre></pre></div></div>]]></description>
                <pubDate>Mon, 04 Jan 2016 17:15:22 +0100</pubDate>
                
            </item>
		
	</channel>
</rss>
