Changeset 125332 in spip-zone


Ignore:
Timestamp:
Jun 29, 2020, 2:34:58 PM (2 weeks ago)
Author:
Akilia
Message:

donner un rang à l'objet seulement quand il est publie ou, pour un objet sans statut, quand il est crée.
+ pour le calcul du rang d'un objet avec statut, ne tenir compte que des occurrences déjà publiées
+ compat SPIP 3.3

Location:
_plugins_/rang/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rang/trunk

    • Property subgit:lock:64cd631cd55aa871295df4c4741c291ca90fac3d deleted
    • Property subgit:lock:91a43e9ac4caf684749ab1baf7269b8634958556 set to 2020-06-30T13:10:51.687
  • _plugins_/rang/trunk/inc/rang_api.php

    r114192 r125332  
    205205
    206206/**
    207  * Calculer le rang pour la nouvelle occurence de l’objet
     207 * Calculer le rang si :
     208 *      • une nouvelle occurence d’un objet qui n'a pas de statut
     209 *      • (re) publication d'un objet avec statut
    208210 *
    209211 * @param string $table
     
    223225                }
    224226
     227                $trouver_table = charger_fonction('trouver_table', 'base');
     228                $desc = $trouver_table($table);
     229
     230                if (isset($desc['field']['statut'])) { // cas des objets avec statut
     231                        $where .= " AND statut=".sql_quote('publie');
     232                }
     233
    225234                $rang = sql_getfetsel('max(rang)', $table, $where);
    226235               
    227236        } else {
    228237        // si pas de parent, c'est plus simple
    229                 $rang = sql_getfetsel('max(rang)', $table);
     238                $rang = sql_getfetsel('max(rang)', $table, 'statut='.sql_quote('publie'));
    230239        }
    231240         
  • _plugins_/rang/trunk/paquet.xml

    r125094 r125332  
    22        prefix="rang"
    33        categorie="navigation"
    4         version="1.0.16"
     4        version="1.0.17"
    55        etat="test"
    6         compatibilite="[3.1.0;3.2.*]"
     6        compatibilite="[3.1.0;3.3.*]"
    77        logo="prive/themes/spip/images/rang-64.png"
    88        documentation="https://contrib.spip.net/4994"
  • _plugins_/rang/trunk/rang_pipelines.php

    r114604 r125332  
    106106 *
    107107 * @param    array $flux Données du pipeline
    108  *
    109108 * @return    array        Données du pipeline
    110109 */
    111110function rang_pre_edition($flux) {
     111        include_spip('inc/config');
    112112        $rang_max = lire_config('rang/rang_max');
    113113
    114         if (isset($rang_max) && !empty($rang_max) && $flux['args']['action'] == 'instituer') {
     114        if ($rang_max && !empty($rang_max) && $flux['args']['action'] == 'instituer') {
    115115
    116                 $liste_objets = lire_config('rang/objets');
    117                 $table        = $flux['args']['table'];
    118                 $id_table_objet = id_table_objet($table);
     116                $liste_objets   = lire_config('rang/objets');
     117                $table          = $flux['args']['table'];
     118               
     119                if (in_array($table, $liste_objets)) {
     120                        $id_objet               = $flux['args']['id_objet'];
     121                       
     122                        $trouver_table = charger_fonction('trouver_table', 'base');
     123                        $desc = $trouver_table($table);
    119124
    120                 if (in_array($table, $liste_objets)) {
    121                         $id_objet = $flux['args']['id_objet'];
     125                        if (isset($desc['field']['statut'])) { // cas des objets avec statut
     126                                if ($flux['data']['statut'] == 'publie') {
     127                                        $flux['data']['rang'] = rang_classer_dernier($table, $id_objet);
     128                                }
     129                        }
    122130
    123                         if (isset($flux['data']['statut']) && $flux['data']['statut'] == 'publie') { // cas des objets avec statut
    124                                 $flux['data']['rang'] = rang_classer_dernier($table, $id_objet);
    125                         } elseif ($rang = sql_getfetsel('rang', $table, "$id_table_objet=".intval($id_objet)) == 0) { // cas des objets sans statut, mot-clés par exemple
     131                        if (!isset($desc['field']['statut'])) { // cas des objets sans statut (mots, groupes_mots, etc.)
     132                                $id_table_objet = id_table_objet($table);
     133                                $rang = sql_getfetsel('rang', $table, "$id_table_objet=".intval($id_objet));
     134                                if ($rang == '0') {
    126135                                        $flux['data']['rang'] = rang_classer_dernier($table, $id_objet);
     136                                }
    127137                        }
    128138                }
Note: See TracChangeset for help on using the changeset viewer.