Changeset 31459 in spip-zone


Ignore:
Timestamp:
Sep 10, 2009, 2:35:01 AM (10 years ago)
Author:
kent1@…
Message:

Une première version de gestion multi objets ... certaines fonctionnalités ont certainement pris un coup au passage ... mais l'étendue est telle qu'il devenait difficile de se repérer sans commiter...

Location:
_core_/plugins/revisions
Files:
9 added
10 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/revisions/base/revisions.php

    r31418 r31459  
    1414function revisions_declarer_tables_interfaces($interface){
    1515
     16        $interface['tables_jointures']['spip_articles'][] = 'versions';
     17        $interface['tables_jointures']['spip_rubriques'][] = 'versions';
     18
    1619        $interface['table_des_tables']['versions']='versions';
    1720
     
    2831
    2932        $spip_versions = array (
    30                 "id_article"    => "bigint(21) NOT NULL",
    3133                "id_version"    => "bigint(21) DEFAULT 0 NOT NULL",
     34                "id_objet"              => "bigint(21) DEFAULT 0 NOT NULL",
     35                "objet"                 => "VARCHAR (25) DEFAULT '' NOT NULL",
    3236                "date"  => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
    3337                "id_auteur"     => "VARCHAR(23) DEFAULT '' NOT NULL", # stocke aussi IP(v6)
     
    3741
    3842        $spip_versions_key = array (
    39                 "PRIMARY KEY"   => "id_article, id_version");
     43                "PRIMARY KEY"   => "id_version, id_objet, objet",
     44                "KEY id_objet" => "id_version");
    4045
    4146        $spip_versions_fragments = array(
     
    4348                "version_min"   => "int unsigned DEFAULT '0' NOT NULL",
    4449                "version_max"   => "int unsigned DEFAULT '0' NOT NULL",
    45                 "id_article"    => "bigint(21) NOT NULL",
     50                "id_objet"      => "bigint(21) NOT NULL",
     51                "objet"                 => "VARCHAR (25) DEFAULT '' NOT NULL",
    4652                "compress"      => "tinyint NOT NULL",
    4753                "fragment"      => "longblob"  # ici c'est VRAIMENT un blob (on y stocke du gzip)
     
    4955
    5056        $spip_versions_fragments_key = array(
    51                 "PRIMARY KEY"   => "id_article, id_fragment, version_min"
     57                "PRIMARY KEY"   => "id_objet, objet, id_fragment, version_min"
    5258        );
    5359
  • _core_/plugins/revisions/base/revisions_upgrade.php

    r30830 r31459  
    1818 */
    1919function revisions_upgrade($nom_meta_base_version,$version_cible){
     20
     21        spip_log($GLOBALS['meta'][$nom_meta_base_version],'revisions');
    2022        $current_version = 1.0;
    2123        if (   (!isset($GLOBALS['meta'][$nom_meta_base_version]) )
    2224                        || (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){
    23                
     25
    2426                if ($current_version==1.0){
    2527                        include_spip('base/revisions');
    2628                        include_spip('base/create');
     29                        include_spip('inc/meta');
    2730                        // creer les tables
    2831                        creer_base();
     
    3033                        $config = charger_fonction('config','inc');
    3134                        $config();
    32                         ecrire_meta($nom_meta_base_version,$current_version=$version_cible);
     35                        if($GLOBALS['meta']['articles_versions'] == 'oui'){
     36                                ecrire_meta('objets_versions',serialize(array('articles')));
     37                        }
     38                        effacer_meta('articles_versions');
     39                        ecrire_meta($nom_meta_base_version,$version_cible);
     40                }
     41                if ($current_version<1.1){
     42                        include_spip('inc/meta');
     43                        revisions_objet_upgrade_11();
     44                        // Si dans une installation antérieure ou un upgrade, les articles étaient versionnés
     45                        // On crée la meta correspondante
     46                        $config = charger_fonction('config','inc');
     47                        $config();
     48                        if($GLOBALS['meta']['articles_versions'] == 'oui'){
     49                                ecrire_meta('objets_versions',serialize(array('articles')));
     50                        }
     51                        effacer_meta('articles_versions');
     52                        echo _T('revisions:plugin_update',array('version'=>1.1));
     53                        ecrire_meta($nom_meta_base_version,$current_version=1.1);
    3354                }
    3455        }
     
    4364        sql_drop_table("spip_versions");
    4465        sql_drop_table("spip_versions_fragments");
    45        
    46 //      effacer_meta("mots_cles_forums");
    4766
    4867        effacer_meta($nom_meta_base_version);
    4968}
    5069
     70function revisions_objet_upgrade_11() {
     71        // Ajout du champs objet et modification du champs id_article en id_objet
     72        // sur les 2 tables spip_versions et spip_versions_fragments
     73        sql_alter("TABLE spip_versions CHANGE `id_article` `id_objet` bigint(21) DEFAULT 0 NOT NULL");
     74        sql_alter("TABLE spip_versions ADD `objet` VARCHAR (25) DEFAULT '' NOT NULL AFTER `id_objet`");
     75        sql_alter("TABLE spip_versions_fragments CHANGE `id_article` `id_objet` bigint(21) DEFAULT 0 NOT NULL");
     76        sql_alter("TABLE spip_versions_fragments ADD `objet` VARCHAR (25) DEFAULT '' NOT NULL AFTER `id_objet`");
     77
     78        // Changement des clefs primaires également
     79        sql_alter("TABLE `spip_versions` DROP PRIMARY KEY");
     80        sql_alter("TABLE `spip_versions` ADD PRIMARY KEY ( `id_version`, `id_objet`, `objet` )");
     81        sql_alter("TABLE `spip_versions_fragments` DROP PRIMARY KEY");
     82        sql_alter("TABLE `spip_versions_fragments` ADD PRIMARY KEY ( `id_objet` , `objet` , `id_fragment` , `version_min` )");
     83
     84        // Ajouter l'objet "article" aux révisions existantes dans les 2 tables
     85        // Les id_objet restent les id_articles puisque les révisions n'étaient possibles que sur les articles
     86        sql_updateq("spip_versions",array('objet'=>'article'),"objet=''");
     87        sql_updateq("spip_versions_fragments",array('objet'=>'article'),"objet=''");
     88}
    5189?>
  • _core_/plugins/revisions/exec/articles_versions.php

    r30883 r31459  
    1616function exec_articles_versions_dist()
    1717{
    18         exec_articles_versions_args(intval(_request('id_article')),
     18        exec_articles_versions_args(intval(_request('id_objet')),
     19                _request('objet'),
    1920                intval(_request('id_version')),
    2021                intval(_request('id_diff'))); // code mort ?
     
    2223
    2324// http://doc.spip.org/@exec_articles_versions_args
    24 function exec_articles_versions_args($id_article, $id_version, $id_diff)
     25function exec_articles_versions_args($id_objet,$objet='article', $id_version, $id_diff)
    2526{
    2627        global $spip_lang_left, $spip_lang_right;
    2728
    28         if (!autoriser('voirrevisions', 'article', $id_article)
    29         OR !$row = sql_fetsel("*", "spip_articles", "id_article=".sql_quote($id_article))){
     29        $table = table_objet_sql($objet);
     30        $id_table_objet = id_table_objet($objet);
     31        $infos_tables = pipeline('revisions_infos_tables_versions',array());
     32
     33        if (!autoriser('voirrevisions', $objet, $id_objet)
     34        OR !$row = sql_fetsel("*", $table, "$id_table_objet=".intval($id_objet)
     35        OR !is_array($infos_tables[$table]))){
    3036                include_spip('inc/minipres');
    3137                echo minipres();
     
    3743        include_spip('inc/revisions');
    3844
    39         // recuperer les donnees actuelles de l'article
    40         $id_article = $row["id_article"];
     45        // recuperer les donnees actuelles de l'objet
     46
    4147        $id_rubrique = $row["id_rubrique"];
    4248        $titre = $row["titre"];
     
    6167        echo debut_gauche('', true);
    6268
    63         echo bloc_des_raccourcis(icone_horizontale(_T('icone_retour_article'), generer_url_ecrire("articles","id_article=$id_article"), "article-24.png","", false) .
     69        echo bloc_des_raccourcis(icone_horizontale(_T($infos_tables[$table]['texte_retour']), generer_url_ecrire($infos_tables[$table]['url_retour'],"$id_table_objet=$id_objet"), $infos_tables[$table]['icone_objet'],"", false) .
    6470                                 icone_horizontale(_T('icone_suivi_revisions'), generer_url_ecrire("suivi_revisions",""), "revision-24.png","", false));
    6571
     
    7985// recuperer les donnees versionnees
    8086//
    81         $max_version = sql_getfetsel('MAX(id_version)', 'spip_versions', 'id_article='.intval($id_article));
     87        $max_version = sql_getfetsel('MAX(id_version)', 'spip_versions', 'id_objet='.intval($id_objet).' AND objet='.sql_quote($objet));
    8288        if (!$id_version)
    8389                $id_version = $max_version;
     
    8591        $last_version = ($id_version == $max_version);
    8692
    87         $textes = revision_comparee($id_article, $id_version, 'complet', $id_diff);
     93        $textes = revision_comparee($id_objet,$objet, $id_version, 'complet', $id_diff);
    8894
    8995        unset($id_rubrique); # on n'en n'aura besoin que si on affiche un diff
     
    150156        // restaurer
    151157        // Icone de modification
    152         if (autoriser('modifier', 'article', $id_article))
     158        if (autoriser('modifier', $objet, $id_objet))
    153159                if ($last_version)
    154160                        echo icone_inline(
    155                                 _T('icone_modifier_article'),
    156                                 generer_url_ecrire("articles_edit", "id_article=$id_article"),
    157                                 "article-24.png",
     161                                _T($infos_tables[$table]['texte_modifier']),
     162                                generer_url_ecrire($infos_tables[$table]['url_edit'], "$id_table_objet=$id_objet"),
     163                                $infos_tables[$table]['icone_objet'],
    158164                                "edit",
    159165                                $spip_lang_right
     
    161167                else
    162168                        echo icone_inline(
    163                                 _L('Restaurer cette version'),
    164                                 generer_url_ecrire("revisions_restaurer", "id_objet=$id_article&type=article&id_version=$id_version"),
    165                                 "article-24.png",
     169                                _T('revisions:icone_restaurer_version'),
     170                                generer_url_ecrire("revisions_restaurer", "id_objet=$id_objet&type=$objet&id_version=$id_version"),
     171                                $infos_tables[$table]['icone_objet'],
    166172                                "edit",
    167173                                $spip_lang_right
     
    180186        $result = sql_select("id_version, titre_version, date, id_auteur",
    181187                "spip_versions",
    182                 "id_article=".sql_quote($id_article)." AND id_version>0",
     188                "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version>0",
    183189                "", "id_version DESC");
    184190
     
    222228                                $res .= " (".$row['id_auteur'].")"; #IP edition anonyme
    223229                }
    224                
     230
    225231                if ($version_aff != $id_version) {
    226232                  $res .= " <span class='verdana2'>";
  • _core_/plugins/revisions/exec/revisions_restaurer.php

    r31132 r31459  
    1919
    2020        $commencer_page = charger_fonction('commencer_page', 'inc');
    21         echo $commencer_page(_L('Restaurer une version'), "accueil", "accueil");
     21        echo $commencer_page(_T('revisions:titre_restaurer_revision'), "accueil", "accueil");
    2222
    2323        echo debut_gauche("",true);
     
    3939function reconstituer_version($type, $id_objet, $id_version) {
    4040        $prev  = array();
    41         foreach (sql_allfetsel('id_version', 'spip_versions', 'id_article='.sql_quote($id_objet).' AND id_version <= '.sql_quote($id_version), 'id_version') as $id) {
    42                 $prev = array_merge($prev, recuperer_version($id_objet, $id['id_version']));
     41        foreach (sql_allfetsel('id_version', 'spip_versions', 'id_objet='.intval($id_objet).' AND objet='.sql_quote($type).' AND id_version <= '.sql_quote($id_version), 'id_version') as $id) {
     42                $prev = array_merge($prev, recuperer_version($id_objet,$type, $id['id_version']));
    4343        }
    4444        return $prev;
  • _core_/plugins/revisions/exec/suivi_revisions.php

    r30830 r31459  
    2323        $id_auteur = intval(_request('id_auteur'));
    2424        $id_secteur = intval(_request('id_secteur'));
     25        $objet = _request('objet');
    2526
    2627        $nom_auteur = $GLOBALS['visiteur_session']['nom'];
     
    3435
    3536        if (autoriser('voir', 'article'))
    36           $req_where = sql_in('articles.statut', array('prepa','prop','publie')); 
    37         else $req_where = sql_in('articles.statut', array('prop','publie')); 
     37          $req_where = sql_in('articles.statut', array('prepa','prop','publie'));
     38        else $req_where = sql_in('articles.statut', array('prop','publie'));
    3839
    3940        echo debut_cadre_relief('', true);
     
    4849        else echo "\n<li><a href='" . generer_url_ecrire("suivi_revisions","id_auteur=$connecte") . "'>$nom_auteur</a></li>";
    4950
    50         if (($GLOBALS['meta']['multi_rubriques'] == 'oui') OR ($GLOBALS['meta']['multi_articles'] == 'oui'))
    51                 $langues = explode(',', $GLOBALS['meta']['langues_multilingue']);
    52         else
    53                 $langues = array();
     51        //if (($GLOBALS['meta']['multi_rubriques'] == 'oui') OR ($GLOBALS['meta']['multi_articles'] == 'oui'))
     52        //      $langues = explode(',', $GLOBALS['meta']['langues_multilingue']);
     53        //else
     54        //      $langues = array();
    5455
    55         $result = sql_select("id_rubrique, titre", "spip_rubriques", 'id_parent=0','', '0+titre,titre');
     56        // $result = sql_select("id_rubrique, titre", "spip_rubriques", 'id_parent=0','', '0+titre,titre');
    5657
    57         while ($row = sql_fetch($result)) {
    58                 $id_rubrique = $row['id_rubrique'];
    59                 $titre = typo($row['titre']);
     58        //while ($row = sql_fetch($result)) {
     59        //      $id_rubrique = $row['id_rubrique'];
     60        //      $titre = typo($row['titre']);
    6061
    61                 if ($id_rubrique == $id_secteur)  echo "\n<li><b>$titre</b>";
    62                 else {
    63                   if (sql_countsel('spip_versions AS versions LEFT JOIN spip_articles AS articles ON versions.id_article = articles.id_article', "versions.id_version > 1 AND articles.id_secteur=$id_rubrique AND $req_where"))
    64                     echo "\n<li><a href='" . generer_url_ecrire("suivi_revisions","id_secteur=$id_rubrique") . "'>$titre</a></li>";
    65                 }
    66         }
    67         foreach ($langues as $lang) {
    68                 $titre = traduire_nom_langue($lang);
     62        //      if ($id_rubrique == $id_secteur)  echo "\n<li><b>$titre</b>";
     63        //      else {
     64        //        if (sql_countsel('spip_versions AS versions LEFT JOIN spip_articles AS articles ON versions.id_objet = articles.id_article', "versions.id_version > 1 AND versions.objet='article' AND articles.id_secteur=$id_rubrique AND $req_where"))
     65        //          echo "\n<li><a href='" . generer_url_ecrire("suivi_revisions","id_secteur=$id_rubrique") . "'>$titre</a></li>";
     66        //      }
     67        //}
     68        //foreach ($langues as $lang) {
     69        //      $titre = traduire_nom_langue($lang);
    6970
    70                 if ($lang == $lang_choisie)  echo "\n<li><b>$titre</b></li>";
    71                 else {
    72                         $n = sql_countsel('spip_versions AS versions LEFT JOIN spip_articles AS articles ON versions.id_article = articles.id_article', "versions.id_version > 1 AND articles.lang='$lang' AND $req_where");
    73                         if ($n) echo "\n<li><a href='" . generer_url_ecrire("suivi_revisions","lang_choisie=$lang") . "'>$titre</a></li>";
    74                 }
    75         }
     71                //if ($lang == $lang_choisie)  echo "\n<li><b>$titre</b></li>";
     72                //else {
     73                //      $n = sql_countsel('spip_versions AS versions LEFT JOIN spip_articles AS articles ON versions.id_objet = articles.id_article', "versions.id_version > 1 AND versions.objet='article' AND articles.lang='$lang' AND $req_where");
     74                //      if ($n) echo "\n<li><a href='" . generer_url_ecrire("suivi_revisions","lang_choisie=$lang") . "'>$titre</a></li>";
     75                //}
     76        //}
    7677        echo "</ul></div>\n";
    7778
  • _core_/plugins/revisions/inc/revisions.php

    r31286 r31459  
    2929
    3030// http://doc.spip.org/@replace_fragment
    31 function replace_fragment($id_article, $version_min, $version_max, $id_fragment, $fragment) {
     31function replace_fragment($id_objet,$objet, $version_min, $version_max, $id_fragment, $fragment) {
    3232        $fragment = serialize($fragment);
    3333        $compress = 0;
     
    4747        // Attention a echapper $fragment, binaire potentiellement gz
    4848        return array(
    49                      'id_article' => intval($id_article),
     49                     'id_objet' => intval($id_objet),
     50                         'objet' => $objet,
    5051                     'id_fragment' => intval($id_fragment),
    5152                     'version_min' => intval($version_min),
     
    6465
    6566// http://doc.spip.org/@envoi_delete_fragments
    66 function envoi_delete_fragments($id_article, $deletes) {
     67function envoi_delete_fragments($id_objet,$objet, $deletes) {
    6768        if (count($deletes)) {
    68                 sql_delete("spip_versions_fragments", "id_article=$id_article AND ((".  join(") OR (", $deletes)."))");
     69                sql_delete("spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND ((".  join(") OR (", $deletes)."))");
    6970        }
    7071}
     
    7576//
    7677// http://doc.spip.org/@ajouter_fragments
    77 function ajouter_fragments($id_article, $id_version, $fragments) {
     78function ajouter_fragments($id_objet,$objet, $id_version, $fragments) {
    7879        global $agregation_versions;
    7980
     
    8283                $nouveau = true;
    8384                // Recuperer la version la plus recente
    84                 $row = sql_fetsel("compress, fragment, version_min, version_max", "spip_versions_fragments", "id_article=$id_article AND id_fragment=$id_fragment AND version_min<=$id_version", "", "version_min DESC", "1");
     85                $row = sql_fetsel("compress, fragment, version_min, version_max", "spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_fragment=$id_fragment AND version_min<=$id_version", "", "version_min DESC", "1");
    8586
    8687                if ($row) {
     
    111112                        if ($modif) $fragment[$id_version] = $texte;
    112113                }
    113                
     114
    114115                // Preparer l'enregistrement du fragment
    115                 $replaces[] = replace_fragment($id_article, $version_min, $id_version, $id_fragment, $fragment);
     116                $replaces[] = replace_fragment($id_objet,$objet, $version_min, $id_version, $id_fragment, $fragment);
    116117        }
    117118
     
    120121
    121122//
    122 // Supprimer tous les fragments d'un article lies a un intervalle de versions
     123// Supprimer tous les fragments d'un objet lies a un intervalle de versions
    123124// (essaie d'eviter une trop grande fragmentation)
    124125//
    125126// http://doc.spip.org/@supprimer_fragments
    126 function supprimer_fragments($id_article, $version_debut, $version_fin) {
     127function supprimer_fragments($id_objet,$objet, $version_debut, $version_fin) {
    127128        global $agregation_versions;
    128129
     
    131132
    132133        // D'abord, vider les fragments inutiles
    133         sql_delete("spip_versions_fragments", "id_article=$id_article AND version_min>=$version_debut AND version_max<=$version_fin");
    134 
     134        sql_delete("spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND version_min>=$version_debut AND version_max<=$version_fin");
    135135
    136136        // Fragments chevauchant l'ensemble de l'intervalle, s'ils existent
    137         $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments", "id_article=$id_article AND version_min<$version_debut AND version_max>$version_fin");
     137        $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND version_min<$version_debut AND version_max>$version_fin");
    138138
    139139        while ($row = sql_fetch($result)) {
     
    151151                }
    152152
    153                 $replaces[] = replace_fragment($id_article,
     153                $replaces[] = replace_fragment($id_objet,$objet,
    154154                        $row['version_min'], $row['version_max'], $id_fragment, $fragment);
    155155        }
    156156
    157157        // Fragments chevauchant le debut de l'intervalle, s'ils existent
    158         $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments", "id_article=$id_article AND version_min<$version_debut AND version_max>=$version_debut AND version_max<=$version_fin");
     158        $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND version_min<$version_debut AND version_max>=$version_debut AND version_max<=$version_fin");
    159159
    160160        $deb_fragment = array();
     
    178178
    179179        // Fragments chevauchant la fin de l'intervalle, s'ils existent
    180         $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments", "id_article=$id_article AND version_max>$version_fin AND version_min>=$version_debut AND version_min<=$version_fin");
     180        $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND version_max>$version_fin AND version_min>=$version_debut AND version_min<=$version_fin");
    181181
    182182        while ($row = sql_fetch($result)) {
     
    207207                        }
    208208                        else {
    209                                 $replaces[] = replace_fragment($id_article,
     209                                $replaces[] = replace_fragment($id_objet,$objet,
    210210                                        $deb_version_min[$id_fragment], $deb_version_max[$id_fragment],
    211211                                        $id_fragment, $deb_fragment[$id_fragment]);
     
    217217                        $version_min = $version_fin + 1;
    218218                }
    219                 $replaces[] = replace_fragment($id_article, $version_min, $version_max, $id_fragment, $fragment);
     219                $replaces[] = replace_fragment($id_objet, $objet, $version_min, $version_max, $id_fragment, $fragment);
    220220        }
    221221
     
    223223        if (is_array($deb_fragment) && count($deb_fragment) > 0) {
    224224                foreach ($deb_fragment as $id_fragment => $fragment) {
    225                         $replaces[] = replace_fragment($id_article,
     225                        $replaces[] = replace_fragment($id_objet,$objet,
    226226                                $deb_version_min[$id_fragment], $deb_version_max[$id_fragment],
    227227                                $id_fragment, $deb_fragment[$id_fragment]);
    228228                }
    229229        }
    230        
     230
    231231        envoi_replace_fragments($replaces);
    232         envoi_delete_fragments($id_article, $deletes);
     232        envoi_delete_fragments($id_objet,$objet, $deletes);
    233233}
    234234
     
    238238//
    239239// http://doc.spip.org/@recuperer_fragments
    240 function recuperer_fragments($id_article, $id_version) {
     240function recuperer_fragments($id_objet,$objet, $id_version) {
    241241        $fragments = array();
    242242
    243243        if ($id_version == 0) return array();
    244244
    245         $result = sql_select("id_fragment, version_min, version_max, compress, fragment", "spip_versions_fragments", "id_article=$id_article AND version_min<=$id_version AND version_max>=$id_version");
     245        $result = sql_select("id_fragment, version_min, version_max, compress, fragment", "spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND version_min<=$id_version AND version_max>=$id_version");
    246246
    247247        while ($row = sql_fetch($result)) {
     
    291291        $src_dest = array();
    292292        $dest_src = array();
    293        
     293
    294294        $t1 = $t2 = array();
    295295
     
    345345                        }
    346346                }
    347                
     347
    348348                // Depouiller les resultats de la deuxieme passe :
    349349                // ne retenir que les correlations reciproques
     
    364364//
    365365// http://doc.spip.org/@recuperer_version
    366 function recuperer_version($id_article, $id_version) {
    367 
    368         $champs = sql_getfetsel("champs", "spip_versions", "id_article=" . intval($id_article) . " AND id_version=" . intval($id_version));
     366function recuperer_version($id_objet,$objet, $id_version) {
     367
     368        $champs = sql_getfetsel("champs", "spip_versions", "id_objet=" . intval($id_objet) . " AND objet=".sql_quote($objet)." AND id_version=" . intval($id_version));
    369369        if (!$champs OR !is_array($champs = unserialize($champs)))
    370370                return array();
    371371        else return reconstuire_version($champs,
    372                          recuperer_fragments($id_article, $id_version));
     372                         recuperer_fragments($id_objet,$objet, $id_version));
    373373}
    374374
     
    394394
    395395// http://doc.spip.org/@supprimer_versions
    396 function supprimer_versions($id_article, $version_min, $version_max) {
    397         sql_delete("spip_versions", "id_article=$id_article AND id_version>=$version_min AND id_version<=$version_max");
    398 
    399         supprimer_fragments($id_article, $version_min, $version_max);
    400 }
    401 
    402 //
    403 // Ajouter une version a un article
     396function supprimer_versions($id_objet,$objet, $version_min, $version_max) {
     397        sql_delete("spip_versions", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version>=$version_min AND id_version<=$version_max");
     398
     399        supprimer_fragments($id_objet,$objet, $version_min, $version_max);
     400}
     401
     402//
     403// Ajouter une version a un objet
    404404//
    405405// http://doc.spip.org/@ajouter_version
    406 function ajouter_version($id_article, $champs, $titre_version = "", $id_auteur) {
     406function ajouter_version($id_objet,$objet, $champs, $titre_version = "", $id_auteur) {
    407407        $paras = $paras_old = $paras_champ = $fragments = array();
    408408
     
    413413
    414414        // Detruire les tentatives d'archivages non abouties en 1 heure
    415         sql_delete('spip_versions', "id_article=$id_article AND id_version <= 0 AND date < DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).", INTERVAL "._INTERVALLE_REVISIONS." SECOND)");
     415        sql_delete('spip_versions', "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version <= 0 AND date < DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).", INTERVAL "._INTERVALLE_REVISIONS." SECOND)");
    416416
    417417        // Signaler qu'on opere en mettant un numero de version negatif
     
    422422        $datediff = ($sec - mktime(0,0,0,9,1,2007)) * 1000000 + substr($ms,2, strlen($ms)-4);
    423423
    424         $valeurs = array('id_article' => $id_article,
     424        $valeurs = array('id_objet' => $id_objet,
     425                         'objet' => $objet,
    425426                         'id_version' => (0 - $datediff),
    426427                         'date' => date('Y-m-d H:i:s'),
     
    441442#         sleep(15);
    442443        $delai = $sec-10;
    443         while (sql_countsel('spip_versions', "id_article=$id_article AND id_version < 0 AND 0.0+titre_version < $date AND 0.0+titre_version > $delai")) {
    444                 spip_log("version $id_article :insertion en cours avant $date ($delai)");
     444        while (sql_countsel('spip_versions', "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version < 0 AND 0.0+titre_version < $date AND 0.0+titre_version > $delai")) {
     445                spip_log("version $objet $id_objet :insertion en cours avant $date ($delai)");
    445446                sleep(1);
    446447                $delai++;
     
    448449#   sleep(15);  spip_log("sortie $sec $delai");
    449450        // Determiner le numero du prochain fragment
    450         $next = sql_fetsel("id_fragment", "spip_versions_fragments", "id_article=$id_article", "", "id_fragment DESC", "1");
     451        $next = sql_fetsel("id_fragment", "spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet), "", "id_fragment DESC", "1");
    451452
    452453        $onlylock = '';
    453454
    454455        // Examiner la derniere version
    455         $row = sql_fetsel("id_version, champs, id_auteur, date, permanent", "spip_versions", "id_article=$id_article AND id_version > 0", '', "id_version DESC", "1"); // le champ id_auteur est un varchar dans cette table
     456        $row = sql_fetsel("id_version, champs, id_auteur, date, permanent", "spip_versions", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version > 0", '', "id_version DESC", "1"); // le champ id_auteur est un varchar dans cette table
    456457
    457458        if ($row) {
    458459                $id_version = $row['id_version'];
    459                 $paras_old = recuperer_fragments($id_article, $id_version);
     460                $paras_old = recuperer_fragments($id_objet,$objet, $id_version);
    460461                $champs_old = $row['champs'];
    461462                if ($row['id_auteur']!= $str_auteur
     
    467468                        $id_version++;
    468469                }
    469                 // version precedente recente, on va la mettre a jour 
     470                // version precedente recente, on va la mettre a jour
    470471                // avec les nouveaux arrivants si presents
    471472                else {
     
    512513
    513514        // Enregistrer les modifications
    514         ajouter_fragments($id_article, $id_version, $fragments);
    515 
    516         // Si l'insertion ne servait que de verrou, 
     515        ajouter_fragments($id_objet,$objet, $id_version, $fragments);
     516
     517        // Si l'insertion ne servait que de verrou,
    517518        // la detruire apres mise a jour de l'ancienne entree,
    518519        // sinon la mise a jour efface en fait le verrou.
    519520
    520521        if (!$onlylock) {
    521                 sql_updateq('spip_versions', array('id_version'=>$id_version, 'date'=>date('Y-m-d H:i:s'), 'champs'=> serialize($codes), 'permanent'=>$permanent, 'titre_version'=> $titre_version), "id_article=$id_article AND id_version < 0 AND titre_version='$date'");
     522                sql_updateq('spip_versions', array('id_version'=>$id_version, 'date'=>date('Y-m-d H:i:s'), 'champs'=> serialize($codes), 'permanent'=>$permanent, 'titre_version'=> $titre_version), "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version < 0 AND titre_version='$date'");
    522523        } else {
    523                 sql_updateq('spip_versions', array('date'=>date('Y-m-d H:i:s'), 'champs'=>serialize($codes), 'permanent'=>$permanent, 'titre_version'=> $titre_version), "id_article=$id_article AND id_version=$id_version");
    524 
    525                 sql_delete("spip_versions", "id_article=$id_article AND id_version < 0 AND titre_version ='$date'");
    526         }
    527         spip_log($onlylock . "memorise la version $id_version de l'article $id_article $titre_version");
     524                sql_updateq('spip_versions', array('date'=>date('Y-m-d H:i:s'), 'champs'=>serialize($codes), 'permanent'=>$permanent, 'titre_version'=> $titre_version), "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version=$id_version");
     525
     526                sql_delete("spip_versions", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version < 0 AND titre_version ='$date'");
     527        }
     528        spip_log($onlylock . "memorise la version $id_version de l'objet $objet $id_objet $titre_version");
    528529
    529530        return $id_version;
     
    558559        $mem = $GLOBALS['toujours_paragrapher'];
    559560        $GLOBALS['toujours_paragrapher'] = false;
    560        
     561
    561562        $texte = propre($texte);
    562563
     
    596597// liste les champs versionnes d'un objet
    597598// http://doc.spip.org/@liste_champs_versionnes
    598 function liste_champs_versionnes($table) {
     599function liste_champs_versionnes($table,$type) {
     600        $liste_objets_versionnees = is_array(unserialize($GLOBALS['meta']['objets_versions'])) ? unserialize($GLOBALS['meta']['objets_versions']) : array();
     601
     602        $infos_tables = pipeline('revisions_infos_tables_versions',array());
     603
     604        $table_objet = table_objet($type);
     605
    599606        $champs = array();
    600         switch ($table) {
    601                 case 'spip_articles':
    602                         $champs += array('id_rubrique', 'surtitre', 'titre', 'soustitre', 'j_mots', 'descriptif', 'nom_site', 'url_site', 'chapo', 'texte', 'ps');
    603 
    604                         // prendre en compte les champs extras2
    605                         if (function_exists($f = 'cextras_get_extras_match')
    606                         AND is_array($g = $f($table)))
    607                         foreach($g as $c)
    608                                 $champs[] = $c->champ;
    609 
    610                         break;
    611 #               case 'spip_rubriques':
    612 #                       $champs += array('titre', 'descriptif', 'texte');
    613 #                       break;
    614                 default:
    615                         break;
     607        if(array_key_exists($table,$infos_tables) && in_array($table_objet,$liste_objets_versionnees)){
     608                $champs = $infos_tables[$table]['champs'];
     609                spip_log($champs);
    616610        }
    617611        return $champs;
     
    620614// anciennement enregistrer_premiere_revision
    621615function revisions_pre_edition($x) {
    622         if  ($champs = liste_champs_versionnes($x['args']['table'])) {
    623 
    624                 $id_article = $x['args']['id_objet'];
    625 
    626                 if (!sql_countsel('spip_versions',"id_article=$id_article")) {
     616        if  ($champs = liste_champs_versionnes($x['args']['table'],$x['args']['type'])) {
     617
     618                $id_objet = $x['args']['id_objet'];
     619                $objet= $x['args']['type'];
     620                $table_spip = $x['args']['table'];
     621                $id_table_objet = id_table_objet($objet);
     622
     623                if (!sql_countsel('spip_versions',"id_objet=".intval($id_objet)." AND objet=".sql_quote($objet))) {
    627624                        $select = join(", ", $champs);
    628                         $champs_originaux = sql_fetsel("$select, date, date_modif", "spip_articles", "id_article=$id_article");
    629                        
    630                         // Si le titre est vide, c'est qu'on vient de creer l'article
     625                        $champs_originaux = sql_fetsel("$select, date, date_modif", $table_spip, "$id_table_objet=$id_objet");
     626
     627                        // Si le titre est vide, c'est qu'on vient de creer l'objet
    631628                        if ($champs_originaux['titre'] != '') {
    632629                                $date_modif = $champs_originaux['date_modif'];
     
    634631                                unset ($champs_originaux['date_modif']);
    635632                                unset ($champs_originaux['date']);
    636                                 $id_version = ajouter_version($id_article, $champs_originaux,   _T('version_initiale'), 0);
     633                                $id_version = ajouter_version($id_objet, $objet, $champs_originaux, _T('version_initiale'), 0);
    637634                                // Inventer une date raisonnable pour la version initiale
    638635                                if ($date_modif>'1970-')
     
    642639                                else
    643640                                        $date_modif = time()-7200;
    644                                 sql_updateq('spip_versions', array('date' => date("Y-m-d H:i:s", $date_modif)), "id_article=$id_article AND id_version=$id_version");
     641                                sql_updateq('spip_versions', array('date' => date("Y-m-d H:i:s", $date_modif)), "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version=$id_version");
    645642                        }
    646643                }
     
    654651        // Regarder si au moins une des modifs est versionnable
    655652        $champs = array();
    656         foreach (liste_champs_versionnes($x['args']['table']) as $key)
     653        foreach (liste_champs_versionnes($x['args']['table'],$x['args']['type']) as $key)
    657654                if (isset($x['data'][$key]))
    658655                        $champs[$key] = $x['data'][$key];
     
    672669
    673670        if (count($champs))
    674                 ajouter_version($x['args']['id_objet'], $champs, '', $GLOBALS['visiteur_session']['id_auteur']);
     671                ajouter_version($x['args']['id_objet'],$x['args']['type'], $champs, '', $GLOBALS['visiteur_session']['id_auteur']);
    675672
    676673        return $x;
  • _core_/plugins/revisions/inc/revisions_pipeline.php

    r31182 r31459  
    4949*/
    5050
    51 // Afficher les dernieres revisions en bas de la page d'accueil de ecrire/
     51/**
     52 * Afficher les dernieres revisions en bas de la page d'accueil de ecrire/
     53 */
    5254function revisions_affiche_milieu($flux) {
    5355        if ($flux['args']['exec'] == 'accueil') {
     
    6264}
    6365
     66/**
     67 * Definir les metas de configuration liee aux revisions
     68 * Utilisé par inc/config
     69 *
     70 * @param array $metas
     71 * @return array
     72 */
     73function revisions_configurer_liste_metas($metas){
     74        // Dorénavant dans les metas on utilisera un array serialisé de types d'objets
     75        // qui corrspondront aux objets versionnés
     76        $metas['objets_versions'] =  '';
     77
     78        return $metas;
     79}
     80
     81/**
     82 * Definir la liste des tables possibles
     83 * @param object $array
     84 * @return
     85 */
     86function revisions_revisions_liste_objets($array){
     87        $array['articles'] = 'revisions:articles';
     88        $array['rubriques'] = 'revisions:rubriques';
     89
     90        return $array;
     91}
     92
     93function revisions_revisions_infos_tables_versions($array){
     94        $array['spip_articles'] = array(
     95                                                                'table_objet' => 'articles',
     96                                                                'type' => 'article',
     97                                                                'champs' => array('id_rubrique', 'surtitre', 'titre', 'soustitre', 'j_mots', 'descriptif', 'nom_site', 'url_site', 'chapo', 'texte', 'ps'),
     98                                                                'url_voir' => 'articles',
     99                                                                'texte_retour' => 'icone_retour_article',
     100                                                                'url_edit' => 'articles_edit',
     101                                                                'texte_modifier' => 'icone_modifier_article',
     102                                                                'icone_objet' => 'article-24.png'
     103                                                        );
     104        $array['spip_rubriques'] = array(
     105                                                                'table_objet' => 'rubriques',
     106                                                                'type' => 'rubrique',
     107                                                                'champs' => array('titre', 'descriptif', 'texte'),
     108                                                                'url_voir' => 'naviguer',
     109                                                                'texte_retour' => 'revisions:icone_retour_rubrique',
     110                                                                'url_edit' => 'rubriques_edit',
     111                                                                'texte_modifier' => 'icone_modifier_rubrique',
     112                                                                'icone_objet' => 'rubrique-24.png'
     113                                                        );
     114        return $array;
     115}
    64116?>
  • _core_/plugins/revisions/inc/suivi_versions.php

    r30830 r31459  
    2121        if ($court) $max = 200;
    2222        else $max = 2000;
    23        
     23
    2424        $paras = explode ("\n",$texte);
    2525        for ($i = 0; $i < count($paras) AND strlen($texte_ret) < $max; $i++) {
     
    4444
    4545// http://doc.spip.org/@afficher_suivi_versions
    46 function afficher_suivi_versions ($debut = 0, $id_secteur = 0, $uniq_auteur = false, $lang = "", $court = false) {
    47        
     46function afficher_suivi_versions ($debut = 0, $id_secteur = 0, $uniq_auteur = false, $lang = "", $court = false,$type="") {
    4847        changer_typo($lang);
    4948        $lang_dir = lang_dir($lang);
     
    5150
    5251        if ($uniq_auteur) {
    53                 $req_where = " AND articles.statut IN ('prepa','prop','publie')";
    54                 $req_where .= " AND versions.id_auteur = $uniq_auteur";
    55         } else {
    56                 $req_where = " AND articles.statut IN ('prop','publie')";
    57         }
    58        
    59         if (strlen($lang) > 0)
    60                 $req_where .= " AND articles.lang=" . sql_quote($lang);
    61 
    62         if ($id_secteur > 0)
    63                 $req_where .= " AND articles.id_secteur = ".intval($id_secteur);
    64 
    65         $req_where = "versions.id_version > 1 $req_where";
    66 
    67         $req_sel = "versions.id_version, versions.id_auteur, versions.date, versions.id_article, articles.statut, articles.titre";
    68 
    69         $req_from = 'spip_versions AS versions LEFT JOIN spip_articles AS articles ON versions.id_article = articles.id_article';
     52                $req_where = " AND id_auteur = $uniq_auteur";
     53        }
     54
     55        //if (strlen($lang) > 0)
     56        //      $req_where .= " AND articles.lang=" . sql_quote($lang);
     57
     58        //if ($id_secteur > 0)
     59        //      $req_where .= " AND articles.id_secteur = ".intval($id_secteur);
     60
     61        //$req_where = "objet='article' AND versions.id_version > 1 $req_where";
     62        $req_where = "id_version > 1 $req_where";
     63
     64        //$req_sel = "versions.id_version, versions.id_auteur, versions.date, versions.id_objet, versions.objet, articles.statut, articles.titre";
     65        $req_sel = "id_version, id_auteur, date, id_objet, objet";
     66        //$req_from = 'spip_versions AS versions LEFT JOIN spip_articles AS articles ON versions.id_objet = articles.id_article';
     67
     68        $liste_objets_versionnees = is_array(unserialize($GLOBALS['meta']['objets_versions'])) ? unserialize($GLOBALS['meta']['objets_versions']) : array();
    7069
    7170        $revisions = '';
    7271        $items = array();
    73         $result = sql_select($req_sel, $req_from, $req_where, '', 'versions.date DESC', "$debut, $nb_aff");
     72        $result = sql_select($req_sel, 'spip_versions', $req_where, '', 'date DESC', "$debut, $nb_aff");
    7473        while ($row = sql_fetch($result)) {
    75                         $id_article = $row['id_article'];
    76                         if (autoriser('voir','article',$id_article)){
    77                                 $statut = $row['statut'];
     74                        $id_objet = $row['id_objet'];
     75                        $objet = $row['objet'];
     76                        $table_objet = table_objet($objet);
     77                        spip_log($table_objet);
     78                        if (autoriser('voir',$objet,$id_objet) && in_array($table_objet,$liste_objets_versionnees)){
     79                                $table = table_objet_sql($objet);
     80                                $id_table_objet = id_table_objet($objet);
     81
     82                                $row2 = sql_fetsel('statut,titre',$table,$id_table_objet.'='.$row['id_objet']);
     83                                $statut = $row2['statut'];
    7884                                $id_version = $row['id_version'];
    7985                                $id_auteur = $row['id_auteur'];
    8086                                $date = $row['date'];
    81                                 $titre = typo(supprime_img($row['titre'],''));
    82                                
     87                                $titre = typo(supprime_img($row2['titre'].' ('.$row['objet'].')',''));
     88
    8389                                // l'id_auteur peut etre un numero IP (edition anonyme)
    8490                                if ($id_auteur == intval($id_auteur)
     
    9197                                }
    9298
    93                                 $aff = revisions_bouton($id_article, $id_auteur, $id_version, $titre, $statut, $date, $lang_dir, $nom);
     99                                $aff = revisions_bouton($id_objet,$objet, $id_auteur, $id_version, $titre, $statut, $date, $lang_dir, $nom);
    94100                                if (!$court) {
    95101                                                $bouton_id = "b$id_version-$id_article-$id_auteur";
    96102                                                $aff = bouton_block_depliable($aff,false,$bouton_id)
    97103                                                  . debut_block_depliable(false,$bouton_id)
    98                                                   . revisions_diff ($id_article, $id_version, $court)
     104                                                  . revisions_diff ($id_objet,$objet, $id_version, $court)
    99105                                                  . fin_block();
    100106                                }
     
    103109        }
    104110        if (!$revisions) return '';
    105         else return 
     111        else return
    106112          revisions_entete_boite($court, $debut, $id_secteur, $lang, $nb_aff, $req_from, $req_where, $uniq_auteur)
    107113          . $revisions
     
    111117
    112118// http://doc.spip.org/@revisions_diff
    113 function revisions_diff ($id_article, $id_version, $court=true)
     119function revisions_diff ($id_objet,$objet, $id_version, $court=true)
    114120{
    115         $textes = revision_comparee($id_article, $id_version, 'diff');
     121        $textes = revision_comparee($id_objet,$objet, $id_version, 'diff');
    116122        if (!is_array($textes)) return $textes;
    117123        $rev = '';
     
    135141
    136142// http://doc.spip.org/@revisions_bouton
    137 function revisions_bouton($id_article, $id_auteur, $id_version, $titre, $statut, $date, $lang_dir, $nom)
     143function revisions_bouton($id_objet,$objet, $id_auteur, $id_version, $titre, $statut, $date, $lang_dir, $nom)
    138144{
    139145        $titre_bouton = "<span class='arial2'>";
    140146        $titre_bouton .= puce_statut($statut);
    141         $titre_bouton .= "\n&nbsp;<a class='$statut' style='font-weight: bold;' href='" . generer_url_ecrire("articles_versions","id_article=$id_article") . "'>$titre</a>";
     147        $titre_bouton .= "\n&nbsp;<a class='$statut' style='font-weight: bold;' href='" . generer_url_ecrire("articles_versions","objet=$objet&id_objet=$id_objet") . "'>$titre</a>";
    142148        $titre_bouton .= "<span class='arial1' dir='$lang_dir'>";
    143149        $titre_bouton .= "\n".date_relative($date)." "; # laisser un peu de privacy aux redacteurs
     
    163169        $revisions = debut_cadre('liste',"revision-24.png",'',$bouton)
    164170        . debut_block_depliable(true,$id_liste);
    165                
     171
    166172        if ($total > $nb_aff) {
    167173                $nb_tranches = ceil($total / $nb_aff);
    168                        
     174
    169175                $revisions .= "\n<div class='arial2' style='background-color: #dddddd; padding: 5px;'>\n";
    170                
     176
    171177                for ($i = 0; $i < $nb_tranches; $i++) {
    172178                        if ($i > 0) $revisions .= " | ";
     
    192198//    - complet => tout, avec surlignage des modifications (articles_versions)
    193199// http://doc.spip.org/@revision_comparee
    194 function revision_comparee($id_article, $id_version, $format='diff', $id_diff=NULL) {
     200function revision_comparee($id_objet, $objet, $id_version, $format='diff', $id_diff=NULL) {
    195201        include_spip('inc/diff');
    196202
    197203        // chercher le numero de la version precedente
    198204        if (!$id_diff) {
    199                 $id_diff = sql_getfetsel("id_version", "spip_versions", "id_article=" . intval($id_article) . " AND id_version < " . intval($id_version), "", "id_version DESC", "1");
     205                $id_diff = sql_getfetsel("id_version", "spip_versions", "id_objet=" . intval($id_objet) . " AND id_version < " . intval($id_version)." AND objet=".sql_quote($objet), "", "id_version DESC", "1");
    200206        }
    201207
     
    209215                }
    210216
    211                 $old = recuperer_version($id_article, $id_diff);
    212                 $new = recuperer_version($id_article, $id_version);
     217                $old = recuperer_version($id_objet,$objet, $id_diff);
     218                $new = recuperer_version($id_objet,$objet, $id_version);
    213219
    214220                $textes = array();
     
    218224                switch ($format) {
    219225                        case 'complet':
    220                                 $champs = liste_champs_versionnes('spip_articles');
     226                                $champs = liste_champs_versionnes('spip_articles','articles');
    221227                                break;
    222228                        case 'diff':
     
    233239                        while (!isset($old[$champ])
    234240                        AND $id_ref>0) {
    235                                 $prev = recuperer_version($id_article, $id_ref--);
     241                                $prev = recuperer_version($id_objet,$objet, $id_ref--);
    236242                                if (isset($prev[$champ]))
    237243                                        $old[$champ] = $prev[$champ];
     
    255261                                                                                 );
    256262                                }
    257                                
     263
    258264                                // champs textuels
    259265                                else {
     
    271277        // que donner par defaut ? (par exemple si id_version=1)
    272278        if (!$textes)
    273                 $textes = recuperer_version($id_article, $id_version);
     279                $textes = recuperer_version($id_objet,$objet, $id_version);
    274280
    275281        return $textes;
  • _core_/plugins/revisions/plugin.xml

    r31418 r31459  
    33        <auteur>Collectif SPIP</auteur>
    44        <version>1.1</version>
    5         <version_base>1.0</version_base>
     5        <version_base>1.1</version_base>
    66        <install>base/revisions_upgrade.php</install>
    77        <etat>test</etat>
    88        <description>Suivi des modifications des articles</description>
    99        <prefix>revisions</prefix>
     10        <options>revisions_options.php</options>
    1011
    1112        <pipeline>
     
    3031        </pipeline>
    3132        <pipeline>
     33                <nom>configurer_liste_metas</nom>
     34                <inclure>inc/revisions_pipeline.php</inclure>
     35        </pipeline>
     36        <pipeline>
     37                <nom>revisions_liste_objets</nom>
     38                <inclure>inc/revisions_pipeline.php</inclure>
     39        </pipeline>
     40        <pipeline>
     41                <nom>revisions_infos_tables_versions</nom>
     42                <inclure>inc/revisions_pipeline.php</inclure>
     43        </pipeline>
     44        <pipeline>
    3245                <nom>declarer_tables_interfaces</nom>
    3346                <inclure>base/revisions.php</inclure>
     
    4255                <titre>info_historique_titre</titre>
    4356        </bouton>
    44 
     57        <onglet id='config_revisions' parent='configuration'>
     58                <icone>images/revision-24.png</icone>
     59                <titre>revisions:titre_revisions</titre>
     60        </onglet>
    4561        <necessite id="SPIP" version="[2.1.0 dev;)" />
    4662</plugin>
  • _core_/plugins/revisions/prive/rss/revisions.html

    r30883 r31459  
    55</BOUCLE0>
    66) {
    7 ?><?xml version="1.0" encoding="#CHARSET" ?>
     7?>
    88
    9 <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0">
     9
    1010<channel xml:lang="[(#LANG|texte_backend)]">
    1111        <title>[&#91;(#NOM_SITE_SPIP|texte_backend)&#93;] RSS (<:icone_suivi_revisions|texte_backend:>)</title>
     
    1313        <description></description>
    1414        <language>[(#LANG|texte_backend)]</language>
    15 <BOUCLE_RSS(spip_versions articles)
     15<BOUCLE_RSS(VERSIONS spip_articles)
    1616        {id_version >1}
    1717        {statut?}
     
    2929                [<dc:language>(#LANG|texte_backend)</dc:language>]
    3030                <dc:creator>[(#NOM|texte_backend)][ &lt;(#EMAIL|texte_backend)&gt;]</dc:creator>
    31                 <description><BOUCLE00(AUTEURS){id_auteur=#ENV{id}}{lang_select}>[(#ID_ARTICLE|revisions_diff{#ID_VERSION}|texte_backend)]</BOUCLE00></description>
     31                <description><BOUCLE00(AUTEURS){id_auteur=#ENV{id}}{lang_select}>[(#ID_ARTICLE|revisions_diff{'article',#ID_VERSION}|texte_backend)]</BOUCLE00></description>
    3232        </item></BOUCLE_RSS>
    3333</channel>
    34 </rss><?php } ?></B0>
     34<?php } ?></B0>
Note: See TracChangeset for help on using the changeset viewer.