Connexion
S'inscrire
Actualités
Quoi de neuf
Activités générales
Auteurs
Forums
Nouveaux messages
Rechercher un forum
Quoi de neuf
Nouveaux messages
Nouveaux messages de profil
Activités générales
Membres
Membres inscrits
Visiteurs actuels
Nouveaux messages de profil
Rechercher dans les messages des profils
Teams
Créé ton équipe
Quoi de neuf ?
Nouveaux messages
Rechercher un forum
Menu
Connexion
S'inscrire
Install the app
Install
Forums
Forums généraux
Informatique
Développement
Apprenez à créer un add-On CRUD sous le CMS XenForo
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
Vous utilisez un navigateur non à jour ou ancien. Il ne peut pas afficher ce site ou d'autres sites correctement.
Vous devez le mettre à jour ou utiliser un
navigateur alternatif
.
Répondre à la discussion
Message
<blockquote data-quote="Rivals" data-source="post: 6917715" data-attributes="member: 694298"><p style="text-align: center">[ATTACH=full]100872[/ATTACH]</p> <p style="text-align: center"><span style="font-family: 'MyriadPro Light'">Bonjour à tous [FA]fa-smile-o[/FA], nous allons aujourd'hui apprendre à créer notre premier</span><span style="font-family: 'MyriadPro'"> add-On [FA]fa-puzzle-piece[/FA] CRUD (Create, Read, Update, Delete)</span><span style="font-family: 'MyriadPro Light'"> sous le CMS </span><span style="font-family: 'MyriadPro'">XenForo</span><span style="font-family: 'MyriadPro Light'">.</span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro Light'"></span></p><p><span style="font-family: 'MyriadPro-Light'">[FA]fa-align-justify[/FA] <u>SOMMAIRE :</u></span></p><p></p><p style="margin-left: 20px"><span style="font-family: 'MyriadPro-Light'">[FA]fa-angle-right[/FA] </span><span style="font-family: 'MyriadPro-Regular'">Architecture</span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro Light'"> [FA]fa-angle-right[/FA] </span><span style="font-family: 'MyriadPro'">Insertion de données</span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro Light'"> [FA]fa-angle-right[/FA] </span><span style="font-family: 'MyriadPro'">Affichage de données</span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro Light'"> [FA]fa-angle-right[/FA] </span><span style="font-family: 'MyriadPro'">Modification de données</span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro Light'"> [FA]fa-angle-right[/FA] </span><span style="font-family: 'MyriadPro'">Suppression de données</span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro'"></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="color: #ff8000">[FA]fa-border fa-warning[/FA]</span> Avant toute chose je vais vous demander d'activer le mode <em>debug </em>de votre forum XenForo (créez un environnement de développement, n'utilisez en aucun cas une production).</span></p><p><span style="font-family: 'MyriadPro Light'"></span></p><p><span style="font-family: 'MyriadPro'">[FA]fa-border fa-download[/FA] ACTIVER LE MODE <em>DEBUG</em></span></p><ol> <li data-xf-list-type="ol"><span style="font-family: 'MyriadPro Light'">Ouvrez le fichier <em>Config.php</em> que vous trouverez dans le dossier <em>Library </em>de votre FTP.</span></li> <li data-xf-list-type="ol"><span style="font-family: 'MyriadPro Light'">Ajoutez la ligne suivante : <em>$config['debug'] = true</em>; .</span></li> </ol> <p style="text-align: center"><span style="font-family: 'MyriadPro-Light'">[ATTACH=full]100879[/ATTACH] </span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro Light'">Dans ce premier chapitre nous allons voir ensemble comment structurer son add-On mais également l'utilité des dossiers [FA]fa-folder-open-o[/FA] qui composeront l'architecture de notre add-On, dans ce tutoriel je vais prendre un exemple particulier :</span> <span style="font-family: 'MyriadPro'">vous êtes lobbyman [FA]fa-child[/FA], vous possédez un forum et vous souhaitez créer un add-On qui permettra à vos membres de demander des lobbys.</span></p> <ol> <li data-xf-list-type="ol"><span style="font-family: 'MyriadPro Light'">Un add-On XenForo se situera toujours dans le dossier <em>library</em> (mais pas que, nous verrons ceci par la suite), </span><span style="font-family: 'MyriadPro-Light'">créons</span><span style="font-family: 'MyriadPro Light'"> un dossier <em>Lobbys </em>qui sera </span><span style="font-family: 'MyriadPro'">le dossier parent [FA]fa-folder[/FA]</span><span style="font-family: 'MyriadPro Light'"> de notre add-On.</span></li> <li data-xf-list-type="ol"><span style="font-family: 'MyriadPro Light'">Dans ce dossier </span><em><span style="font-family: 'MyriadPro Light'">Lobbys </span></em><span style="font-family: 'MyriadPro Light'">nous allons créer un premier dossier </span><em><span style="font-family: 'MyriadPro'">Model</span></em><span style="font-family: 'MyriadPro Light'"> qui permettra d'effectuer des requêtes [FA]fa-exchange[/FA] de type : </span><em><span style="font-family: 'MyriadPro Light'">je veux récupérer telle demande de lobby, je veux récupérer toutes les demandes de lobby entre telle date et telle date etc. </span></em></li> <li data-xf-list-type="ol"><span style="font-family: 'MyriadPro Light'">Créons un autre dossier nommé </span><span style="font-family: 'MyriadPro'"><em>DataWriter</em></span><span style="font-family: 'MyriadPro Light'">, ce dossier nous permettra de <em>créer</em>, <em>modifier</em> et <em>supprimer</em> des demandes de lobby.</span></li> <li data-xf-list-type="ol"><span style="font-family: 'MyriadPro Light'">Puis un dossier </span><span style="font-family: 'MyriadPro'"><em>Route</em></span><span style="font-family: 'MyriadPro Light'"> et un sous dossier </span><span style="font-family: 'MyriadPro'"><em>Prefix</em></span><span style="font-family: 'MyriadPro Light'">, ces dossiers nous permettrons de déclarer notre <em>routing</em> c'est à dire</span><span style="font-family: 'MyriadPro'"> les URLs [FA]fa-link[/FA] à utiliser</span><span style="font-family: 'MyriadPro Light'"> pour notre add-On (<u>exemple:</u> <a href="https://monforum.fr/lobby" target="_blank">https://monforum.fr/lobby</a>).</span></li> <li data-xf-list-type="ol"><span style="font-family: 'MyriadPro Light'">Et enfin, terminons notre architecture avec un dossier </span><span style="font-family: 'MyriadPro'"><em>ControllerPublic</em></span><span style="font-family: 'MyriadPro Light'"> qui contiendra </span><span style="font-family: 'MyriadPro'">l'algorithme [FA]fa-list-alt[/FA]</span><span style="font-family: 'MyriadPro Light'"> de notre add-On (<em>si le membre soumet le formulaire alors j'enregistre....</em>).</span></li> </ol> <p style="text-align: center">[ATTACH=full]100883[/ATTACH]</p> <p style="text-align: center"><em><span style="font-family: 'MyriadPro Light'"><span style="font-size: 12px">(l'architecture finalisée)</span></span></em></p> <p style="text-align: center"><em><span style="font-family: 'MyriadPro Light'"><span style="font-size: 12px"></span></span></em></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="color: #ff8000">[FA]fa-border fa-warning[/FA]</span> Avant toute chose nous devons créer le <em>routing</em> de notre add-On mais également notre add-On afin que l'on puisse afficher un formulaire [FA]fa-keyboard-o[/FA] de demande de lobbys par exemple.</span></span></p><p><span style="font-family: 'MyriadPro Light'"></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro-Regular'">[FA]fa-border fa-mouse-pointer[/FA] ROUTING BASIQUE</span></span></p><ul> <li data-xf-list-type="ul"><span style="font-family: 'MyriadPro Light'">Rendez-vous sur votre panel d'administration à l'onglet</span> <em><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'">Development</span></span></em><span style="font-size: 15px"> <span style="font-family: 'MyriadPro Light'">puis</span> </span><em><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'">Create Add-on.</span></span></em></li> </ul> <p style="margin-left: 20px"><p style="margin-left: 20px"><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'"><span style="font-size: 15px"><u>Add-on ID </u></span><u><span style="font-family: 'MyriadPro Light'">:</span></u> </span></span><span style="font-family: 'MyriadPro'"><span style="color: rgb(0, 0, 0)"><span style="font-size: 15px">lobbys</span></span></span><span style="color: rgb(0, 0, 0)"><span style="font-size: 15px"> <span style="font-family: 'MyriadPro Light'">, c'est tout simplement un identifiant unique correspondant à notre add-on.</span></span></span></p> <p style="margin-left: 20px"><span style="color: #000000"><span style="font-size: 15px"><u><span style="font-family: 'MyriadPro Light'">Title :</span></u> <span style="font-family: 'MyriadPro'">Lobbys</span><span style="font-family: 'MyriadPro Light'">, explicitement c'est le titre de celui-ci.</span></span></span></p> <p style="margin-left: 20px"><span style="color: #000000"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><u>Version String :</u> </span><span style="font-family: 'MyriadPro'">1.0.0</span><span style="font-family: 'MyriadPro-Light'">.</span></span></span></p> <p style="margin-left: 20px"><span style="color: #000000"><span style="font-size: 15px"><u><span style="font-family: 'MyriadPro Light'">Version ID :</span></u> <span style="font-family: 'MyriadPro'">1</span><span style="font-family: 'MyriadPro-Light'">.</span></span></span></p> <p style="margin-left: 20px"><span style="color: rgb(0, 0, 0)"><span style="font-size: 15px"><u><span style="font-family: 'MyriadPro Light'">URL :</span></u><span style="font-family: 'MyriadPro Light'"> (vous pouvez laisser ce champs vide, ça n'a aucune importance)</span></span></span></p> <p style="margin-left: 20px"><span style="color: rgb(0, 0, 0)"><span style="font-size: 15px"><u><span style="font-family: 'MyriadPro Light'">Installation Code & Uninstallation Code :</span></u><span style="font-family: 'MyriadPro Light'"> (laissez également vide pour le moment).</span></span></span></p> </p> <ul> <li data-xf-list-type="ul"><span style="font-family: 'MyriadPro Light'">Sauvegardez [FA]fa-save[/FA] et créez un fichier</span> <span style="font-family: 'MyriadPro'"><span style="font-size: 15px">Public.php</span></span><span style="font-size: 15px"> <span style="font-family: 'MyriadPro Light'">dans le dossier </span></span><em><span style="font-family: 'MyriadPro-Light'"><span style="font-size: 15px">Prefix</span></span></em><span style="font-family: 'MyriadPro-Light'"><span style="font-size: 15px"> (</span></span><em><span style="font-family: 'MyriadPro-Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">Route > Prefix</span></span></span></em><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'">) </span><span style="font-family: 'MyriadPro Light'">et insérez le code ci-dessous</span></span></li> </ul><p><span style="font-family: 'MyriadPro-Regular'">[FA]fa-border fa-code[/FA] CODE</span></p><p><span style="font-family: 'MyriadPro Light'">[PHP]</span></p><p><span style="font-family: 'MyriadPro Light'"><?php</span></p><p><span style="font-family: 'MyriadPro Light'"></span></p><p><span style="font-family: 'MyriadPro Light'">class Lobbys_Route_Prefix_Public implements XenForo_Route_Interface</span></p><p><span style="font-family: 'MyriadPro Light'">{</span></p><p><span style="font-family: 'MyriadPro Light'"> /**</span></p><p><span style="font-family: 'MyriadPro Light'"> * Match a specific route for an already matched prefix.</span></p><p><span style="font-family: 'MyriadPro Light'"> *</span></p><p><span style="font-family: 'MyriadPro Light'"> * @see XenForo_Route_Interface::match()</span></p><p><span style="font-family: 'MyriadPro Light'"> */</span></p><p><span style="font-family: 'MyriadPro Light'"> public function match($routePath, Zend_Controller_Request_Http $request, XenForo_Router $router)</span></p><p><span style="font-family: 'MyriadPro Light'"> {</span></p><p><span style="font-family: 'MyriadPro Light'"> //on précise que nos URLs (plus particulièrement nos actions) peuvent prendre un paramètre de base : l'identifiant du lobby</span></p><p><span style="font-family: 'MyriadPro Light'"> $action = $router->resolveActionWithIntegerParam($routePath, $request, 'lobby_id');</span></p><p><span style="font-family: 'MyriadPro Light'"></span></p><p><span style="font-family: 'MyriadPro Light'"> //on indique notre ControllerPublic que nous allons créer dans le chapitre suivant</span></p><p><span style="font-family: 'MyriadPro Light'"> return $router->getRouteMatch('Lobbys_ControllerPublic_Index', $action, 'lobby');</span></p><p><span style="font-family: 'MyriadPro Light'"> }</span></p><p><span style="font-family: 'MyriadPro Light'"></span></p><p><span style="font-family: 'MyriadPro Light'"> /**</span></p><p><span style="font-family: 'MyriadPro Light'"> * Method to build a link to the specified page/action with the provided</span></p><p><span style="font-family: 'MyriadPro Light'"> * data and params.</span></p><p><span style="font-family: 'MyriadPro Light'"> *</span></p><p><span style="font-family: 'MyriadPro Light'"> * @see XenForo_Route_BuilderInterface</span></p><p><span style="font-family: 'MyriadPro Light'"> */</span></p><p><span style="font-family: 'MyriadPro Light'"> public function buildLink($originalPrefix, $outputPrefix, $action, $extension, $data, array &$extraParams)</span></p><p><span style="font-family: 'MyriadPro Light'"> {</span></p><p><span style="font-family: 'MyriadPro Light'"> return XenForo_Link::buildBasicLinkWithIntegerParam($outputPrefix, $action, $extension, $data, 'lobby_id');</span></p><p><span style="font-family: 'MyriadPro Light'"> }</span></p><p><span style="font-family: 'MyriadPro Light'">}</span></p><p><span style="font-family: 'MyriadPro Light'"></span></p><p><span style="font-family: 'MyriadPro Light'">?></span></p><p><span style="font-family: 'MyriadPro Light'">[/PHP]</span></p><ul> <li data-xf-list-type="ul"><span style="font-family: 'MyriadPro Light'">Rendez-vous sur votre panel d'administration, à l'onglet <em><span style="color: rgb(0, 0, 0)"><span style="font-size: 15px">Development </span></span></em><span style="color: rgb(0, 0, 0)"><span style="font-size: 15px">puis </span></span><em><span style="color: rgb(0, 0, 0)"><span style="font-size: 15px">Route Prefixes, </span></span></em><span style="color: rgb(0, 0, 0)"><span style="font-size: 15px">pour créer un nouveau préfixe de routage. </span></span></span></li> <li data-xf-list-type="ul"><span style="font-family: 'MyriadPro Light'">Remplissez & sauvegardez les champs indiqués avec les valeurs suivantes :</span></li> </ul> <p style="margin-left: 20px"><p style="margin-left: 20px"><span style="font-family: 'MyriadPro Light'"><u>Route Prefix :</u> </span><span style="font-family: 'MyriadPro'">lobby</span><span style="font-family: 'MyriadPro Light'"> (c'est notre URL de base, exemple : members/<em>{username}.{id}</em>/</span><span style="font-family: 'MyriadPro'">follow</span><span style="font-family: 'MyriadPro Light'"> , l'URL de base est <em>members</em>).</span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro Light'"><u>Route Type :</u> </span><span style="font-family: 'MyriadPro'">Public</span><span style="font-family: 'MyriadPro Light'"> .</span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro Light'"><u>Route Class :</u> </span><span style="font-family: 'MyriadPro'">Lobbys_Route_Prefix_Public</span><span style="font-family: 'MyriadPro Light'"> qui correspond évidemment à la class PHP de notre fichier que nous venons de créer.</span></p> <p style="margin-left: 20px"><u><span style="font-family: 'MyriadPro Light'">Use class to build link :</span></u> <span style="font-family: 'MyriadPro'">Only when data is provided</span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro Light'"><u>Add-on </u>: </span><span style="font-family: 'MyriadPro'">Lobbys</span><span style="font-family: 'MyriadPro Light'"> (techniquement nous lions ce préfixe de routage à notre add-On, ainsi à chaque exportation de notre add-On ce préfixe sera inscrit dans le fichier .XML de notre module) </span></p> </p><p></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="color: rgb(0, 89, 179)"><span style="font-size: 15px">[FA]fa-border fa-info[/FA]</span></span><span style="font-size: 15px"><span style="color: rgb(0, 0, 0)"> Nous nommons notre fichier "<em>Public</em>" car vous pouvez également créer un add-On qui concernera le panel d'administration dans ce cas vous devrez créer un fichier "<em>Admin</em>", vous devrez également modifier le préfixe de route en change le type de <em>route </em>de <em>Public</em> à Admin <em>Control Panel</em>.</span></span></span></span></p><p style="text-align: center"></p> <p style="text-align: center">[ATTACH=full]100878[/ATTACH]</p> <p style="text-align: center"><span style="font-family: 'MyriadPro Light'">Passons au deuxième chapitre qui porte sur l'insertion [FA]fa-paper-plane-o[/FA] de données nous allons </span><span style="font-family: 'MyriadPro-Light'">interagir</span><span style="font-family: 'MyriadPro Light'"> avec deux dossiers qui sont </span><span style="font-family: 'MyriadPro'">DataWriter</span><span style="font-family: 'MyriadPro Light'"> et </span><span style="font-family: 'MyriadPro'">ControllerPublic</span><span style="font-family: 'MyriadPro Light'">.</span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro Light'"></span></p><p><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Dans un premier temps nous allons créer un fichier</span><span style="font-family: 'MyriadPro'"> Index.php [FA]fa-file[/FA]</span> <span style="font-family: 'MyriadPro Light'">dans le dossier</span> <span style="font-family: 'MyriadPro'"><em>ControllerPublic</em></span><em><span style="font-family: 'MyriadPro-Light'">, </span></em><span style="font-family: 'MyriadPro Light'">ce fichier hérite de la classe</span><em><span style="font-family: 'MyriadPro-Light'"> XenForo_ControllerPublic_Abstract</span></em> <span style="font-family: 'MyriadPro Light'">qui est une classe étendue sur tous les <em>controllers</em>.</span></p><p></p><p>[FA]fa-border fa-code[/FA] INDEX.PHP <span style="font-family: 'MyriadPro Light'">(actionIndex())</span></p><p><span style="font-family: 'MyriadPro Light'">[PHP]<?php</span></p><p><span style="font-family: 'MyriadPro Light'"></span></p><p><span style="font-family: 'MyriadPro Light'">class Lobbys_ControllerPublic_Index extends XenForo_ControllerPublic_Abstract</span></p><p><span style="font-family: 'MyriadPro Light'">{</span></p><p><span style="font-family: 'MyriadPro Light'"> /*</span></p><p><span style="font-family: 'MyriadPro Light'"> Action index, affichons "Hello World !"" tout bêtement.</span></p><p><span style="font-family: 'MyriadPro Light'"> */</span></p><p><span style="font-family: 'MyriadPro Light'"> public function actionIndex()</span></p><p><span style="font-family: 'MyriadPro Light'"> {</span></p><p><span style="font-family: 'MyriadPro Light'"> echo "Hello World !";</span></p><p><span style="font-family: 'MyriadPro Light'"> }</span></p><p><span style="font-family: 'MyriadPro Light'"></span></p><p><span style="font-family: 'MyriadPro Light'">}</span></p><p><span style="font-family: 'MyriadPro Light'">[/PHP]</span></p><p><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Rendez-vous sur l'URL suivante : <a href="https://monforum.fr/lobby" target="_blank">https://monforum.fr/lobby</a> ! <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite363" alt=":smile:" title="Smile :smile:" loading="lazy" data-shortname=":smile:" /></span></p><p><span style="font-family: 'MyriadPro Light'"></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'">[ATTACH=full]100884[/ATTACH] </span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 12px"><em>(nous avons bien notre Hello World ! d'affiché)</em></span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 12px"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px">[FA]fa-angle-right[/FA] Vous pouvez tout de même voir que nous avons une erreur qui indique qu'aucun retour du controller n'est présent, en effet nous retournons un message brut sans grand intérêt si ce n'est que vous impressionner ( <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite375" alt=":trollface:" title="Trollface :trollface:" loading="lazy" data-shortname=":trollface:" /> ), nous avons la possibilité d'</span></span><span style="font-family: 'MyriadPro'"><span style="font-size: 15px">afficher une template</span></span><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"> grâce au code ci-dessous mais uniquement aux utilisateurs connectés. <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite368" alt=":stupéfait:" title="Stupéfait :stupéfait:" loading="lazy" data-shortname=":stupéfait:" /></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"></span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro'">[FA]fa-border fa-code[/FA] INDEX.PHP </span><span style="font-family: 'MyriadPro Light'">(actionIndex())</span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[PHP] </span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> //on instancie l'utilisateur courant.</span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $visitor = XenForo_Visitor::getInstance();</span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> if(!$visitor['user_id'])</span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> {</span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> //si l'utilisateur n'est pas connecté on renvoit une erreur de permissions</span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> return $this->responseNoPermission();</span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> }</span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> return $this->responseView('Lobbys_ViewPublic_Index', 'lobbys_index', $params = []);</span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[/PHP]</span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Dans ce code nous utilisons une méthode nommée <em>responseView</em> qui provient de notre controller <em>XenForo_ControllerPublic_Abstract</em> , d'où l'importance [FA]fa-warning[/FA] d'hériter de cette classe, ainsi le premier paramètre correspond à une classe qui n'est pas importante pour la création de notre add-On, vous pouvez laisser ce paramètre vide, le deuxième paramètre est </span><span style="font-family: 'MyriadPro'">le nom de notre template</span><span style="font-family: 'MyriadPro Light'"> et le dernier est </span><span style="font-family: 'MyriadPro'">un tableau de paramètres</span><span style="font-family: 'MyriadPro Light'"> qui sera disponible dans notre template <em>lobbys_index</em>.</span></span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Rendez-vous sur notre ACP [FA]fa-gear[/FA], à l'onglet <em>Appearance </em>puis <em>Templates</em>, créez une template avec le nom que nous lui avons donné précédemment et avec un contenu basique pour essayer le fonctionnement de notre méthode <em>responseView</em>.</span></span></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'">[ATTACH=full]100887[/ATTACH]</span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Revenez sur la page de nos lobbys, </span><span style="font-family: 'MyriadPro'">notre template est bien affichée</span><span style="font-family: 'MyriadPro Light'">.</span></span></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'">[ATTACH=full]100889[/ATTACH]</span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Modifions notre template afin d'y incorporer quelques éléments comme </span></span><span style="font-family: 'MyriadPro'">un formulaire</span><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> qui va permettre à nos membres de demander un lobby.</span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></p><p><span style="font-family: 'MyriadPro Light'">[FA]fa-border fa-code[/FA] </span><span style="font-family: 'MyriadPro'">LOBBYS_INDEX</span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[HTML]<xen:title>{xen:phrase lobbys_index_title}</xen:title></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><xen:description>{xen:phrase lobbys_index_description}</xen:description></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><xen:navigation></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <xen:breadcrumb source="$nodeBreadCrumbs" /></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></xen:navigation></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><form action="{xen:link 'lobby/save'}" method="post" class="xenForm AutoValidator" data-redirect="yes"></span></span></p><p> <span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <dl class="ctrlUnit"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <dt><label>{xen:phrase lobbys_index_games_label}:</label></dt></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <dd><select name="game"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <option value="BO3">{xen:phrase lobbys_index_games_bo3}</option></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <option value="BO2">{xen:phrase lobbys_index_games_bo2}</option></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <option value="MW3">{xen:phrase lobbys_index_games_mw3}</option></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> </select></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> </dd></span></span></p><p> <span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> </dl></span></span></p><p> <span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <dl class="ctrlUnit"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <dt><label>{xen:phrase lobbys_index_plateforms_label}:</label></dt></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <dd><input type="radio" name="plateform" value="PS3"> {xen:phrase lobbys_index_plateforms_ps3}</br></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <input type="radio" name="plateform" value="XBOX360"> {xen:phrase lobbys_index_plateforms_xbox360}</span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> </dd></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> </dl></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <dl class="ctrlUnit"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <dt><label>{xen:phrase lobbys_index_games_id_label}:</label></dt></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <dd><input type="text" class="textCtrl" name="game_id"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> </dd></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> </dl></span></span></p><p> <span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <dl class="ctrlUnit submitUnit"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <dt></dt></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <dd><input type="submit" value="{xen:phrase lobbys_index_submit}" class="button primary" /></dd></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> </dl></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> <input type="hidden" name="_xfToken" value="{$visitor.csrf_token_page}" /></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></form>[/HTML]</span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="color: #ff8000">[FA]fa-border fa-warning[/FA]</span> Il vous faudra phraser votre template vous même.</span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[ATTACH=full]100896[/ATTACH] </span></span></p></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 12px"><em>(résultat après avoir modifié la template)</em></span></span></span></p></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 12px"></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Nous allons maintenant créer un fichier </span><span style="font-family: 'MyriadPro'">Lobbys.php</span><span style="font-family: 'MyriadPro Light'"> dans le dossier </span><span style="font-family: 'MyriadPro'">DataWriter</span><span style="font-family: 'MyriadPro Light'">. Ce fichier va nous permettre de déclarer nos champs [FA]fa-navicon[/FA] afin de pouvoir les modifier, supprimer etc. par la suite et ceci plus facilement grâce aux fonctions ci-dessous. <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite355" alt=":)" title=":) :)" loading="lazy" data-shortname=":)" /></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[FA]fa-border fa-code[/FA]</span><span style="font-family: 'MyriadPro'"> LOBBYS.PHP</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[PHP]</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><?php</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">class Lobbys_DataWriter_Lobbys extends XenForo_DataWriter</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">{</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> protected function _getFields()</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> // nom de la table</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> return array('lobbys' => array(</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> // identifiant du lobby</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> 'lobby_id' => array('type' => self::TYPE_UINT, 'autoIncrement' => true),</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> // identifiant du membre qui demande un lobby</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> 'user_id' => array('type' => self::TYPE_UINT, 'required' => true),</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> // on définit des valeurs autorisées, ainsi impossible de glitcher le jeu sélectionné</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> 'game' => array('type' => self::TYPE_STRING, 'required' => true, 'allowedValues' => array('BO3', 'MW3', 'BO2')),</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> 'plateform' => array('type' => self::TYPE_STRING, 'required' => true, 'allowedValues' => array('PS3', 'XBOX360')),</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> // identifiant IG du membre</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> 'identifiant' => array('type' => self::TYPE_STRING, 'required' => true),</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> // etat du lobby , par défaut il est en cours</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> 'lobby_state' => array('type' => self::TYPE_STRING, 'required' => true, 'default' => 'cours', 'allowedValues' => array('cours', 'termine', 'refuse')),</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> // on note la date de demande sous forme de timestamp grâce à la classe XenForo_Application</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> 'lobby_date' => array('type' => self::TYPE_UINT, 'default' => XenForo_Application::$time)</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> ));</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> protected function _getExistingData($data)</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> if (!$id = $this->_getExistingPrimaryKey($data, 'lobby_id'))</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> return false;</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> return array('lobbys' => XenForo_Model::create('Lobbys_Model_Lobbys')->getLobbyById($id));</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> protected function _getUpdateCondition($table)</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> return 'lobby_id = ' . $this->_db->quote($this->getExisting('lobby_id'));</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">}</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[/PHP]</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">La prochaine étape consiste à créer un </span><span style="font-family: 'MyriadPro'">Installer</span><span style="font-family: 'MyriadPro Light'">, celui-ci va nous permettre d'ajouter [FA]fa-download[/FA] ou supprimer [FA]fa-upload[/FA] des tables & colonnes à notre base de données à chaque installation ou désinstallation (et mise à jour) de notre add-on. </span></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Créez un fichier </span><span style="font-family: 'MyriadPro'">Installer.php</span><span style="font-family: 'MyriadPro Light'"> à la racine de votre dossier parent, il existe différente façon de créer un </span><span style="font-family: 'MyriadPro'">Installer</span><span style="font-family: 'MyriadPro Light'"> je vous donne la plus simple.</span></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-border fa-code[/FA] </span></span><span style="font-family: 'MyriadPro'">INSTALLER.PHP</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[PHP]<?php</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">class Lobbys_Installer</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">{</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> protected static $table = array(</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> 'createQuery' => "CREATE TABLE IF NOT EXISTS `lobbys` (</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> `lobby_id` INT( 10 ) NOT NULL AUTO_INCREMENT,</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> `user_id` INT ( 10 ) NOT NULL,</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> `game` VARCHAR ( 255 ) NOT NULL,</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> `plateform` VARCHAR ( 255 ) NOT NULL,</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> `identifiant` VARCHAR ( 255 ) NOT NULL,</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> `lobby_state` ENUM ( `cours`, `termine`, `refuse` ) NOT NULL,</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> `lobby_date` VARCHAR ( 255 ) NOT NULL UNSIGNED,</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> PRIMARY KEY (`lobby_id`)</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci"',</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> 'dropQuery' => 'DROP TABLE IF EXISTS `lobbys`'</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> );</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> /*</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> Lors de l'installation c'est cette fonction qui est appelée</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> */</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> public static function install()</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $db = XenForo_Application::get('db');</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $db->query(self::$table['createQuery']);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> /*</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> Lors de la désinstallation c'est cette fonction qui est appelée</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> */</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> public static function uninstall()</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $db = XenForo_Application::get('db');</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $db->query(self::$table['dropQuery']);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">}</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[/PHP]</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">Comme je l'ai indiqué, lors de l'installation une fonction est exécutée qui elle même exécute une requête SQL [FA]fa-database[/FA] le processus est le même pour la désinstallation.</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Je vous invite à modifier votre add-on depuis votre ACP pour renseigner les classes et fonctions d'</span><span style="font-family: 'MyriadPro'">installation</span><span style="font-family: 'MyriadPro Light'"> / </span><span style="font-family: 'MyriadPro'">désinstallation</span><span style="font-family: 'MyriadPro Light'">.</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[ATTACH=full]100904[/ATTACH] </span></span></span></span></span></p></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></p><p><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Exportez l'add-on [FA]fa-external-link-square[/FA] et mettez le à jour pour procéder à l'installation de notre table, si l'installation se passe correctement vous devriez voir apparaître la page du processus d'installation XF.</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Créez un fichier </span><span style="font-family: 'MyriadPro'">Lobbys.php</span><span style="font-family: 'MyriadPro Light'"> dans le dossier </span><span style="font-family: 'MyriadPro'">Model</span><span style="font-family: 'MyriadPro Light'">, ce fichier contiendra pour le moment une fonction qui nous permettra de récupérer un lobby via son identifiant </span><span style="font-family: 'MyriadPro'">unique [FA]fa-key[/FA]</span><span style="font-family: 'MyriadPro Light'">. </span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-border fa-code[/FA] </span></span><span style="font-family: 'MyriadPro'">LOBBYS.PHP</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[PHP]<?php</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">class Lobbys_Model_Lobbys extends XenForo_Model</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">{</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> public function getLobbyById($lobbyId)</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> return $this->_getDb()->fetchRow('SELECT * FROM lobbys WHERE lobby_id = ?', $lobbyId);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">}</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[/PHP]</span></span></span></span></span></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px">[ATTACH=full]101061[/ATTACH]</span></span></p></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">Passons à l'insertion de données, pour se faire nous allons utiliser notre </span></span><span style="font-family: 'MyriadPro'">DataWriter<span style="font-family: 'MyriadPro Light'"> dans notre </span></span><span style="font-family: 'MyriadPro'">ControllerPublic</span><span style="font-family: 'MyriadPro Light'">, pour </span><span style="font-family: 'MyriadPro-Light'"><u>sauvegarder</u></span><span style="font-family: 'MyriadPro Light'"><u> nos données</u> nous allons tout simplement créer une méthode, une action </span><span style="font-family: 'MyriadPro'"><span style="font-family: 'MyriadPro Light'"><em>Save</em> qui se chargera de les sauvegarder uniquement lorsque nous l'utilisons avec le type de requête HTTP : </span></span><span style="font-family: 'MyriadPro'"><span style="font-family: 'MyriadPro Light'"><u>POST</u>. <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite348" alt=":cool:" title="Cool :cool:" loading="lazy" data-shortname=":cool:" /></span></span></span></span></p></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro-Light'">[FA]fa-border fa-code[/FA] </span></span></span><span style="font-family: 'MyriadPro'"><span style="font-size: 15px">INDEX</span></span><span style="font-size: 15px"><span style="font-family: 'MyriadPro'">.PHP</span> </span><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px">(actionSave())</span></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[PHP]public function actionSave()</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> //on instancie l'utilisateur courant.</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $visitor = XenForo_Visitor::getInstance();</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> if(!$visitor['user_id'])</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> //si l'utilisateur n'est pas connecté on renvoit une erreur de permissions</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> return $this->responseNoPermission();</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> //on vérifie si la requête est en POST uniquement, dans le cas contraire une erreur automatique sera retournée.</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $this->_assertPostOnly();</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> //on récupère nos valeurs de champs</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $game = $this->_input->filterSingle('game', XenForo_Input::STRING);</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $plateform = $this->_input->filterSingle('plateform', XenForo_Input::STRING);</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $identifiant = $this->_input->filterSingle('game_id', XenForo_Input::STRING);</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> //on crée une instance de notre DW.</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $dw = XenForo_DataWriter::create('Lobbys_DataWriter_Lobbys');</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> //on définit nos champs / valeurs de cette manière.</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $dw->set('user_id', $visitor['user_id']); // on récupère l'identifiant du membre courant.</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $dw->set('game', $game);</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $dw->set('plateform', $plateform);</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $dw->set('identifiant', $identifiant);</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> /*</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> Une fois que l'on a définit ce dont on a besoin, on sauvegarde nos données.</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> Nous n'avons pas besoin de sauvegarder l'état de notre lobby car il y a déjà une valeur par défaut, pareil pour la date.</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> */</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> $dw->save();</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> //on effectue une redirection avec un message de succès.</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS,</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> XenForo_Link::buildPublicLink('/'),</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> new XenForo_Phrase('lobbys_index_success'));</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[/PHP]</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Tentez de remplir le formulaire, sauvegardez le et vous obtiendrez </span><span style="font-family: 'MyriadPro'">un message de succès </span><span style="font-family: 'MyriadPro Light'">ainsi qu'une redirection vers l'accueil. <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite355" alt=":)" title=":) :)" loading="lazy" data-shortname=":)" /></span></span></span></span></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[ATTACH=full]100873[/ATTACH]</span></span></span></span></p></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">Nous avons déjà parcouru du chemin [FA]fa-hand-peace-o[/FA], passons à l'affichage des demandes de lobby nous allons utiliser notre </span></span><span style="font-family: 'MyriadPro'">ControllerPublic</span><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> et notre </span></span><span style="font-family: 'MyriadPro'">Model</span><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> pour se faire.</span></span></span></span></p></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Créez une fonction <em>getAllLobbys </em>qui va nous permettre comme son nom l'indique de récupérer tous les lobbys, cette requête va être particulière puisque nous devons également récupérer les données de chaque demandeur de lobby.</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'">[FA]fa-border fa-code[/FA] </span></span></span></span><span style="font-family: 'MyriadPro'"><span style="font-size: 15px">LOBBYS</span></span><span style="font-size: 15px"><span style="font-family: 'MyriadPro'">.PHP</span> </span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[PHP] /*</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> * Il existe des manières bien plus propre de réaliser ceci mais je pars de 0 afin de vous expliquer les bases, inutile pour le moment de vous rendre la tâche trop compliquée.</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> */</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> public function getAllLobbys()</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> return $this->_getDb()->fetchAll('SELECT * FROM lobbys INNER JOIN xf_user ON lobbys.user_id = xf_user.user_id');</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> }[/PHP]</span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Passons au </span></span><span style="font-family: 'MyriadPro'">ControllerPublic </span><span style="font-family: 'MyriadPro Light'">nous allons créer une action <em>all </em>qui va nous permettre de </span><span style="font-family: 'MyriadPro'">lister</span><span style="font-family: 'MyriadPro Light'"> toutes les demandes de lobby automatiquement, en soit celle-ci ne fait que d'afficher une template avec un tableau de paramètre qui contient nos demandes.</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-border fa-code[/FA]</span></span> </span><span style="font-family: 'MyriadPro'"><span style="font-size: 15px">INDEX</span></span><span style="font-size: 15px"><span style="font-family: 'MyriadPro'">.PHP</span> <span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">(actionAll)</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[PHP] public function actionAll()</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> //models, nous instancions notre model afin d'utiliser notre fonction getAllLobbys.</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $lobbysModel = XenForo_Model::create('Lobbys_Model_Lobbys');</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> //les demandes</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $lobbys = $lobbysModel->getAllLobbys();</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> return $this->responseView('Lobbys_ViewPublic_All', 'lobbys_all', $params = ['lobbys' => $lobbys]);</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> }[/PHP]</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Enfin, crééons une template <em>lobbys_all </em>qui contiendra un tableau parcouru par chaque demande.</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'">[FA]fa-border fa-code[/FA] </span></span></span></span><span style="font-family: 'MyriadPro'"><span style="font-size: 15px">LOBBYS_ALL</span></span> </span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[HTML]<xen:title>{xen:phrase lobbys_all_title}</xen:title></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><xen:description>{xen:phrase lobbys_all_description}</xen:description></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><xen:navigation></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <xen:breadcrumb source="$nodeBreadCrumbs" /></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></xen:navigation></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><xen:if is="{$lobbys}"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <table class="dataTable"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <tr class="dataRow subtle"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <th width="20%">{xen:phrase user}</th></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <th width="38%">{xen:phrase lobbys_all_game}</th></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <th width="32%">{xen:phrase lobbys_all_plateform}</th></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <th width="10%">{xen:phrase lobbys_all_state}</th></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <th width="10%">{xen:phrase lobbys_all_date}</th></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> </tr></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <xen:foreach loop="$lobbys" value="$lobby"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <tr class="dataRow"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <td><xen:username user="{$lobby}" rich="true" /></td></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <td>{$lobby.game}</td></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <td>{$lobby.plateform}</td></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <td><a href="{xen:link 'lobby/update', $lobby}"><xen:if is="{$lobby.lobby_state} == 'cours'">{xen:phrase lobbys_all_state_cours}<xen:elseif is="{$lobby.lobby_state} == 'refuse'" />{xen:phrase lobbys_all_state_refuse}<xen:elseif is="{$lobby.lobby_state} == 'termine'" />{xen:phrase lobbys_all_state_termine}</xen:if></a></td></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <td><xen:datetime time="{$lobby.lobby_date}"/></td></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> </tr></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> </xen:foreach></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> </table></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><xen:else /></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></xen:if>[/HTML]</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Rendez-vous sur l'URL suivante : <a href="https://monsite.fr/lobby/all" target="_blank">https://monsite.fr/lobby/all</a> ! <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite363" alt=":smile:" title="Smile :smile:" loading="lazy" data-shortname=":smile:" /></span></span></span></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[ATTACH=full]101208[/ATTACH]</span></span></span></p></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[ATTACH=full]100874[/ATTACH]</span></span></span></span></p></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">Pour cet avant dernier chapitre nous allons créer une fonctionnalité qui va permettre de modifier l'état [FA]fa-info-circle[/FA] de la demande du lobby, pour se faire nous allons globalement créer une action dans notre </span></span><span style="font-family: 'MyriadPro'">Controller.</span></span></span></p></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Créez une template avec le titre <em>lobbys_update</em>.</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-border fa-code[/FA]</span></span> </span><span style="font-family: 'MyriadPro'"><span style="font-size: 15px">LOBBYS_UPDATE</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[HTML]<xen:h1>{xen:phrase lobbys_update}</xen:h1></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><xen:navigation></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <xen:breadcrumb source="$nodeBreadCrumbs" /></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></xen:navigation></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><form action="{xen:link 'lobby/update', $lobby}" method="post" class="xenForm AutoValidator" data-redirect="yes"></span></span></span></span></p><p> <span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <dl class="ctrlUnit"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <dt><label>{xen:phrase lobbys_all_state}:</label></dt></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <dd><select name="lobby_state"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <option {xen:if '{$lobby.lobby_state} == "cours"', 'selected'} value="cours">{xen:phrase lobbys_all_state_cours}</option></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <option {xen:if '{$lobby.lobby_state} == "termine"', 'selected'} value="termine">{xen:phrase lobbys_all_state_termine}</option></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <option {xen:if '{$lobby.lobby_state} == "refuse"', 'selected'} value="refuse">{xen:phrase lobbys_all_state_refuse}</option></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> </select></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> </dd></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> </dl></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <dl class="ctrlUnit submitUnit"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <dt></dt></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <dd></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <input type="submit" value="{xen:phrase save_changes}" accesskey="s" class="button primary" /></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> </dd></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> </dl></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> <input type="hidden" name="_xfToken" value="{$visitor.csrf_token_page}" /></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></form>[/HTML]</span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Puis </span><span style="font-family: 'MyriadPro-Light'">créons</span><span style="font-family: 'MyriadPro Light'"> une action update dans notre </span><span style="font-family: 'MyriadPro'">Controller</span><span style="font-family: 'MyriadPro Light'">,<u> si la requête est de type GET</u> nous affichons simplement notre </span><em><span style="font-family: 'MyriadPro Light'">template </span></em><span style="font-family: 'MyriadPro Light'">pour choisir l'état de notre demande <u>si c'est de type POST</u> nous traitons la requête en utilisant notre </span><span style="font-family: 'MyriadPro'">DataWriter</span><span style="font-family: 'MyriadPro Light'">.</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro-Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'">[FA]fa-border fa-code[/FA] </span></span></span></span></span><span style="font-size: 15px"><span style="font-family: 'MyriadPro'">INDEX.PHP</span><span style="font-family: 'MyriadPro-Regular'"><span style="font-family: 'MyriadPro Light'"> (actionUpdate())</span></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[PHP]public function actionUpdate()</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> //input</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $lobbyId = $this->_input->filterSingle('lobby_id', XenForo_Input::UINT);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $lobbysModel = XenForo_Model::create('Lobbys_Model_Lobbys');</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $lobby = $lobbysModel->getLobbyById($lobbyId);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> //on vérifie si la demande existe</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> if(!$lobby)</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> return $this->responseError(new XenForo_Phrase('requested_lobby_not_found'));</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> //si la requête est de type POST, donc soumission du formulaire</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> if($this->_request->isPost())</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $lobbyState = $this->_input->filterSingle('lobby_state', XenForo_Input::STRING);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $dw = XenForo_DataWriter::create('Lobbys_DataWriter_Lobbys');</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $dw->setExistingData($lobbyId);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $dw->set('lobby_state', $lobbyState);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $dw->save();</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> //on effectue une redirection avec un message de succès.</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS,</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> XenForo_Link::buildPublicLink('lobby/all'),</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> new XenForo_Phrase('lobbys_update_success'));</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> return $this->responseView('Lobbys_ViewPublic_Update', 'lobbys_update', $params = ['lobby' => $lobby]);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> }[/PHP]</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Revenez sur notre liste de demandes, puis </span><span style="font-family: 'MyriadPro'">cliquez sur son état pour être redirigé vers la page d'édition</span><span style="font-family: 'MyriadPro Light'"> de celui-ci, soumettez et observez ! <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite355" alt=":)" title=":) :)" loading="lazy" data-shortname=":)" /></span></span></span></span></span></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[ATTACH=full]101211[/ATTACH]</span></span></span></p></span></span></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[ATTACH=full]100875[/ATTACH]</span></span></span></span></p></span></span></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">Pour notre dernier chapitre nous allons tout simplement créer la fonctionnalité qui nous permettra de </span></span><span style="font-family: 'MyriadPro'">supprimer notre demande en cochant une case sur la page d'édition de l'état</span><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"> de celui-ci. <img src="/images/smiley-pack/neo.gif" class="smilie" loading="lazy" alt=":neo:" title="Neo :neo:" data-shortname=":neo:" /></span></span></span></span></p></span></span></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[FA]fa-angle-right[/FA] Modifions notre action update qui prendra en compte notre case à cocher pour supprimer notre demande, ainsi à la soumission </span><span style="font-family: 'MyriadPro'">si nous détectons que cette case a été cochée nous supprimons la demande</span><span style="font-family: 'MyriadPro Light'">.</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-size: 15px"><span style="font-size: 15px"><span style="font-family: 'MyriadPro-Light'"><span style="font-family: 'MyriadPro Light'">[FA]fa-border fa-code[/FA]</span></span><span style="font-family: 'MyriadPro'"> INDEX.PHP</span><span style="font-family: 'MyriadPro Light'"> (actionUpdate())</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'">[PHP] </span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> public function actionUpdate()</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> //input</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $lobbyId = $this->_input->filterSingle('lobby_id', XenForo_Input::UINT);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $delete = $this->_input->filterSingle('delete', XenForo_Input::UINT);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $lobbysModel = XenForo_Model::create('Lobbys_Model_Lobbys');</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $lobby = $lobbysModel->getLobbyById($lobbyId);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> //on vérifie si la demande existe</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> if(!$lobby)</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> return $this->responseError(new XenForo_Phrase('requested_lobby_not_found'));</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> //si la requête est de type POST, donc soumission du formulaire</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> if($this->_request->isPost())</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $lobbyState = $this->_input->filterSingle('lobby_state', XenForo_Input::STRING);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $dw = XenForo_DataWriter::create('Lobbys_DataWriter_Lobbys');</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $dw->setExistingData($lobbyId);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> if($delete)</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> {</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $dw->delete();</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> else {</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $dw->set('lobby_state', $lobbyState);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> $dw->save();</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> //on effectue une redirection avec un message de succès.</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS,</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> XenForo_Link::buildPublicLink('lobby/all'),</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> new XenForo_Phrase('lobbys_update_success'));</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> }</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"></span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> return $this->responseView('Lobbys_ViewPublic_Update', 'lobbys_update', $params = ['lobby' => $lobby]);</span></span></span></span></span></span></p><p><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"> }[/PHP]</span></span></span></span></span></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px">[ATTACH=full]101212[/ATTACH]</span></span></p></span></span></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-size: 15px"><span style="font-family: 'MyriadPro Light'"><span style="font-family: 'MyriadPro Light'">[ATTACH=full]100876[/ATTACH]</span></span></span></span></p><p></span></span></span></p></blockquote><p></p>
[QUOTE="Rivals, post: 6917715, member: 694298"] [CENTER][ATTACH=full]100872[/ATTACH] [FONT=MyriadPro Light]Bonjour à tous [FA]fa-smile-o[/FA], nous allons aujourd'hui apprendre à créer notre premier[/FONT][FONT=MyriadPro] add-On [FA]fa-puzzle-piece[/FA] CRUD (Create, Read, Update, Delete)[/FONT][FONT=MyriadPro Light] sous le CMS [/FONT][FONT=MyriadPro]XenForo[/FONT][FONT=MyriadPro Light]. [/FONT][/CENTER] [FONT=MyriadPro-Light][FA]fa-align-justify[/FA] [U]SOMMAIRE :[/U][/FONT] [INDENT][FONT=MyriadPro-Light][FA]fa-angle-right[/FA] [/FONT][FONT=MyriadPro-Regular]Architecture[/FONT] [FONT=MyriadPro Light] [FA]fa-angle-right[/FA] [/FONT][FONT=MyriadPro]Insertion de données[/FONT] [FONT=MyriadPro Light] [FA]fa-angle-right[/FA] [/FONT][FONT=MyriadPro]Affichage de données[/FONT] [FONT=MyriadPro Light] [FA]fa-angle-right[/FA] [/FONT][FONT=MyriadPro]Modification de données[/FONT] [FONT=MyriadPro Light] [FA]fa-angle-right[/FA] [/FONT][FONT=MyriadPro]Suppression de données [/FONT][/INDENT] [FONT=MyriadPro Light][COLOR=#ff8000][FA]fa-border fa-warning[/FA][/COLOR] Avant toute chose je vais vous demander d'activer le mode [I]debug [/I]de votre forum XenForo (créez un environnement de développement, n'utilisez en aucun cas une production). [/FONT] [FONT=MyriadPro][FA]fa-border fa-download[/FA] ACTIVER LE MODE [I]DEBUG[/I][/FONT] [LIST=1] [*][FONT=MyriadPro Light]Ouvrez le fichier [I]Config.php[/I] que vous trouverez dans le dossier [I]Library [/I]de votre FTP.[/FONT] [*][FONT=MyriadPro Light]Ajoutez la ligne suivante : [I]$config['debug'] = true[/I]; .[/FONT] [/LIST] [CENTER][FONT=MyriadPro-Light][ATTACH=full]100879[/ATTACH] [/FONT] [FONT=MyriadPro Light]Dans ce premier chapitre nous allons voir ensemble comment structurer son add-On mais également l'utilité des dossiers [FA]fa-folder-open-o[/FA] qui composeront l'architecture de notre add-On, dans ce tutoriel je vais prendre un exemple particulier :[/FONT] [FONT=MyriadPro]vous êtes lobbyman [FA]fa-child[/FA], vous possédez un forum et vous souhaitez créer un add-On qui permettra à vos membres de demander des lobbys.[/FONT][/CENTER] [LIST=1] [*][FONT=MyriadPro Light]Un add-On XenForo se situera toujours dans le dossier [I]library[/I] (mais pas que, nous verrons ceci par la suite), [/FONT][FONT=MyriadPro-Light]créons[/FONT][FONT=MyriadPro Light] un dossier [I]Lobbys [/I]qui sera [/FONT][FONT=MyriadPro]le dossier parent [FA]fa-folder[/FA][/FONT][FONT=MyriadPro Light] de notre add-On.[/FONT] [*][FONT=MyriadPro Light]Dans ce dossier [/FONT][I][FONT=MyriadPro Light]Lobbys [/FONT][/I][FONT=MyriadPro Light]nous allons créer un premier dossier [/FONT][I][FONT=MyriadPro]Model[/FONT][/I][FONT=MyriadPro Light] qui permettra d'effectuer des requêtes [FA]fa-exchange[/FA] de type : [/FONT][I][FONT=MyriadPro Light]je veux récupérer telle demande de lobby, je veux récupérer toutes les demandes de lobby entre telle date et telle date etc. [/FONT][/I] [*][FONT=MyriadPro Light]Créons un autre dossier nommé [/FONT][FONT=MyriadPro][I]DataWriter[/I][/FONT][FONT=MyriadPro Light], ce dossier nous permettra de [I]créer[/I], [I]modifier[/I] et [I]supprimer[/I] des demandes de lobby.[/FONT] [*][FONT=MyriadPro Light]Puis un dossier [/FONT][FONT=MyriadPro][I]Route[/I][/FONT][FONT=MyriadPro Light] et un sous dossier [/FONT][FONT=MyriadPro][I]Prefix[/I][/FONT][FONT=MyriadPro Light], ces dossiers nous permettrons de déclarer notre [I]routing[/I] c'est à dire[/FONT][FONT=MyriadPro] les URLs [FA]fa-link[/FA] à utiliser[/FONT][FONT=MyriadPro Light] pour notre add-On ([U]exemple:[/U] [URL]https://monforum.fr/lobby[/URL]).[/FONT] [*][FONT=MyriadPro Light]Et enfin, terminons notre architecture avec un dossier [/FONT][FONT=MyriadPro][I]ControllerPublic[/I][/FONT][FONT=MyriadPro Light] qui contiendra [/FONT][FONT=MyriadPro]l'algorithme [FA]fa-list-alt[/FA][/FONT][FONT=MyriadPro Light] de notre add-On ([I]si le membre soumet le formulaire alors j'enregistre....[/I]).[/FONT] [/LIST] [CENTER][ATTACH=full]100883[/ATTACH] [I][FONT=MyriadPro Light][SIZE=3](l'architecture finalisée) [/SIZE][/FONT][/I][/CENTER] [FONT=MyriadPro Light][SIZE=4][COLOR=#ff8000][FA]fa-border fa-warning[/FA][/COLOR] Avant toute chose nous devons créer le [I]routing[/I] de notre add-On mais également notre add-On afin que l'on puisse afficher un formulaire [FA]fa-keyboard-o[/FA] de demande de lobbys par exemple.[/SIZE] [FONT=MyriadPro-Regular][FA]fa-border fa-mouse-pointer[/FA] ROUTING BASIQUE[/FONT][/FONT] [LIST] [*][FONT=MyriadPro Light]Rendez-vous sur votre panel d'administration à l'onglet[/FONT] [I][SIZE=4][FONT=MyriadPro-Light]Development[/FONT][/SIZE][/I][SIZE=4] [FONT=MyriadPro Light]puis[/FONT] [/SIZE][I][SIZE=4][FONT=MyriadPro-Light]Create Add-on.[/FONT][/SIZE][/I] [/LIST] [INDENT][INDENT][SIZE=4][FONT=MyriadPro-Light][SIZE=4][U]Add-on ID [/U][/SIZE][U][FONT=MyriadPro Light]:[/FONT][/U] [/FONT][/SIZE][FONT=MyriadPro][COLOR=rgb(0, 0, 0)][SIZE=4]lobbys[/SIZE][/COLOR][/FONT][COLOR=rgb(0, 0, 0)][SIZE=4] [FONT=MyriadPro Light], c'est tout simplement un identifiant unique correspondant à notre add-on.[/FONT][/SIZE][/COLOR] [COLOR=#000000][SIZE=4][U][FONT=MyriadPro Light]Title :[/FONT][/U] [FONT=MyriadPro]Lobbys[/FONT][FONT=MyriadPro Light], explicitement c'est le titre de celui-ci. [U]Version String :[/U] [/FONT][FONT=MyriadPro]1.0.0[/FONT][FONT=MyriadPro-Light].[/FONT] [U][FONT=MyriadPro Light]Version ID :[/FONT][/U] [FONT=MyriadPro]1[/FONT][FONT=MyriadPro-Light].[/FONT][/SIZE][/COLOR] [COLOR=rgb(0, 0, 0)][SIZE=4][U][FONT=MyriadPro Light]URL :[/FONT][/U][FONT=MyriadPro Light] (vous pouvez laisser ce champs vide, ça n'a aucune importance)[/FONT] [U][FONT=MyriadPro Light]Installation Code & Uninstallation Code :[/FONT][/U][FONT=MyriadPro Light] (laissez également vide pour le moment).[/FONT][/SIZE][/COLOR][/INDENT][/INDENT] [LIST] [*][FONT=MyriadPro Light]Sauvegardez [FA]fa-save[/FA] et créez un fichier[/FONT] [FONT=MyriadPro][SIZE=4]Public.php[/SIZE][/FONT][SIZE=4] [FONT=MyriadPro Light]dans le dossier [/FONT][/SIZE][I][FONT=MyriadPro-Light][SIZE=4]Prefix[/SIZE][/FONT][/I][FONT=MyriadPro-Light][SIZE=4] ([/SIZE][/FONT][I][FONT=MyriadPro-Light][SIZE=4][FONT=MyriadPro Light]Route > Prefix[/FONT][/SIZE][/FONT][/I][SIZE=4][FONT=MyriadPro-Light]) [/FONT][FONT=MyriadPro Light]et insérez le code ci-dessous[/FONT][/SIZE] [/LIST] [FONT=MyriadPro-Regular][FA]fa-border fa-code[/FA] CODE[/FONT] [FONT=MyriadPro Light][PHP] <?php class Lobbys_Route_Prefix_Public implements XenForo_Route_Interface { /** * Match a specific route for an already matched prefix. * * @see XenForo_Route_Interface::match() */ public function match($routePath, Zend_Controller_Request_Http $request, XenForo_Router $router) { //on précise que nos URLs (plus particulièrement nos actions) peuvent prendre un paramètre de base : l'identifiant du lobby $action = $router->resolveActionWithIntegerParam($routePath, $request, 'lobby_id'); //on indique notre ControllerPublic que nous allons créer dans le chapitre suivant return $router->getRouteMatch('Lobbys_ControllerPublic_Index', $action, 'lobby'); } /** * Method to build a link to the specified page/action with the provided * data and params. * * @see XenForo_Route_BuilderInterface */ public function buildLink($originalPrefix, $outputPrefix, $action, $extension, $data, array &$extraParams) { return XenForo_Link::buildBasicLinkWithIntegerParam($outputPrefix, $action, $extension, $data, 'lobby_id'); } } ?> [/PHP][/FONT] [LIST] [*][FONT=MyriadPro Light]Rendez-vous sur votre panel d'administration, à l'onglet [I][COLOR=rgb(0, 0, 0)][SIZE=4]Development [/SIZE][/COLOR][/I][COLOR=rgb(0, 0, 0)][SIZE=4]puis [/SIZE][/COLOR][I][COLOR=rgb(0, 0, 0)][SIZE=4]Route Prefixes, [/SIZE][/COLOR][/I][COLOR=rgb(0, 0, 0)][SIZE=4]pour créer un nouveau préfixe de routage. [/SIZE][/COLOR][/FONT] [*][FONT=MyriadPro Light]Remplissez & sauvegardez les champs indiqués avec les valeurs suivantes :[/FONT] [/LIST] [INDENT][INDENT][FONT=MyriadPro Light][U]Route Prefix :[/U] [/FONT][FONT=MyriadPro]lobby[/FONT][FONT=MyriadPro Light] (c'est notre URL de base, exemple : members/[I]{username}.{id}[/I]/[/FONT][FONT=MyriadPro]follow[/FONT][FONT=MyriadPro Light] , l'URL de base est [I]members[/I]). [U]Route Type :[/U] [/FONT][FONT=MyriadPro]Public[/FONT][FONT=MyriadPro Light] . [U]Route Class :[/U] [/FONT][FONT=MyriadPro]Lobbys_Route_Prefix_Public[/FONT][FONT=MyriadPro Light] qui correspond évidemment à la class PHP de notre fichier que nous venons de créer.[/FONT] [U][FONT=MyriadPro Light]Use class to build link :[/FONT][/U] [FONT=MyriadPro]Only when data is provided[/FONT] [FONT=MyriadPro Light][U]Add-on [/U]: [/FONT][FONT=MyriadPro]Lobbys[/FONT][FONT=MyriadPro Light] (techniquement nous lions ce préfixe de routage à notre add-On, ainsi à chaque exportation de notre add-On ce préfixe sera inscrit dans le fichier .XML de notre module) [/FONT][/INDENT][/INDENT] [FONT=MyriadPro Light][SIZE=4][COLOR=rgb(0, 89, 179)][SIZE=4][FA]fa-border fa-info[/FA][/SIZE][/COLOR][SIZE=4][COLOR=rgb(0, 0, 0)] Nous nommons notre fichier "[I]Public[/I]" car vous pouvez également créer un add-On qui concernera le panel d'administration dans ce cas vous devrez créer un fichier "[I]Admin[/I]", vous devrez également modifier le préfixe de route en change le type de [I]route [/I]de [I]Public[/I] à Admin [I]Control Panel[/I].[/COLOR][/SIZE][/SIZE][/FONT] [CENTER] [ATTACH=full]100878[/ATTACH] [FONT=MyriadPro Light]Passons au deuxième chapitre qui porte sur l'insertion [FA]fa-paper-plane-o[/FA] de données nous allons [/FONT][FONT=MyriadPro-Light]interagir[/FONT][FONT=MyriadPro Light] avec deux dossiers qui sont [/FONT][FONT=MyriadPro]DataWriter[/FONT][FONT=MyriadPro Light] et [/FONT][FONT=MyriadPro]ControllerPublic[/FONT][FONT=MyriadPro Light]. [/FONT][/CENTER] [FONT=MyriadPro Light][FA]fa-angle-right[/FA] Dans un premier temps nous allons créer un fichier[/FONT][FONT=MyriadPro] Index.php [FA]fa-file[/FA][/FONT] [FONT=MyriadPro Light]dans le dossier[/FONT] [FONT=MyriadPro][I]ControllerPublic[/I][/FONT][I][FONT=MyriadPro-Light], [/FONT][/I][FONT=MyriadPro Light]ce fichier hérite de la classe[/FONT][I][FONT=MyriadPro-Light] XenForo_ControllerPublic_Abstract[/FONT][/I] [FONT=MyriadPro Light]qui est une classe étendue sur tous les [I]controllers[/I].[/FONT] [FA]fa-border fa-code[/FA] INDEX.PHP [FONT=MyriadPro Light](actionIndex()) [PHP]<?php class Lobbys_ControllerPublic_Index extends XenForo_ControllerPublic_Abstract { /* Action index, affichons "Hello World !"" tout bêtement. */ public function actionIndex() { echo "Hello World !"; } } [/PHP] [FA]fa-angle-right[/FA] Rendez-vous sur l'URL suivante : [URL]https://monforum.fr/lobby[/URL] ! :smile: [/FONT] [CENTER][FONT=MyriadPro Light][ATTACH=full]100884[/ATTACH] [SIZE=3][I](nous avons bien notre Hello World ! d'affiché)[/I] [/SIZE][/FONT][/CENTER] [FONT=MyriadPro Light][SIZE=4][FA]fa-angle-right[/FA] Vous pouvez tout de même voir que nous avons une erreur qui indique qu'aucun retour du controller n'est présent, en effet nous retournons un message brut sans grand intérêt si ce n'est que vous impressionner ( :troll: ), nous avons la possibilité d'[/SIZE][/FONT][FONT=MyriadPro][SIZE=4]afficher une template[/SIZE][/FONT][FONT=MyriadPro Light][SIZE=4] grâce au code ci-dessous mais uniquement aux utilisateurs connectés. :stupéfait: [/SIZE][/FONT] [SIZE=4][FONT=MyriadPro][FA]fa-border fa-code[/FA] INDEX.PHP [/FONT][FONT=MyriadPro Light](actionIndex()) [PHP] //on instancie l'utilisateur courant. $visitor = XenForo_Visitor::getInstance(); if(!$visitor['user_id']) { //si l'utilisateur n'est pas connecté on renvoit une erreur de permissions return $this->responseNoPermission(); } return $this->responseView('Lobbys_ViewPublic_Index', 'lobbys_index', $params = []); [/PHP] [FONT=MyriadPro Light] [FA]fa-angle-right[/FA] Dans ce code nous utilisons une méthode nommée [I]responseView[/I] qui provient de notre controller [I]XenForo_ControllerPublic_Abstract[/I] , d'où l'importance [FA]fa-warning[/FA] d'hériter de cette classe, ainsi le premier paramètre correspond à une classe qui n'est pas importante pour la création de notre add-On, vous pouvez laisser ce paramètre vide, le deuxième paramètre est [/FONT][FONT=MyriadPro]le nom de notre template[/FONT][FONT=MyriadPro Light] et le dernier est [/FONT][FONT=MyriadPro]un tableau de paramètres[/FONT][FONT=MyriadPro Light] qui sera disponible dans notre template [I]lobbys_index[/I]. [FA]fa-angle-right[/FA] Rendez-vous sur notre ACP [FA]fa-gear[/FA], à l'onglet [I]Appearance [/I]puis [I]Templates[/I], créez une template avec le nom que nous lui avons donné précédemment et avec un contenu basique pour essayer le fonctionnement de notre méthode [I]responseView[/I].[/FONT][/FONT][/SIZE] [CENTER][FONT=MyriadPro Light][ATTACH=full]100887[/ATTACH][/FONT][/CENTER] [FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][FA]fa-angle-right[/FA] Revenez sur la page de nos lobbys, [/FONT][FONT=MyriadPro]notre template est bien affichée[/FONT][FONT=MyriadPro Light].[/FONT][/SIZE][/FONT] [CENTER][FONT=MyriadPro Light][ATTACH=full]100889[/ATTACH][/FONT][/CENTER] [FONT=MyriadPro Light][FONT=MyriadPro Light][FA]fa-angle-right[/FA] Modifions notre template afin d'y incorporer quelques éléments comme [/FONT][/FONT][FONT=MyriadPro]un formulaire[/FONT][FONT=MyriadPro Light][FONT=MyriadPro Light] qui va permettre à nos membres de demander un lobby. [/FONT] [FA]fa-border fa-code[/FA] [/FONT][FONT=MyriadPro]LOBBYS_INDEX[/FONT] [FONT=MyriadPro Light][FONT=MyriadPro Light][HTML]<xen:title>{xen:phrase lobbys_index_title}</xen:title> <xen:description>{xen:phrase lobbys_index_description}</xen:description> <xen:navigation> <xen:breadcrumb source="$nodeBreadCrumbs" /> </xen:navigation> <form action="{xen:link 'lobby/save'}" method="post" class="xenForm AutoValidator" data-redirect="yes"> <dl class="ctrlUnit"> <dt><label>{xen:phrase lobbys_index_games_label}:</label></dt> <dd><select name="game"> <option value="BO3">{xen:phrase lobbys_index_games_bo3}</option> <option value="BO2">{xen:phrase lobbys_index_games_bo2}</option> <option value="MW3">{xen:phrase lobbys_index_games_mw3}</option> </select> </dd> </dl> <dl class="ctrlUnit"> <dt><label>{xen:phrase lobbys_index_plateforms_label}:</label></dt> <dd><input type="radio" name="plateform" value="PS3"> {xen:phrase lobbys_index_plateforms_ps3}</br> <input type="radio" name="plateform" value="XBOX360"> {xen:phrase lobbys_index_plateforms_xbox360} </dd> </dl> <dl class="ctrlUnit"> <dt><label>{xen:phrase lobbys_index_games_id_label}:</label></dt> <dd><input type="text" class="textCtrl" name="game_id"> </dd> </dl> <dl class="ctrlUnit submitUnit"> <dt></dt> <dd><input type="submit" value="{xen:phrase lobbys_index_submit}" class="button primary" /></dd> </dl> <input type="hidden" name="_xfToken" value="{$visitor.csrf_token_page}" /> </form>[/HTML] [FONT=MyriadPro Light][COLOR=#ff8000][FA]fa-border fa-warning[/FA][/COLOR] Il vous faudra phraser votre template vous même. [/FONT][/FONT] [CENTER][FONT=MyriadPro Light][FONT=MyriadPro Light][ATTACH=full]100896[/ATTACH] [SIZE=3][I](résultat après avoir modifié la template)[/I] [/SIZE][/FONT][/FONT][/CENTER] [FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][FA]fa-angle-right[/FA] Nous allons maintenant créer un fichier [/FONT][FONT=MyriadPro]Lobbys.php[/FONT][FONT=MyriadPro Light] dans le dossier [/FONT][FONT=MyriadPro]DataWriter[/FONT][FONT=MyriadPro Light]. Ce fichier va nous permettre de déclarer nos champs [FA]fa-navicon[/FA] afin de pouvoir les modifier, supprimer etc. par la suite et ceci plus facilement grâce aux fonctions ci-dessous. :) [FA]fa-border fa-code[/FA][/FONT][FONT=MyriadPro] LOBBYS.PHP[/FONT][/SIZE][/FONT] [FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][PHP] <?php class Lobbys_DataWriter_Lobbys extends XenForo_DataWriter { protected function _getFields() { // nom de la table return array('lobbys' => array( // identifiant du lobby 'lobby_id' => array('type' => self::TYPE_UINT, 'autoIncrement' => true), // identifiant du membre qui demande un lobby 'user_id' => array('type' => self::TYPE_UINT, 'required' => true), // on définit des valeurs autorisées, ainsi impossible de glitcher le jeu sélectionné 'game' => array('type' => self::TYPE_STRING, 'required' => true, 'allowedValues' => array('BO3', 'MW3', 'BO2')), 'plateform' => array('type' => self::TYPE_STRING, 'required' => true, 'allowedValues' => array('PS3', 'XBOX360')), // identifiant IG du membre 'identifiant' => array('type' => self::TYPE_STRING, 'required' => true), // etat du lobby , par défaut il est en cours 'lobby_state' => array('type' => self::TYPE_STRING, 'required' => true, 'default' => 'cours', 'allowedValues' => array('cours', 'termine', 'refuse')), // on note la date de demande sous forme de timestamp grâce à la classe XenForo_Application 'lobby_date' => array('type' => self::TYPE_UINT, 'default' => XenForo_Application::$time) )); } protected function _getExistingData($data) { if (!$id = $this->_getExistingPrimaryKey($data, 'lobby_id')) { return false; } return array('lobbys' => XenForo_Model::create('Lobbys_Model_Lobbys')->getLobbyById($id)); } protected function _getUpdateCondition($table) { return 'lobby_id = ' . $this->_db->quote($this->getExisting('lobby_id')); } } [/PHP] [SIZE=4][FONT=MyriadPro Light][FONT=MyriadPro Light] La prochaine étape consiste à créer un [/FONT][FONT=MyriadPro]Installer[/FONT][FONT=MyriadPro Light], celui-ci va nous permettre d'ajouter [FA]fa-download[/FA] ou supprimer [FA]fa-upload[/FA] des tables & colonnes à notre base de données à chaque installation ou désinstallation (et mise à jour) de notre add-on. [FA]fa-angle-right[/FA] Créez un fichier [/FONT][FONT=MyriadPro]Installer.php[/FONT][FONT=MyriadPro Light] à la racine de votre dossier parent, il existe différente façon de créer un [/FONT][FONT=MyriadPro]Installer[/FONT][FONT=MyriadPro Light] je vous donne la plus simple.[/FONT][/FONT][/SIZE] [SIZE=4][FONT=MyriadPro-Light][FONT=MyriadPro Light][FA]fa-border fa-code[/FA] [/FONT][/FONT][FONT=MyriadPro]INSTALLER.PHP[/FONT][/SIZE][/FONT][/SIZE][/FONT] [FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][FONT=MyriadPro Light][FONT=MyriadPro Light][PHP]<?php class Lobbys_Installer { protected static $table = array( 'createQuery' => "CREATE TABLE IF NOT EXISTS `lobbys` ( `lobby_id` INT( 10 ) NOT NULL AUTO_INCREMENT, `user_id` INT ( 10 ) NOT NULL, `game` VARCHAR ( 255 ) NOT NULL, `plateform` VARCHAR ( 255 ) NOT NULL, `identifiant` VARCHAR ( 255 ) NOT NULL, `lobby_state` ENUM ( `cours`, `termine`, `refuse` ) NOT NULL, `lobby_date` VARCHAR ( 255 ) NOT NULL UNSIGNED, PRIMARY KEY (`lobby_id`) ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci"', 'dropQuery' => 'DROP TABLE IF EXISTS `lobbys`' ); /* Lors de l'installation c'est cette fonction qui est appelée */ public static function install() { $db = XenForo_Application::get('db'); $db->query(self::$table['createQuery']); } /* Lors de la désinstallation c'est cette fonction qui est appelée */ public static function uninstall() { $db = XenForo_Application::get('db'); $db->query(self::$table['dropQuery']); } } [/PHP] Comme je l'ai indiqué, lors de l'installation une fonction est exécutée qui elle même exécute une requête SQL [FA]fa-database[/FA] le processus est le même pour la désinstallation. [FA]fa-angle-right[/FA] Je vous invite à modifier votre add-on depuis votre ACP pour renseigner les classes et fonctions d'[/FONT][FONT=MyriadPro]installation[/FONT][FONT=MyriadPro Light] / [/FONT][FONT=MyriadPro]désinstallation[/FONT][FONT=MyriadPro Light]. [/FONT][/FONT][/FONT][/SIZE][/FONT] [CENTER][FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][FONT=MyriadPro Light][FONT=MyriadPro Light][ATTACH=full]100904[/ATTACH] [/FONT][/FONT][/FONT][/SIZE][/FONT][/CENTER] [SIZE=4][FONT=MyriadPro Light][FONT=MyriadPro Light][FONT=MyriadPro Light][FA]fa-angle-right[/FA] Exportez l'add-on [FA]fa-external-link-square[/FA] et mettez le à jour pour procéder à l'installation de notre table, si l'installation se passe correctement vous devriez voir apparaître la page du processus d'installation XF.[/FONT][/FONT][/FONT][/SIZE] [FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][FONT=MyriadPro Light][FONT=MyriadPro Light] [FA]fa-angle-right[/FA] Créez un fichier [/FONT][FONT=MyriadPro]Lobbys.php[/FONT][FONT=MyriadPro Light] dans le dossier [/FONT][FONT=MyriadPro]Model[/FONT][FONT=MyriadPro Light], ce fichier contiendra pour le moment une fonction qui nous permettra de récupérer un lobby via son identifiant [/FONT][FONT=MyriadPro]unique [FA]fa-key[/FA][/FONT][FONT=MyriadPro Light]. [/FONT][/FONT] [SIZE=4][FONT=MyriadPro-Light][FONT=MyriadPro Light][FA]fa-border fa-code[/FA] [/FONT][/FONT][FONT=MyriadPro]LOBBYS.PHP[/FONT][/SIZE][/FONT][/SIZE][/FONT] [FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][FONT=MyriadPro Light][FONT=MyriadPro Light][PHP]<?php class Lobbys_Model_Lobbys extends XenForo_Model { public function getLobbyById($lobbyId) { return $this->_getDb()->fetchRow('SELECT * FROM lobbys WHERE lobby_id = ?', $lobbyId); } } [/PHP][/FONT][/FONT][/FONT][/SIZE][/FONT] [CENTER][FONT=MyriadPro Light][SIZE=4][ATTACH=full]101061[/ATTACH] [FONT=MyriadPro Light][FONT=MyriadPro Light]Passons à l'insertion de données, pour se faire nous allons utiliser notre [/FONT][/FONT][FONT=MyriadPro]DataWriter[FONT=MyriadPro Light] dans notre [/FONT][/FONT][FONT=MyriadPro]ControllerPublic[/FONT][FONT=MyriadPro Light], pour [/FONT][FONT=MyriadPro-Light][U]sauvegarder[/U][/FONT][FONT=MyriadPro Light][U] nos données[/U] nous allons tout simplement créer une méthode, une action [/FONT][FONT=MyriadPro][FONT=MyriadPro Light][I]Save[/I] qui se chargera de les sauvegarder uniquement lorsque nous l'utilisons avec le type de requête HTTP : [/FONT][/FONT][FONT=MyriadPro][FONT=MyriadPro Light][U]POST[/U]. :cool:[/FONT][/FONT] [/SIZE][/FONT][/CENTER] [FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][FONT=MyriadPro-Light][FA]fa-border fa-code[/FA] [/FONT][/FONT][/SIZE][FONT=MyriadPro][SIZE=4]INDEX[/SIZE][/FONT][SIZE=4][FONT=MyriadPro].PHP[/FONT] [/SIZE][FONT=MyriadPro Light][FONT=MyriadPro Light][SIZE=4](actionSave())[/SIZE][/FONT] [PHP]public function actionSave() { //on instancie l'utilisateur courant. $visitor = XenForo_Visitor::getInstance(); if(!$visitor['user_id']) { //si l'utilisateur n'est pas connecté on renvoit une erreur de permissions return $this->responseNoPermission(); } //on vérifie si la requête est en POST uniquement, dans le cas contraire une erreur automatique sera retournée. $this->_assertPostOnly(); //on récupère nos valeurs de champs $game = $this->_input->filterSingle('game', XenForo_Input::STRING); $plateform = $this->_input->filterSingle('plateform', XenForo_Input::STRING); $identifiant = $this->_input->filterSingle('game_id', XenForo_Input::STRING); //on crée une instance de notre DW. $dw = XenForo_DataWriter::create('Lobbys_DataWriter_Lobbys'); //on définit nos champs / valeurs de cette manière. $dw->set('user_id', $visitor['user_id']); // on récupère l'identifiant du membre courant. $dw->set('game', $game); $dw->set('plateform', $plateform); $dw->set('identifiant', $identifiant); /* Une fois que l'on a définit ce dont on a besoin, on sauvegarde nos données. Nous n'avons pas besoin de sauvegarder l'état de notre lobby car il y a déjà une valeur par défaut, pareil pour la date. */ $dw->save(); //on effectue une redirection avec un message de succès. return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('/'), new XenForo_Phrase('lobbys_index_success')); } [/PHP] [FA]fa-angle-right[/FA] Tentez de remplir le formulaire, sauvegardez le et vous obtiendrez [/FONT][FONT=MyriadPro]un message de succès [/FONT][FONT=MyriadPro Light]ainsi qu'une redirection vers l'accueil. :)[/FONT][/FONT][/SIZE][/FONT] [CENTER][FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][FONT=MyriadPro Light][ATTACH=full]100873[/ATTACH] Nous avons déjà parcouru du chemin [FA]fa-hand-peace-o[/FA], passons à l'affichage des demandes de lobby nous allons utiliser notre [/FONT][/FONT][FONT=MyriadPro]ControllerPublic[/FONT][FONT=MyriadPro Light][FONT=MyriadPro Light] et notre [/FONT][/FONT][FONT=MyriadPro]Model[/FONT][FONT=MyriadPro Light][FONT=MyriadPro Light] pour se faire. [/FONT][/FONT][/SIZE][/FONT][/CENTER] [FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][FONT=MyriadPro Light][FA]fa-angle-right[/FA] Créez une fonction [I]getAllLobbys [/I]qui va nous permettre comme son nom l'indique de récupérer tous les lobbys, cette requête va être particulière puisque nous devons également récupérer les données de chaque demandeur de lobby. [/FONT][/FONT][/SIZE][/FONT] [SIZE=4][FONT=MyriadPro-Light][FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro-Light][FA]fa-border fa-code[/FA] [/FONT][/SIZE][/FONT][/FONT][FONT=MyriadPro][SIZE=4]LOBBYS[/SIZE][/FONT][SIZE=4][FONT=MyriadPro].PHP[/FONT] [/SIZE][/SIZE] [FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][FONT=MyriadPro Light][PHP] /* * Il existe des manières bien plus propre de réaliser ceci mais je pars de 0 afin de vous expliquer les bases, inutile pour le moment de vous rendre la tâche trop compliquée. */ public function getAllLobbys() { return $this->_getDb()->fetchAll('SELECT * FROM lobbys INNER JOIN xf_user ON lobbys.user_id = xf_user.user_id'); }[/PHP] [FA]fa-angle-right[/FA] Passons au [/FONT][/FONT][FONT=MyriadPro]ControllerPublic [/FONT][FONT=MyriadPro Light]nous allons créer une action [I]all [/I]qui va nous permettre de [/FONT][FONT=MyriadPro]lister[/FONT][FONT=MyriadPro Light] toutes les demandes de lobby automatiquement, en soit celle-ci ne fait que d'afficher une template avec un tableau de paramètre qui contient nos demandes. [/FONT] [SIZE=4][FONT=MyriadPro-Light][FONT=MyriadPro Light][FA]fa-border fa-code[/FA][/FONT][/FONT] [/SIZE][FONT=MyriadPro][SIZE=4]INDEX[/SIZE][/FONT][SIZE=4][FONT=MyriadPro].PHP[/FONT] [FONT=MyriadPro Light][FONT=MyriadPro Light](actionAll)[/FONT][/FONT][/SIZE] [FONT=MyriadPro Light][PHP] public function actionAll() { //models, nous instancions notre model afin d'utiliser notre fonction getAllLobbys. $lobbysModel = XenForo_Model::create('Lobbys_Model_Lobbys'); //les demandes $lobbys = $lobbysModel->getAllLobbys(); return $this->responseView('Lobbys_ViewPublic_All', 'lobbys_all', $params = ['lobbys' => $lobbys]); }[/PHP] [FA]fa-angle-right[/FA] Enfin, crééons une template [I]lobbys_all [/I]qui contiendra un tableau parcouru par chaque demande. [/FONT][/SIZE][/FONT] [SIZE=4][FONT=MyriadPro-Light][FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro-Light][FA]fa-border fa-code[/FA] [/FONT][/SIZE][/FONT][/FONT][FONT=MyriadPro][SIZE=4]LOBBYS_ALL[/SIZE][/FONT] [/SIZE] [FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][HTML]<xen:title>{xen:phrase lobbys_all_title}</xen:title> <xen:description>{xen:phrase lobbys_all_description}</xen:description> <xen:navigation> <xen:breadcrumb source="$nodeBreadCrumbs" /> </xen:navigation> <xen:if is="{$lobbys}"> <table class="dataTable"> <tr class="dataRow subtle"> <th width="20%">{xen:phrase user}</th> <th width="38%">{xen:phrase lobbys_all_game}</th> <th width="32%">{xen:phrase lobbys_all_plateform}</th> <th width="10%">{xen:phrase lobbys_all_state}</th> <th width="10%">{xen:phrase lobbys_all_date}</th> </tr> <xen:foreach loop="$lobbys" value="$lobby"> <tr class="dataRow"> <td><xen:username user="{$lobby}" rich="true" /></td> <td>{$lobby.game}</td> <td>{$lobby.plateform}</td> <td><a href="{xen:link 'lobby/update', $lobby}"><xen:if is="{$lobby.lobby_state} == 'cours'">{xen:phrase lobbys_all_state_cours}<xen:elseif is="{$lobby.lobby_state} == 'refuse'" />{xen:phrase lobbys_all_state_refuse}<xen:elseif is="{$lobby.lobby_state} == 'termine'" />{xen:phrase lobbys_all_state_termine}</xen:if></a></td> <td><xen:datetime time="{$lobby.lobby_date}"/></td> </tr> </xen:foreach> </table> <xen:else /> </xen:if>[/HTML] [FA]fa-angle-right[/FA] Rendez-vous sur l'URL suivante : [URL]https://monsite.fr/lobby/all[/URL] ! :smile:[/FONT][/SIZE][/FONT] [CENTER][FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][ATTACH=full]101208[/ATTACH] [FONT=MyriadPro Light][ATTACH=full]100874[/ATTACH] Pour cet avant dernier chapitre nous allons créer une fonctionnalité qui va permettre de modifier l'état [FA]fa-info-circle[/FA] de la demande du lobby, pour se faire nous allons globalement créer une action dans notre [/FONT][/FONT][FONT=MyriadPro]Controller.[/FONT][/SIZE][/FONT] [/CENTER] [FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][FA]fa-angle-right[/FA] Créez une template avec le titre [I]lobbys_update[/I]. [/FONT][/SIZE][/FONT] [SIZE=4][SIZE=4][FONT=MyriadPro-Light][FONT=MyriadPro Light][FA]fa-border fa-code[/FA][/FONT][/FONT] [/SIZE][FONT=MyriadPro][SIZE=4]LOBBYS_UPDATE[/SIZE][/FONT][/SIZE] [FONT=MyriadPro Light][SIZE=4] [FONT=MyriadPro Light][HTML]<xen:h1>{xen:phrase lobbys_update}</xen:h1> <xen:navigation> <xen:breadcrumb source="$nodeBreadCrumbs" /> </xen:navigation> <form action="{xen:link 'lobby/update', $lobby}" method="post" class="xenForm AutoValidator" data-redirect="yes"> <dl class="ctrlUnit"> <dt><label>{xen:phrase lobbys_all_state}:</label></dt> <dd><select name="lobby_state"> <option {xen:if '{$lobby.lobby_state} == "cours"', 'selected'} value="cours">{xen:phrase lobbys_all_state_cours}</option> <option {xen:if '{$lobby.lobby_state} == "termine"', 'selected'} value="termine">{xen:phrase lobbys_all_state_termine}</option> <option {xen:if '{$lobby.lobby_state} == "refuse"', 'selected'} value="refuse">{xen:phrase lobbys_all_state_refuse}</option> </select> </dd> </dl> <dl class="ctrlUnit submitUnit"> <dt></dt> <dd> <input type="submit" value="{xen:phrase save_changes}" accesskey="s" class="button primary" /> </dd> </dl> <input type="hidden" name="_xfToken" value="{$visitor.csrf_token_page}" /> </form>[/HTML] [SIZE=4][FONT=MyriadPro Light] [FA]fa-angle-right[/FA] Puis [/FONT][FONT=MyriadPro-Light]créons[/FONT][FONT=MyriadPro Light] une action update dans notre [/FONT][FONT=MyriadPro]Controller[/FONT][FONT=MyriadPro Light],[U] si la requête est de type GET[/U] nous affichons simplement notre [/FONT][I][FONT=MyriadPro Light]template [/FONT][/I][FONT=MyriadPro Light]pour choisir l'état de notre demande [U]si c'est de type POST[/U] nous traitons la requête en utilisant notre [/FONT][FONT=MyriadPro]DataWriter[/FONT][FONT=MyriadPro Light]. [/FONT][/SIZE][/FONT] [SIZE=4][FONT=MyriadPro-Light][FONT=MyriadPro Light][FONT=MyriadPro-Light][SIZE=4][FONT=MyriadPro-Light][FA]fa-border fa-code[/FA] [/FONT][/SIZE][/FONT][/FONT][/FONT][SIZE=4][FONT=MyriadPro]INDEX.PHP[/FONT][FONT=MyriadPro-Regular][FONT=MyriadPro Light] (actionUpdate())[/FONT][/FONT][/SIZE][/SIZE] [FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][PHP]public function actionUpdate() { //input $lobbyId = $this->_input->filterSingle('lobby_id', XenForo_Input::UINT); $lobbysModel = XenForo_Model::create('Lobbys_Model_Lobbys'); $lobby = $lobbysModel->getLobbyById($lobbyId); //on vérifie si la demande existe if(!$lobby) { return $this->responseError(new XenForo_Phrase('requested_lobby_not_found')); } //si la requête est de type POST, donc soumission du formulaire if($this->_request->isPost()) { $lobbyState = $this->_input->filterSingle('lobby_state', XenForo_Input::STRING); $dw = XenForo_DataWriter::create('Lobbys_DataWriter_Lobbys'); $dw->setExistingData($lobbyId); $dw->set('lobby_state', $lobbyState); $dw->save(); //on effectue une redirection avec un message de succès. return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('lobby/all'), new XenForo_Phrase('lobbys_update_success')); } return $this->responseView('Lobbys_ViewPublic_Update', 'lobbys_update', $params = ['lobby' => $lobby]); }[/PHP] [FA]fa-angle-right[/FA] Revenez sur notre liste de demandes, puis [/FONT][FONT=MyriadPro]cliquez sur son état pour être redirigé vers la page d'édition[/FONT][FONT=MyriadPro Light] de celui-ci, soumettez et observez ! :)[/FONT][/SIZE][/FONT] [CENTER][FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][ATTACH=full]101211[/ATTACH] [FONT=MyriadPro Light][ATTACH=full]100875[/ATTACH] Pour notre dernier chapitre nous allons tout simplement créer la fonctionnalité qui nous permettra de [/FONT][/FONT][FONT=MyriadPro]supprimer notre demande en cochant une case sur la page d'édition de l'état[/FONT][FONT=MyriadPro Light][FONT=MyriadPro Light] de celui-ci. :neo:[/FONT][/FONT] [/SIZE][/FONT][/CENTER] [FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][FA]fa-angle-right[/FA] Modifions notre action update qui prendra en compte notre case à cocher pour supprimer notre demande, ainsi à la soumission [/FONT][FONT=MyriadPro]si nous détectons que cette case a été cochée nous supprimons la demande[/FONT][FONT=MyriadPro Light].[/FONT] [/SIZE][/FONT] [SIZE=4][SIZE=4][FONT=MyriadPro-Light][FONT=MyriadPro Light][FA]fa-border fa-code[/FA][/FONT][/FONT][FONT=MyriadPro] INDEX.PHP[/FONT][FONT=MyriadPro Light] (actionUpdate())[/FONT][/SIZE][/SIZE] [FONT=MyriadPro Light][SIZE=4][FONT=MyriadPro Light][PHP] public function actionUpdate() { //input $lobbyId = $this->_input->filterSingle('lobby_id', XenForo_Input::UINT); $delete = $this->_input->filterSingle('delete', XenForo_Input::UINT); $lobbysModel = XenForo_Model::create('Lobbys_Model_Lobbys'); $lobby = $lobbysModel->getLobbyById($lobbyId); //on vérifie si la demande existe if(!$lobby) { return $this->responseError(new XenForo_Phrase('requested_lobby_not_found')); } //si la requête est de type POST, donc soumission du formulaire if($this->_request->isPost()) { $lobbyState = $this->_input->filterSingle('lobby_state', XenForo_Input::STRING); $dw = XenForo_DataWriter::create('Lobbys_DataWriter_Lobbys'); $dw->setExistingData($lobbyId); if($delete) { $dw->delete(); } else { $dw->set('lobby_state', $lobbyState); } $dw->save(); //on effectue une redirection avec un message de succès. return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('lobby/all'), new XenForo_Phrase('lobbys_update_success')); } return $this->responseView('Lobbys_ViewPublic_Update', 'lobbys_update', $params = ['lobby' => $lobby]); }[/PHP][/FONT][/SIZE][/FONT] [CENTER][FONT=MyriadPro Light][SIZE=4][ATTACH=full]101212[/ATTACH] [FONT=MyriadPro Light][FONT=MyriadPro Light][ATTACH=full]100876[/ATTACH][/FONT][/FONT][/SIZE][/FONT][/CENTER][/SIZE][/FONT][/FONT] [/QUOTE]
Insérer les citations…
Vérification
Publier la réponse
Forums
Forums généraux
Informatique
Développement
Apprenez à créer un add-On CRUD sous le CMS XenForo
Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
Acceptez
En savoir plus.…
Haut