Changeset 95763 in spip-zone


Ignore:
Timestamp:
Mar 4, 2016, 1:46:00 PM (5 years ago)
Author:
booz@…
Message:

exporter aussi les métadonnées (auteurs, hierarchies, mots-clés etc)

File:
1 edited

Legend:

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

    r95753 r95763  
    2626                $this
    2727                        ->setName('fichiers:exporter')
    28                         ->setDescription('Exporter spip_articles (ou autre) au format txt. `spip export -d %dest%`')
     28                        ->setDescription('Exporter spip_articles (ou autre) au format txt.')
    2929                        ->setAliases(array(
    3030                                'export'
     
    5757                global $spip_racine;
    5858                global $spip_loaded;
    59                
     59                global $spip_version_branche ;         
     60       
    6061                include_spip("iterateur/data");
    6162               
     
    9495
    9596                                while($f = sql_fetch($query)){
    96                                
     97                                       
    9798                                        $id_article = $f['id_article'] ;
    98                                         include_spip("inc/charset");
    99                                        
    100                                         $nom_fichier = translitteration($f['titre']) ;
    101                                         $nom_fichier = preg_replace("/[^a-zA-Z0-9]/i", "-", $nom_fichier);
    102                                         $nom_fichier = preg_replace("/-{2,}/i", "-", $nom_fichier);
    103                                         $nom_fichier = preg_replace("/^-/i", "", $nom_fichier);
    104                                         $nom_fichier = preg_replace("/-$/i", "", $nom_fichier);
    105                                        
    106                                         $date = ($f['date_redac'] != "0000-00-00 00:00:00")? $f['date_redac'] : $f['date'] ;
    107                                        
    108                                         preg_match("/^(\d\d\d\d)-(\d\d)/", $date, $m);
    109                                         $annee = $m[1] ;
    110                                         $mois = $m[2] ;
    111                                        
     99                                        $id_rubrique = $f['id_rubrique'] ;
     100                               
     101                                        // Exporter les champs spip_articles
    112102                                        $fichier = "" ;
     103                                        $ins_auteurs = array();
     104                                        $ins_mc = array();
     105
    113106                                        foreach($f as $k => $v){
    114107                                                if($k == "texte" or $v == "" or $v == "0")
     
    117110                                        }
    118111                                        $fichier .= "\n\n" . $f['texte'] . "\n\n" ;
    119                                        
    120                                         $nom_fichier = "$dest/$annee/$mois/$annee-$mois"."_$nom_fichier.txt" ;
    121 
    122                                         // créer les répertoires
     112
     113                                        // métadonnées (hierarchie, auteurs, mots-clés...)
     114
     115                                        // hierarchie
     116                                        $titre_rubrique = sql_getfetsel("titre", "spip_rubriques", "id_rubrique=$id_rubrique");
     117                                        $id_parent = sql_getfetsel("id_parent", "spip_rubriques", "id_rubrique=$id_rubrique");
     118                                        $titre_parent = sql_getfetsel("titre", "spip_rubriques", "id_rubrique=$id_parent");
     119                                       
     120                                        // auteurs spip 3
     121                                        if($spip_version_branche > "3")
     122                                               
     123                                                $auteurs = sql_allfetsel("a.nom", "spip_auteurs_liens al, spip_auteurs a", "al.id_objet=$id_article and al.objet='article' and al.id_auteur=a.id_auteur");
     124                                        // spip 2
     125                                        else
     126                                                $auteurs = sql_allfetsel("a.nom", "spip_auteurs_articles al, spip_auteurs a", " where al.id_article=$id_article and al.id_auteur=a.id_auteur");
     127                                       
     128                                        foreach($auteurs as $a){
     129                                                if($a['nom'])
     130                                                        $ins_auteurs[] = $a['nom'] ;
     131                                        }       
     132                                               
     133                                        $auteurs = join("@@", $ins_auteurs) ;
     134                                        $progress->setMessage($auteurs, 'auteurs');
     135                                       
     136                                        // mots-clés
     137
     138                                        // mots-clés spip 3
     139                                        if($spip_version_branche > "3")
     140                                                $motscles = sql_allfetsel("*", "spip_mots_liens ml, spip_mots m", "ml.id_objet=$id_article and ml.objet='article' and ml.id_mot=m.id_mot");
     141                                        // spip 2
     142                                        else
     143                                                $motscles = sql_allfetsel("*", "spip_mots_articles ml, spip_mots a", " where ml.id_article=$id_article and ml.id_mot=m.id_mot");
     144                                       
     145                                        foreach($motscles as $mc){
     146                                                if($mc['titre'])
     147                                                        $ins_mc[] = $mc['titre'] ;
     148                                        }       
     149                                               
     150                                        $motscles = join("@@", $ins_mc) ;
     151                                        $motscles_m = substr($motscles, 0, 230) ;
     152                                        $progress->setMessage($motscles_m, 'motscles');
     153
     154                                       
     155                                        // Ajouter les métadonnées                                     
     156                                        if($bio)
     157                                                $fichier = "<ins class='bio'>$bio</ins>\n" . $fichier ;
     158                                        if($auteurs)
     159                                                $fichier = "<ins class='auteurs'>$auteurs</ins>\n" . $fichier ;                         
     160                                        if($motscles)
     161                                                $fichier = "<ins class='motscles'>$motscles</ins>\n" . $fichier ;
     162                                        if($titre_parent && $titre_rubrique)
     163                                                $fichier = "<ins class='hierarchie'>$titre_parent@@$titre_rubrique</ins>\n" . $fichier ;
     164                               
     165                                        // Créer un fichier txt
     166                                        $date = ($f['date_redac'] != "0000-00-00 00:00:00")? $f['date_redac'] : $f['date'] ;
     167                                        preg_match("/^(\d\d\d\d)-(\d\d)/", $date, $m);
     168                                        $annee = $m[1] ;
     169                                        $mois = $m[2] ;
     170
     171                                        include_spip("inc/charset");
     172                                        $nom_fichier = translitteration($f['titre']) ;
     173                                        $nom_fichier = preg_replace("/[^a-zA-Z0-9]/i", "-", $nom_fichier);
     174                                        $nom_fichier = preg_replace("/-{2,}/i", "-", $nom_fichier);
     175                                        $nom_fichier = preg_replace("/^-/i", "", $nom_fichier);
     176                                        $nom_fichier = preg_replace("/-$/i", "", $nom_fichier);
     177                                       
     178                                        $nom_fichier = "$dest/$annee/$annee-$mois/$annee-$mois"."_$nom_fichier.txt" ;
     179
     180                                        // Créer les répertoires
    123181                                        if(!is_dir("$dest/$annee"))
    124182                                                mkdir("$dest/$annee");
    125                                         if(!is_dir("$dest/$annee/$mois"))
    126                                                 mkdir("$dest/$annee/$mois");   
     183                                        if(!is_dir("$dest/$annee/$annee-$mois"))
     184                                                mkdir("$dest/$annee/$annee-$mois");     
    127185                                       
    128186                                        if(ecrire_fichier("$nom_fichier", $fichier)){                           
    129187                                               
    130188                                                // Si tout s'est bien passé, on avance la barre
    131                                                 $progress->setMessage($nom_fichier, 'filename');
    132                                                 $progress->setFormat("\n<fg=white;bg=blue>%message%</>\n" . '%current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%' . "\n  %filename%\n\n");
     189                                                $nom_fichier_m = substr($nom_fichier, 0, 230) ;
     190                                                $progress->setMessage($nom_fichier_m, 'filename');
     191                                                $progress->setFormat("<fg=white;bg=blue>%message%</>\n" . '%current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%' . "\n %auteurs% %motscles% \n %filename% \n\n");
    133192                                                $progress->advance();
    134193                                       
Note: See TracChangeset for help on using the changeset viewer.