Changeset 118601 in spip-zone


Ignore:
Timestamp:
Nov 13, 2019, 4:35:23 PM (4 months ago)
Author:
peetdu@…
Message:

Restreindre les contenus par rubrique : masquer l’input editer_parent si la config de l’objet renvoie une seule rubrique dans laquelle on peut le publier dans.
+ optimisation de code

Location:
_plugins_/lim/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/lim/trunk/inc/lim.php

    r118575 r118601  
    5656/**
    5757 * Vérifier si il existe déjà des objets dans la rubrique
    58  * on renvoi un tableau avec le type et la table_objet
     58 *
    5959 * @param int $id_rubrique
    60  * @param string $objet
     60 * @param string $type de l'objet
    6161 * @return bool
    6262 */
    63 function lim_verifier_presence_objets($id_rubrique, $objet) {
    64         $table = table_objet_sql($objet);
     63function lim_verifier_presence_objets($id_rubrique, $type) {
     64        $table = table_objet_sql($type);
    6565        if (sql_countsel($table, "id_rubrique=$id_rubrique") > 0) return true;
    6666        return false;
     
    110110 * Récupérer la liste des rubriques dans lesquelles il est possible de créer l'objet demandé
    111111 *
    112  * @param string $type
     112 * @param string $type de l'objet
    113113 * @return array
    114114 */
    115115
    116116function lim_publierdansrubriques($type) {
    117         $rubriques_choisies = array();
    118         $tab_rubrique_objet = lire_config("lim_rubriques/$type");
     117        $rubriques_autorisees = array();
    119118
    120         // si l'objet n'est pas dans la config, on sort
    121         if (is_null($tab_rubrique_objet)) {
    122                 return $rubriques_choisies;
     119        $tab_rubriques_exclues = lire_config("lim_rubriques/$type"); // renvoi NULL si meta/lim_rubriques/$type n'existe pas
     120
     121        if ($tab_rubriques_exclues) {
     122                $res = sql_allfetsel('id_rubrique', 'spip_rubriques');
     123                $tab_rubriques = array_column($res, 'id_rubrique');
     124                $rubriques_autorisees = array_diff($tab_rubriques, $tab_rubriques_exclues);
    123125        }
    124126
    125         $res = sql_allfetsel('id_rubrique', 'spip_rubriques');
    126         $tab_rubriques = array_column($res, 'id_rubrique');
    127         $rubriques_choisies = array_diff($tab_rubriques,$tab_rubrique_objet);
    128         return $rubriques_choisies;
     127        return $rubriques_autorisees;
     128}
     129
     130/**
     131 * Retourner le nombre de rubriques dans lesquelles il est possible de créer l'objet demandé
     132 *
     133 * @param string $type de l'objet
     134 * @return int
     135 */
     136
     137function lim_nbre_rubriques_autorisees($type) {
     138        // par défaut c'est le nombre total de rubrique
     139        $nbre_rubriques_autorisees = sql_countsel('spip_rubriques');
     140
     141        $tab_rubriques_exclues  = lire_config("lim_rubriques/$type");
     142        if ($tab_rubriques_exclues) {
     143                $nbre_rubriques_autorisees = $nbre_rubriques_autorisees - count($tab_rubriques_exclues);
     144        }
     145
     146        return $nbre_rubriques_autorisees;
    129147}
    130148
  • _plugins_/lim/trunk/lim_pipelines.php

    r118575 r118601  
    6565                $objet = substr($flux['args']['form'], 7); // 'editer_article' -> 'article'
    6666                $nom_table      = table_objet_sql($objet); // article -> spip_articles
    67                 $tableau_conf_lim_objet = lire_config("lim_rubriques/$objet");
    68                
     67                $tab_rubriques_exclues  = lire_config("lim_rubriques/$objet");
    6968
    70                 if (isset($tableau_conf_lim_objet)) {
    71                         $nbre_rubriques = sql_countsel('spip_rubriques');
    72                         $nbre_rubriques_autorisees = $nbre_rubriques - count($tableau_conf_lim_objet);
     69                if ($tab_rubriques_exclues) {
     70                        $nbre_rubriques_autorisees = lim_nbre_rubriques_autorisees($objet);
    7371
    7472                        // Cas #0 : voir TODO's
     
    8785                        }
    8886                } else { // Cas #2
    89                         // ici dans l'idéal, il faudrait utiliser l'API du plugin  Declarer_parent
     87                        // ici dans l'idéal, il faudrait utiliser l'API du plugin Declarer_parent
    9088                        $trouver_table = charger_fonction('trouver_table', 'base');
    9189                        $desc = $trouver_table($nom_table);
     
    155153}
    156154
     155function lim_formulaire_fond($flux) {
     156        // si ce n'est pas un formulaire d'édition d'un objet ou si la restriction par rubrique n'a pas été activée, on sort.
     157        if (strncmp($flux['args']['form'], 'editer_', 7) !== 0 OR is_null(lire_config('lim_objets'))) {
     158                return $flux;
     159        }
     160
     161        $objet = substr($flux['args']['form'], 7); // 'editer_objet' devient 'objet'
     162        if (lim_nbre_rubriques_autorisees($objet) <= 1){
     163                $flux['data'] .= "<style>.editer.editer_parent {display:none}</style>";
     164        }
     165
     166        return $flux;
     167}
     168
    157169/**
    158170 * Gestion de la desactivation de l'affichage de certain champs dans le formulaire Editer Auteur
  • _plugins_/lim/trunk/paquet.xml

    r118438 r118601  
    22        prefix="lim"
    33        categorie="maintenance"
    4         version="2.1.4"
     4        version="2.1.5"
    55        etat="stable"
    66        compatibilite="[3.2.0;3.3.*]"
     
    2929        <pipeline nom="formulaire_charger" inclure="lim_pipelines.php" />
    3030        <pipeline nom="formulaire_verifier" inclure="lim_pipelines.php" />
     31        <pipeline nom="formulaire_fond" inclure="lim_pipelines.php" />
    3132        <pipeline nom="recuperer_fond" inclure="lim_pipelines.php" />
     33
    3234
    3335        <onglet nom="configurer_lim" titre="lim:onglet_lim" parent="configurer_lim"  icone="images/lim-24.png" />
Note: See TracChangeset for help on using the changeset viewer.