Blog
Travail avec la base de donnĂ©es dans Drupal 7 - leçon 8 - RequĂȘtes dâinsertion (INSERT INTO)
Les requĂȘtes d'insertion doivent toujours utiliser le constructeur de requĂȘtes. Certaines bases de donnĂ©es nĂ©cessitent des gestionnaires spĂ©cifiques pour les champs LOB (Large OBject, comme le texte dans MySQL) et BLOB (Binary Large OBject), d'oĂč l'importance du niveau d'abstraction pour que les pilotes DB implĂ©mentent ces gestionnaires.
Les requĂȘtes d'insertion commencent par l'utilisation de la fonction db_insert()
:
Travail avec la base de donnĂ©es dans Drupal 7 - leçon 9 - RequĂȘtes de mise Ă jour (UPDATE)
Les requĂȘtes de mise Ă jour doivent toujours utiliser le constructeur de requĂȘtes. Les diffĂ©rentes bases de donnĂ©es ont des gestionnaires spĂ©cifiques pour les LOB (Large OBject, tels que TEXT dans MySQL) et les champs BLOB (Binary Large OBject), donc un niveau dâabstraction est nĂ©cessaire pour que les pilotes individuels implĂ©mentent leurs gestionnaires spĂ©cifiques.
Les requĂȘtes de mise Ă jour commencent toujours par la fonction db_update()
:
Travail avec la base de donnĂ©es dans Drupal 7 - leçon 10 - RequĂȘtes de suppression (DELETE)
Les requĂȘtes de suppression doivent utiliser le constructeur de requĂȘtes. Elles commencent par la fonction db_delete() :
Travail avec la base de donnĂ©es dans Drupal 7 - leçon 11 - RequĂȘtes de fusion (MERGE)
Les requĂȘtes de fusion sont un type spĂ©cial hybride de requĂȘtes. Bien que la syntaxe pour ces requĂȘtes ait Ă©tĂ© dĂ©finie dans SQL 2003, en rĂ©alitĂ© aucune base de donnĂ©es ne supporte cette syntaxe. Cependant, la plupart des bases de donnĂ©es fournissent une implĂ©mentation alternative en utilisant une syntaxe spĂ©cifique. Le constructeur de requĂȘtes de fusion dans Drupal abstrait le concept de fusion de requĂȘte dans une structure objet, de sorte que cet objet peut ĂȘtre compilĂ© diffĂ©remment pour chaque base de donnĂ©es en tenant compte de ses spĂ©cificitĂ©s.
Travail avec la base de donnĂ©es dans Drupal 7 - leçon 12 - Conditions des requĂȘtes (WHERE, HAVING, LIKE)
La condition dâune requĂȘte permet de sĂ©lectionner uniquement les enregistrements rĂ©pondant Ă certaines contraintes, par exemple les nĆuds créés depuis moins de deux semaines, les termes contenant le mot "drupal", etc. En SQL, on utilise WHERE et HAVING pour dĂ©finir des restrictions sur les requĂȘtes SELECT, UPDATE, DELETE. Dans les requĂȘtes dynamiques, un mĂ©canisme similaire existe pour gĂ©rer ces conditions, fonctionnant de la mĂȘme maniĂšre pour les trois types de requĂȘtes : sĂ©lection, mise Ă jour, suppression.
Créer un module Drupal, démarrage rapide
Commençons par api.drupal.org, ouvrez la page du hook hook_node_presave()
, qui sâexĂ©cute avant lâajout dâun nĆud.
http://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook_node_validate/7
Les hooks nous permettent dâintĂ©grer notre code dans le flux normal de Drupal, pour ajouter des validations, des champs, des Ă©lĂ©ments de formulaire, etc.
Ajoutons notre module dans le dossier sites/all/modules
:
De quoi est composé un module Drupal 7 ?
Avant de commencer Ă crĂ©er notre module, je vais vous parler un peu des possibilitĂ©s de lâAPI Drupal. LâAPI offre de larges fonctionnalitĂ©s pour travailler avec la taxonomie, les nĆuds, les utilisateurs, ainsi que pour lâentrĂ©e et la sortie depuis la base de donnĂ©es. Pour lâinteraction entre les modules et le noyau de Drupal, ainsi quâentre les modules eux-mĂȘmes, Drupal dispose dâun systĂšme de hooks. Un hook est un callback, câest-Ă -dire quâau moment oĂč lâexĂ©cution du code atteint un hook, le code de notre fonction ajoutĂ©e dans notre module est exĂ©cutĂ©.
Drupal 7 hook_block_info() et hook_block_view() : afficher des informations dans un bloc
Dans la leçon précédente, nous avons créé un module pour Drupal 7, dans cette leçon nous allons continuer à étendre les fonctionnalités de notre module. Nous ajouterons l'affichage d'un bloc via le hook hook_block_view()
, ainsi que hook_block_info()
. Ce bloc contiendra des informations sur les derniers utilisateurs du site avec un lien vers leur page.
Je commence par décrire le hook_block_info() :
Il définit tous les blocs créés par le module.
Hook_menu Drupal 7 : création de pages via un module
Dans la leçon précédente, nous avons vu comment afficher des informations depuis la base de données en utilisant l'API Drupal, notamment avec les hooks hook_block_info() et hook_block_view(). Dans cette leçon, nous allons afficher des pages, plus précisément utiliser le hook hook_menu pour connecter une page aux différentes parties de Drupal : menu, module de traduction, templates, etc.
hook_permission Drupal 7 : permissions dâaccĂšs pour diffĂ©rents rĂŽles
Lors des leçons prĂ©cĂ©dentes, nous avons affichĂ© des pages et des blocs Ă diffĂ©rents endroits, en utilisant aussi les propriĂ©tĂ©s 'access arguments' et 'access callback' pour dĂ©finir des restrictions dâaccĂšs aux pages. Dans cette leçon, nous allons crĂ©er une possibilitĂ© dâĂ©dition plus flexible des droits dâaccĂšs aux opĂ©rations via des pages dâadministration. Pour cela, nous utiliserons le hook_permission() (dans Drupal 6, câĂ©tait hook_perm()).