source: spip-zone/_plugins_/tickets/trunk/tickets_options.php @ 81170

Last change on this file since 81170 was 80800, checked in by severo@…, 5 years ago

tickets - une vue/crayon par groupe de mots-clés

au lieu de tout regrouper dans un seul select (Eric).
Il reste à ajouter les mêmes champs dans le formulaire
d'édition.

A noter : le crayon mots_ticket reste fonctionnel, si
on veut conserver le fonctionnement précédent (tous les
groupes dans le même select).

File size: 3.6 KB
Line 
1<?php
2/**
3 * Plugin Tickets
4 * Licence GPL (c) 2008-2013
5 *
6 * @package SPIP\Tickets\Options
7 */
8 
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11/**
12 * Activer le plugin no_spam sur les tickets
13 */
14$GLOBALS['formulaires_no_spam'][] = 'editer_ticket';
15// Liste des pages de configuration dans l'ordre de presentation
16define('_TICKETS_PAGES_CONFIG', 'general:autorisations');
17
18/**
19 * Récupérer dans la base la liste des mots-clés liés au ticket
20 * http://marcimat.magraine.net/Crayon-de-mots-pour-un-article
21 */
22function valeur_champ_mots_ticket($table, $id, $champ) {
23        return valeur_champ_mots_objet($table, $id, $champ);
24}
25
26/**
27 * Récupérer dans la base la liste des mots-clés liés au ticket pour
28 * groupe de mots donné
29 * http://marcimat.magraine.net/Crayon-de-mots-pour-un-article
30 */
31function valeur_champ_groupemots_ticket($table, $id, $champ) {
32        return valeur_champ_mots_objet($table, $id, $champ);
33}
34
35/**
36 * Récupérer dans la base la liste des mots-clés liés à l'objet
37 * http://marcimat.magraine.net/Crayon-de-mots-pour-un-article
38 */
39function valeur_champ_mots_objet($table, $ids, $champ) {
40        list($id_objet, $id_groupe) = explode('-', $ids);
41        list(, $objet) = explode('_', $champ);
42
43        $where = array(
44                "m.id_mot = ml.id_mot",
45                "ml.id_objet=".sql_quote($id_objet),
46                "ml.objet=".sql_quote($objet)
47        );
48        if ($id_groupe > 0)
49                $where[] = "m.id_groupe=" . sql_quote($id_groupe);
50
51        $valeurs = sql_allfetsel("m.id_mot", "spip_mots AS m, spip_mots_liens AS ml", $where);
52        $valeurs = array_map('array_shift', $valeurs);
53
54        return $valeurs;
55}
56
57/**
58 * Modifier dans la base la liste des mots-clés liés au ticket
59 * http://marcimat.magraine.net/Crayon-de-mots-pour-un-article
60 */
61function mots_ticket_revision($id, $colonnes, $type_objet) {
62        return mots_objet_revision($id, $colonnes, $type_objet, 'mots_ticket');
63}
64
65/**
66 * Modifier dans la base la liste des mots-clés liés au ticket pour un
67 * groupe de mots donné
68 * http://marcimat.magraine.net/Crayon-de-mots-pour-un-article
69 */
70function groupemots_ticket_revision($id, $colonnes, $type_objet) {
71        return mots_objet_revision($id, $colonnes, $type_objet, 'groupemots_ticket');
72}
73
74/**
75 * Modifier dans la base la liste des mots-clés liés à l'objet
76 * http://marcimat.magraine.net/Crayon-de-mots-pour-un-article
77 */
78function mots_objet_revision($ids, $colonnes, $type_objet, $champ = '') {
79        if (!$champ) return false;
80
81        list($id_objet, $id_groupe) = explode('-', $ids);
82        list(, $type_liaison) = explode('_', $champ);
83
84        /* On vérifie qu'on a le droit d'associer des mots l'objet
85         * il serait mieux de le vérifier pour chaque groupe de mots (voir
86         * les options de la fonction autoriser_associermots_dist)
87         */
88        if (!autoriser('associermots',$type_liaison,$id_objet)) return false;
89
90        // actuellement en bdd
91        $old = valeur_champ_mots_objet($type_objet, $ids, $champ);
92        // ceux qu'on veut maintenant (on vérifie que ce sont des indices)
93        $new = array_filter(explode(',', $colonnes[$champ]),'is_numeric');
94        // les mots à supprimer
95        $del = array_diff($old, $new);
96        // les mots à ajouter
97        $add = array_diff($new, $old);
98
99        include_spip('action/editer_liens');
100        if ($del) {
101                objet_dissocier(array('mot'=>$del), array($type_liaison => $id_objet));
102        }
103        if ($add) {
104                objet_associer(array('mot'=>$add), array($type_liaison => $id_objet));
105        }
106
107        return true;
108}
109
110function ticket_id_assigne_revision($id, $colval = array(), $type = ''){
111        $a = crayons_update($id, $colval, $type);
112
113        if ($notifications = charger_fonction('notifications', 'inc')) {
114                foreach ($colval as $col => $val) {
115                        if ($col=="id_assigne") {
116                                $notifications('assignerticket', $id, array('id_auteur' => $val));
117                        }
118                }
119        }
120       
121        return $a;
122}
123
124?>
Note: See TracBrowser for help on using the repository browser.