Changeset 95805 in spip-zone


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

importer les groupes de mots clés

File:
1 edited

Legend:

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

    r95771 r95805  
    2323                $this
    2424                        ->setName('fichiers:importer')
    25                         ->setDescription('Importer des fichiers texte SPIP dans spip_articles. `spip import -s %source% -d %id_rubrique%`')
     25                        ->setDescription('Importer des fichiers texte SPIP dans spip_articles.')
    2626                        ->setAliases(array(
    2727                                'import' // abbréviation commune pour "import"
     
    6161
    6262                if($id_parent == 0){
    63                         $output->writeln("<error>Préciser le secteur cible pour importer. spip import -d `id_secteur` </error>\n");
     63                        $output->writeln("<error>Préciser dans quelle rubrique importer les articles. spip import -d `id_rubrique` </error>\n");
    6464                        exit ;
    6565                }       
     
    7474                        // Si c'est bon on continue
    7575                        else{
    76                                
     76
    7777                                // Champs d'un article
    7878                                include_spip("base/abstract_sql");
     
    9191                                */
    9292                               
    93                                 // Ajout d'un champs pour stocker les éventuelles ins sans champs.
     93                                // Ajout d'un champ la premiere fois pour stocker les éventuelles ins qui n'ont pas de champs (peut-être long).
    9494                                if(!in_array('metadonnees', $champs))
    9595                                        sql_query("alter table spip_articles add metadonnees MEDIUMTEXT NOT NULL DEFAULT ''");
    9696
    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 
    103                        
    10497                                $fichiers = preg_files($source . "/", "(?:(?<!\.metadata\.)txt$)", 100000);
    10598
     
    113106
    114107                                foreach($fichiers as $f){
     108
    115109                                        $fichier =      basename($f) ;
    116110                                        preg_match("/^(\d{4})-\d{2}/", $fichier, $m);
    117                                         $numero = $m[0];
     111                                        $mois = $m[0];
    118112                                        $annee = $m[1] ;
    119113                                       
     
    130124                                       
    131125                                        // Si des <ins> qui correspondent à des champs metadonnees connus,on les ajoute.
    132                                        
    133                                         $champs_metadonnees = array("motscles", "auteurs", "hierarchie");
     126                                        $champs_metadonnees = array("mots_cles", "auteurs", "hierarchie");
     127                                        $hierarchie = "" ;
     128                                        $auteurs = "" ;
     129                                        $mots_cles = "" ;                                       
     130       
    134131                                        if (preg_match_all(",<ins[^>]+class='(.*?)'>(.*?)</ins>,ims", $texte, $z, PREG_SET_ORDER)){
    135132                                                foreach($z as $d){
    136133                                                        if(in_array($d[1], $champs_metadonnees)){
    137                                                                 // retenir
     134                                                                // class="truc" => $truc
    138135                                                                $$d[1] = split("@@", $d[2]);
    139136                                                                // virer du texte
     
    146143                                                $titre_parent = $hierarchie[0] ;
    147144                                                $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";
     145
     146                                                $titre_rubrique = preg_replace(",^(\d{4})/(\d{2})$,", "\\2", $titre_rubrique); // perso diplo
     147
    152148                                        }else{
    153149                                                $titre_parent = $annee ;
    154                                                 $titre_rubrique = "$annee-$numero" ;
     150                                                $titre_rubrique = "$annee-$mois" ;
    155151                                        }
    156                                                                                                                        
    157                                         // faut il creer des rubriques ?
    158                                         $id_rubrique = sql_getfetsel("id_rubrique", "spip_rubriques", "titre='$titre_rubrique'");
    159                                        
    160                                         if(!$id_rubrique){
    161                                                 include_spip("inc/rubriques");
    162                                                 $id_rubrique = creer_rubrique_nommee("$titre_parent/$titre_rubrique", $id_parent);
    163                                                 $progress->clear();
    164                                                 $progress->setMessage(" Création de rubrique $titre_parent/$titre_rubrique => $id_rubrique ", 'inforub');
    165                                                 $progress->display();
    166                                                                                        
    167                                         }
    168                                        
     152                                       
     153                                        include_spip("inc/rubriques");
     154                                        $id_rubrique = creer_rubrique_nommee("$titre_parent/$titre_rubrique", $id_parent);
     155                                        $progress->setMessage(" Création de rubrique $titre_parent/$titre_rubrique => $id_rubrique ", 'inforub');
     156                                                                                                                               
    169157                                        $progress->setMessage("", 'mot');
    170158                                        $progress->setMessage("", 'auteur');
     
    172160                                        // inserer l'article
    173161                                        include_spip("inc/convertisseur");
    174                                         $GLOBALS['auteur_session']['id_auteur'] = 1 ;                           
     162
     163                                        // auteur par défaut
     164                                        $id_admin = sql_getfetsel("id_auteur", "spip_auteurs", "id_auteur=1");
     165                                        $id_admin = ($id_admin)? $id_admin : 12166 ;
     166
     167                                        $GLOBALS['auteur_session']['id_auteur'] = $id_admin ;
     168                       
    175169                                        if($id_article = inserer_conversion($texte, $id_rubrique, $f)){
    176170                                               
    177171                                                // l'auteur existe t'il ? Le créer.
    178172                                                if($auteurs){
     173
    179174                                                        foreach($auteurs as $auteur){
    180                                                                 $id_auteur_bdd = sql_getfetsel("id_auteur", "spip_auteurs", "nom=" . sql_quote($auteur));
    181                                                                 if(!$id_auteur_bdd){
     175                                                                $id_auteur = sql_getfetsel("id_auteur", "spip_auteurs", "nom=" . sql_quote($auteur));
     176                                                                if(!$id_auteur){
    182177                                                                        $id_auteur = sql_insertq("spip_auteurs", array(
    183                                                                         "nom" => $auteur,
    184                                                                         "statut" => "1comite"
     178                                                                                "nom" => $auteur,
     179                                                                                "statut" => "1comite"
    185180                                                                ));
    186                                                                 // spip 3
    187                                                                 if($spip_version_branche > "3")
    188                                                                                 sql_insertq("spip_auteurs_liens", array(
     181                                                                $progress->setMessage("Création de l'auteur " . $auteur, 'auteur');
     182                                                                }
     183                                                       
     184                                                                if($spip_version_branche > "3"){
     185                                                                        if(!sql_getfetsel("id_auteur", "spip_auteurs_liens", "id_auteur=$id_auteur and id_objet=$id_article and objet='article'"))
     186                                                                                sql_insertq("spip_auteurs_liens", array(
    189187                                                                                "id_auteur" => $id_auteur,
    190188                                                                                "id_objet" => $id_article,
    191189                                                                                "objet" => "article"
    192190                                                                        ));
    193                                                                 else // spip 2
     191                                                        }else // spip 2
     192                                                                        if(!sql_getfetsel("id_auteur", "spip_auteurs_articles", "id_auteur=$id_auteur and id_article=$id_article"))
    194193                                                                                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                                                                 }       
     194                                                                                "id_auteur" => $id_auteur,
     195                                                                                "id_article" => $id_article
     196                                                                        ));
     197                                                               
    215198                                                        }
    216199                                                }
    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){
     200                               
     201                                                // Créer des mots clés ?
     202                                                if($mots_cles){
     203                                                        foreach($mots_cles as $mot){
     204                                                                // groupe mot-clé
     205                                                                list($type_mot,$titre_mot) = explode("::", $mot);
     206                                                                $type_mot = ($type_mot)? $type_mot : "Mots importés" ;
     207
     208                                                                $id_groupe_mot = sql_getfetsel("id_groupe", "spip_groupes_mots", "titre=" . sql_quote($type_mot));
     209                                                                if(!$id_groupe_mot)
     210                                                                        $id_groupe_mot = sql_insertq("spip_groupes_mots", array("titre" => $type_mot));                                                         
     211
     212                                                                $id_mot = sql_getfetsel("id_mot", "spip_mots", "titre=" . sql_quote($titre_mot));
     213                                                                if(!$id_mot){
    224214                                                                        $id_mot = sql_insertq("spip_mots", array(
    225                                                                         "titre" => $mot,
    226                                                                         "type" => "mots_importes",
    227                                                                         "id_groupe" => $id_groupe_mot_bdd
     215                                                                        "titre" => $titre_mot,
     216                                                                        "type" => $type_mot,
     217                                                                        "id_groupe" => $id_groupe_mot
    228218                                                                ));
    229                                                                 // spip 3
    230                                                                 if($spip_version_branche > "3")
     219                                                                        $progress->setMessage("Création du mot " . $titre_mot . " (" . $type_mot .")", 'mot');
     220                                                                }
     221
     222                                                                if($spip_version_branche > "3"){
     223                                                                        if(!sql_getfetsel("id_mot", "spip_mots_liens", "id_mot=$id_mot and id_objet=$id_article and objet='article'"))
    231224                                                                                sql_insertq("spip_mots_liens", array(
    232225                                                                                "id_mot" => $id_mot,
     
    234227                                                                                "objet" => "article"
    235228                                                                        ));
    236                                                                 else // spip 2
     229                                                                }else // spip 2
     230                                                                        if(!sql_getfetsel("id_mot", "spip_mots_articles", "id_mot=$id_mot and id_article=$id_article"))
    237231                                                                                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                                                                 }       
     232                                                                                "id_mot" => $id_mot,
     233                                                                                "id_article" => $id_article
     234                                                                        ));
    259235                                                        }
    260236                                                }
    261                                                
     237
    262238                                                // Si tout s'est bien passé, on avance la barre
    263239                                                $progress->setMessage($f, 'filename');
     
    273249                                // ensure that the progress bar is at 100%
    274250                                $progress->finish();
     251                                $output->writeln("");
     252
    275253                        }
    276254                }
Note: See TracChangeset for help on using the changeset viewer.