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
RevLine 
[31301]1<?php
[68121]2/**
3 * Plugin Tickets
[72401]4 * Licence GPL (c) 2008-2013
[68121]5 *
[72401]6 * @package SPIP\Tickets\Options
[68121]7 */
8 
[56968]9if (!defined("_ECRIRE_INC_VERSION")) return;
10
[50335]11/**
12 * Activer le plugin no_spam sur les tickets
13 */
14$GLOBALS['formulaires_no_spam'][] = 'editer_ticket';
[62591]15// Liste des pages de configuration dans l'ordre de presentation
16define('_TICKETS_PAGES_CONFIG', 'general:autorisations');
[31301]17
[80685]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/**
[80800]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/**
[80685]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 */
[80800]39function valeur_champ_mots_objet($table, $ids, $champ) {
40        list($id_objet, $id_groupe) = explode('-', $ids);
[80685]41        list(, $objet) = explode('_', $champ);
42
[80800]43        $where = array(
[80685]44                "m.id_mot = ml.id_mot",
[80800]45                "ml.id_objet=".sql_quote($id_objet),
[80685]46                "ml.objet=".sql_quote($objet)
[80800]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);
[80685]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/**
[80800]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/**
[80685]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 */
[80800]78function mots_objet_revision($ids, $colonnes, $type_objet, $champ = '') {
[80685]79        if (!$champ) return false;
80
[80800]81        list($id_objet, $id_groupe) = explode('-', $ids);
82        list(, $type_liaison) = explode('_', $champ);
83
[80691]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         */
[80800]88        if (!autoriser('associermots',$type_liaison,$id_objet)) return false;
[80686]89
[80685]90        // actuellement en bdd
[80800]91        $old = valeur_champ_mots_objet($type_objet, $ids, $champ);
[80685]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) {
[80800]101                objet_dissocier(array('mot'=>$del), array($type_liaison => $id_objet));
[80685]102        }
103        if ($add) {
[80800]104                objet_associer(array('mot'=>$add), array($type_liaison => $id_objet));
[80685]105        }
106
107        return true;
108}
109
[80698]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
[31387]124?>
Note: See TracBrowser for help on using the repository browser.