source: spip-zone/_plugins_/_dev_/mots_techniques/inc/grouper_mots.php @ 23407

Last change on this file since 23407 was 23407, checked in by marcimat@…, 11 years ago

Changement/simplification dans les autorisations de ce plugin :

  • voirmots de groupemots = voir de groupemots. Inutile de faire plus compliqué : si on ne peut pas voir le groupe, on ne peut pas voir les mots. Voir le groupe sans voir les mots n'ont pas trop de sens finalement.
  • 'creer' devient 'modifier' comme dans le core qui ne fait pas cette distinction non plus.
File size: 6.6 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2008                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined("_ECRIRE_INC_VERSION")) return;
14
15include_spip('inc/presentation');
16include_spip('inc/actions');
17include_spip('base/abstract_sql');
18
19// http://doc.spip.org/@inc_grouper_mots_dist
20function inc_grouper_mots_dist($id_groupe, $total) {
21        global $connect_statut, $spip_lang_right, $spip_lang;
22
23        $presenter_liste = charger_fonction('presenter_liste', 'inc');
24
25        // ceci sert a la fois:
26        // - a construire le nom du parametre d'URL indiquant la tranche
27        // - a donner un ID a la balise ou greffer le retour d'Ajax
28        // tant pour la prochaine tranche que pour le retrait de mot
29        $tmp_var = "editer_mots-$id_groupe";
30        $url = generer_url_ecrire('grouper_mots',"id_groupe=$id_groupe");
31
32        $select = 'id_mot, id_groupe, titre, descriptif, '
33        . sql_multi ("titre", $spip_lang);
34
35        $requete = array('SELECT' => $select, 'FROM' => 'spip_mots', 'WHERE' => "id_groupe=$id_groupe", 'ORDER BY' => 'multi');
36
37        $tableau = array();
38        $occurrences = calculer_liens_mots($id_groupe);
39        if (autoriser('modifiermots', 'groupemots', $id_groupe)) { ### Nouvelle autorisation (mt) ###
40                $styles = array(array('arial11'), array('arial1', 100), array('arial1', 130));
41        } else {
42                $styles = array(array('arial11'), array('arial1', 100));
43        }
44        return $presenter_liste($requete, 'presenter_groupe_mots_boucle', $tableau, array($occurrences, $total, $deb_aff), false, $styles, $tmp_var, '', '', $url);
45}
46
47// http://doc.spip.org/@afficher_groupe_mots_boucle
48function presenter_groupe_mots_boucle($row, $own)
49{
50        global $connect_statut;
51
52        list($occurrences, $total, $deb_aff) = $own;
53        $id_mot = $row['id_mot'];
54        $id_groupe = $row['id_groupe'];
55        $titre = typo($row['titre']);
56        $descriptif = entites_html($row['descriptif']);
57                       
58        if (autoriser('voir', 'groupemots', $id_groupe)  ### Nouvelle autorisation (mt) ###
59         OR autoriser('modifier', 'mot', $id_mot, null, array('id_groupe' => $id_groupe))
60        OR $occurrences['articles'][$id_mot] > 0) {
61                $h = generer_url_ecrire('mots_edit', "id_mot=$id_mot&redirect=" . generer_url_retour('mots_tous') . "#editer_mots-$id_groupe");
62                if ($descriptif)  $descriptif = " title=\"$descriptif\"";
63                $titre = "<a href='$h' class='liste-mot'$descriptif>$titre</a>";
64        }
65        $vals = array($titre);
66
67        $texte_lie = array();
68
69        $na = isset($occurrences['articles'][$id_mot]) ? $occurrences['articles'][$id_mot] : 0;
70        if ($na == 1)
71                $texte_lie[] = _T('info_1_article');
72        else if ($na > 1)
73                $texte_lie[] = $na." "._T('info_articles_02');
74
75        $nb = isset($occurrences['breves'][$id_mot]) ? $occurrences['breves'][$id_mot] : 0;
76        if ($nb == 1)
77                $texte_lie[] = _T('info_1_breve');
78        else if ($nb > 1)
79                $texte_lie[] = $nb." "._T('info_breves_03');
80
81        $ns = isset($occurrences['syndic'][$id_mot]) ? $occurrences['syndic'][$id_mot] : 0;
82        if ($ns == 1)
83                $texte_lie[] = _T('info_1_site');
84        else if ($ns > 1)
85                $texte_lie[] = $ns." "._T('info_sites');
86
87        $nr = isset($occurrences['rubriques'][$id_mot]) ? $occurrences['rubriques'][$id_mot] : 0;
88        if ($nr == 1)
89                $texte_lie[] = _T('info_une_rubrique_02');
90        else if ($nr > 1)
91                $texte_lie[] = $nr." "._T('info_rubriques_02');
92
93        $texte_lie = join($texte_lie,", ");
94
95        $vals[] = $texte_lie;
96
97        if (autoriser('modifier', 'mot', $id_mot, null, array('id_groupe' => $id_groupe))) {
98                $clic =  '<small>'
99                ._T('info_supprimer_mot')
100                . "&nbsp;<img style='vertical-align: bottom;' src='"
101                . chemin_image('croix-rouge.gif')
102                . "' alt='X' width='7' height='7' />"
103                . '</small>';
104
105                if ($nr OR $na OR $ns OR $nb)
106                        $href = "<a href='"
107                        . generer_url_ecrire("mots_tous","conf_mot=$id_mot&na=$na&nb=$nb&nr=$nr&ns=$ns&son_groupe=$id_groupe") . "#editer_mots-$id_groupe"
108                        . "'>$clic</a>";
109                else {
110                        $href = generer_supprimer_mot($id_mot, $id_groupe, $clic, $total, $deb_aff);
111                }
112
113                $vals[] = "<div style='text-align:right;'>$href</div>";
114        }
115       
116        return $vals;
117}
118
119// http://doc.spip.org/@generer_supprimer_mot
120function generer_supprimer_mot($id_mot, $id_groupe, $clic, $total, $deb_aff='')
121{
122        $cont = ($total > 1)
123        ? ''
124        : "function(r) {jQuery('#editer_mots-$id_groupe-supprimer').css('visibility','visible');}";
125
126        return ajax_action_auteur('editer_mots', "$id_groupe,$id_mot,,,",'grouper_mots', "id_groupe=$id_groupe&$deb_aff", array($clic,''), '', $cont);
127}
128
129//
130// Calculer les nombres d'elements (articles, etc.) lies a chaque mot
131//
132
133// http://doc.spip.org/@calculer_liens_mots
134function calculer_liens_mots($id_groupe)
135{
136
137if ($GLOBALS['connect_statut'] =="0minirezo") $aff_articles = "'prepa','prop','publie'";
138else $aff_articles = "'prop','publie'";
139
140 $articles = array();
141 $result_articles = sql_select("COUNT(*) as cnt, lien.id_mot", "spip_mots_articles AS lien, spip_articles AS article, spip_mots AS M", "lien.id_mot=M.id_mot AND M.id_groupe=$id_groupe AND article.id_article=lien.id_article AND article.statut IN ($aff_articles) ", "lien.id_mot");
142 while ($row =  sql_fetch($result_articles)){
143        $articles[$row['id_mot']] = $row['cnt'];
144}
145
146
147 $rubriques = array();
148 $result_rubriques = sql_select("COUNT(*) AS cnt, lien.id_mot", "spip_mots_rubriques AS lien, spip_mots AS M", "lien.id_mot=M.id_mot AND M.id_groupe=$id_groupe  ", "lien.id_mot");
149
150 while ($row = sql_fetch($result_rubriques)){
151        $rubriques[$row['id_mot']] = $row['cnt'];
152}
153
154 $breves = array();
155 $result_breves = sql_select("COUNT(*) AS cnt, lien.id_mot", "spip_mots_breves AS lien, spip_breves AS breve, spip_mots AS M", "lien.id_mot=M.id_mot AND M.id_groupe=$id_groupe AND breve.id_breve=lien.id_breve AND breve.statut IN ($aff_articles) ", "lien.id_mot");
156
157 while ($row = sql_fetch($result_breves)){
158        $breves[$row['id_mot']] = $row['cnt'];
159}
160
161 $syndic = array();
162 $result_syndic = sql_select("COUNT(*) AS cnt, lien.id_mot", "spip_mots_syndic AS lien, spip_syndic AS syndic, spip_mots AS M", "lien.id_mot=M.id_mot AND M.id_groupe=$id_groupe AND syndic.id_syndic=lien.id_syndic AND syndic.statut IN ($aff_articles) ", "lien.id_mot");
163 while ($row = sql_fetch($result_syndic)){
164        $syndic[$row['id_mot']] = $row['cnt'];
165
166 }
167
168 return array('articles' => $articles,
169              'breves' => $breves,
170              'rubriques' => $rubriques,
171              'syndic' => $syndic);
172}
173?>
Note: See TracBrowser for help on using the repository browser.