[SPIP] ~2.1.12 -->2.1.25
[velocampus/web/www.git] / www / ecrire / exec / controle_petition.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2014 *
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
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 include_spip('inc/presentation');
16
17 // http://doc.spip.org/@exec_controle_petition_dist
18 function exec_controle_petition_dist()
19 {
20 exec_controle_petition_args(intval(_request('id_article')),
21 _request('type'),
22 _request('date'),
23 intval(_request('debut')),
24 intval(_request('id_signature')),
25 intval(_request('pas'))); // a proposer grapiquement
26 }
27
28 // http://doc.spip.org/@exec_controle_petition_args
29 function exec_controle_petition_args($id_article, $type, $date, $debut, $id_signature, $pas=NULL)
30 {
31 if ($id_signature) {
32 $r = sql_fetsel("id_article, statut", "spip_signatures", "id_signature=$id_signature");
33 $id_article = $r['id_article'];
34 $s = $r['statut'];
35 $type = ($s=='publie' OR $s=='poubelle') ? 'public' : 'interne';
36 $where = '(id_signature=' . sql_quote($id_signature) . ') AND ';
37 } else $where = '';
38 if ($id_article AND !($titre = sql_getfetsel("titre", "spip_articles", "id_article=$id_article"))) {
39 include_spip('inc/minipres');
40 echo minipres(_T('public:aucun_article'));
41 } else controle_petition_args($id_article, $type, $date, $debut, $titre, $where, $pas, $id_signature);
42 }
43
44 function controle_petition_args($id_article, $type, $date, $debut, $titre, $where, $pas, $id_signature=0)
45 {
46 if (!preg_match('/^\w+$/',$type)) $type = 'public';
47 if ($id_article) $where .= "id_article=$id_article AND ";
48 $extrait = "(statut='publie' OR statut='poubelle')";
49 if ($type == 'interne') $extrait = "NOT($extrait)";
50 $where .= $extrait;
51 $order = "date_time DESC";
52 if (!$pas) $pas = 10;
53 if ($date) {
54 include_spip('inc/forum');
55 $query = array('SELECT' => 'UNIX_TIMESTAMP(date_time) AS d',
56 'FROM' => 'spip_signatures',
57 'WHERE' => $where,
58 'ORDER BY' => $order);
59 $debut = navigation_trouve_date($date, 'd', $pas, $query);
60 }
61 $signatures = charger_fonction('signatures', 'inc');
62
63 $res = $signatures('controle_petition', $id_article, $debut, $pas, $where, $order, $type);
64
65 if (_AJAX) {
66 ajax_retour($res);
67 } else {
68 $count = ($type != 'interne') ? 0 : sql_countsel("spip_signatures", $where);
69 controle_petition_page($id_article, $titre, $id_signature ? '' : $type, $res, $count);
70 }
71 }
72
73 // http://doc.spip.org/@controle_petition_page
74 function controle_petition_page($id_article, $titre, $type, $corps, $count)
75 {
76 $args = array();
77 $rac = '';
78
79 if (!(autoriser('modererpetition')
80 OR (
81 $id_article > 0
82 AND autoriser('modererpetition', 'article', $id_article)
83 ))) {
84 $ong = '';
85 } else {
86 $ong = controle_petition_onglet($id_article, $debut, $type, '');
87 if ($id_article) {
88 $h = generer_url_ecrire("statistiques_visites","id_article=$id_article");
89 $rac = icone_horizontale(_T('icone_statistiques_visites'), $h, "statistiques-24.gif","rien.gif", false);
90 if ($type !== 'public') {
91
92 $h = redirige_action_auteur('editer_signatures', $id_article . 'A', 'controle_petition', "id_article=$id_article&type=interne");
93 $rac .= icone_horizontale(_T('icone_relancer_signataire') . " ($count)", $h, "envoi-message-24.gif","rien.gif", false);
94 }
95 $rac = bloc_des_raccourcis($rac);
96 $titre = "<a href='" .
97 generer_url_entite($id_article,'article') .
98 "'>" .
99 typo($titre) .
100 "</a>" .
101 " <span class='arial1'>(" .
102 _T('info_numero_abbreviation') .
103 $id_article .
104 ")</span>";
105
106 if (!sql_countsel('spip_petitions', "id_article=$id_article"))
107 $titre .= '<br >' . _T('info_petition_close');
108
109 $args = array('id_article' => $id_article);
110 } else {
111
112 $q = sql_select('A.titre, A.date, A.id_article, count(*) AS n',
113 'spip_signatures AS S LEFT JOIN spip_articles AS A ON A.id_article=S.id_article',
114 '',
115 'A.id_article',
116 'n desc',
117 "0,10");
118 while ($r = sql_fetch($q)) {
119 $id = $r['id_article'];
120 $h = generer_url_entite($id, 'article');
121 $title = affdate_jourcourt($r['date']) . "\n" .$r['titre'];
122 $rac .= "<li><a href='$h' title=\"" . attribut_html($title). '">' . _T('info_numero_abbreviation') . " $id" . '</a>&nbsp;: '. $r['n'] . ' ' . _T('signatures') . "</li>";
123 }
124 if ($rac) $rac = "<ul>$rac</ul>";
125 $rac = debut_cadre_enfonce('',true)
126 . "\n<div style='font-size: x-small' class='verdana1'><b>"
127 ._T('public:articles_populaires')
128 ."</b>"
129 . $rac
130 . "</div>"
131 . fin_cadre_enfonce(true);
132
133 }
134 $rac = "<br /><br /><br /><br /><br />" . $rac;
135 }
136 $head = _T('titre_page_controle_petition');
137 $idom = "editer_signature-" . $id_article;
138 $commencer_page = charger_fonction('commencer_page', 'inc');
139
140 echo $commencer_page($head, "forum", "suivi-petition");
141 echo debut_gauche('', true);
142 echo $rac;
143 echo debut_droite('', true);
144 echo gros_titre(_T('titre_suivi_petition'),'', false);
145 echo $ong;
146 echo bouton_spip_rss('signatures', $args);
147 echo $titre;
148 echo "<br /><br />";
149 echo "<div id='", $idom, "' class='serif2'>", $corps, "</div>";
150 echo fin_gauche(), fin_page();
151 }
152
153 // http://doc.spip.org/@controle_petition_onglet
154 function controle_petition_onglet($id_article, $debut, $type, $arg='')
155 {
156 $arg .= ($id_article ? "id_article=$id_article&" :'');
157 $arg2 = ($debut ? "debut=$debut&" : '');
158 if ($type=='public') {
159 $argp = $arg2;
160 $argi = '';
161 } else {
162 $argi = $arg2;
163 $argp = '';
164 }
165
166 return debut_onglet()
167 . onglet(_T('titre_signatures_confirmees'), generer_url_ecrire('controle_petition', $argp . $arg . "type=public"), "public", $type=='public', "forum-public-24.gif")
168 . onglet(_T('titre_signatures_attente'), generer_url_ecrire('controle_petition', $argi . $arg . "type=interne"), "interne", $type=='interne', "forum-interne-24.gif")
169 . fin_onglet()
170 . '<br />';
171 }
172 ?>