Changeset 95771 in spip-zone


Ignore:
Timestamp:
Mar 4, 2016, 6:05:26 PM (5 years ago)
Author:
booz@…
Message:

on migre aussi les auteurs et les mots clés

File:
1 edited

Legend:

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

    r95764 r95771  
    4747                global $spip_racine;
    4848                global $spip_loaded;
    49                
     49                global $spip_version_branche ;         
     50       
    5051                include_spip("iterateur/data");
    5152               
     
    9394                                if(!in_array('metadonnees', $champs))
    9495                                        sql_query("alter table spip_articles add metadonnees MEDIUMTEXT NOT NULL DEFAULT ''");
     96
     97                                // initilaiser le groupe mot technique ?
     98                                $id_groupe_mot_bdd = sql_getfetsel("id_groupe", "spip_groupe_mots", "titre='mots_importes'");
     99                                if(!$id_groupe_mot_bdd)
     100                                        $id_groupe_mot_bdd = sql_insertq("spip_groupes_mots", array("titre" => 'mots_importes'));
     101
     102
    95103                       
    96104                                $fichiers = preg_files($source . "/", "(?:(?<!\.metadata\.)txt$)", 100000);
     
    108116                                        preg_match("/^(\d{4})-\d{2}/", $fichier, $m);
    109117                                        $numero = $m[0];
     118                                        $annee = $m[1] ;
    110119                                       
    111120                                        // chopper l'id_parent dans le fichier ?
     
    120129                                        $texte = preg_replace("/@@SOURCE.*/", "", $texte);
    121130                                       
    122                                                                                
     131                                        // Si des <ins> qui correspondent à des champs metadonnees connus,on les ajoute.
     132                                       
     133                                        $champs_metadonnees = array("motscles", "auteurs", "hierarchie");
     134                                        if (preg_match_all(",<ins[^>]+class='(.*?)'>(.*?)</ins>,ims", $texte, $z, PREG_SET_ORDER)){
     135                                                foreach($z as $d){
     136                                                        if(in_array($d[1], $champs_metadonnees)){
     137                                                                // retenir
     138                                                                $$d[1] = split("@@", $d[2]);
     139                                                                // virer du texte
     140                                                                $texte = substr_replace($texte, '', strpos($texte, $d[0]), strlen($d[0]));
     141                                                        }
     142                                                }
     143                                        }
     144                                       
     145                                        if($hierarchie){
     146                                                $titre_parent = $hierarchie[0] ;
     147                                                $titre_rubrique = $hierarchie[1] ;
     148                                               
     149                                                // petit hack pour les rubriques par mois
     150                                                if((intval($titre_rubrique) and intval($titre_rubrique) <= 12) OR $titre_rubrique = "00")
     151                                                        $titre_rubrique = "$titre_parent-$titre_rubrique";
     152                                        }else{
     153                                                $titre_parent = $annee ;
     154                                                $titre_rubrique = "$annee-$numero" ;
     155                                        }
     156                                                                                                                       
    123157                                        // faut il creer des rubriques ?
    124                                         $id_rubrique = sql_getfetsel("id_rubrique", "spip_rubriques", "titre='$numero'");
     158                                        $id_rubrique = sql_getfetsel("id_rubrique", "spip_rubriques", "titre='$titre_rubrique'");
    125159                                       
    126160                                        if(!$id_rubrique){
    127161                                                include_spip("inc/rubriques");
    128                                                 $annee = $m[1] ;
    129                                                 $id_rubrique = creer_rubrique_nommee($annee . "/" . $numero, $id_parent);
     162                                                $id_rubrique = creer_rubrique_nommee("$titre_parent/$titre_rubrique", $id_parent);
    130163                                                $progress->clear();
    131                                                 $progress->setMessage(" Création de la rubrique $annee-$numero => $id_rubrique ", 'inforub');
     164                                                $progress->setMessage(" Création de rubrique $titre_parent/$titre_rubrique => $id_rubrique ", 'inforub');
    132165                                                $progress->display();
    133166                                                                                       
    134167                                        }
     168                                       
     169                                        $progress->setMessage("", 'mot');
     170                                        $progress->setMessage("", 'auteur');
     171                                       
    135172                                        // inserer l'article
    136173                                        include_spip("inc/convertisseur");
    137174                                        $GLOBALS['auteur_session']['id_auteur'] = 1 ;                           
    138                                         if(inserer_conversion($texte, $id_rubrique, $f)){
     175                                        if($id_article = inserer_conversion($texte, $id_rubrique, $f)){
     176                                               
     177                                                // l'auteur existe t'il ? Le créer.
     178                                                if($auteurs){
     179                                                        foreach($auteurs as $auteur){
     180                                                                $id_auteur_bdd = sql_getfetsel("id_auteur", "spip_auteurs", "nom=" . sql_quote($auteur));
     181                                                                if(!$id_auteur_bdd){
     182                                                                        $id_auteur = sql_insertq("spip_auteurs", array(
     183                                                                        "nom" => $auteur,
     184                                                                        "statut" => "1comite"
     185                                                                ));
     186                                                                // spip 3
     187                                                                if($spip_version_branche > "3")
     188                                                                                sql_insertq("spip_auteurs_liens", array(
     189                                                                                "id_auteur" => $id_auteur,
     190                                                                                "id_objet" => $id_article,
     191                                                                                "objet" => "article"
     192                                                                        ));
     193                                                                else // spip 2
     194                                                                                sql_insertq("spip_auteurs_articles", array(
     195                                                                                "id_auteur" => $id_auteur,
     196                                                                                "id_article" => $id_article
     197                                                                        ));
     198                                                                               
     199                                                                $progress->setMessage("Création de l'auteur " . $auteur, 'auteur');
     200                                                                }else{
     201                                                                        if(!sql_getfetsel("id_auteur", "spip_auteurs_liens", "id_auteur=$id_auteur_bdd and id_objet=$id_article and objet='article'"))
     202                                                                                // spip 3
     203                                                                                if($spip_version_branche > "3")
     204                                                                                        sql_insertq("spip_auteurs_liens", array(
     205                                                                                        "id_auteur" => $id_auteur_bdd,
     206                                                                                        "id_objet" => $id_article,
     207                                                                                        "objet" => "article"
     208                                                                                ));
     209                                                                        else // spip 2
     210                                                                                        sql_insertq("spip_auteurs_articles", array(
     211                                                                                        "id_auteur" => $id_auteur,
     212                                                                                        "id_article" => $id_article
     213                                                                                ));
     214                                                                }       
     215                                                        }
     216                                                }
     217                                               
     218                                                                                       
     219                                                // l'auteur existe t'il ? Le créer.
     220                                                if($motscles){
     221                                                        foreach($motscles as $mot){
     222                                                                $id_mot_bdd = sql_getfetsel("id_mot", "spip_mots", "titre=" . sql_quote($mot));
     223                                                                if(!$id_mot_bdd){
     224                                                                        $id_mot = sql_insertq("spip_mots", array(
     225                                                                        "titre" => $mot,
     226                                                                        "type" => "mots_importes",
     227                                                                        "id_groupe" => $id_groupe_mot_bdd
     228                                                                ));
     229                                                                // spip 3
     230                                                                if($spip_version_branche > "3")
     231                                                                                sql_insertq("spip_mots_liens", array(
     232                                                                                "id_mot" => $id_mot,
     233                                                                                "id_objet" => $id_article,
     234                                                                                "objet" => "article"
     235                                                                        ));
     236                                                                else // spip 2
     237                                                                                sql_insertq("spip_mots_articles", array(
     238                                                                                "id_mot" => $id_mot,
     239                                                                                "id_article" => $id_article
     240                                                                        ));
     241                                                                               
     242                                                                $progress->setMessage("Création du mot " . $mot, 'mot');
     243                                                                }else{
     244                                                                        if(!sql_getfetsel("id_mot", "spip_mots_liens", "id_mot=$id_mot_bdd and id_objet=$id_article and objet='article'"))
     245                                                                                // spip 3
     246                                                                                if($spip_version_branche > "3")
     247                                                                                        sql_insertq("spip_mots_liens", array(
     248                                                                                        "id_mot" => $id_mot_bdd,
     249                                                                                        "id_objet" => $id_article,
     250                                                                                        "objet" => "article"
     251                                                                                ));
     252                                                                        else // spip 2
     253                                                                                        sql_insertq("spip_mots_articles", array(
     254                                                                                        "id_mot" => $id_auteur,
     255                                                                                        "id_article" => $id_article
     256                                                                                ));
     257               
     258                                                                }       
     259                                                        }
     260                                                }
    139261                                               
    140262                                                // Si tout s'est bien passé, on avance la barre
    141263                                                $progress->setMessage($f, 'filename');
    142                                                 $progress->setFormat("<fg=white;bg=blue>%message%</>\n" . "<fg=white;bg=red>%inforub%</>\n" . '%current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%' . "\n  %filename%\n\n");
     264                                                $progress->setFormat("<fg=white;bg=blue>%message%</>\n" . "<fg=white;bg=red>%inforub% %auteur% %mot%</>\n" . '%current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%' . "\n  %filename%\n\n");
    143265                                                $progress->advance();
    144266                                                                                       
Note: See TracChangeset for help on using the changeset viewer.