Changeset 54391 in spip-zone


Ignore:
Timestamp:
Nov 13, 2011, 4:01:32 PM (8 years ago)
Author:
patfr@…
Message:

Boites privée (tri des auteurs) : compat SPIP 3.0

La nouvelle table spip_articles_liens (ayant remplacé spip_auteurs_articles) et sa clé primaire id_objet ne permet plus de garder l'ordre des auteurs qui y sont stockés. Ce post rétablit ce manque.
+ Modification du modele lesauteurs.html

Location:
_plugins_/couteau_suisse
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/couteau_suisse/config_outils.php

    r53934 r54391  
    530530        'pipeline:affiche_droite' => 'boites_privees_affiche_droite',
    531531        'pipeline:affiche_gauche' => 'boites_privees_affiche_gauche',
     532        // controle de la boucle AUTEURS afin de respecter l'ordre des auteurs stockes en base
     533        'pipeline:pre_boucle' => defined('_SPIP30000')?'boites_privees_pre_boucle':'',
     534        'code:fonctions' => 'include_spip("outils/boites_privees");',
    532535        // Pour la constante _CS_RSS_SOURCE
    533536#       'pipelinecode:pre_description_outil' => 'if($id=="boites_privees") include_spip("cout_define");',
  • _plugins_/couteau_suisse/fonds/tri_auteurs.html

    r54352 r54391  
    88#SET{nb,#TOTAL_BOUCLE|plus{1}}
    99#SET{val,javascript:document.getElementsByName('bp_auteur')[0].value}
    10 #SET{desc, #EVAL{"defined('_SPIP30000')?chemin_image('tri-asc-16.png'):_DIR_IMG_PACK.'descendre-16.png'"}}
    11 #SET{mont, #EVAL{"defined('_SPIP30000')?chemin_image('tri-desc-16.png'):_DIR_IMG_PACK.'monter-16.png'"}}
     10#SET{desc, #EVAL{defined('_SPIP30000')?chemin_image('tri-asc-16.png'):_DIR_IMG_PACK.'descendre-16.png'}}
     11#SET{mont, #EVAL{defined('_SPIP30000')?chemin_image('tri-desc-16.png'):_DIR_IMG_PACK.'monter-16.png'}}
    1212<BOUCLE_art(ARTICLES){id_article}{statut!='poubelle'}>
    1313<table width="100%" border="0" cellpadding="0" cellspacing="0" style="text-align:left">
  • _plugins_/couteau_suisse/outils/boites_privees.php

    r54352 r54391  
    77include_spip('inc/layer');
    88
    9 // compatibilite SPIP SQL < 2.0
     9// compatibilite SQL pour SPIP 1.92
    1010if(!defined('_SPIP19300')) {
    1111        include_spip('base/abstract_sql');
     
    8585}
    8686
     87// pipeline utilise sous SPIP>=3, histoire de respecter l'ordre de stockage des auteurs d'objets
     88function boites_privees_pre_boucle($flux) {
     89        if(defined('boites_privees_TRI_AUTEURS') && $flux->type_requete=='auteurs'
     90                        && count($L1 = $flux->join) && count($w = &$flux->where)>1 && $w[0][0]=="'='" && $w[1][0]=="'='") {
     91                $L1 = array_keys($L1); // alias de la jointure
     92                $flux->order[] = 'sqlfield_auteurs_objet('.$w[0][2].','.$w[1][2].','._q($L1[0]).','._q($flux->serveur).')';
     93        }
     94        return $flux;
     95}
     96
     97function sqlfield_auteurs_objet($id_objet, $type_objet, $alias, $serveur) {
     98        static $res = array();
     99        if(!isset($r[$i = "$id_objet,$type_objet,$serveur"])) {
     100                $t = sql_allfetsel('*','spip_auteurs_liens', "objet=$type_objet", '','','','',$serveur);
     101                // hack qui conserve l'ordre de la table malgre les cles primaires
     102                $r = array(); foreach($t as $e) if($e['id_objet'] == $id_objet) $r[] = $e["id_auteur"];
     103                $r[$i] = 'FIELD('.$alias.'.id_auteur,'.join($r, ',').')';
     104        }
     105        return $r[$i];
     106}
     107
    87108function cs_boite_rss() {
    88109        include_spip('inc/autoriser');
     
    116137        if(!$txt = recuperer_fond('fonds/format_spip', array('id_article'=>$id_article))) return '';
    117138        $txt = explode('@TITRE@=', $txt, 2);
    118         // compatibilite SPIP < 2.0
     139        // compatibilite avec SPIP 1.92
    119140        $compat = function_exists('bouton_block_depliable');
    120141        $bouton = $compat?bouton_block_depliable(cs_div_configuration().$txt[1], 'invisible', "formatspip")
     
    139160                $info = ' ('._T('couteau:url_verrouillee').')';
    140161                while ($t = sql_fetch($s)) $res .= ($res?'<br />':'').'&bull;&nbsp;'.$t['url'].($t[date]>$now?$info:'')."\n";
    141         // SPIP < 2.0
     162        // SPIP 1.92
    142163        } else {
    143164                // impossible de calculer l'url publique d'ici.
     
    181202
    182203function cs_cadre_depliable($titre, $id, $texte) {
    183         // SPIP < 2.0
     204        // SPIP 1.92
    184205        if(!defined('_SPIP19300')) return debut_cadre_relief(find_in_path('img/couteau-24.gif'), true)
    185206                . cs_div_configuration()
  • _plugins_/couteau_suisse/outils/boites_privees_action_rapide.php

    r34846 r54391  
    2525spip_log("action_rapide_tri_auteurs : $id_article, $id_auteur, $monter");
    2626        $id = $id_article?$id_article:_request('id_article');
    27         include_spip('public/assembler'); // pour recuperer_fond(), SPIP < 2.0
     27        include_spip('public/assembler'); // pour recuperer_fond(), SPIP 1.92
    2828        $texte = trim(recuperer_fond('fonds/tri_auteurs', array('id_article'=>$id)));
    2929        // syntaxe : ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args_ajax='', $fct_ajax='')
     
    3636        // ici, 1er affichage !
    3737        if(!strlen($texte)) return '';
    38         // SPIP < 2.0
     38        // SPIP 1.92
    3939        if(!defined('_SPIP19300')) return debut_cadre_relief(find_in_path('img/couteau-24.gif'), true)
    4040                . cs_div_configuration()
     
    5858        $monter = _request('bp_auteur')>0;
    5959
    60         if(!defined('_SPIP19300')) include_spip('outils/boites_privees'); // pour les fonctions sql
    61         $s = sql_select('id_auteur', 'spip_auteurs_articles', "id_article=$id_article");
     60        if(!defined('_SPIP19300')) include_spip('outils/boites_privees'); // pour les fonctions SQL
     61        $s = defined('_SPIP30000')
     62                ?sql_select('id_auteur', 'spip_auteurs_liens', "objet='article' AND id_objet=$id_article")
     63                :sql_select('id_auteur', 'spip_auteurs_articles', "id_article=$id_article");
    6264        $i=0; $j=0;
    6365        while ($a = sql_fetch($s)) {
     
    6870        spip_log("action_rapide_tri_auteurs, article $id_article : echange entre l'auteur $i et l'auteur $j");
    6971        if($i && $j) {
    70                 sql_update("spip_auteurs_articles", array('id_auteur'=>-99), "id_article=$id_article AND id_auteur=$i");
    71                 sql_update("spip_auteurs_articles", array('id_auteur'=>$i), "id_article=$id_article AND id_auteur=$j");
    72                 sql_update("spip_auteurs_articles", array('id_auteur'=>$j), "id_article=$id_article AND id_auteur=-99");
     72                if(defined('_SPIP30000')) {
     73                        // SPIP >= 3.0
     74                        sql_update('spip_auteurs_liens', array('id_auteur'=>-99), "objet='article' AND id_objet=$id_article AND id_auteur=$i");
     75                        sql_update('spip_auteurs_liens', array('id_auteur'=>$i), "objet='article' AND id_objet=$id_article AND id_auteur=$j");
     76                        sql_update('spip_auteurs_liens', array('id_auteur'=>$j), "objet='article' AND id_objet=$id_article AND id_auteur=-99");
     77                } else {
     78                        sql_update('spip_auteurs_articles', array('id_auteur'=>-99), "id_article=$id_article AND id_auteur=$i");
     79                        sql_update('spip_auteurs_articles', array('id_auteur'=>$i), "id_article=$id_article AND id_auteur=$j");
     80                        sql_update('spip_auteurs_articles', array('id_auteur'=>$j), "id_article=$id_article AND id_auteur=-99");
     81                }
    7382        }
    7483        // action terminee, pret pour la redirection exec !
  • _plugins_/couteau_suisse/outils/pack_action_rapide.php

    r54352 r54391  
    66include_spip('inc/actions');
    77
    8 // Compatibilite SPIP < 2.0
     8// Compatibilite avec SPIP 1.92
    99if(!defined('_SPIP19300')) {
    1010        function redirige_action_post($action, $arg, $ret, $gra, $corps, $att='') {
  • _plugins_/couteau_suisse/paquet.xml

    r54141 r54391  
    22        prefix="couteau_suisse"
    33        categorie="maintenance"
    4         version="1.8.45"
     4        version="1.8.46"
    55        etat="stable"
    66        compatibilite="[1.9.2;3.0.99]"
  • _plugins_/couteau_suisse/plugin.xml

    r54141 r54391  
    33        <slogan>... ou plus de fonctionnalit&#233;s pour SPIP !</slogan>
    44        <icon>img/couteau-50.gif</icon>
    5         <version>1.8.45</version>
     5        <version>1.8.46</version>
    66        <version_base>1.1</version_base>
    77        <auteur>Patrice Vanneufville
Note: See TracChangeset for help on using the changeset viewer.