source: spip-zone/_plugins_/tickets/branches/v1.1/tickets_fonctions.php @ 54483

Last change on this file since 54483 was 54483, checked in by kent1@…, 8 years ago

Une option pour désactiver l'interface des tickets dans le public

  • Property svn:eol-style set to native
File size: 7.6 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5/**
6 * <BOUCLE(TICKETS)>
7 */
8function boucle_TICKETS_dist($id_boucle, &$boucles) {
9        $boucle = &$boucles[$id_boucle];
10        $id_table = $boucle->id_table;
11        $mstatut = $id_table .'.statut';
12
13        // Restreindre aux elements considérés comme publiés soit pas en :
14        // -* poubelle (poubelle)
15        // -* en cours de rédac (redac)
16        if (!isset($boucle->modificateur['criteres']['statut']) OR !isset($boucle->modificateur['criteres']['tout'])) {
17                array_unshift($boucle->where,array("'IN'", "'$mstatut'", "'(\\'ouvert\\',\\'resolu\\',\\'ferme\\',\\'redac\\')'"));
18        }
19        if(function_exists('lire_config')){
20                $desactiver_public = lire_config('tickets/general/desactiver_public','off');
21                if(($desactiver_public == 'on') && !test_espace_prive()){
22                        array_unshift($boucle->where,array("'='", "'$mstatut'", "'(\\'none\\')'"));
23                }
24        }
25
26        return calculer_boucle($id_boucle, $boucles);
27}
28/**
29 * Crée la liste des options du select des champs :
30 * -* jalon
31 * -* version
32 * -* projet
33 * -* composant
34 *
35 * @param string $nom
36 */
37function tickets_champ_optionnel_actif($nom){
38        $constante = '_TICKETS_LISTE_' . strtoupper($nom);
39        if (!defined($constante) && !lire_config('tickets/general/'.$nom)) {
40                return false;
41        }
42        if(defined($constante))
43                $liste = constant($constante);
44        else 
45                $liste = lire_config('tickets/general/'.$nom,'');
46
47        if ($liste == '') return false;
48
49        return explode(':', $liste);
50}
51
52
53// Creation de la liste des options du select d'assignation
54
55/**
56 *
57 * Crée la liste des options du champ select d'assignation de ticket
58 * Prend deux arguments optionnels :
59 * -* $en_cours qui est l'id_auteur que l'on souhaite préselectionner
60 * -* $format qui permet de choisir le format que la fonction renvoit :
61 * -** rien ou autre chose que 'array' renverra les options d'un select
62 * -** 'array' renverra un array des auteurs possibles
63 *
64 * @param int $en_cours
65 * @param string $format
66 * @return multitype:array|string
67 */
68function tickets_select_assignation($en_cours='0',$format='select'){
69        $options = NULL;
70        $liste_assignables=array();
71       
72        include_spip('inc/tickets_autoriser');
73        $select = array('nom','id_auteur');
74        $from = array('spip_auteurs AS t1');
75        $autorises = definir_autorisations_tickets('assigner');
76        if ($autorises['statut'])
77                $where = array(sql_in('t1.statut', $autorises['statut']), 't1.email LIKE '.sql_quote('%@%'));
78        else
79                $where = array(sql_in('t1.id_auteur', $autorises['auteur']), 't1.email LIKE '.sql_quote('%@%'));
80       
81        $query_auteurs = sql_select($select, $from, $where);
82        while ($row_auteur = sql_fetch($query_auteurs)) {
83                $liste_assignables[$row_auteur["id_auteur"]] = $row_auteur["nom"];
84                $selected = ($row_auteur["id_auteur"] == $en_cours) ? ' selected="selected"' : '';
85                $options .= '<option value="' . $row_auteur["id_auteur"] . '"' . $selected . '>' . $row_auteur["nom"] . '</option>';
86        }
87        if($format=='array'){
88                return $liste_assignables;
89        }
90        return $options;
91}
92
93// Affichage de la page des tickets classes par jalon
94function tickets_classer_par_jalon($bidon) {
95        $page = NULL;
96        if (defined('_TICKETS_LISTE_JALONS') OR lire_config()) {
97                $liste = explode(":", _TICKETS_LISTE_JALONS);
98                $i = 0;
99                foreach($liste as $_jalon) {
100                        $i += 1;
101                        $page .= recuperer_fond('prive/contenu/inc_liste_detaillee',
102                                array_merge($_GET, array('titre' => _T('tickets:champ_jalon').' '.$_jalon, 'statut' => 'ouvert', 'jalon' => $_jalon, 'bloc' => "_bloc$i")),
103                                array('ajax'=>true));
104                }
105        }
106        return $page;
107}
108
109// Affichage des blocs de liste depliables et ajaxes
110function tickets_debut_block_depliable($deplie,$id=""){
111        include_spip('inc/layer');
112        return debut_block_depliable($deplie,$id);
113}
114function tickets_fin_block() {
115        include_spip('inc/layer');
116        return fin_block();
117}
118function tickets_bouton_block_depliable($texte,$deplie,$page="",$ids=""){
119        include_spip('inc/layer');
120        if ($page)
121                return bouton_block_depliable(afficher_plus(generer_url_ecrire($page)).$texte,$deplie,$ids);
122        else
123                return bouton_block_depliable($texte,$deplie,$ids);
124       
125}
126
127// creation des fonction de selection de texte
128// encore en truc a reprendre !
129foreach (array('severite', 'tracker', 'statut', 'navigateur') as $nom){
130        eval("function tickets_texte_$nom(\$valeur) {
131                \$type = tickets_liste_$nom();
132                if (isset(\$type[\$valeur])) {
133                        return \$type[\$valeur];
134                }
135        }");
136}
137
138function tickets_icone_statut ($niveau,$full=false) {
139        $img = array(
140                "redac" => "puce-blanche.gif",
141                "ouvert" => "puce-orange.gif",
142                "resolu" => "puce-verte.gif",
143                "ferme" => "puce-poubelle.gif",
144                "poubelle" => "puce-poubelle.gif"
145                );
146        if($full)
147                return '<img src="'.find_in_path('prive/images/'.$img[$niveau]).'" alt="'.tickets_texte_statut($niveau).'" />';
148        else
149                return $img[$niveau];
150}
151
152function tickets_icone_severite ($niveau,$full=false) {
153        $img = array(
154                1 => "puce-rouge-breve.gif",
155                2 => "puce-orange-breve.gif",
156                3 => "puce-verte-breve.gif",
157                4 => "puce-poubelle-breve.gif"
158                );
159        if($full)
160                return '<img src="'.find_in_path('prive/images/'.$img[$niveau]).'" alt="'.tickets_texte_severite($niveau).'" />';
161        else
162                return $img[$niveau];
163}
164
165function tickets_liste_statut($connecte = true){
166        $statuts = array(
167                "redac" => _T("tickets:statut_redac"),
168                "ouvert" => _T("tickets:statut_ouvert"),
169                "resolu" => _T("tickets:statut_resolu"),
170                "ferme" => _T("tickets:statut_ferme"),
171                "poubelle" => _T("tickets:statut_poubelle")
172        );
173        if (!$connecte) {
174                unset($statuts['redac']);
175        }
176        return $statuts;
177}
178
179
180function tickets_liste_tracker($id_ticket = null){
181        $trackers = array(
182                1 => _T("tickets:type_probleme"),
183                2 => _T("tickets:type_amelioration"),
184                3 => _T("tickets:type_tache"),
185        );
186        return $trackers;
187}
188
189function tickets_liste_severite($id_ticket = null){
190        $severites = array(
191                1 => _T("tickets:severite_bloquant"),
192                2 => _T("tickets:severite_important"),
193                3 => _T("tickets:severite_normal"),
194                4 => _T("tickets:severite_peu_important"),
195        );
196        return $severites;
197}
198
199if(!function_exists('barre_typo')){
200        function barre_typo(){
201                return;
202        }
203}
204
205/**
206 *
207 * Fonction de génération d'url privée de tickets
208 *
209 * @param int $id
210 * @param string $args
211 * @param string $ancre
212 * @param string $statut
213 * @param string $connect
214 */
215function generer_url_ecrire_ticket($id, $args='', $ancre='', $statut='', $connect='') {
216        $a = "id_ticket=" . intval($id);
217        if (!$statut) {
218                $statut = sql_getfetsel('statut', 'spip_tickets', $a,'','','','',$connect);
219        }
220        $h = generer_url_ecrire('ticket_afficher', $a . ($args ? "&$args" : ''))
221        . ($ancre ? "#$ancre" : '');
222        return $h;
223}
224
225/**
226 * Liste des navigateurs possibles
227 */
228function tickets_liste_navigateur($nav=false){
229        $navs = array(
230                'tous' => _T('tickets:option_navigateur_tous'),
231                'android4' => 'Android 4.x',
232                'firefox3' => 'Firefox 3.x',
233                'firefox4' => 'Firefox 4.x',
234                'firefox5' => 'Firefox 5.x',
235                'firefox6' => 'Firefox 6.x',
236                'chrome9' => 'Google Chrome 9.x',
237                'chrome11' => 'Google Chrome 11.x',
238                'chrome12' => 'Google Chrome 12.x',
239                'chrome13' => 'Google Chrome 13.x',
240                'chrome14' => 'Google Chrome 14.x',
241                'ie6' => 'Internet Explorer 6',
242                'ie7' => 'Internet Explorer 7',
243                'ie8' => 'Internet Explorer 8',
244                'ie9' => 'Internet Explorer 9',
245                'opera11' => 'Opera 11.x',
246                'opera12' => 'Opera 12.x',
247                'safari4' => 'Safari 4.x',
248                'safari5' => 'Safari 5.x',
249                'autre' => _T('tickets:option_navigateur_autre')
250        );
251        return $navs;
252}
253
254// Balise #NOM_AUTEUR
255// Permet de retrouver le nom d'un auteur
256// d'après le id_assigne et le id_auteur de tickets
257function balise_NOM_AUTEUR($p) {
258        $id_auteur = interprete_argument_balise (1, $p);
259        $p->code = "trouve_nom(".$id_auteur.")";
260        $p->statut = 'php';
261        return $p;
262}
263function trouve_nom($id_auteur) {
264        $nom = sql_getfetsel("nom","spip_auteurs", "id_auteur=" . intval($id_auteur));
265        if (!empty($nom))
266                return $nom;
267        return '';
268}
269
270?>
Note: See TracBrowser for help on using the repository browser.