Changeset 108452 in spip-zone


Ignore:
Timestamp:
Jan 11, 2018, 2:21:40 PM (3 years ago)
Author:
booz@…
Message:

ne pas envoyer la console si pas d'articles a exporter

File:
1 edited

Legend:

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

    r108140 r108452  
    128128                                $query = sql_query("select * from spip_articles $critere_export $critere_date_modif $critere_statut order by date_redac asc");
    129129                               
    130                                 // start and displays the progress bar
    131                                 $progress = new ProgressBar($output, sql_count($query));
    132                                 $progress->setBarWidth(100);
    133                                 $progress->setRedrawFrequency(1);
    134                                 $progress->setMessage(" Export de `spip_articles` en cours dans $dest ... ", 'message');
    135                                 $progress->start();
     130                                if(sql_count($query) > 0){
     131                                        // start and displays the progress bar
     132                                        $progress = new ProgressBar($output, sql_count($query));
     133                                        $progress->setBarWidth(100);
     134                                        $progress->setRedrawFrequency(1);
     135                                        $progress->setMessage(" Export de `spip_articles` en cours dans $dest ... ", 'message');
     136                                        $progress->start();
    136137                               
    137                                 while($f = sql_fetch($query)){
    138138                                       
    139                                         $id_article = $f['id_article'] ;
    140                                         $id_rubrique = $f['id_rubrique'] ;
    141                                        
    142                                         // Exporter les champs spip_articles
    143                                         $fichier = "" ;
    144                                         $ins_auteurs = array();
    145                                         $ins_mc = array();
    146                                         $ins_doc = array();
    147                                         $progress->setMessage('', 'motscles');
    148                                         $progress->setMessage('', 'docs');
    149                                         $progress->setMessage('', 'auteurs');
    150                                        
    151                                         // mettre les champs dans un fichiers texte balisé avec des <ins class="champ">.
    152                                         foreach($f as $k => $v){
    153                                                 if($k == "texte" or $v == "" or $v == "0" or $v == "non" or $v == "0000-00-00 00:00:00")
    154                                                         continue ;
    155                                                 $fichier .= "<ins class='$k'>" . trim($v) ."</ins>\n" ;
    156                                         }
    157                                         $fichier .= "\n\n" . $f['texte'] . "\n\n" ;
    158                                        
    159                                         // Ajouter des métadonnées (hierarchie, auteurs, mots-clés...)
    160                                        
    161                                         // hierarchie
    162                                         $rubrique = sql_fetsel("titre, descriptif, id_parent", "spip_rubriques", "id_rubrique=$id_rubrique");
    163                                         $titre_rubrique = $rubrique['titre'];
    164                                         $id_parent = $rubrique['id_parent'];
    165                                         $descriptif_parent = $rubrique['titre'];
    166                                         if($descriptif_rubrique = $rubrique['descriptif'])
    167                                                         $descriptif_rubrique = "<ins class='descriptif_rubrique'>$descriptif_rubrique</ins>\n" ;
    168                                        
    169                                         if($id_parent)
    170                                                 $titre_parent = sql_getfetsel("titre", "spip_rubriques", "id_rubrique=$id_parent");
    171                                        
    172                                         // auteurs spip 3
    173                                         if($spip_version_branche > "3")
    174                                                 $auteurs = sql_allfetsel("a.nom, a.bio", "spip_auteurs_liens al, spip_auteurs a", "al.id_objet=$id_article and al.objet='article' and al.id_auteur=a.id_auteur");
    175                                         else // spip 2
    176                                                 $auteurs = sql_allfetsel("a.nom, a.bio", "spip_auteurs_articles aa, spip_auteurs a", "aa.id_article=$id_article and aa.id_auteur=a.id_auteur");
    177                                        
    178                                         foreach($auteurs as $a)
    179                                                 if($a['nom'])
    180                                                         $ins_auteurs[] = $a ;
    181                                        
    182                                         $auteurs = "" ;
    183                                         foreach($ins_auteurs as $k => $a){
    184                                                 if($k == 0)
    185                                                         $sep = "" ;
    186                                                 else
    187                                                         $sep = "@@" ;
    188                                                 $bio = ($a['bio'] != "") ? "::" . $a['bio'] : "" ;
    189                                                 $auteurs .= $sep . $a['nom'] . $bio ;
     139                                        while($f = sql_fetch($query)){
     140                                               
     141                                                $id_article = $f['id_article'] ;
     142                                                $id_rubrique = $f['id_rubrique'] ;
     143                                               
     144                                                // Exporter les champs spip_articles
     145                                                $fichier = "" ;
     146                                                $ins_auteurs = array();
     147                                                $ins_mc = array();
     148                                                $ins_doc = array();
     149                                                $progress->setMessage('', 'motscles');
     150                                                $progress->setMessage('', 'docs');
     151                                                $progress->setMessage('', 'auteurs');
     152                                               
     153                                                // mettre les champs dans un fichiers texte balisé avec des <ins class="champ">.
     154                                                foreach($f as $k => $v){
     155                                                        if($k == "texte" or $v == "" or $v == "0" or $v == "non" or $v == "0000-00-00 00:00:00")
     156                                                                continue ;
     157                                                        $fichier .= "<ins class='$k'>" . trim($v) ."</ins>\n" ;
     158                                                }
     159                                                $fichier .= "\n\n" . $f['texte'] . "\n\n" ;
     160                                               
     161                                                // Ajouter des métadonnées (hierarchie, auteurs, mots-clés...)
     162                                               
     163                                                // hierarchie
     164                                                $rubrique = sql_fetsel("titre, descriptif, id_parent", "spip_rubriques", "id_rubrique=$id_rubrique");
     165                                                $titre_rubrique = $rubrique['titre'];
     166                                                $id_parent = $rubrique['id_parent'];
     167                                                $descriptif_parent = $rubrique['titre'];
     168                                                if($descriptif_rubrique = $rubrique['descriptif'])
     169                                                                $descriptif_rubrique = "<ins class='descriptif_rubrique'>$descriptif_rubrique</ins>\n" ;
     170                                               
     171                                                if($id_parent)
     172                                                        $titre_parent = sql_getfetsel("titre", "spip_rubriques", "id_rubrique=$id_parent");
     173                                               
     174                                                // auteurs spip 3
     175                                                if($spip_version_branche > "3")
     176                                                        $auteurs = sql_allfetsel("a.nom, a.bio", "spip_auteurs_liens al, spip_auteurs a", "al.id_objet=$id_article and al.objet='article' and al.id_auteur=a.id_auteur");
     177                                                else // spip 2
     178                                                        $auteurs = sql_allfetsel("a.nom, a.bio", "spip_auteurs_articles aa, spip_auteurs a", "aa.id_article=$id_article and aa.id_auteur=a.id_auteur");
     179                                               
     180                                                foreach($auteurs as $a)
     181                                                        if($a['nom'])
     182                                                                $ins_auteurs[] = $a ;
     183                                               
     184                                                $auteurs = "" ;
     185                                                foreach($ins_auteurs as $k => $a){
     186                                                        if($k == 0)
     187                                                                $sep = "" ;
     188                                                        else
     189                                                                $sep = "@@" ;
     190                                                        $bio = ($a['bio'] != "") ? "::" . $a['bio'] : "" ;
     191                                                        $auteurs .= $sep . $a['nom'] . $bio ;
     192                                                }
     193                                               
     194                                                $auteurs_m = substr($auteurs, 0, 100) ;
     195                                                $progress->setMessage($auteurs_m, 'auteurs');
     196                                               
     197                                                // mots-clés
     198                                                if($spip_version_branche > "3")
     199                                                        $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");
     200                                                else // spip 2
     201                                                        $motscles = sql_allfetsel("*", "spip_mots_articles ma, spip_mots m", "ma.id_article=$id_article and ma.id_mot=m.id_mot");
     202                                               
     203                                                foreach($motscles as $mc){
     204                                                        if($mc['titre'])
     205                                                                $ins_mc[] = $mc['type'] . "::" . $mc['titre'] ;
     206                                                }
     207                                                if(is_array($ins_mc)){
     208                                                        $motscles = join("@@", $ins_mc) ;
     209                                                        $motscles_m = substr($motscles, 0, 100) ;
     210                                                        $progress->setMessage($motscles_m, 'motscles');
     211                                                }
     212                                               
     213                                                // documents joints
     214                                                $documents = sql_allfetsel("*", "spip_documents d, spip_documents_liens dl", "dl.id_objet=$id_article and dl.objet='article' and dl.id_document=d.id_document");
     215                                                foreach($documents as $doc)
     216                                                                $ins_doc[] = json_encode($doc) ;
     217                                                if(is_array($ins_doc)){
     218                                                        $documents = join("@@", $ins_doc) ;
     219                                                        $docs_m = substr($documents, 0, 100) ;
     220                                                        $progress->setMessage($docs_m, 'docs');
     221                                                }
     222                                               
     223                                                // Ajouter les métadonnées
     224                                                if($auteurs)
     225                                                        $fichier = "<ins class='auteurs'>$auteurs</ins>\n" . $fichier ;
     226                                                if($motscles)
     227                                                        $fichier = "<ins class='mots_cles'>$motscles</ins>\n" . $fichier ;
     228                                                if($documents)
     229                                                        $fichier = "<ins class='documents'>$documents</ins>\n" . $fichier ;
     230                                                if($titre_parent && $titre_rubrique){
     231                                                        $fichier = "<ins class='hierarchie'>$titre_parent@@$titre_rubrique</ins>\n" .
     232                                                        $descriptif_rubrique .
     233                                                        $fichier ;
     234                                                }
     235                                                // Créer un fichier txt
     236                                                $date = ($f['date_redac'] != "0000-00-00 00:00:00")? $f['date_redac'] : $f['date'] ;
     237                                                preg_match("/^(\d\d\d\d)-(\d\d)/", $date, $m);
     238                                                $annee = $m[1] ;
     239                                                $mois = $m[2] ;
     240                                               
     241                                                include_spip("inc/charset");
     242                                                $nom_fichier = translitteration($f['titre']) ;
     243                                                $nom_fichier = preg_replace("/[^a-zA-Z0-9]/i", "-", $nom_fichier);
     244                                                $nom_fichier = preg_replace("/-{2,}/i", "-", $nom_fichier);
     245                                                $nom_fichier = preg_replace("/^-/i", "", $nom_fichier);
     246                                                $nom_fichier = preg_replace("/-$/i", "", $nom_fichier);
     247                                               
     248                                                $nom_fichier = "$dest/$annee/$annee-$mois/$annee-$mois"."_$nom_fichier.txt" ;
     249                                               
     250                                                // Créer les répertoires
     251                                                if(!is_dir("$dest/$annee"))
     252                                                        mkdir("$dest/$annee");
     253                                                if(!is_dir("$dest/$annee/$annee-$mois"))
     254                                                        mkdir("$dest/$annee/$annee-$mois");     
     255                                               
     256                                                if(ecrire_fichier("$nom_fichier", $fichier)){
     257                                                        // Si tout s'est bien passé, on avance la barre
     258                                                        $nom_fichier_m = substr($nom_fichier, 0, 100) ;
     259                                                        $progress->setMessage($nom_fichier_m, 'filename');
     260                                                        $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");
     261                                                        $progress->advance();
     262                                               
     263                                                }
     264                                                else{
     265                                                        $output->writeln("<error>échec de l'export de $nom_fichier</error>");
     266                                                        exit ;
     267                                                }
    190268                                        }
    191269                                       
    192                                         $auteurs_m = substr($auteurs, 0, 100) ;
    193                                         $progress->setMessage($auteurs_m, 'auteurs');
     270                                        // ensure that the progress bar is at 100%
     271                                        $progress->finish();
    194272                                       
    195                                         // mots-clés
    196                                         if($spip_version_branche > "3")
    197                                                 $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");
    198                                         else // spip 2
    199                                                 $motscles = sql_allfetsel("*", "spip_mots_articles ma, spip_mots m", "ma.id_article=$id_article and ma.id_mot=m.id_mot");
    200                                        
    201                                         foreach($motscles as $mc){
    202                                                 if($mc['titre'])
    203                                                         $ins_mc[] = $mc['type'] . "::" . $mc['titre'] ;
    204                                         }
    205                                         if(is_array($ins_mc)){
    206                                                 $motscles = join("@@", $ins_mc) ;
    207                                                 $motscles_m = substr($motscles, 0, 100) ;
    208                                                 $progress->setMessage($motscles_m, 'motscles');
    209                                         }
    210                                        
    211                                         // documents joints
    212                                         $documents = sql_allfetsel("*", "spip_documents d, spip_documents_liens dl", "dl.id_objet=$id_article and dl.objet='article' and dl.id_document=d.id_document");
    213                                         foreach($documents as $doc)
    214                                                         $ins_doc[] = json_encode($doc) ;
    215                                         if(is_array($ins_doc)){
    216                                                 $documents = join("@@", $ins_doc) ;
    217                                                 $docs_m = substr($documents, 0, 100) ;
    218                                                 $progress->setMessage($docs_m, 'docs');
    219                                         }
    220                                        
    221                                         // Ajouter les métadonnées
    222                                         if($auteurs)
    223                                                 $fichier = "<ins class='auteurs'>$auteurs</ins>\n" . $fichier ;
    224                                         if($motscles)
    225                                                 $fichier = "<ins class='mots_cles'>$motscles</ins>\n" . $fichier ;
    226                                         if($documents)
    227                                                 $fichier = "<ins class='documents'>$documents</ins>\n" . $fichier ;
    228                                         if($titre_parent && $titre_rubrique){
    229                                                 $fichier = "<ins class='hierarchie'>$titre_parent@@$titre_rubrique</ins>\n" .
    230                                                 $descriptif_rubrique .
    231                                                 $fichier ;
    232                                         }
    233                                         // Créer un fichier txt
    234                                         $date = ($f['date_redac'] != "0000-00-00 00:00:00")? $f['date_redac'] : $f['date'] ;
    235                                         preg_match("/^(\d\d\d\d)-(\d\d)/", $date, $m);
    236                                         $annee = $m[1] ;
    237                                         $mois = $m[2] ;
    238                                        
    239                                         include_spip("inc/charset");
    240                                         $nom_fichier = translitteration($f['titre']) ;
    241                                         $nom_fichier = preg_replace("/[^a-zA-Z0-9]/i", "-", $nom_fichier);
    242                                         $nom_fichier = preg_replace("/-{2,}/i", "-", $nom_fichier);
    243                                         $nom_fichier = preg_replace("/^-/i", "", $nom_fichier);
    244                                         $nom_fichier = preg_replace("/-$/i", "", $nom_fichier);
    245                                        
    246                                         $nom_fichier = "$dest/$annee/$annee-$mois/$annee-$mois"."_$nom_fichier.txt" ;
    247                                        
    248                                         // Créer les répertoires
    249                                         if(!is_dir("$dest/$annee"))
    250                                                 mkdir("$dest/$annee");
    251                                         if(!is_dir("$dest/$annee/$annee-$mois"))
    252                                                 mkdir("$dest/$annee/$annee-$mois");     
    253                                        
    254                                         if(ecrire_fichier("$nom_fichier", $fichier)){
    255                                                 // Si tout s'est bien passé, on avance la barre
    256                                                 $nom_fichier_m = substr($nom_fichier, 0, 100) ;
    257                                                 $progress->setMessage($nom_fichier_m, 'filename');
    258                                                 $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");
    259                                                 $progress->advance();
    260                                        
    261                                         }
    262                                         else{
    263                                                 $output->writeln("<error>échec de l'export de $nom_fichier</error>");
    264                                                 exit ;
    265                                         }
    266273                                }
    267                                
    268                                 // ensure that the progress bar is at 100%
    269                                 $progress->finish();
    270                                
    271274                        }
    272275                        $output->writeln("\n");
Note: See TracChangeset for help on using the changeset viewer.