Changeset 107728 in spip-zone
- Timestamp:
- Nov 24, 2017, 4:03:46 PM (3 years ago)
- Location:
- _plugins_/convertisseur/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/convertisseur/trunk/inc/convertisseur.php
r104327 r107728 11 11 // Lettrine avec ital ex : //«~J{e ne suis pas // «C{’est comme la 12 12 $t = preg_replace("/^([« ~]*\w)\{/Um","{\\1", $t); 13 13 14 14 // supprimer les insecables sauf dans les nombres, 15 15 // parce que ca prend le chou (?) 16 16 $t = preg_replace(",(\D)~(\D),", '\1 \2', $t); 17 17 18 18 // resserrer les {} 19 19 $t = preg_replace('/{([.,]+)/', '\1{', $t); … … 28 28 $t = preg_replace(",~ +,", '~', $t); 29 29 $t = preg_replace("/{([?!., ]?)}/", '\1', $t); 30 30 31 31 $t = preg_replace(",^ +,m", '', $t); 32 32 … … 46 46 return $t; 47 47 } 48 49 48 50 49 // ----------------------------------------------------------------------- … … 518 517 global $log; 519 518 global $spip_version_branche ; 520 519 521 520 $id_rubrique = intval($id_rubrique); 522 521 $id_auteur = $GLOBALS['auteur_session']['id_auteur']; 523 522 524 523 // Verifier que la rubrique existe et qu'on a le droit d'y ecrire 525 524 if (!$t = sql_fetsel('id_rubrique', 'spip_rubriques', 'id_rubrique='.$id_rubrique)) { … … 527 526 return false; 528 527 } 529 528 530 529 // Champs d'un article 531 530 include_spip("base/abstract_sql"); 532 531 $show = sql_showtable("spip_articles"); 533 532 $champs_article = array_keys($show['field']); 534 533 535 534 // Si $f (chargement zip), on cherche un article du meme $f 536 535 // (valeur stockée dans un champ fichier_source ou à défaut dans le PS) 537 536 // dans la meme rubrique, 538 537 // avec le statut prepa, qui nous appartient, et... on l'ecrase 539 538 540 539 $champ_source = (in_array("fichier_source", $champs_article)) ? "fichier_source" : "ps" ; 541 540 $source = 'Conversion depuis '.basename($f) ; 542 541 543 542 // spip 3 544 543 if($spip_version_branche > "3") … … 562 561 AND aut.id_auteur=".$id_auteur 563 562 ); 564 563 565 564 if ($t = spip_fetch_array($s)) { 566 565 $id_article = $t['id_article']; … … 570 569 'id_rubrique='.intval($id_rubrique) 571 570 ); 572 571 573 572 $champs = array( 574 573 'titre' => $source, … … 579 578 $champ_source => $source 580 579 ); 581 580 582 581 // Envoyer aux plugins 583 582 $champs = pipeline('pre_insertion', … … 589 588 ) 590 589 ); 591 590 592 591 $id_article = sql_insertq('spip_articles', $champs); 593 592 594 593 pipeline('post_insertion', 595 594 array( … … 601 600 ) 602 601 ); 603 604 602 605 603 if ($id_article>0 606 604 AND $id_auteur>0) { 607 605 608 606 // s'ajouter en auteur en spip 2 ou 3 609 607 if($spip_version_branche > "3") … … 624 622 } 625 623 } 626 624 627 625 // En cas d'echec de l'insertion 628 626 … … 631 629 return; 632 630 } 633 631 634 632 // Si on a repere des <ins class='titre'> etc, les inserer 635 633 // dans les bons champs ; note : on choisi <ins> pour eviter les erreurs … … 648 646 } 649 647 } 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] 652 650 $id_source = $c["id_article"] ; 653 654 // attention les conflits 651 652 // attention les conflits 655 653 unset($c["id_article"]); 656 654 unset($c["id_secteur"]); 657 655 unset($c["id_rubrique"]); 658 656 659 657 // 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. 660 658 if (preg_match_all(",<ins[^>]+class='(.*?)'>(.*?)</ins>,ims", $c['texte'], $z, PREG_SET_ORDER)){ … … 674 672 if(in_array("id_source", $champs_article)) 675 673 $c['id_source'] = $id_source ; 676 674 677 675 $r = array(); 678 676 foreach ($c as $var => $val) 679 677 $r[$var] = trim($val); 680 678 681 679 //var_dump($r,$id_article); 682 680 //exit ; 683 681 684 682 sql_updateq("spip_articles", $r, "id_article=" . $id_article); 685 683 686 684 return $id_article; 687 685 } 688 689 690 ?> -
_plugins_/convertisseur/trunk/spip-cli/convertisseurImporter.php
r107727 r107728 46 46 '' 47 47 ) 48 ->addOption( 49 'conserver_id_article', 50 'c', 51 InputOption::VALUE_OPTIONAL, 52 'option -c oui pour conserver les id_article', 53 '' 54 ) 48 55 ; 49 56 } … … 59 66 $id_parent = $input->getOption('dest') ; 60 67 $racine_documents = $input->getOption('racine_documents') ; 68 $conserver_id_article = $input->getOption('conserver_id_article') ; 61 69 62 70 // Répertoire source … … 158 166 159 167 if (preg_match(",<ins class='id_article'>(.*?)</ins>,ims", $texte, $z)) 160 $id_source = $z[1];168 $id_source = $z[1]; 161 169 162 170 // dans quelle rubrique importer ? … … 195 203 196 204 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 197 229 // Créer l'auteur ? 198 230 if($auteurs){ … … 318 350 319 351 // recaler des liens [->123456] ? 352 // si on ne conserve pas le meme id_article 320 353 include_spip("inc/lien"); 321 354 if(preg_match(_RACCOURCI_LIEN, $texte)) … … 339 372 lire_fichier("liens_a_corriger.txt", $articles); 340 373 $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 } 354 401 355 $lien = escapeshellarg("$id_article : $lien_actuel => $lien_corrige");356 passthru("echo $lien >> liens_corriges.txt");357 // maj le texte358 $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 liens361 $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");365 402 } 366 367 403 } 368 404 } 369 405 } 370 406 } 371 }372 407 373 408 $output->writeln("");
Note: See TracChangeset
for help on using the changeset viewer.