source: spip-zone/_plugins_/lim/trunk/lim_pipelines.php @ 95025

Last change on this file since 95025 was 95025, checked in by peetdu@…, 5 years ago

Amélioration multilinguisme : il y avait confusion clé / valeur

File size: 4.8 KB
Line 
1<?php
2/**
3 * Utilisations de pipelines par Lim
4 *
5 * @plugin     Lim
6 * @copyright  2015
7 * @author     Pierre Miquel
8 * @licence    GNU/GPL
9 * @package    SPIP\Lim\Pipelines
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) return;
13
14include_spip('inc/lim_api');
15
16/**
17 * gestion forums public et pétitions : supprime ou non le bloc en fonction de la demande
18 *
19 * @param array $flux
20 * @return array $flux
21 *     le flux data remanié
22**/
23function lim_afficher_config_objet($flux){
24        $type = $flux['args']['type'];
25        if ($type == 'article' AND !empty($flux['data'])){
26
27                $tab_data = explode("<div class='ajax'>", $flux['data']);
28                $tab_data[1] = "<div class='ajax'>".$tab_data[1];
29                $tab_data[2] = "<div class='ajax'>".$tab_data[2];
30
31                if ( strpos($tab_data[1], 'formulaire_activer_forums') AND lire_config('forums_publics') == 'non' AND lire_config('lim/forums_publics') == 'on' ) {
32                        $tab_data[1] = '';
33                }
34                if ( strpos($tab_data[2], 'formulaire_activer_petition') AND lire_config('lim/petitions') == 'on') {
35                        $tab_data[2] = '';
36                }
37                $flux['data'] = $tab_data[1].$tab_data[2];
38        }
39        return $flux;
40}
41
42/**
43 * gestion des contenus par rubrique : rediriger la creation d'un objet vers la bonne rubrique si celle-ci est pris en compte par LIM
44 * ce traitement est rendu nécessaire par
45 * -> l'action de la fonction inc/lim_api.php -> inc_chercher_rubrique qui supprime l'affichage du sélecteur de rubrique si une seule rubrique
46 * -> le cas 2 (voir ci-dessous)
47 *
48 * cas 1 : le rédacteur créer une nouvelle instance de l'objet depuis la bonne rubrique : on a l'id_parent depuis le flux
49 * cas 2 : le rédacteur créer une instance depuis la barre d'outils rapides, ou via la page exec=objets. On n'a pas l'id_parent.
50 * Il faut le calculer pour enregistrer l'instance dans une rubrique gérée par LIM
51 *  a/ via LIM l'objet ne peut être associé qu'à une seule rubrique. On renvoi l'id de cette rubrique
52 *  b/ via LIM l'objet peut être associé à plusieurs rubriques : pas de traitement. Le sélecteur de rubrique est affiché.
53 *
54 * @param array $flux
55 * @return array $flux
56 *     le flux data complété par un input hidden 'id_parent' avec la bonne valeur
57**/
58function lim_formulaire_charger($flux){
59        $form   = $flux['args']['form'];
60        $valid  = strpos($form, 'editer');
61        // si ce n'est pas un formulaire d'édition
62        //ou si la restriction par rubrique n'a pas été activée, on sort
63        if ($valid === false OR is_null(lire_config('lim_objets'))) return $flux;
64
65
66        $type                           = substr($form, 7); // 'editer_objet' devient 'objet'
67        $nom_table                      = table_objet_sql($type);
68        $tableau_tables_lim     = explode(',', lire_config('lim_objets'));
69       
70        if (in_array($nom_table, $tableau_tables_lim)) {
71                $tab_rubriques_choisies = lim_publierdansrubriques($type);
72                if (count($tab_rubriques_choisies) == 1) {
73                        $id_parent = $flux['data']['id_parent'];
74                        if (empty($id_parent)) {
75                                $id_parent = implode($tab_rubriques_choisies);
76                        }
77                        $flux['data']['_hidden'] = "<input type='hidden' name='id_parent' value='$id_parent'>";
78                }
79        }
80        return $flux;
81}
82
83/**
84 * gestion des contenus par rubrique : vérifier si on à le droit de publier l'objet dans cette rubrique
85 * en fonction des rubriques décochées dans la page exec=configurer_lim_rubriques
86 *
87 * @param array $flux
88 * @return array $flux
89 *     le flux data complété ou non d'un message d'erreur
90**/
91function lim_formulaire_verifier($flux){
92        $form   = $flux['args']['form'];
93        $valid  = strpos($form, 'editer');
94
95        // si ce n'est pas un formulaire d'édition
96        //ou si la restriction par rubrique n'a pas été activée, on sort
97        if ($valid === false OR is_null(lire_config('lim_objets'))) return $flux;
98       
99        $type   = substr($form, 7); // 'editer_objet' devient 'objet'
100        $nom_table                      = table_objet_sql($type);
101        $tableau_tables_lim     = explode(',', lire_config('lim_objets'));
102
103        if (in_array($nom_table, $tableau_tables_lim)) {
104                include_spip('inc/autoriser');
105
106                // Si modification : le rédacteur doit pouvoir modifier le contenu d'un objet existant,
107                // même ci celui-ci est maintenant dans une rubrique où il est interdit de publier cet objet.
108                $id_objet = $flux['args']['args'][0];
109                if (is_numeric($id_objet)) {    // c'est donc une modification,
110
111                        // récupérer l'id_rubrique actuel (en BdD) de l'objet
112                        $faire = 'publierdans';
113                        $where = 'id_'.$type.'='.$id_objet;
114                        $id_rub_en_cours = sql_getfetsel('id_rubrique', $nom_table, $where);
115                        $opt = array('lim_except_rub' => $id_rub_en_cours, 'type' => $type);
116                        $msg_error = _T('lim:info_deplacer_dans_rubrique_non_autorise');
117                }
118                else { //c'est une création
119                        // en fait, cela ne sert à rien...snif...à cause de /echafaudage qui intercepte les créations avant le CVT (?!).
120                        $faire = 'creer'.$type.'dans';
121                        $opt = null;
122                        $msg_error = _T('lim:info_creer_dans_rubrique_non_autorise');
123                }
124                if (!autoriser($faire, 'rubrique', _request('id_parent'),'', $opt)) {
125                        $flux['data']['id_parent'] = $msg_error;
126                }
127        }
128        return $flux;
129}
130
131?>
Note: See TracBrowser for help on using the repository browser.