Ignore:
Timestamp:
Nov 24, 2017, 4:03:46 PM (3 years ago)
Author:
booz@…
Message:

conserver les id_article avec l'option -c oui

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/convertisseur/trunk/spip-cli/convertisseurImporter.php

    r107727 r107728  
    4646                                ''
    4747                        )
     48                        ->addOption(
     49                                'conserver_id_article',
     50                                'c',
     51                                InputOption::VALUE_OPTIONAL,
     52                                'option -c oui pour conserver les id_article',
     53                                ''
     54                        )
    4855                ;
    4956        }
     
    5966                $id_parent = $input->getOption('dest') ;
    6067                $racine_documents = $input->getOption('racine_documents') ;
     68                $conserver_id_article = $input->getOption('conserver_id_article') ;
    6169               
    6270                // Répertoire source
     
    158166                                       
    159167                                        if (preg_match(",<ins class='id_article'>(.*?)</ins>,ims", $texte, $z))
    160                                                         $id_source = $z[1] ;
     168                                                $id_source = $z[1];
    161169                                       
    162170                                        // dans quelle rubrique importer ?
     
    195203                                       
    196204                                        if($id_article = inserer_conversion($texte, $id_rubrique, $f)){
     205                                               
     206                                                // doit-on conserver l'id_article (option) ?
     207                                                // sql_update spip_articles id_article=$id_source
     208                                                if($conserver_id_article == "oui" and $id_source > 0){
     209                                                        // var_dump($id_article . " est " . $id_source);
     210                                                        sql_update("spip_articles", array("id_article" => $id_source), "id_article=$id_article") ;
     211                                                        // s'ajouter en auteur en spip 2 ou 3
     212                                                        if($spip_version_branche > "3")
     213                                                                sql_update('spip_auteurs_liens',
     214                                                                        array(
     215                                                                        'id_objet' => $id_source
     216                                                                        ),
     217                                                                        "id_objet='article' and id_objet=$id_source"
     218                                                                );
     219                                                        else
     220                                                                sql_update('spip_auteurs_articles',
     221                                                                        array(
     222                                                                        'id_article' => $id_source
     223                                                                        ),
     224                                                                        "id_article=$id_article"
     225                                                                );
     226                                                        $id_article = $id_source ;
     227                                                }
     228                                               
    197229                                                // Créer l'auteur ?
    198230                                                if($auteurs){
     
    318350                                               
    319351                                                // recaler des liens [->123456] ?
     352                                                // si on ne conserve pas le meme id_article
    320353                                                include_spip("inc/lien");
    321354                                                if(preg_match(_RACCOURCI_LIEN, $texte))
     
    339372                                lire_fichier("liens_a_corriger.txt", $articles);
    340373                                $corrections_liens = inc_file_to_array_dist($articles);
    341                                 foreach($corrections_liens as $k => $v){
    342                                         if($v){
    343                                                 list($id_article, $id_source) = explode("\t", $v);
    344                                                 $texte = sql_getfetsel("texte", "spip_articles", "id_article=$id_article") ;
    345                                                 // recaler des liens [->123456] ?
    346                                                 include_spip("inc/lien");
    347                                                 if(preg_match_all(_RACCOURCI_LIEN, $texte, $liens, PREG_SET_ORDER)){
    348                                                         foreach($liens as $l){
    349                                                                 if(preg_match("/^[0-9]+$/", $l[4])){
    350                                                                         // trouver l'article dont l'id_source est $l[4] dans le secteur
    351                                                                         if($id_dest = sql_getfetsel("id_article", "spip_articles", "id_source=" . trim($l[4]) . " and id_secteur=$id_parent")){
    352                                                                                 $lien_actuel = $l[0] ;
    353                                                                                 $lien_corrige = str_replace($l[4], $id_dest, $l[0]) ;
     374                               
     375                                if(is_array($corrections_liens))
     376                                        foreach($corrections_liens as $k => $v){
     377                                                if($v){
     378                                                        list($id_article, $id_source) = explode("\t", $v);
     379                                                        $texte = sql_getfetsel("texte", "spip_articles", "id_article=$id_article") ;
     380                                                        // recaler des liens [->123456] ?
     381                                                        include_spip("inc/lien");
     382                                                        if(preg_match_all(_RACCOURCI_LIEN, $texte, $liens, PREG_SET_ORDER)){
     383                                                                foreach($liens as $l){
     384                                                                        if(preg_match("/^[0-9]+$/", $l[4])){
     385                                                                                // trouver l'article dont l'id_source est $l[4] dans le secteur
     386                                                                                if($id_dest = sql_getfetsel("id_article", "spip_articles", "id_source=" . trim($l[4]) . " and id_secteur=$id_parent")){
     387                                                                                        $lien_actuel = $l[0] ;
     388                                                                                        $lien_corrige = str_replace($l[4], $id_dest, $l[0]) ;
     389                                                                                       
     390                                                                                        $lien = escapeshellarg("$id_article : $lien_actuel => $lien_corrige");
     391                                                                                        passthru("echo $lien >> liens_corriges.txt");
     392                                                                                        // maj le texte
     393                                                                                        $texte_corrige = str_replace($lien_actuel, $lien_corrige, $texte);
     394                                                                                        sql_update("spip_articles", array("texte" => sql_quote($texte_corrige)), "id_article=$id_article");
     395                                                                                        // attention s'il y a plusieurs liens
     396                                                                                        $texte = $texte_corrige ;
     397                                                                                }else{
     398                                                                                        $commande = escapeshellarg("Dans $id_article (source $id_source)" . $l[0] . " : lien vers " . $l[4] . " non trouvé") ;
     399                                                                                        passthru("echo $commande >> liens_non_corriges.txt");
     400                                                                                }
    354401                                                                               
    355                                                                                 $lien = escapeshellarg("$id_article : $lien_actuel => $lien_corrige");
    356                                                                                 passthru("echo $lien >> liens_corriges.txt");
    357                                                                                 // maj le texte
    358                                                                                 $texte_corrige = str_replace($lien_actuel, $lien_corrige, $texte);
    359                                                                                 sql_update("spip_articles", array("texte" => sql_quote($texte_corrige)), "id_article=$id_article");
    360                                                                                 // attention s'il y a plusieurs liens
    361                                                                                 $texte = $texte_corrige ;
    362                                                                         }else{
    363                                                                                 $commande = escapeshellarg("Dans $id_article (source $id_source)" . $l[0] . " : lien vers " . $l[4] . " non trouvé") ;
    364                                                                                 passthru("echo $commande >> liens_non_corriges.txt");
    365402                                                                        }
    366                                                                        
    367403                                                                }
    368404                                                        }
    369405                                                }
    370406                                        }
    371                                 }
    372407                               
    373408                                $output->writeln("");
Note: See TracChangeset for help on using the changeset viewer.