dev:Mirror Trackers
Trackers with Mirror Tables
1. Explications
Le rôle de cette bibliothèque est de pouvoir manipuler les données des formulaires avec des instructions SQL simples en dehors de ))TikiWiki((. Donc sans passer par la bibliothèque des trackers et sans avoir à en comprendre le fonctionnement.
Actuellement, les données des champs des formulaires se trouvent dans une seule table qui associe l'id d'un champ, l'id d'un formulaire et la valeur du champ. Cette table n'est pas aisément exploitable hors de ))TikiWiki((.
Voila à quoi ressemble la table remplie :
table : tiki_tracker_item_fields
+-------+---------+-----------------+ |itemId | fieldId | value | +-------+---------+-----------------+ | 42 | 7 | a kind of magic | +-------+---------+-----------------+ | 42 | 5 | 1986 | +-------+---------+-----------------+ | 42 | 8 | artist08 | +-------+---------+-----------------+ | 42 | 11 | rock | +-------+---------+-----------------+ | 42 | 17 | 0 | +-------+---------+-----------------+ | 43 | 7 | mon bel album | +-------+---------+-----------------+ | 43 | 5 | 2005 | +-------+---------+-----------------+ | 43 | 8 | artist08 | +-------+---------+-----------------+ | 43 | 11 | rock | +-------+---------+-----------------+ | 43 | 17 | NULL | +-------+---------+-----------------+
Les formulaires avec tables en mirroir utilisent des tables de la forme suivante :
table : tiki_trk_n
+--------+---------+---------+---------+...+---------+ | itemId | field_1 | field_2 | field_3 |...| field_n | +--------+---------+---------+---------+...+---------+
On peut également utiliser des tables avec les nom des champs en clair si on respecte les conventions suivantes :
- Les noms doivent être valide en SQL
- Le nom du tracker doit être unique
- Le nom d'un champ doit être unique pour un tracker donné
Les tables ressemblent alors à ça :
table : tiki_trk_nom_tracker
+--------+------------+------------+------------+...+------------+ | itemId | nom_champ1 | nom_champ2 | nom_champ3 |...| nom_champn | +--------+------------+------------+------------+...+------------+
Par exemple, voila à quoi ressemble la table pour un formulaire créé avec des noms en clair :
mysql> select * from tiki_trk_album; +--------+-----------------+------+----------+-------+--------+ | itemId | name | year | artist | genre | Rating | +--------+-----------------+------+----------+-------+--------+ | 42 | a kind of magic | 1986 | artist08 | rock | 0 | | 43 | mon bel album | 2005 | artist08 | rock | NULL | +--------+-----------------+------+----------+-------+--------+
Comparé à l'exemple d'en haut, c'est beaucoup plus facilement exploitable hors de ))TikiWiki((.
2. Mise en oeuvre
Pour utiliser les formulaires avec tables en mirroir, il faut d'abord activer leur utilisation. Sur la page d'admin, cliquer sur l'icone "Formulaires". Parmis les options disponibles, celle-çi nous intéresse :
On ne peut actuellement pas mélanger les deux types de trackers car il faudrait convertir les tables.
Pour utiliser les noms en clair dans les tables, il faut cocher l'option suivante quand on créé un formulaire :
3. Améliorations
Pour être pleinement utiles, les formulaires fonctionnant de la sorte devrait pouvoir utiliser des tables provenant d'autes bases que celle de ))TikiWiki(( , probablement avec les DSN. De plus, il serait bien de pouvoir les utiliser conjointement avec les formulaires classiques.