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.'"'
		);
	}
}