Développement de patchs pour l'environnement MySQL

Créer un patch pour XCMS est deux fois plus simple que la création d'un module. Pour un intégrateur XHTML, c'est une façon d'économiser intelligemment en coût de développement.

Qu'est-ce qu'un patch

Lorsque l'on souhaite créer un système d'articles, de nouvelles ou tout autre module basé sur une table MySQL, il y a obligatoirement le développement de formulaires de modification, ajout, suppression etc...

Le système de patch propose un moyen simple et efficace d'éviter cela pour peu que votre base de donnée ainsi que les fonctions que vous souhaitez créer entrent dans un cadre que nous allons délimiter ici.

Les fonctions apportées

Vous vous demandez sûrement, ce qu'apporte l'environnement MySQL de XCMS à part les formulaires pour gérer les entrées. En voici la liste non-exhaustive :

  • Gestion du workflow : proposition d'une nouvelle entrée avec avertissement de l'admin qui peut alors la modifier, mettre en ligne ou la supprimer en justifiant son acte. A tout instant, les acteurs sont informés des modifications apportées par mail.
  • Système de vote avec plusieurs niveaux de sécurité.
  • Gestion du tri des entrées prête à l'emploi.
  • Formulaire de recherche intégré.
  • Possibilité de joindre des images et des pièces jointe à chaque entrée de la base de donnée.
  • Possibilité d'associer des catégories aux entrées et de faire des jointures de plusieurs tables.
  • Gestion possible du nombre de consultations des contenus.

Structure d'un patch

Un patch se compose des trois éléments suivants :

  • une table MySQL contenant les entrées du patch
  • des fichiers de langues
  • des fichiers de template pour leur affichage

Et de manière optionnelle :

  • une ou plusieurs tables permettant d'associer un champ à des catégories
  • un dossier permettant de joindre des documents ou images aux entrées
  • une table permettant de comptabiliser les votes (si réservés aux membres)

La table MySQL

La table MySQL du patch doit contenir les informations que vous souhaitez stocker. Cependant, vous pouvez l'adapter aux champs ci-dessous afin de bénéficier des fonctionnalités associées.

