Problème avec node_save() : certains nodes sont dupliqués

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Salut à tous,

je dois importer et insérer dans la bdd un fichier xml par l'intermédiaire. Ce fichier contient 116 enregistrements. Mais lorsque je procède à l'import, Drupal créé 140 nodes, les premiers nodes étant dupliqués.

voici ma fonction :

function _parseXml () {

$xml = simplexml_load_file('sites/all/files/extract/monfichier.xml');

           foreach ($xml->Affaire as $item) {
                 
                 $mime = 'audio/jpeg';
                 
                   $node = new StdClass();
                   
                   $image0 = $item->Affaire_images->image[0];
                   $image1 = $item->Affaire_images->image[1];
              
                  
                   if (isset($image0)) {
                      $file = new stdClass();
                        $file_drupal_path =  "sites/all/files/extract/".$image0;         
                      
                       $file->filename = basename($file_drupal_path);
                      $file->filepath = $file_drupal_path;
                        $file->filemime = $mime;
                        $file->filesize = filesize($file_drupal_path);
                 
                       $file->uid = $uid;
                      $file->status = FILE_STATUS_PERMANENT;
                      $file->timestamp = time();
                      drupal_write_record('files', $file);

                       $node->field_img = array(
                           array(
                           'fid' => $file->fid,
                           'title' => basename($file->filename),
                              'filename' => $file->filename,
                             'filepath' => $file->filepath,
                             'filesize' => $file->filesize,
                             'mimetype' => $mime,
                              'data' => array(
                                'description' => basename($file->filename),
                              ),
                             'list' => 1,
                            ),
                     );
                 }

                 if (isset($image1)) {
                      $file_drupal_path1 =  "sites/all/files/extract/".$image1;
                       
                       $file1 = new stdClass();
                      
                       $file1->filename = basename($file_drupal_path1);
                        $file1->filepath = $file_drupal_path1;
                      $file1->filemime = $mime;
                       $file1->filesize = filesize($file_drupal_path1);
                   
                       $file1->uid = $uid;
                     $file1->status = FILE_STATUS_PERMANENT;
                     $file1->timestamp = time();
                     drupal_write_record('files', $file1);
   
                       $node->field_img01 = array(
                         array(
                           'fid' => $file1->fid,
                              'title' => basename($file1->filename),
                             'filename' => $file1->filename,
                            'filepath' => $file1->filepath,
                            'filesize' => $file1->filesize,
                            'mimetype' => $mime,
                              'data' => array(
                                'description' => basename($file1->filename),
                             ),
                             'list' => 1,
                            ),
                     );
                 }

                   
                   $node->type = 'contentType';
                  $node->body = $item->Affaire_desc_internet;
                  $node->title = $item->Affaire_reference;
                 $node->field_num_mandat = array (0 => array ('value' =>$item->Affaire_num_mandat));
                  $node->field_cp = array (0 => array ('value' =>$item->Affaire_code_postal));
                 $node->field_ville = array (0 => array ('value' =>$item->Affaire_ville));
                    $node->field_secteur = array (0 => array ('value' =>$item->Affaire_secteur));
                    $node->field_nb_piece = array (0 => array ('value' =>$item->Affaire_nb_piece));
                  $node->field_nb_chambre = array (0 => array ('value' =>$item->Affaire_nb_chambre));
                  $node->field_nb_parking = array (0 => array ('value' =>$item->Affaire_nb_parking));
                  $node->field_etage = array (0 => array ('value' =>$item->Affaire_nb_etage));
                 $node->field_sdb = array (0 => array ('value' =>$item->Affaire_nb_sdb));

                   
                   $node->uid = 1;
                 $node->status = 1;
                  $node->active = 1;
                  $node->promote = 1;
            
               $type_annonce = taxonomy_get_term_by_name($item->Affaire_type_annonce);
             $type_bien = taxonomy_get_term_by_name($item->Affaire_type_bien);
               $type_mandat = taxonomy_get_term_by_name($item->type_mandat);
               $node->taxonomy = array($type_annonce[0]->tid, $type_bien[0]->tid, $type_mandat[0]->tid);

                 node_save($node);
                  $i++;

         }
}

Je sèche complètement, je n'arrive pas à voir mon erreur. Quelqu'un peut il me mettre sur la piste ?

Merci d'avance !

Forum : 
Version de Drupal : 

salut,

merci pour ta réponse.

en fait, j'ai l'impression qu'il y a un conflit avec le module pathauto. Quand celui-ci est désactivé, ça fonctionne correctement. Quand il est activé, c'est là que les nodes se dupliquent.

quelqu'un peut il confirmer ce type de comportement entre la fonction node_save() et pathauto ?

Un petit feedback au cas où ça puisse servir à d'autres. Le problème venait bien de l'activation du module pathauto.

j'ai donc désactivé la génération automatique d'alias par un

$node->pathauto_perform_alias = FALSE;

et recréé un alias pour chaque node généré par ce parsing et là, tout est rentré dans l'ordre !

problème résolu !