Changeset 107728 in spip-zone


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

conserver les id_article avec l'option -c oui

Location:
_plugins_/convertisseur/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/convertisseur/trunk/inc/convertisseur.php

    r104327 r107728  
    1111        // Lettrine avec ital ex : //«~J{e ne suis pas // «C{’est comme la     
    1212        $t = preg_replace("/^([« ~]*\w)\{/Um","{\\1", $t);
    13 
     13       
    1414        // supprimer les insecables sauf dans les nombres,
    1515        // parce que ca prend le chou (?)
    1616        $t = preg_replace(",(\D)~(\D),", '\1 \2', $t);
    17 
     17       
    1818        // resserrer les {}
    1919        $t = preg_replace('/{([.,]+)/', '\1{', $t);
     
    2828        $t = preg_replace(",~ +,", '~', $t);
    2929        $t = preg_replace("/{([?!., ]?)}/", '\1', $t);
    30 
     30       
    3131        $t = preg_replace(",^ +,m", '', $t);
    3232
     
    4646        return $t;
    4747}
    48 
    4948
    5049        // -----------------------------------------------------------------------
     
    518517        global $log;
    519518        global $spip_version_branche ;
    520 
     519       
    521520        $id_rubrique = intval($id_rubrique);
    522521        $id_auteur = $GLOBALS['auteur_session']['id_auteur'];
    523 
     522       
    524523        // Verifier que la rubrique existe et qu'on a le droit d'y ecrire
    525524        if (!$t = sql_fetsel('id_rubrique', 'spip_rubriques', 'id_rubrique='.$id_rubrique)) {
     
    527526                return false;
    528527        }
    529 
     528       
    530529        // Champs d'un article
    531530        include_spip("base/abstract_sql");
    532531        $show = sql_showtable("spip_articles");
    533532        $champs_article = array_keys($show['field']);
    534 
     533       
    535534        // Si $f (chargement zip), on cherche un article du meme $f
    536535        // (valeur stockée dans un champ fichier_source ou à défaut dans le PS)
    537536        // dans la meme rubrique,
    538537        // avec le statut prepa, qui nous appartient, et... on l'ecrase
    539 
     538       
    540539        $champ_source = (in_array("fichier_source", $champs_article)) ? "fichier_source" : "ps" ;
    541540        $source = 'Conversion depuis '.basename($f) ;
    542 
     541       
    543542        // spip 3
    544543        if($spip_version_branche > "3")
     
    562561                        AND aut.id_auteur=".$id_auteur
    563562                        );
    564        
     563               
    565564        if ($t = spip_fetch_array($s)) {
    566565                $id_article = $t['id_article'];
     
    570569                        'id_rubrique='.intval($id_rubrique)
    571570                );
    572 
     571               
    573572                $champs = array(
    574573                        'titre' => $source,
     
    579578                        $champ_source => $source
    580579                        );
    581 
     580               
    582581                // Envoyer aux plugins
    583582                $champs = pipeline('pre_insertion',
     
    589588                        )
    590589                );
    591 
     590               
    592591                $id_article = sql_insertq('spip_articles', $champs);
    593 
     592               
    594593                pipeline('post_insertion',
    595594                        array(
     
    601600                        )
    602601                );
    603 
    604602               
    605603                if ($id_article>0
    606604                AND $id_auteur>0) {
    607 
     605                       
    608606                        // s'ajouter en auteur en spip 2 ou 3
    609607                        if($spip_version_branche > "3")
     
    624622                }
    625623        }
    626 
     624       
    627625        // En cas d'echec de l'insertion
    628626       
     
    631629                return;
    632630        }
    633 
     631       
    634632        // Si on a repere des <ins class='titre'> etc, les inserer
    635633        // dans les bons champs ; note : on choisi <ins> pour eviter les erreurs
     
    648646                }
    649647        }
    650 
    651         // stocker l'id_article en id_source pour permettre le ré-examen des liens [->123]
     648       
     649        // stocker l'id_article recu dans le fichier txt en id_source pour permettre le ré-examen des liens [->123]
    652650        $id_source = $c["id_article"] ;
    653 
    654         // attention les conflits               
     651       
     652        // attention les conflits
    655653        unset($c["id_article"]);
    656654        unset($c["id_secteur"]);
    657655        unset($c["id_rubrique"]);
    658 
     656       
    659657        // Si des <ins> qui ne correspondent pas à des champs connus sont toujours là on les ajoute dans le champs metadonnees ou a défaut ostensiblement en haut du texte.
    660658        if (preg_match_all(",<ins[^>]+class='(.*?)'>(.*?)</ins>,ims", $c['texte'], $z, PREG_SET_ORDER)){
     
    674672        if(in_array("id_source", $champs_article))
    675673                $c['id_source'] = $id_source ;
    676 
     674       
    677675        $r = array();
    678676        foreach ($c as $var => $val)
    679677                $r[$var] = trim($val);
    680 
     678       
    681679        //var_dump($r,$id_article);
    682680        //exit ;
    683 
     681       
    684682        sql_updateq("spip_articles", $r, "id_article=" . $id_article);
    685683       
    686684        return $id_article;
    687685}
    688 
    689 
    690 ?>
  • _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.