Un plugin qui créé sa ou ses propres tables dans la base de données devrait fournir le minimum pour que celles-ci soient sauvegardées lorsqu'une exportation d'un blog ou de tous les blogs à lieu.
Comment faire ?
Pour cela, il faut développer deux fonctions relativement simples qui seront appelées, après avoir été enregistrées, par un behavior. Il y a deux behaviors, le premier, nommé exportFull
concerne l'exportation complète de la base de données, le second, nommé exportSingle
, concerne l'exportation d'un seul blog dont l'identificateur sera fourni à la fonction.
Le code nécessaire
Pour illustrer ceci j'ai présumé que le plugin gère une seule table nommée mytable
et que celle-ci comporte un champ blog_id
dans sa structure. Le code proposé en exemple devra bien sûr être adapté pour tenir compte des spécificités de votre plugin, entre autre si vous avez plusieurs tables et si leurs structures diffèrent par rapport à l'exemple simple montré ici.
L'export complet
Pour cette partie, il faut une fonction qui indiquera quelles sont la ou les tables qui doivent être prises en charge par la routine d'exportation. Voilà un exemple de code :
public static function exportFull(&$core,&$exp) { $exp->exportTable('mytable'); }
Il faudra répéter la ligne $exp->exportTable('mytable');
pour chacune des tables gérées par le plugin en remplaçant mytable
par le nom idoine (sans préfixe).
L'export simple
Pour ce mode d'export, il faut une fonction qui se limitera uniquement aux enregistrements correspondants au blog dont l'identificateur est fourni. Voilà un exemple de code :
public static function exportSingle(&$core,&$exp,$blog_id) { $exp->export('mytable', 'SELECT * '. 'FROM '.$core->prefix.'mytable '. 'WHERE blog_id = "'.$blog_id.'"' ); }
Cette appel devra être adapté en fonction de la structure de votre table et être répété pour toutes celles qui sont gérées par votre plugin.
Enregistrement des fonctions
Pour que ces deux fonctions puissent être appelées lors d'un export simple ou complet, il faut les enregistrer. Le code correspondant est le suivant :
$core->addBehavior('exportFull',array('myPluginClass','exportFull')); $core->addBehavior('exportSingle',array('myPluginClass','exportSingle'));
Je présume ici que les deux fonctions sont définies au sein du classe particulière du plugin nommée myPluginClass
. À vous d'adapter en fonction.
Le code complet
# Enregistrement des fonctions d'exportation $core->addBehavior('exportFull',array('myPluginClass','exportFull')); $core->addBehavior('exportSingle',array('myPluginClass','exportSingle')); class myPluginClass { # Full export behavior public static function exportFull(&$core,&$exp) { $exp->exportTable('mytable'); } # Single blog export behavior public static function exportSingle(&$core,&$exp,$blog_id) { $exp->export('mytable', 'SELECT * '. 'FROM '.$core->prefix.'mytable '. 'WHERE blog_id = "'.$blog_id.'"' ); } }
Commentaires
Il manque des fonction de réimportations ! À moins que ce ne soit fait par défaut (et je n'en ai pas l'impression, ces sauvegardes ne seront pas réinjectées lors d'un réimport. Autant l'import complet (Full) est simple à faire, autant il y a deux-trois choses dont il faut se méfier dans l'import simple...
Je sais bien, l'importation est passablement plus complexe à gérer et il faudrait écrire un tuto spécialement pour cela.
Il y a une ptite coquille dans le code de exportSingle; la dernière ligne est fausse !
Il faut écrire plutôt :
(notez les guillemets et apostrophes)
Merci JulienW pour la typo, c'est corrigé dorénavant.
Euh, je ne vois indiqué nulle part dans quel fichier php du plugin il faut ajouter le code indiqué dans ce tuto.
C'est normalement dans le fichier
_admin.php
qu'il faut mettre en place la gestion de ces behaviours