source: spip-zone/_plugins_/lim/branches/V1/lim_pipelines.php @ 100491

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

déplacer Truck vers branches/V1

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