Le core de SPIP fournit un fichier ecrire/inc/importer_csv.php pour ses besoins d’import de fichier CSV, et il est possible de l’utiliser pour nos propres besoins.
C’est ce que fait par exemple le plugin livraison
, avec le code suivant :
function livraison_installer_modes(){
include_spip("action/editer_objet");
if ($importer_csv = charger_fonction("importer_csv","inc",true)
AND $f = find_in_path("base/livraisonmodes.csv")){
$modes = $importer_csv($f,true);
foreach($modes as $mode){
$id = objet_inserer("livraisonmode");
$set = $mode;
$set['prix_poids_ht'] = preg_replace(",\s+,","\n",$set['prix_poids_ht']);
$set['prix_volume_ht'] = preg_replace(",\s+,","\n",$set['prix_volume_ht']);
$set['statut'] = 'prop';
objet_modifier("livraisonmode",$id,$set);
}
}
}
Ici, il complète les champs lus dans le CSV par des champs calculés et il fait appel aux fonctions de l’API de gestion des objets SPIP : objet_inserer
et objet_modifier
pour créer les objets décrits par chaque ligne du .CSV