Quel est la logique de ce script ?

Des requêtes SELECT alimentent un tableau de correspondance des données de Xoops vers celles de punBB. Ensuite, ce tableau est passé à la fonction buildInsert qui va construire la requête d'insertion.

[php]
 	function convGroupe () {
 	
 		//$this->emptyTable( "punbb_groups" );
 		
 		$query = $this->query( "SELECT * FROM xoops_groups ORDER BY groupid" );
 			
 		while ( $groupe = $this->fetch_array($query) ) {
			// Convertie les groupid 			
 			$groupe['groupid'] = $this->convertGroupeId($groupe['groupid']);
 			if ( $groupe['groupid'] > 4 ) {
 			
 				$tab =	array(	'g_id' 							=> $groupe['groupid'],
 										'g_title'						=> $groupe['name'],
				 						'g_user_title'					=> $groupe['name'],
 										'g_read_board'					=> 1,
 										'g_post_replies'				=> 1,
 										'g_post_topics'				=> 1,
 										'g_post_polls'					=> 1,
 										'g_edit_posts'					=> 1,
 										'g_delete_posts'				=> 1,
 										'g_delete_topics'				=> 1,
 										'g_set_title'					=> 0,
 										'g_search_users'				=> 1,
 										'g_edit_subjects_interval'	=> 300,
 										'g_post_flood'					=> 60,
 										'g_search_flood'				=> 30,
 					);
 				$this->buidInsert( 'punbb_groups', $tab);
 			}
 		}					
	}



	/**
 	 * Construction de requêtes d'insertion.
 	 * @author Guillaume Kulakowski <guillaume AT llaumgui DOT com>
	 * @since 0.1
	 * @TODO Code lourd à optimisé.
	 * @param array	$tab 	Paramêtres.
 	 */
 	function buidInsert( $table, $tab ) {
	
		$_key;
		$_value;

		foreach ( $tab as $key => $value ) {
			$_key[]	= $key;
			$_value[]	= $value;
		}
	
		$SQL = "INSERT INTO ".$table." (" . implode(", ", $_key) . ") VALUES ('" . implode("', '", $_value) . "')";
		$this->query($SQL);
	}

Le layer de base est minimaliste car le script reste quand même dans un esprit one-shoot mais pourra être repris par toutes personnes voulant réaliser la même opération.

Pré requis du script, lorsqu'il sera fini :

php4 ou supérieur, par contre la base de données de Fedora-France étant assez conséquente, je compte lancer le script en ligne de commande. Il sera donc optimisé pour les gros forums/sites mais pourra ne pas marcher avec un simple appel via un navigateur.

Un roadmap ?

Non, le script sera prêt quand il sera prêt et sera sous licence GNU/GPL, vous pouvez déjà télécharger la version en cours de développement attachée à ce billet. Version finale disponible attachée à ce billet