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

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

tickets - ne pas oublier d'envoyer la notification

quand on change de personne assignée par les crayons.

File size: 2.8 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 à l'objet
28 * http://marcimat.magraine.net/Crayon-de-mots-pour-un-article
29 */
30function valeur_champ_mots_objet($table, $id, $champ) {
31        list(, $objet) = explode('_', $champ);
32
33        $valeurs = sql_allfetsel("m.id_mot", "spip_mots AS m, spip_mots_liens AS ml", array(
34                "m.id_mot = ml.id_mot",
35                "ml.id_objet=".sql_quote($id),
36                "ml.objet=".sql_quote($objet)
37        ));
38        $valeurs = array_map('array_shift', $valeurs);
39
40        return $valeurs;
41}
42
43/**
44 * Modifier dans la base la liste des mots-clés liés au ticket
45 * http://marcimat.magraine.net/Crayon-de-mots-pour-un-article
46 */
47function mots_ticket_revision($id, $colonnes, $type_objet) {
48        return mots_objet_revision($id, $colonnes, $type_objet, 'mots_ticket');
49}
50
51/**
52 * Modifier dans la base la liste des mots-clés liés à l'objet
53 * http://marcimat.magraine.net/Crayon-de-mots-pour-un-article
54 */
55function mots_objet_revision($id, $colonnes, $type_objet, $champ = '') {
56        if (!$champ) return false;
57
58        /* On vérifie qu'on a le droit d'associer des mots l'objet
59         * il serait mieux de le vérifier pour chaque groupe de mots (voir
60         * les options de la fonction autoriser_associermots_dist)
61         */
62        if (!autoriser('associermots',$type_objet,$id)) return false;
63
64        list(, $type_liaison) = explode('_', $champ);
65
66        // actuellement en bdd
67        $old = valeur_champ_mots_objet($type_objet, $id, $champ);
68        // ceux qu'on veut maintenant (on vérifie que ce sont des indices)
69        $new = array_filter(explode(',', $colonnes[$champ]),'is_numeric');
70        // les mots à supprimer
71        $del = array_diff($old, $new);
72        // les mots à ajouter
73        $add = array_diff($new, $old);
74
75        include_spip('action/editer_liens');
76        if ($del) {
77                objet_dissocier(array('mot'=>$del), array($type_liaison => $id));
78        }
79        if ($add) {
80                objet_associer(array('mot'=>$add), array($type_liaison => $id));
81        }
82
83        return true;
84}
85
86function ticket_id_assigne_revision($id, $colval = array(), $type = ''){
87        $a = crayons_update($id, $colval, $type);
88
89        if ($notifications = charger_fonction('notifications', 'inc')) {
90                foreach ($colval as $col => $val) {
91                        if ($col=="id_assigne") {
92                                $notifications('assignerticket', $id, array('id_auteur' => $val));
93                        }
94                }
95        }
96       
97        return $a;
98}
99
100?>
Note: See TracBrowser for help on using the repository browser.