Les champs réservés
Nom du champType Présence Commentaire
idint(n)ObligatoireCe champ permet à XCMS de manipuler les données.
titlevarchar(n)ConseilléeCe champs constitue le titre de l'entrée. Si celui-ci est renseigné, il prendra la place du titre du document.
descriptionvarchar(n)Conseillée C'est une courte description de l'entrée. Elle prendra la place de la description du document et sera pratique pour la création de flux RSS.
pubdatedate/timeConseilléeCe champ sera renseigné automatiquement avec la date d'insertion de l'entrée.
lastmodifieddate/timeOptionelleCe champs sera mis à jour à chaque modification de l'entrée.
langchar(3)OptionnelleA prévoir dans le cas de contenus pouvant être en plusieurs langues différentes.
entryint(n)DépendanteCe champ permet de stocker des entrées de différents sections dans la même table.
*int(n)DépendantePermet l'association d'une catégorie par jointure avec un champs de la base.
readsint(n)RéservéCe champs permet de compter les lectures. Le cache HTML est activé, si ce champs existe.
votesint(n)RéservéCe champs est réservé au futur système de vote. Il contiendra le nombre total de votes.
notesint(n)RéservéIdem. Il contiendra la somme de tous les votes effectués.
ownerint(n)RéservéPour modification par une seule personne (excepté l'admin).
recipientint(n)RéservéPour visualisation par une seule personne.
email*varchar(n)RéservéDoit contenir absolument un email (validité vérifée).
url*varchar(n)RéservéDoit contenir absolument une url (validité vérifiée).
*enumAssistéeLes champs de type enum génèrent une liste de choix.

Les fichiers de langue

Ils se présentent sous forme de fichiers textes UTF-8 sans BOM avec une extension .lang. Ils se nomment fr.lang, en.lang etc..

Les fichiers de langue ont deux fonctions : permettre l'internationalisation de votre patch et spécifier les entrées qui seront modifiables et celle qui devront être nécessairement renseignées. Prenons un exemple de table :

CREATE TABLE `news` (
`id` tinyint(4) NOT NULL auto_increment,
`title` varchar(100) NOT NULL,
`description` varchar(255) NOT NULL,
`contain` text NOT NULL,
`pubdate` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

Pour afficher correctement les formulaires, vous devez spécifier le nom des entrées dans les fichiers de langue. Si vous ne le faîtes pas, les formulaires ne prendront pas le champ en compte. Ici, le formulaire n'affichera pas le champs id qui sera automatiquement incrémenté à chaque nouvelles entrée.

# Donnees communes
l_mysql_title=Titre
l_mysql_description=Description courte
l_mysql_contain=Contenu
l_mysql_pubdate=Date

Pour que les formulaires puissent avertir l'utilisateur qu'un champs est mal rempli, vous devez préciser la phrase qu'il doit afficher. Si vous ne la spécifiez pas, XCMS ne donnera pas d'avertissement en cas de champs mal formé ou vide. Ici, tous les champs sont nécessaires sauf contain dont la phrase d'erreur a été commentée.

# Erreurs
l_err_title=Vous n'avez pas saisi le titre de la nouvelle.
l_err_description=Si vous n'avez pas d'idée de description, insérez dans ce champs une partie du contenu de la nouvelle.
l_err_contain=Vous n'avez pas saisi le contenu de la nouvelle.
l_err_pubdate=Merci de saisir un date valide.

D'autres valeurs peuvent être renseignées pour personnaliser un peu plus l'affichage. Il suffit de regarder le fichier de langue par défaut et surcharger les variables.

Les fichiers de templates

Maintenant que vos données sont structurées, il faut encore les afficher. Pour cela, deux fichiers de template :

read.tpl
C'est le template qui sera utilisé pour afficher une entrée de la table.
Exemple avec module/mysql/patch/news/html/read.tpl :
<h3 id="{mysql_id}">{mysql_pubdate} : {mysql_title}</h3>
<p><strong>{mysql_description}</strong></p>
{mysql_contain}
list.tpl
Celui-ci sera utilisé pour lister les entrées de la table.
Exemple avec module/mysql/patch/news/html/list.tpl :
<h3 id="item@mysql.id@">@mysql.pubdate@ : @mysql.title@</h3>
<p><strong>@mysql.description@</strong></p>
@mysql.contain@

Voilà, vous venez simplement de créer votre propre patch plus simplement que si vous aviez créé un module complet. Petite astuce : lorsque vous créez un module, créez un patch pour l'administration et utilisez un module uniquement pour l'affichage, vous gagnerez du temps ;).

Derniers sites créés

NCO-Macc1

NCO-Macc1NCO-Macc1, acteur historique de la formation en sécurité, incendie et secourisme, nous a accordé sa confiance pour la création de son nouveau site Internet. Suite

Actualité

Performance améliorée

Nous avons profité d'un changement de serveur web pour améliorer une fois encore la performance de nos hébergements. Suite

A propos

Nous avons créé l'agence Elitwork en 2006 au coeur du Nord-Pas-de-Calais dans le triangle Arras - Cambrai - Douai. Depuis, nous forgeons notre savoir-faire au jour le jour afin rester experts du web et des technologies d'Internet en général.
Spécialisés dans la créations de sites Internet et le développement d'application/progiciels web sur mesure, nous permettons à nos clients de réussir leur transition vers un système d'information connecté. En savoir plus

Actu de l'agence

Orange HTML5 Hackathon

Orange HTML5 HackathonNicolas Froidure, le développeur d'Elitwork a remporté avec son équipe le grand prix du jury du concours de hacking Orange HTML5 Hackathon. Découvrez cette folle journée ! Suite

Nous contacter

Elitwork SARL
10, rue Antoine DEQUEANT
62860 Oisy le Verger
Tél. : 03 21 59 62 24
E-mail