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

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 !

#

Et si tu mets :

$node = node_submit($node);

Juste avant :

node_save($node);

 ?


Alexandre Ronsaut - ApolloNet
Développement Web Drupal à Rouen

Tél : 06 80 95 01 10
Email : alex@apollonet.fr
Web : http://apollonet.fr
Twitter : @Apollo_Net

#

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 !

Syndiquer le contenu