Carnet Wiki

Conversion Breves Articles

A défaut de plugin, voici un script :

<?php
//
// Auteur : Didier, www.ouhpla.net
// 
// Licence GPL 
//
//
// Transforme les brèves de tout le site en articles,
// les met dans une même rubrique
// et leur attribue optionnellement un même auteur

define ('RUBRIQUE_DES_BREVES'52);
define ('SECTEUR_DES_BREVES'52);
define ('AUTEUR_DES_BREVES'11099);
define ('BREVE_POUR_TEST'299); // ou 317

function breve2art($id_breve) {
    
$nouvel_article = array(); // array('colonne'=>'valeur')
    
    
if($resultats sql_select('*''spip_breves''id_breve='.$id_breve)) {
        
$res sql_fetch($resultats);
        
        
// Si on a deja fait le process sur la breve, en phase de test par exemple, alors on saute.
        
if($res['statut'] == 'refuse') {
            echo 
'Breve deja traitée:'.$id_breve.'<br>';
            return ;
        }

        
// Une breve = > date_heure titre texte lien_titre lien_url statut id_rubrique
        
        // Un article => surtitre titre soustitre id_rubrique descriptif chapo texte ps date statut id_secteur
        //               maj export date_redac visites referers popularite accepter_forum date_modif
        //               lang langue_choisie id_trad nom_site url_site

        
$nouvel_article['titre'] = $res['titre'];

        
$nouvel_article['texte'] = $res['texte'];

        
$nouvel_article['date'] = $res['date_heure'];
        
$nouvel_article['date_modif'] = $res['date_heure'];
        
$nouvel_article['date_redac'] = $res['date_heure'];

        
$nouvel_article['nom_site'] = $res['lien_titre'];

        
$nouvel_article['url_site'] = $res['lien_url'];

        
$nouvel_article['statut'] = $res['statut'];

        
$nouvel_article['id_rubrique'] = RUBRIQUE_DES_BREVES;
        
$nouvel_article['id_secteur'] = SECTEUR_DES_BREVES;
        
        
// Recherche du titre du secteur de la breve
        
$secteur sql_getfetsel('titre''spip_rubriques''id_rubrique='.$res['id_rubrique']);
        
$nouvel_article['surtitre'] = $secteur;
        
        
// Champs par defaut sur la création d'un article
        
$nouvel_article['accepter_forum'] = 'pos';
        
$nouvel_article['lang'] = 'fr';
        
$nouvel_article['langue_choisie'] = 'oui';
        
$nouvel_article['id_trad'] = '0';
        
$nouvel_article['id_version'] = '1';
        
$nouvel_article['export'] = 'oui';
    }
    else
        echo 
'Erreur sur sql_select, avec n°breve:'.$id_breve.sql_error();
    
    
$id_article sql_insertq('spip_articles'$nouvel_article);
    echo 
'Breve insérée comme article avec id_article='.$id_article.'<br>';

    
// Relation article <=> auteur
    
if (defined('AUTEUR_DES_BREVES'))
        
sql_insertq('spip_auteurs_articles', array('id_auteur' => AUTEUR_DES_BREVES'id_article' => $id_article));

    
// On s'occupe du logo
    
$path "/home/passerelleco/www/IMG";
    
$logobr $path."/breveon".$id_breve;
    
$logoart $path."/arton".$id_article;
    
    
$ext "";
    if(
file_exists($logobr.".jpg")) $ext ".jpg";
    else if(
file_exists($logobr.".png")) $ext ".png";
    else if(
file_exists($logobr.".gif")) $ext ".gif";
    else echo 
'Impossible de trouver le logo pour la breve :'.$id_breve.'<br>';

    if(
$ext!="") if(!rename($logobr.$ext$logoart.$ext)) echo "Impossible de renommer:".$logobr.$ext."<br>";

    
// On s'occupe des mots clés
    
$mots sql_select('id_mot''spip_mots_breves''id_breve='.$id_breve);
    while(
$motscles sql_fetch($mots)) {        
        
sql_insertq('spip_mots_articles', array('id_mot' => $motscles['id_mot'], 'id_article' => $id_article));
    }

    
// on s'occupe des forums : OK
    
$forumss sql_select('id_forum''spip_forum''id_breve='.$id_breve);
    while(
$forum sql_fetch($forumss)) {        
        
sql_updateq('spip_forum', array('id_breve' => '''id_article' => $id_article), 'id_forum='.$forum['id_forum']);
    }

    
// Suppresion de la breve ?? et son association avec mots cles et forum
    // On met le statut à 'refuse'
    
sql_updateq('spip_breves', array('statut' => 'refuse'), 'id_breve='.$id_breve);
}

if(
$_GET['lance_boucle'] == 'OK') {
    if(
$les_breves sql_select('id_breve''spip_breves')) {
        while(
$une_breve sql_fetch($les_breves)) {
            
breve2art($une_breve['id_breve']);
        }
    }
    else
        echo 
'Erreur sur sql_select dans boucle sur les breves'.sql_error();
}
else if(
$_GET['lance_test'] == 'OK') {
    
breve2art(BREVE_POUR_TEST); // Test sur une breve
}
else echo 
"Lancer la conversion sur <a href='".$_SERVER['PHP_SELF']."&lance_boucle=OK'>toutes les breves</a> ; <a href='".$_SERVER['PHP_SELF']."&lance_test=OK'>ou TEST sur une seule breve</a>";

?>

JLuc - Mise à jour :25 March 2011 at 16:13

Toutes les versions