[90] | 1 | <?php |
---|
| 2 | |
---|
| 3 | /******************************************************************************************/ |
---|
| 4 | /* SPIP-listes est un système de gestion de listes d'information par email pour SPIP */ |
---|
| 5 | /* Copyright (C) 2004 Vincent CARON v.caron<at>laposte.net , http://bloog.net */ |
---|
| 6 | /* */ |
---|
| 7 | /* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */ |
---|
| 8 | /* de la Licence Publique Générale GNU publiée par la Free Software Foundation */ |
---|
| 9 | /* (version 2). */ |
---|
| 10 | /* */ |
---|
| 11 | /* Ce programme est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE, */ |
---|
| 12 | /* ni explicite ni implicite, y compris les garanties de commercialisation ou */ |
---|
| 13 | /* d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU */ |
---|
| 14 | /* pour plus de détails. */ |
---|
| 15 | /* */ |
---|
| 16 | /* Vous devez avoir reçu une copie de la Licence Publique Générale GNU */ |
---|
| 17 | /* en même temps que ce programme ; si ce n'est pas le cas, écrivez à la */ |
---|
| 18 | /* Free Software Foundation, */ |
---|
| 19 | /* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis. */ |
---|
| 20 | /******************************************************************************************/ |
---|
| 21 | |
---|
| 22 | include_spip('inc/spiplistes_api'); |
---|
| 23 | |
---|
| 24 | |
---|
| 25 | function spip_listes_onglets($rubrique, $onglet){ |
---|
| 26 | global $id_auteur, $connect_id_auteur, $connect_statut, $statut_auteur, $options; |
---|
| 27 | |
---|
| 28 | echo debut_onglet(); |
---|
| 29 | if ($rubrique == "messagerie"){ |
---|
| 30 | echo onglet(_T('spiplistes:Historique_des_envois'), generer_url_ecrire("spip_listes"), "messagerie", $onglet, _DIR_PLUGIN_SPIPLISTES."img_pack/stock_hyperlink-mail-and-news-24.gif"); |
---|
| 31 | echo onglet(_T('spiplistes:Listes_de_diffusion'), generer_url_ecrire("listes_toutes"), "messagerie", $onglet, _DIR_PLUGIN_SPIPLISTES."img_pack/reply-to-all-24.gif"); |
---|
| 32 | echo onglet(_T('spiplistes:Suivi_des_abonnements'), generer_url_ecrire("abonnes_tous"), "messagerie", $onglet, _DIR_PLUGIN_SPIPLISTES."img_pack/addressbook-24.gif"); |
---|
| 33 | } |
---|
| 34 | echo fin_onglet(); |
---|
| 35 | } |
---|
| 36 | |
---|
| 37 | |
---|
| 38 | function boite_autocron(){ |
---|
| 39 | @define('_SPIP_LISTE_SEND_THREADS',1); |
---|
| 40 | include_spip('inc/spiplistes_cron'); |
---|
| 41 | if (cron_spiplistes_cron(0)) return; // rien a faire |
---|
| 42 | $res = spip_query("SELECT COUNT(a.id_auteur) AS n FROM spip_auteurs_courriers AS a JOIN spip_courriers AS c ON c.id_courrier=a.id_courrier WHERE c.statut='encour'"); |
---|
| 43 | $n = 0; |
---|
| 44 | if ($row = spip_fetch_array($res)) |
---|
| 45 | $n = $row['n']; |
---|
| 46 | |
---|
| 47 | if(true or $n > 0 ){ |
---|
| 48 | echo "<br />"; |
---|
| 49 | echo debut_boite_info(); |
---|
| 50 | //echo "<script type='text/javascript' src='".find_in_path('javascript/autocron.js')."'></script>"; |
---|
| 51 | |
---|
| 52 | echo "<div style='font-weight:bold;text-align:center'>"._T('spiplistes:envoi_en_cours')."</div>"; |
---|
| 53 | echo "<div style='padding : 10px;text-align:center'><img src='"._DIR_PLUGIN_SPIPLISTES."img_pack/48_import.gif'></div>"; |
---|
| 54 | |
---|
| 55 | $total = $n; |
---|
| 56 | $res2 = spip_query("SELECT SUM(total_abonnes) AS total FROM spip_courriers WHERE statut='encour'"); |
---|
| 57 | $row2 = spip_fetch_array($res2); |
---|
| 58 | $total = $row2['total']; |
---|
| 59 | echo "<div id='meleuse'>"; |
---|
| 60 | echo "<p align='center' id='envoi_statut'>"._T('spiplistes:envoi_en_cours')." " |
---|
| 61 | . "<strong id='envois_restants'>$n</strong>/<span id='envois_total'>$total</span> (<span id='envois_restant_pourcent'>" |
---|
| 62 | . round($n/$total*100)."</span>%)</p>"; |
---|
| 63 | |
---|
| 64 | $href = generer_action_auteur('spiplistes_envoi_lot','envoyer'); |
---|
| 65 | |
---|
| 66 | for ($i=0;$i<_SPIP_LISTE_SEND_THREADS;$i++) |
---|
| 67 | echo "<span id='proc$i' class='processus' name='$href'></span>"; |
---|
| 68 | if (_request('exec')=='spip_listes') |
---|
| 69 | echo "<a href='".generer_url_ecrire('spip_listes')."' id='redirect_after'></a>"; |
---|
| 70 | echo "</div>"; |
---|
| 71 | |
---|
| 72 | echo "<script><!-- |
---|
| 73 | var target = $('#envois_restants'); |
---|
| 74 | var total = $('#envois_total').html(); |
---|
| 75 | var target_pc = $('#envois_restant_pourcent'); |
---|
| 76 | function redirect_fin(){ |
---|
| 77 | redirect = $('#redirect_after'); |
---|
| 78 | if (redirect.length>0){ |
---|
| 79 | href = redirect.attr('href'); |
---|
| 80 | setTimeout('document.location.href = \"'+href+'\"',0); |
---|
| 81 | } |
---|
| 82 | } |
---|
| 83 | jQuery.fn.runProcessus = function(url) { |
---|
| 84 | var proc=this; |
---|
| 85 | var href=url; |
---|
| 86 | $(target).load(url,function(data){ |
---|
| 87 | restant = $(target).html(); |
---|
| 88 | pourcent=Math.round(restant/total*100); |
---|
| 89 | $(target_pc).html(pourcent); |
---|
| 90 | if (Math.round(restant)>0) |
---|
| 91 | $(proc).runProcessus(href); |
---|
| 92 | else |
---|
| 93 | redirect_fin(); |
---|
| 94 | }); |
---|
| 95 | } |
---|
| 96 | $('span.processus').each(function(){ |
---|
| 97 | var href = $(this).attr('name'); |
---|
| 98 | $(this).html(ajax_image_searching).runProcessus(href); |
---|
| 99 | //run_processus($(this).attr('id')); |
---|
| 100 | }); |
---|
| 101 | //--></script>"; |
---|
| 102 | echo "<p>"._T('spiplistes:texte_boite_en_cours')."</p>" ; |
---|
| 103 | echo "<p align='center'><a href='".generer_url_ecrire('gerer_courrier','change_statut=publie&id_message='.$id_mess)."'>["._T('annuler')."]</a></p>"; |
---|
| 104 | echo fin_boite_info(); |
---|
| 105 | } |
---|
| 106 | //echo ' <div style="background-image: url(\''. generer_url_action('cron','&var='.time()).'\');"> </div> '; |
---|
| 107 | //spip_log("spip_listes : autocron"); |
---|
| 108 | } |
---|
| 109 | |
---|
| 110 | function spip_listes_raccourcis(){ |
---|
| 111 | global $connect_statut; |
---|
| 112 | |
---|
| 113 | // debut des racourcis |
---|
| 114 | echo debut_raccourcis(_DIR_PLUGIN_SPIPLISTES."img_pack/mailer_config.gif"); |
---|
| 115 | |
---|
| 116 | if ($connect_statut == "0minirezo") { |
---|
| 117 | icone_horizontale(_T('spiplistes:Nouveau_courrier'), generer_url_ecrire("courrier_edit","new=oui&type=nl"), _DIR_PLUGIN_SPIPLISTES."img_pack/stock_mail_send.gif"); |
---|
| 118 | // echo "</a>"; // bug icone_horizontale() |
---|
| 119 | echo "<br />" ; |
---|
| 120 | echo "<br />" ; |
---|
| 121 | |
---|
| 122 | icone_horizontale(_T('spiplistes:Nouvelle_liste_de_diffusion'), generer_url_ecrire("liste_edit","new=oui"), _DIR_PLUGIN_SPIPLISTES."img_pack/reply-to-all-24.gif"); |
---|
| 123 | // echo "</a>"; // bug icone_horizontale() |
---|
| 124 | icone_horizontale(_T('spiplistes:import_export'), generer_url_ecrire("import_export"), _DIR_PLUGIN_SPIPLISTES."img_pack/listes_inout.png"); |
---|
| 125 | // echo "</a>"; // bug icone_horizontale() |
---|
| 126 | |
---|
| 127 | icone_horizontale(_T('spiplistes:Configuration'), generer_url_ecrire("config"),_DIR_PLUGIN_SPIPLISTES."img_pack/mailer_config.gif"); |
---|
| 128 | // echo "</a>"; // bug icone_horizontale() |
---|
| 129 | } |
---|
| 130 | echo fin_raccourcis(); |
---|
| 131 | |
---|
| 132 | //Afficher la console d'envoi ? |
---|
| 133 | boite_autocron(); |
---|
| 134 | |
---|
| 135 | // colonne gauche boite info |
---|
| 136 | echo "<br />" ; |
---|
| 137 | echo debut_boite_info(); |
---|
| 138 | echo _T('spiplistes:_aide'); |
---|
| 139 | echo fin_boite_info(); |
---|
| 140 | } |
---|
| 141 | |
---|
| 142 | /** |
---|
| 143 | * spiplistes_afficher_en_liste |
---|
| 144 | * |
---|
| 145 | * affiche des listes d'éléments |
---|
| 146 | * |
---|
| 147 | * @param string titre |
---|
| 148 | * @param string image |
---|
| 149 | * @param string statut |
---|
| 150 | * @param string recherche |
---|
| 151 | * @param string nom_position |
---|
| 152 | * @return string la liste des lettres pour le statut demandé @author BoOz / Pierre Basson |
---|
| 153 | **/ |
---|
| 154 | function spiplistes_afficher_en_liste($titre, $image, $element='listes', $statut, $recherche='', $nom_position='position') { |
---|
| 155 | |
---|
| 156 | global $pas, $id_auteur; |
---|
| 157 | $position = intval($_GET[$nom_position]); |
---|
| 158 | |
---|
| 159 | $clause_where = ''; |
---|
| 160 | if (!empty($recherche)) { |
---|
| 161 | $clause_where.= ' AND ( titre LIKE '._q("%$recherche%").' OR descriptif LIKE '._q("%$recherche%").' OR texte LIKE '._q("%$recherche%").' )'; |
---|
| 162 | } |
---|
| 163 | |
---|
| 164 | $lettres = ''; |
---|
| 165 | |
---|
| 166 | if(!$pas) $pas=10 ; |
---|
| 167 | if(!$position) $position=0 ; |
---|
| 168 | |
---|
| 169 | if($element == 'listes'){ |
---|
| 170 | $requete_listes = 'SELECT id_liste, |
---|
| 171 | titre, |
---|
| 172 | date |
---|
| 173 | FROM spip_listes |
---|
| 174 | WHERE statut='._q($statut).' '.$clause_where.' |
---|
| 175 | ORDER BY date DESC |
---|
| 176 | LIMIT '.intval($position).','.intval($pas).''; |
---|
| 177 | } |
---|
| 178 | |
---|
| 179 | if($element == 'messages'){ |
---|
| 180 | $type='nl' ; |
---|
| 181 | $type2=""; |
---|
| 182 | $statut2=""; |
---|
| 183 | if($statut=='redac') |
---|
| 184 | $statut2=" OR statut='ready'"; |
---|
| 185 | if($statut=='auto'){ |
---|
| 186 | $type='auto'; |
---|
| 187 | $statut='publie'; |
---|
| 188 | } |
---|
| 189 | if($statut=='encour') |
---|
| 190 | $type2=" OR type='auto'"; |
---|
| 191 | |
---|
| 192 | $requete_listes = 'SELECT id_courrier, |
---|
| 193 | titre, |
---|
| 194 | date, nb_emails_envoyes |
---|
| 195 | FROM spip_courriers |
---|
| 196 | WHERE (type='._q($type).$type2.') AND (statut='._q($statut).$statut2.') '.$clause_where.' |
---|
| 197 | ORDER BY date DESC |
---|
| 198 | LIMIT '.intval($position).','.intval($pas).''; |
---|
| 199 | } |
---|
| 200 | |
---|
| 201 | if($element == 'abonnements'){ |
---|
| 202 | if($statut=='') |
---|
| 203 | $requete_listes = 'SELECT listes.id_liste, listes.titre, listes.statut, listes.date,lien.id_auteur,lien.id_liste |
---|
| 204 | FROM spip_auteurs_listes AS lien |
---|
| 205 | LEFT JOIN spip_listes AS listes ON lien.id_liste=listes.id_liste |
---|
| 206 | WHERE lien.id_auteur='._q($id_auteur).' AND (listes.statut="liste" OR listes.statut="inact") |
---|
| 207 | ORDER BY listes.date DESC LIMIT '.intval($position).','.intval($pas).''; |
---|
| 208 | else{ |
---|
| 209 | $requete_listes = 'SELECT id_courrier, |
---|
| 210 | titre, |
---|
| 211 | date, nb_emails_envoyes |
---|
| 212 | FROM spip_courriers |
---|
| 213 | WHERE type='._q($type).' AND statut='._q($statut).' '.$clause_where.' |
---|
| 214 | ORDER BY date DESC |
---|
| 215 | LIMIT '.intval($position).','.intval($pas).''; |
---|
| 216 | } |
---|
| 217 | } |
---|
| 218 | |
---|
| 219 | //echo "$requete_listes"; |
---|
| 220 | $resultat_aff = spip_query($requete_listes); |
---|
| 221 | |
---|
| 222 | |
---|
| 223 | if (@spip_num_rows($resultat_aff) > 0) { |
---|
| 224 | |
---|
| 225 | $en_liste.= "<div class='liste'>\n"; |
---|
| 226 | $en_liste.= "<div style='position: relative;'>\n"; |
---|
| 227 | $en_liste.= "<div style='position: absolute; top: -12px; left: 3px;'>\n"; |
---|
| 228 | $en_liste.= "<img src='".$image."' />\n"; |
---|
| 229 | $en_liste.= "</div>\n"; |
---|
| 230 | $en_liste.= "<div style='background-color: white; color: black; padding: 3px; padding-left: 30px; border-bottom: 1px solid #444444;' class='verdana2'>\n"; |
---|
| 231 | $en_liste.= "<b>\n"; |
---|
| 232 | $en_liste.= $titre; |
---|
| 233 | $en_liste.= "</b>\n"; |
---|
| 234 | $en_liste.= "</div>\n"; |
---|
| 235 | $en_liste.= "</div>\n"; |
---|
| 236 | $en_liste.= "<table width='100%' cellpadding='2' cellspacing='0' border='0'>\n"; |
---|
| 237 | |
---|
| 238 | while ($row = spip_fetch_array($resultat_aff)) { |
---|
| 239 | $titre = $row['titre']; |
---|
| 240 | $date = affdate($row['date']); |
---|
| 241 | |
---|
| 242 | $retour = _DIR_RESTREINT_ABS.self(); |
---|
| 243 | switch ($element){ |
---|
| 244 | case "abonnements": |
---|
| 245 | $id_row = $row['id_liste']; |
---|
| 246 | $url_row = generer_url_ecrire('listes', 'id_liste='.$id_row); |
---|
| 247 | $url_desabo = generer_action_auteur('spiplistes_changer_statut_abonne', $row['id_auteur']."-listedesabo-$id_row", $retour); |
---|
| 248 | break; |
---|
| 249 | case "listes": |
---|
| 250 | $id_row = $row['id_liste']; |
---|
| 251 | $url_row = generer_url_ecrire('listes', 'id_liste='.$id_row); |
---|
| 252 | break; |
---|
| 253 | default: |
---|
| 254 | $id_row = $row['id_courrier']; |
---|
| 255 | $nb_emails_envoyes = $row['nb_emails_envoyes']; |
---|
| 256 | $url_row = generer_url_ecrire('gerer_courrier', 'id_message='.$id_row); |
---|
| 257 | } |
---|
| 258 | |
---|
| 259 | $en_liste.= "<tr class='tr_liste'>\n"; |
---|
| 260 | $en_liste.= "<td width='11'>"; |
---|
| 261 | switch ($statut) { |
---|
| 262 | case 'brouillon': |
---|
| 263 | $en_liste.= "<img src='"._DIR_IMG_PACK."puce-blanche.gif' alt='puce-blanche' border='0' style='margin: 1px;' />"; |
---|
| 264 | break; |
---|
| 265 | case 'publie': |
---|
| 266 | $en_liste.= "<img src='"._DIR_IMG_PACK."puce-verte.gif' alt='puce-verte' border='0' style='margin: 1px;' />"; |
---|
| 267 | break; |
---|
| 268 | case 'envoi_en_cours': |
---|
| 269 | $en_liste.= "<img src='"._DIR_IMG_PACK."puce-orange.gif' alt='puce-orange' border='0' style='margin: 1px;' />"; |
---|
| 270 | break; |
---|
| 271 | } |
---|
| 272 | $en_liste.= "</td>"; |
---|
| 273 | $en_liste.= "<td class='arial2'>\n"; |
---|
| 274 | $en_liste.= "<div>\n"; |
---|
| 275 | $en_liste.= "<a href=\"".$url_row."\" dir='ltr' style='display:block;'>\n"; |
---|
| 276 | $en_liste.= $titre; |
---|
| 277 | |
---|
| 278 | if ($element == 'listes') { |
---|
| 279 | $nb_abo= spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs_listes WHERE id_liste="._q($id_row))); |
---|
| 280 | $nb_abo = ($nb_abo>1)? $nb_abo._T('spiplistes:nb_abonnes_plur') : $nb_abo._T('spiplistes:nb_abonnes_sing'); |
---|
| 281 | |
---|
| 282 | $en_liste.= " <span style='font-size:100%;color:#666666' dir='ltr'>\n"; |
---|
| 283 | $en_liste.= "(".$nb_abo.")\n"; |
---|
| 284 | $en_liste.= "</span>\n"; |
---|
| 285 | } |
---|
| 286 | |
---|
| 287 | if($nb_emails_envoyes>0){ |
---|
| 288 | $en_liste.= "<span style='font-size:100%;color:#666666' dir='ltr'>\n"; |
---|
| 289 | $en_liste.= "(".$nb_emails_envoyes.")\n"; |
---|
| 290 | $en_liste.= "</span>\n"; |
---|
| 291 | } |
---|
| 292 | |
---|
| 293 | $en_liste.= "</a>\n"; |
---|
| 294 | $en_liste.= "</div>\n"; |
---|
| 295 | $en_liste.= "</td>\n"; |
---|
| 296 | |
---|
| 297 | switch ($element){ |
---|
| 298 | case "abonnements": |
---|
| 299 | $en_liste.= "<td width='120' class='arial1'><a href=\"".$url_desabo."\" dir='ltr' style='display:block;'>"._T('spiplistes:desabonnement')."</a></td>\n"; |
---|
| 300 | break; |
---|
| 301 | default: |
---|
| 302 | $en_liste.= "<td width='120' class='arial1'>".$date."</td>\n"; |
---|
| 303 | } |
---|
| 304 | |
---|
| 305 | $en_liste.= "<td width='50' class='arial1'><b>"._T('spiplistes:numero').$id_row."</b></td>\n"; |
---|
| 306 | $en_liste.= "</tr>\n"; |
---|
| 307 | |
---|
| 308 | } |
---|
| 309 | $en_liste.= "</table>\n"; |
---|
| 310 | |
---|
| 311 | switch ($element){ |
---|
| 312 | case "listes": |
---|
| 313 | $requete_total = 'SELECT id_liste |
---|
| 314 | FROM spip_listes |
---|
| 315 | WHERE statut='._q($statut).' '.$clause_where.' |
---|
| 316 | ORDER BY date DESC'; |
---|
| 317 | $retour = 'listes_toutes'; |
---|
| 318 | break; |
---|
| 319 | case "messages": |
---|
| 320 | $requete_total = 'SELECT id_courrier |
---|
| 321 | FROM spip_courriers |
---|
| 322 | WHERE type='._q($type).' AND statut='._q($statut); |
---|
| 323 | $retour = 'spip_listes'; |
---|
| 324 | break; |
---|
| 325 | case "abonnements": |
---|
| 326 | $requete_total = 'SELECT listes.id_liste, listes.titre, listes.statut, listes.date, lien.id_auteur,lien.id_liste |
---|
| 327 | FROM spip_auteurs_listes AS lien |
---|
| 328 | LEFT JOIN spip_listes AS listes |
---|
| 329 | ON lien.id_liste=listes.id_liste |
---|
| 330 | WHERE lien.id_auteur='._q($id_auteur).' AND (listes.statut ="liste" OR listes.statut ="inact") |
---|
| 331 | ORDER BY listes.date DESC'; |
---|
| 332 | $retour = 'abonne_edit'; |
---|
| 333 | $param = '&id_auteur='.$id_auteur; |
---|
| 334 | break; |
---|
| 335 | } |
---|
| 336 | |
---|
| 337 | $resultat_total = spip_query($requete_total); |
---|
| 338 | $total = spip_num_rows($resultat_total); |
---|
| 339 | |
---|
| 340 | $en_liste.= spiplistes_afficher_pagination($retour, $param, $total, $position, $nom_position); |
---|
| 341 | $en_liste.= "</div>\n"; |
---|
| 342 | $en_liste.= "<br />\n"; |
---|
| 343 | } |
---|
| 344 | |
---|
| 345 | return $en_liste; |
---|
| 346 | |
---|
| 347 | } |
---|
| 348 | |
---|
| 349 | |
---|
| 350 | |
---|
| 351 | /** |
---|
| 352 | * adapte de lettres_afficher_pagination |
---|
| 353 | * |
---|
| 354 | * @param string fond |
---|
| 355 | * @param string arguments |
---|
| 356 | * @param int total |
---|
| 357 | * @param int position |
---|
| 358 | * @author Pierre Basson |
---|
| 359 | **/ |
---|
| 360 | function spiplistes_afficher_pagination($fond, $arguments, $total, $position, $nom) { |
---|
| 361 | global $pas; |
---|
| 362 | $pagination = ''; |
---|
| 363 | $i = 0; |
---|
| 364 | |
---|
| 365 | $nombre_pages = floor(($total-1)/$pas)+1; |
---|
| 366 | |
---|
| 367 | if($nombre_pages>1) { |
---|
| 368 | |
---|
| 369 | $pagination.= "<div style='background-color: white; color: black; padding: 3px; padding-left: 30px; padding-right: 40px; text-align: right;' class='verdana2'>\n"; |
---|
| 370 | while($i<$nombre_pages) { |
---|
| 371 | $url = generer_url_ecrire($fond, $nom.'='.strval($i*$pas).$arguments, '&'); |
---|
| 372 | $item = strval($i+1); |
---|
| 373 | if(($i*$pas) != $position) { |
---|
| 374 | $pagination.= ' <a href="'.$url.'">'.$item.'</a>'."\n"; |
---|
| 375 | } else { |
---|
| 376 | $pagination.= ' <i>'.$item.'</i>'."\n"; |
---|
| 377 | } |
---|
| 378 | $i++; |
---|
| 379 | } |
---|
| 380 | |
---|
| 381 | $pagination.= "</ul>\n"; |
---|
| 382 | $pagination.= "</div>\n"; |
---|
| 383 | } |
---|
| 384 | |
---|
| 385 | return $pagination; |
---|
| 386 | } |
---|
| 387 | |
---|
| 388 | |
---|
| 389 | function spiplistes_cherche_auteur(){ |
---|
| 390 | if (!$cherche_auteur = _request('cherche_auteur')) return; |
---|
| 391 | |
---|
| 392 | echo "<p align='left'>"; |
---|
| 393 | $col = strpos($cherche_auteur, '@') !== false ? 'email' : 'nom'; |
---|
| 394 | $like = ''; |
---|
| 395 | if (strpos($cherche_auteur, '%') !== false) { |
---|
| 396 | $like = " WHERE $col LIKE '" . $cherche_auteur . "'"; |
---|
| 397 | $cherche_auteur = str_replace('%', ' ', $cherche_auteur); |
---|
| 398 | } |
---|
| 399 | $result = spip_query("SELECT id_auteur, $col FROM spip_auteurs$like"); |
---|
| 400 | |
---|
| 401 | while ($row = spip_fetch_array($result, SPIP_NUM)) { |
---|
| 402 | $table_auteurs[] = $row[1]; |
---|
| 403 | $table_ids[] = $row[0]; |
---|
| 404 | } |
---|
| 405 | |
---|
| 406 | $resultat = mots_ressemblants($cherche_auteur, $table_auteurs, $table_ids); |
---|
| 407 | echo debut_boite_info(); |
---|
| 408 | if (!$resultat) |
---|
| 409 | echo "<b>"._T('texte_aucun_resultat_auteur', array('cherche_auteur' => $cherche_auteur)).".</b><br />"; |
---|
| 410 | elseif (count($resultat) == 1) { |
---|
| 411 | list(, $nouv_auteur) = each($resultat); |
---|
| 412 | echo "<b>"._T('spiplistes:une_inscription')."</b><br />"; |
---|
| 413 | $result = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur="._q($nouv_auteur)); |
---|
| 414 | echo "<ul>"; |
---|
| 415 | while ($row = spip_fetch_array($result)) { |
---|
| 416 | $id_auteur = $row['id_auteur']; |
---|
| 417 | $nom_auteur = $row['nom']; |
---|
| 418 | $email_auteur = $row['email']; |
---|
| 419 | $bio_auteur = $row['bio']; |
---|
| 420 | |
---|
| 421 | echo "<li><font face='Verdana,Arial,Sans,sans-serif' size=2><b><font size=3><a href=\"?exec=abonne_edit&id_auteur=$id_auteur\">".typo($nom_auteur)."</a></font></b>"; |
---|
| 422 | echo " | $email_auteur"; |
---|
| 423 | echo "</font>\n"; |
---|
| 424 | } |
---|
| 425 | echo "</ul>"; |
---|
| 426 | } |
---|
| 427 | elseif (count($resultat) < 16) { |
---|
| 428 | reset($resultat); |
---|
| 429 | unset($les_auteurs); |
---|
| 430 | while (list(, $id_auteur) = each($resultat)) |
---|
| 431 | $les_auteurs[] = $id_auteur; |
---|
| 432 | if ($les_auteurs) { |
---|
| 433 | $les_auteurs = join(',', $les_auteurs); |
---|
| 434 | echo "<b>"._T('texte_plusieurs_articles', array('cherche_auteur' => $cherche_auteur))."</b><br />"; |
---|
| 435 | $result = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur IN ($les_auteurs) ORDER BY nom"); |
---|
| 436 | echo "<ul>"; |
---|
| 437 | while ($row = spip_fetch_array($result)) { |
---|
| 438 | $id_auteur = $row['id_auteur']; |
---|
| 439 | $nom_auteur = $row['nom']; |
---|
| 440 | $email_auteur = $row['email']; |
---|
| 441 | $bio_auteur = $row['bio']; |
---|
| 442 | |
---|
| 443 | echo "<li><font face='Verdana,Arial,Sans,sans-serif' size=2><b><font size=3>".typo($nom_auteur)."</font></b>"; |
---|
| 444 | if ($email_auteur) |
---|
| 445 | echo " ($email_auteur)"; |
---|
| 446 | echo " | <a href=\"".generer_url_ecrire("abonne_edit","id_auteur=$id_auteur")."\">"._T('spiplistes:choisir')."</a>"; |
---|
| 447 | if (trim($bio_auteur)) |
---|
| 448 | echo "<br /><font size=1>".couper(propre($bio_auteur), 100)."</font>\n"; |
---|
| 449 | echo "</font><p>\n"; |
---|
| 450 | } |
---|
| 451 | echo "</ul>"; |
---|
| 452 | } |
---|
| 453 | } |
---|
| 454 | else |
---|
| 455 | echo "<b>"._T('texte_trop_resultats_auteurs', array('cherche_auteur' => $cherche_auteur))."</b><br />"; |
---|
| 456 | |
---|
| 457 | echo fin_boite_info(); |
---|
| 458 | echo "<p>"; |
---|
| 459 | } |
---|
| 460 | |
---|
| 461 | function spiplistes_afficher_auteurs($query, $url){ |
---|
| 462 | $tri = _request('tri') ? _request('tri') : 'nom'; |
---|
| 463 | |
---|
| 464 | $t = spip_query('SELECT COUNT(*) FROM spip_auteurs'); |
---|
| 465 | $nombre_auteurs = spip_fetch_array($t, SPIP_NUM); |
---|
| 466 | $nombre_auteurs = intval($nombre_auteurs[0]); |
---|
| 467 | |
---|
| 468 | // reglage du debut |
---|
| 469 | $max_par_page = 30; |
---|
| 470 | $debut = intval(_request('debut')); |
---|
| 471 | if ($debut > $nombre_auteurs - $max_par_page) { |
---|
| 472 | $debut = max(0,$nombre_auteurs - $max_par_page); |
---|
| 473 | } |
---|
| 474 | |
---|
| 475 | $t = spip_query($query . ' LIMIT ' . $debut . ',' . $max_par_page); |
---|
| 476 | |
---|
| 477 | $auteurs=array(); |
---|
| 478 | $les_auteurs = array(); |
---|
| 479 | while ($auteur = spip_fetch_array($t)) { |
---|
| 480 | if ($auteur['statut'] == '0minirezo') { |
---|
| 481 | $auteur['restreint'] = spip_num_rows(spip_query( |
---|
| 482 | "SELECT * FROM spip_auteurs_rubriques WHERE id_auteur="._q($auteur['id_auteur']))); |
---|
| 483 | } |
---|
| 484 | $auteurs[] = $auteur; |
---|
| 485 | $les_auteurs[] = $auteur['id_auteur']; |
---|
| 486 | } |
---|
| 487 | |
---|
| 488 | $lettre = array(); |
---|
| 489 | if (($tri == 'nom') AND $GLOBALS['options'] == 'avancees') { |
---|
| 490 | $qlettre = spip_query( |
---|
| 491 | 'select distinct upper(left(nom,1)) l, count(*) from spip_auteurs group by l order by l'); |
---|
| 492 | $count = 0; |
---|
| 493 | while ($rlettre = spip_fetch_array($qlettre, SPIP_NUM)) { |
---|
| 494 | $lettre[$rlettre[0]] = $count; |
---|
| 495 | $count += intval($rlettre[1]); |
---|
| 496 | } |
---|
| 497 | } |
---|
| 498 | |
---|
| 499 | // |
---|
| 500 | // Affichage |
---|
| 501 | // |
---|
| 502 | |
---|
| 503 | // ici commence la vraie boucle |
---|
| 504 | echo debut_cadre_relief('redacteurs-24.gif'); |
---|
| 505 | echo "<table border='0' cellpadding=3 cellspacing=0 width='100%' class='arial2'>\n"; |
---|
| 506 | |
---|
| 507 | if ($nombre_auteurs > $max_par_page) { |
---|
| 508 | echo "<tr bgcolor='white'><td colspan='6'>"; |
---|
| 509 | echo "<font face='Verdana,Arial,Sans,sans-serif' size='1'>"; |
---|
| 510 | for ($j=0; $j < $nombre_auteurs; $j+=$max_par_page) { |
---|
| 511 | if ($j > 0) echo " | "; |
---|
| 512 | |
---|
| 513 | if ($j == $debut) |
---|
| 514 | echo "<b>$j</b>"; |
---|
| 515 | elseif ($j > 0) |
---|
| 516 | echo "<a href='".parametre_url($url,'debut',$j)."'>$j</a>"; |
---|
| 517 | else |
---|
| 518 | echo " <a href='".parametre_url($url,'debut',0)."'>0</a>"; |
---|
| 519 | |
---|
| 520 | if ($debut > $j AND $debut < $j+$max_par_page) |
---|
| 521 | echo " | <b>$debut</b>"; |
---|
| 522 | } |
---|
| 523 | echo "</font>"; |
---|
| 524 | echo "</td></tr>\n"; |
---|
| 525 | |
---|
| 526 | if (($tri == 'nom') AND $GLOBALS['options'] == 'avancees') { |
---|
| 527 | // affichage des lettres |
---|
| 528 | echo "<tr bgcolor='white'><td colspan='6'>"; |
---|
| 529 | echo "<font face='Verdana,Arial,Sans,sans-serif' size=2>"; |
---|
| 530 | foreach ($lettre as $key => $val) { |
---|
| 531 | if ($val == $debut) |
---|
| 532 | echo "<b>$key</b> "; |
---|
| 533 | else |
---|
| 534 | echo "<a href='".parametre_url($url,'debut',$val)."'>$key</a> "; |
---|
| 535 | } |
---|
| 536 | echo "</font>"; |
---|
| 537 | echo "</td></tr>\n"; |
---|
| 538 | } |
---|
| 539 | echo "<tr height='5'></tr>"; |
---|
| 540 | } |
---|
| 541 | |
---|
| 542 | echo "<tr bgcolor='#DBE1C5'>"; |
---|
| 543 | echo "<td width='20'>"; |
---|
| 544 | $img = "<img src='"._DIR_IMG_PACK."/admin-12.gif' alt='' border='0'>"; |
---|
| 545 | if ($tri=='statut') |
---|
| 546 | echo $img; |
---|
| 547 | else |
---|
| 548 | echo "<a href='".parametre_url($url,'tri','statut')."' title='"._T('lien_trier_statut')."'>$img</a>"; |
---|
| 549 | |
---|
| 550 | echo "</td><td>"; |
---|
| 551 | if ($tri == '' OR $tri=='nom') |
---|
| 552 | echo '<b>'._T('info_nom').'</b>'; |
---|
| 553 | else |
---|
| 554 | echo "<a href='".parametre_url($url,'tri','nom')."' title='"._T('lien_trier_nom')."'><b>"._T('info_nom')."</b></a>"; |
---|
| 555 | |
---|
| 556 | echo "</td><td colspan='2'><b>"._T('info_site')."</b>"; |
---|
| 557 | echo "</td><td>"; |
---|
| 558 | if ($visiteurs != 'oui') { |
---|
| 559 | if ($tri=='nombre') |
---|
| 560 | echo "<b>"._T('spiplistes:format')."</b>"; |
---|
| 561 | else |
---|
| 562 | echo "<b>"._T('spiplistes:format')."</b>"; |
---|
| 563 | } |
---|
| 564 | echo "</td><td>"; |
---|
| 565 | echo "<b>"._T('spiplistes:modifier')."</b>"; |
---|
| 566 | |
---|
| 567 | echo "</td></tr>\n"; |
---|
| 568 | |
---|
| 569 | //translate extra field data |
---|
| 570 | list(,,,$trad,$val) = explode("|",_T("spiplistes:options")); |
---|
| 571 | $trad = explode(",",$trad); |
---|
| 572 | $val = explode(",",$val); |
---|
| 573 | $trad_map = Array(); |
---|
| 574 | for($index_map=0;$index_map<count($val);$index_map++) { |
---|
| 575 | $trad_map[$val[$index_map]] = $trad[$index_map]; |
---|
| 576 | } |
---|
| 577 | $i=0; |
---|
| 578 | foreach ($auteurs as $row) { |
---|
| 579 | // couleur de ligne |
---|
| 580 | $couleur = ($i % 2) ? '#FFFFFF' : $couleur_claire; |
---|
| 581 | $i++; |
---|
| 582 | echo "<tr bgcolor='$couleur'>"; |
---|
| 583 | |
---|
| 584 | |
---|
| 585 | // statut auteur |
---|
| 586 | echo "<td>"; |
---|
| 587 | echo bonhomme_statut($row); |
---|
| 588 | |
---|
| 589 | // nom |
---|
| 590 | echo '</td><td>'; |
---|
| 591 | echo "<a href='?exec=abonne_edit&id_auteur=".$row['id_auteur']."'>".typo($row['nom']).'</a>'; |
---|
| 592 | |
---|
| 593 | if ($connect_statut == '0minirezo' AND $row['restreint']) |
---|
| 594 | echo " <small>"._T('statut_admin_restreint')."</small>"; |
---|
| 595 | |
---|
| 596 | // contact |
---|
| 597 | if ($GLOBALS['options'] == 'avancees') { |
---|
| 598 | echo '</td><td>'; |
---|
| 599 | if ($row['messagerie'] == 'oui' AND $row['login'] |
---|
| 600 | AND $activer_messagerie != "non" AND $connect_activer_messagerie != "non" AND $messagerie != "non") |
---|
| 601 | echo _T('spiplistes:erreur'); // bouton_imessage($row['id_auteur'],"force")." "; |
---|
| 602 | if ($connect_statut=="0minirezo"){ |
---|
| 603 | if (strlen($row['email'])>3) |
---|
| 604 | echo "<a href='mailto:".$row['email']."'>"._T('lien_email')."</a>"; |
---|
| 605 | else |
---|
| 606 | echo " "; |
---|
| 607 | } |
---|
| 608 | |
---|
| 609 | if (strlen($row['url_site'])>3) |
---|
| 610 | echo "</td><td><a href='".$row['url_site']."'>"._T('lien_site')."</a>"; |
---|
| 611 | else |
---|
| 612 | echo "</td><td> "; |
---|
| 613 | } |
---|
| 614 | |
---|
| 615 | // Abonne ou pas ? |
---|
| 616 | echo '</td><td>'; |
---|
| 617 | $id_auteur=$row['id_auteur'] ; |
---|
| 618 | $abo = spip_fetch_array(spip_query("SELECT `spip_listes_format` FROM `spip_auteurs_elargis` WHERE `id_auteur`=$id_auteur")) ; |
---|
| 619 | //var_dump($abo);die("coucou"); |
---|
| 620 | $abo = $abo["spip_listes_format"]; |
---|
| 621 | //var_dump($abo); |
---|
| 622 | if($abo == "non") |
---|
| 623 | echo "-"; |
---|
| 624 | else |
---|
| 625 | echo " ".$trad_map[$abo]; |
---|
| 626 | |
---|
| 627 | // Modifier l'abonnement |
---|
| 628 | echo '</td><td>'; |
---|
| 629 | echo "<a name='abo".$row['id_auteur']."'></a>"; |
---|
| 630 | |
---|
| 631 | $retour = parametre_url($url,'debut',$debut); |
---|
| 632 | $u = generer_action_auteur('spiplistes_changer_statut_abonne', $row['id_auteur']."-format", $retour); |
---|
| 633 | if($abo == 'html'){ |
---|
| 634 | $option_abo = "<a href='".parametre_url($u,'statut','non')."'>"._T('spiplistes:desabo') |
---|
| 635 | . "</a> | <a href='".parametre_url($u,'statut','texte')."'>"._T('spiplistes:texte')."</a>"; |
---|
| 636 | } |
---|
| 637 | elseif ($abo == 'texte') |
---|
| 638 | $option_abo = "<a href='".parametre_url($u,'statut','non')."'>"._T('spiplistes:desabo') |
---|
| 639 | . "</a> | <a href='".parametre_url($u,'statut','html')."'>"._T('spiplistes:html')."</a>"; |
---|
| 640 | elseif(($abo == 'non')OR (!$abo)) |
---|
| 641 | $option_abo = "<a href='".parametre_url($u,'statut','texte')."'>"._T('spiplistes:texte') |
---|
| 642 | . "</a> | <a href='".parametre_url($u,'statut','html')."'>"._T('spiplistes:html')."</a>"; |
---|
| 643 | echo " ".$option_abo; |
---|
| 644 | |
---|
| 645 | echo "</td></tr>\n"; |
---|
| 646 | } |
---|
| 647 | |
---|
| 648 | echo "</table>\n"; |
---|
| 649 | |
---|
| 650 | echo "<a name='bas'>"; |
---|
| 651 | echo "<table width='100%' border='0'>"; |
---|
| 652 | |
---|
| 653 | $debut_suivant = $debut + $max_par_page; |
---|
| 654 | if ($debut_suivant < $nombre_auteurs OR $debut > 0) { |
---|
| 655 | echo "<tr height='10'></tr>"; |
---|
| 656 | echo "<tr bgcolor='white'><td align='left'>"; |
---|
| 657 | if ($debut > 0) { |
---|
| 658 | $debut_prec = strval(max($debut - $max_par_page, 0)); |
---|
| 659 | echo '<form method="post" action="'.parametre_url($url,'debut',$debut_prec).'">'; |
---|
| 660 | echo "<input type='submit' name='submit' value='<<<' class='fondo' />"; |
---|
| 661 | echo "</form>"; |
---|
| 662 | } |
---|
| 663 | echo "</td><td align='right'>"; |
---|
| 664 | if ($debut_suivant < $nombre_auteurs) { |
---|
| 665 | echo '<form method="post" action="'.parametre_url($url,'debut',$debut_suivant).'">'; |
---|
| 666 | echo "<input type='submit' name='submit' value='>>>' class='fondo' />"; |
---|
| 667 | echo "</form>"; |
---|
| 668 | } |
---|
| 669 | echo "</td></tr>\n"; |
---|
| 670 | } |
---|
| 671 | |
---|
| 672 | echo "</table>\n"; |
---|
| 673 | echo fin_cadre_relief(); |
---|
| 674 | return join(',', $les_auteurs); |
---|
| 675 | } |
---|
| 676 | |
---|
| 677 | /******************************************************************************************/ |
---|
| 678 | /* SPIP-Listes est un systeme de gestion de listes d'abonnes et d'envoi d'information */ |
---|
| 679 | /* par email pour SPIP. http://bloog.net/spip-listes */ |
---|
| 680 | /* Copyright (C) 2004 Vincent CARON v.caron<at>laposte.net */ |
---|
| 681 | /* */ |
---|
| 682 | /* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */ |
---|
| 683 | /* de la Licence Publique Generale GNU publiee par la Free Software Foundation */ |
---|
| 684 | /* (version 2). */ |
---|
| 685 | /* */ |
---|
| 686 | /* Ce programme est distribue car potentiellement utile, mais SANS AUCUNE GARANTIE, */ |
---|
| 687 | /* ni explicite ni implicite, y compris les garanties de commercialisation ou */ |
---|
| 688 | /* d'adaptation dans un but specifique. Reportez-vous à la Licence Publique Generale GNU */ |
---|
| 689 | /* pour plus de détails. */ |
---|
| 690 | /* */ |
---|
| 691 | /* Vous devez avoir reçu une copie de la Licence Publique Generale GNU */ |
---|
| 692 | /* en meme temps que ce programme ; si ce n'est pas le cas, ecrivez a la */ |
---|
| 693 | /* Free Software Foundation, */ |
---|
| 694 | /* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, Etats-Unis. */ |
---|
| 695 | /******************************************************************************************/ |
---|
| 696 | ?> |
---|