source: trunk/spip/esqueleto-redcta/plugins/widget_calendar/exec/demo_articles.php @ 283

Last change on this file since 283 was 30, checked in by sebas, 17 years ago

nueva importacion del codigo del esqueleto de redcta con los plugins

File size: 56.0 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2006                                                *
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
15
16include_spip('inc/presentation');
17include_spip('inc/texte');
18include_spip('inc/rubriques');
19include_spip('inc/logos');
20include_spip('inc/mots');
21include_spip('inc/date');
22include_spip('inc/documents');
23include_spip('inc/forum');
24include_spip('base/abstract_sql');
25include_spip('inc/calendar');
26
27  // 28 paremetres, qui dit mieux ?
28  // moi ! elle en avait 61 en premiere approche
29
30function exec_affiche_articles_dist($id_article, $ajout_auteur, $change_accepter_forum, $change_petition, $changer_virtuel, $cherche_auteur, $cherche_mot, $debut, $email_unique, $flag_auteur, $flag_editable, $langue_article, $message, $nom_select, $nouv_auteur, $nouv_mot, $rubrique_article, $site_obli, $site_unique, $supp_auteur, $supp_mot, $texte_petition, $titre_article, $lier_trad)
31{
32  global $options, $spip_display, $spip_lang_left, $spip_lang_right, $dir_lang;
33
34$result = spip_query("SELECT * FROM spip_articles WHERE id_article='$id_article'");
35
36if ($row = spip_fetch_array($result)) {
37        $id_article = $row["id_article"];
38        $surtitre = $row["surtitre"];
39        $titre = $row["titre"];
40        $soustitre = $row["soustitre"];
41        $id_rubrique = $row["id_rubrique"];
42        $descriptif = $row["descriptif"];
43        $nom_site = $row["nom_site"];
44        $url_site = $row["url_site"];
45        $chapo = $row["chapo"];
46        $texte = $row["texte"];
47        $ps = $row["ps"];
48        $date = $row["date"];
49        $statut_article = $row["statut"];
50        $maj = $row["maj"];
51        $date_redac = $row["date_redac"];
52        $visites = $row["visites"];
53        $referers = $row["referers"];
54        $extra = $row["extra"];
55        $id_trad = $row["id_trad"];
56        $id_version = $row["id_version"];
57
58        if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2})", $date_redac, $regs)) {
59                $annee_redac = $regs[1];
60                $mois_redac = $regs[2];
61                $jour_redac = $regs[3];
62                $heure_redac = $regs[4];
63                $minute_redac = $regs[5];
64                if ($annee_redac > 4000) $annee_redac -= 9000;
65        }
66
67        if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2})", $date, $regs)) {
68                $annee = $regs[1];
69                $mois = $regs[2];
70                $jour = $regs[3];
71                $heure = $regs[4];
72                $minute = $regs[5];
73        }
74 }
75// reserver les Widget Calendar avant de commencer l'affichage
76WCalendar_ajoute(_T('texte_date_publication_article'),'');
77WCalendar_ajoute(_T('texte_date_publication_anterieure'),'_redac');
78
79debut_page("&laquo; $titre_article &raquo;", "documents", "articles", "", "", $id_rubrique);
80
81debut_grand_cadre();
82
83afficher_hierarchie($id_rubrique);
84
85fin_grand_cadre();
86
87if (!$row) {echo _T('public:aucun_article'); exit;}
88
89//
90// Affichage de la colonne de gauche
91//
92
93debut_gauche();
94
95boite_info_articles($id_article, $statut_article, $visites, $id_version);
96
97//
98// Logos de l'article et Boites de configuration avancee
99//
100
101
102// pour l'affichage du virtuel
103unset($virtuel);
104if (substr($chapo, 0, 1) == '=') {
105        $virtuel = substr($chapo, 1);
106}
107
108boites_de_config_articles($id_article, $id_rubrique, $flag_editable,
109                          $change_accepter_forum, $change_petition,
110                          $email_unique, $site_obli, $site_unique,
111                          $message, $texte_petition,
112                          $changer_virtuel, $virtuel);
113 
114//
115// Affichage de la colonne de droite
116//
117
118debut_droite();
119
120changer_typo('','article'.$id_article);
121
122debut_cadre_relief();
123
124//
125// Titre, surtitre, sous-titre
126//
127
128 $modif = titres_articles($titre, $statut_article,$surtitre, $soustitre, $descriptif, $url_site, $nom_site, $flag_editable, $id_article, $id_rubrique);
129
130
131echo "<div class='serif' align='$spip_lang_left'>";
132
133 dates_articles($id_article, $id_rubrique, $flag_editable, $statut_article, $date,$annee, $mois, $jour, $heure, $minute, $date_redac, $annee_redac, $mois_redac, $jour_redac, $heure_redac, $minute_redac);
134
135//
136// Liste des auteurs de l'article
137//
138
139echo "<a name='auteurs'></a>";
140
141if ($flag_editable AND $options == 'avancees') {
142        $bouton = bouton_block_invisible("auteursarticle");
143}
144
145debut_cadre_enfonce("auteur-24.gif", false, "", $bouton._T('texte_auteurs').aide ("artauteurs"));
146
147//
148// Recherche d'auteur
149//
150
151 $supprimer_bouton_creer_auteur = rechercher_auteurs_articles($cherche_auteur, $id_article, $id_rubrique, $ajout_auteur, $flag_editable, $nouv_auteur, $supp_auteur);
152
153//
154// Afficher les auteurs
155//
156
157$les_auteurs = afficher_auteurs_articles($id_article, $flag_editable);
158
159//
160// Ajouter un auteur
161//
162
163if ($flag_editable AND $options == 'avancees') 
164        ajouter_auteurs_articles($id_article, $id_rubrique, $les_auteurs, $flag_editable, $rubrique_article, $supprimer_bouton_creer_auteur);
165
166fin_cadre_enfonce(false);
167
168//
169// Liste des mots-cles de l'article
170//
171
172if ($options == 'avancees' AND $GLOBALS['meta']["articles_mots"] != 'non') {
173  formulaire_mots('articles', $id_article, $nouv_mot, $supp_mot, $cherche_mot, $flag_editable, generer_url_ecrire("articles","id_article=$id_article"));
174}
175
176 langues_articles($id_article, $langue_article, $flag_editable, $id_rubrique, $id_trad, $dir_lang, $nom_select, $lier_trad);
177
178
179afficher_statut_articles($id_article, $rubrique_article, $statut_article);
180
181
182 afficher_corps_articles($virtuel, $chapo, $texte, $ps, $extra);
183
184if ($flag_editable) {
185        echo "\n\n<div align='$spip_lang_right'><br />";
186        bouton_modifier_articles($id_article, $id_rubrique, $modif,_T('texte_travail_article', $modif), "warning-24.gif", "");
187        echo "</div>";
188}
189
190//
191// Documents associes a l'article
192//
193
194 if ($spip_display != 4)
195 afficher_documents_non_inclus($id_article, "article", $flag_editable);
196
197//
198// "Demander la publication"
199//
200
201
202if ($flag_auteur AND $statut_article == 'prepa') {
203        echo "<P>";
204        debut_cadre_relief();
205        echo    "<center>",
206                "<B>"._T('texte_proposer_publication')."</B>",
207                aide ("artprop"),
208                "\n<form method='post' action='",
209                generer_action_auteur("instituer", "article $id_article prop", generer_url_ecrire('articles', "id_article=$id_article", true)),
210      "'>",
211                "<input type='submit' class='fondo' value=\"", 
212                _T('bouton_demande_publication'),
213                "\" />\n",
214                "</form>",
215                "</center>";
216        fin_cadre_relief();
217}
218
219echo "</div>";
220
221echo "</div>";
222fin_cadre_relief();
223
224 affiche_forums_article($id_article, $id_rubrique, $titre, $debut);
225
226fin_page();
227
228}
229
230function boite_info_articles($id_article, $statut_article, $visites, $id_version)
231{
232  global $connect_statut, $options, $flag_revisions;
233
234        debut_boite_info();
235 
236        echo "<div align='center'>\n";
237
238        echo "<font face='Verdana,Arial,Sans,sans-serif' size='1'><b>"._T('info_numero_article')."</b></font>\n";
239        echo "<br><font face='Verdana,Arial,Sans,sans-serif' size='6'><b>$id_article</b></font>\n";
240
241        voir_en_ligne ('article', $id_article, $statut_article);
242
243
244        $activer_statistiques = $GLOBALS['meta']["activer_statistiques"];
245
246        if ($connect_statut == "0minirezo" AND $statut_article == 'publie' AND $visites > 0 AND $activer_statistiques != "non" AND $options == "avancees"){
247        icone_horizontale(_T('icone_evolution_visites', array('visites' => $visites)), generer_url_ecrire("statistiques_visites","id_article=$id_article"), "statistiques-24.gif","rien.gif");
248}
249
250        if ((($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions)
251                AND $id_version>1 AND $options == "avancees") {
252        icone_horizontale(_T('info_historique_lien'), generer_url_ecrire("articles_versions","id_article=$id_article"), "historique-24.gif", "rien.gif");
253}
254
255        // Correction orthographique
256        if ($GLOBALS['meta']['articles_ortho'] == 'oui') {
257                $js_ortho = "onclick=\"window.open(this.href, 'spip_ortho', 'scrollbars=yes, resizable=yes, width=740, height=580'); return false;\"";
258                icone_horizontale(_T('ortho_verifier'), generer_url_ecrire("articles_ortho", "id_article=$id_article"), "ortho-24.gif", "rien.gif", 'echo', $js_ortho);
259        }
260
261        echo "</div>\n";
262       
263        fin_boite_info();
264}
265
266function boites_de_config_articles($id_article, $id_rubrique, $flag_editable,
267                                   $change_accepter_forum, $change_petition,
268                                   $email_unique, $site_obli, $site_unique,
269                                   $message, $texte_petition,
270                                   $changer_virtuel, $virtuel)
271{
272  global $connect_statut, $options, $spip_lang_right;
273
274// Logos de l'article
275
276        if ($id_article AND $flag_editable)
277          afficher_boite_logo('art', 'id_article', $id_article,
278                              _T('logo_article').aide ("logoart"), _T('logo_survol'), 'articles');
279
280
281//
282// Boites de configuration avancee
283//
284
285        if ($options == "avancees" && $connect_statut=='0minirezo' && $flag_editable) {
286          echo "<p>";
287          debut_cadre_relief("forum-interne-24.gif");
288
289
290        list($nb_forums) = spip_fetch_array(spip_query("SELECT count(*) AS count FROM spip_forum WHERE id_article=$id_article   AND statut IN ('publie', 'off', 'prop')"),SPIP_NUM);
291
292        list($nb_signatures) = spip_fetch_array(spip_query("SELECT COUNT(*) AS count FROM spip_signatures WHERE id_article=$id_article AND statut IN ('publie', 'poubelle')"),SPIP_NUM);
293
294        $visible = $change_accepter_forum || $change_petition
295                || $nb_forums || $nb_signatures;
296
297        echo "<div class='verdana1' style='text-align: center;'><b>";
298        if ($visible)
299                echo bouton_block_visible("forumpetition");
300        else
301                echo bouton_block_invisible("forumpetition");
302        echo _T('bouton_forum_petition') .aide('confforums');
303        echo "</b></div>";
304        if ($visible)
305                echo debut_block_visible("forumpetition");
306        else
307                echo debut_block_invisible("forumpetition");
308
309
310        echo "<font face='Verdana,Arial,Sans,sans-serif' size='1'>\n";
311
312
313        // Forums
314
315        if ($nb_forums) {
316                echo "<br />\n";
317                icone_horizontale(_T('icone_suivi_forum', array('nb_forums' => $nb_forums)), generer_url_ecrire("articles_forum","id_article=$id_article"), "suivi-forum-24.gif", "");
318        }
319
320        // Reglage existant
321        $forums_publics = get_forums_publics($id_article);
322
323        // Modification du reglage ?
324        if (isset($change_accepter_forum)
325        AND $change_accepter_forum <> $forums_publics) {
326                $forums_publics = $change_accepter_forum;
327                modifier_forums_publics($id_article, $forums_publics);
328        }
329
330        // Afficher le formulaire de modification du reglage
331        echo formulaire_modification_forums_publics($id_article, $forums_publics, generer_url_ecrire("articles","id_article=$id_article"));
332
333
334        // Petitions
335
336        if ($change_petition) {
337                if ($change_petition == "on") {
338                        if (!$email_unique) $email_unique = "non";
339                        if (!$site_obli) $site_obli = "non";
340                        if (!$site_unique) $site_unique = "non";
341                        if (!$message) $message = "non";
342
343                        $texte_petition = addslashes($texte_petition);
344
345                        $result_pet = spip_query("REPLACE spip_petitions (id_article, email_unique, site_obli, site_unique, message, texte) VALUES ($id_article, '$email_unique', '$site_obli', '$site_unique', '$message', '$texte_petition')");
346                }
347                else if ($change_petition == "off") {
348                        $result_pet = spip_query("DELETE FROM spip_petitions WHERE id_article=$id_article");
349                }
350        }
351
352        $petition = spip_fetch_array(spip_query("SELECT * FROM spip_petitions WHERE id_article=$id_article"));
353
354        $email_unique=$petition["email_unique"];
355        $site_obli=$petition["site_obli"];
356        $site_unique=$petition["site_unique"];
357        $message=$petition["message"];
358        $texte_petition=$petition["texte"];
359
360        echo generer_url_post_ecrire("articles","id_article=$id_article");
361
362        echo "<select name='change_petition'
363                class='fondl' style='font-size:10px;'
364                onChange=\"setvisibility('valider_petition', 'visible');\"
365                >\n";
366
367        if ($petition) {
368                $menu = array(
369                        'on' => _T('bouton_radio_petition_activee'),
370                        'off'=> _T('bouton_radio_supprimer_petition')
371                );
372                $val_menu = 'on';
373        } else {
374                $menu = array(
375                        'off'=> _T('bouton_radio_pas_petition'),
376                        'on' => _T('bouton_radio_activer_petition')
377                );
378                $val_menu = 'off';
379        }
380
381
382        foreach ($menu as $val => $desc) {
383                echo "<option";
384                if ($val_menu == $val)
385                        echo " selected";
386                echo " value='$val'>".$desc."</option>\n";
387        }
388        echo "</select>\n";
389
390        if ($petition) {
391                if ($nb_signatures) {
392                        echo "<br />\n";
393                        icone_horizontale($nb_signatures.'&nbsp;'. _T('info_signatures'), generer_url_ecrire("controle_petition","id_article=$id_article"), "suivi-petition-24.gif", "");
394                }
395
396                echo "<br />\n";
397
398                if ($email_unique=="oui")
399                        echo "<input type='checkbox' name='email_unique' value='oui' id='emailunique' checked>";
400                else
401                        echo "<input type='checkbox' name='email_unique' value='oui' id='emailunique'>";
402                echo " <label for='emailunique'>"._T('bouton_checkbox_signature_unique_email')."</label><BR>";
403                if ($site_obli=="oui")
404                        echo "<input type='checkbox' name='site_obli' value='oui' id='siteobli' checked>";
405                else
406                        echo "<input type='checkbox' name='site_obli' value='oui' id='siteobli'>";
407                echo " <label for='siteobli'>"._T('bouton_checkbox_indiquer_site')."</label><BR>";
408                if ($site_unique=="oui")
409                        echo "<input type='checkbox' name='site_unique' value='oui' id='siteunique' checked>";
410                else
411                        echo "<input type='checkbox' name='site_unique' value='oui' id='siteunique'>";
412                echo " <label for='siteunique'>"._T('bouton_checkbox_signature_unique_site')."</label><BR>";
413                if ($message=="oui")
414                        echo "<input type='checkbox' name='message' value='oui' id='message' checked>";
415                else
416                        echo "<input type='checkbox' name='message' value='oui' id='message'>";
417                echo " <label for='message'>"._T('bouton_checkbox_envoi_message')."</label>";
418
419                echo "<P>"._T('texte_descriptif_petition')."&nbsp;:<BR>";
420                echo "<TEXTAREA NAME='texte_petition' CLASS='forml' ROWS='4' COLS='10' wrap=soft>";
421                echo entites_html($texte_petition);
422                echo "</TEXTAREA><P>\n";
423
424                echo "<P align='$spip_lang_right'>";
425        }
426
427        if (!$petition) echo "<span class='visible_au_chargement' id='valider_petition'>";
428        echo "<INPUT TYPE='submit' NAME='Changer' CLASS='fondo' VALUE='"._T('bouton_changer')."' STYLE='font-size:10px'>";
429        if (!$petition)  echo "</span>";
430        echo "</FORM>";
431
432        echo "</font>";
433        echo fin_block();
434
435        fin_cadre_relief();
436
437        // Redirection (article virtuel)
438        debut_cadre_relief("site-24.gif");
439        $visible = ($changer_virtuel || $virtuel);
440
441        echo "<div class='verdana1' style='text-align: center;'><b>";
442        if ($visible)
443                echo bouton_block_visible("redirection");
444        else
445                echo bouton_block_invisible("redirection");
446        echo _T('bouton_redirection');
447        echo aide ("artvirt");
448        echo "</b></div>";
449        if ($visible)
450                echo debut_block_visible("redirection");
451        else
452                echo debut_block_invisible("redirection");
453
454        echo generer_url_post_ecrire("articles", "id_article=$id_article");
455        echo "\n<INPUT TYPE='hidden' NAME='changer_virtuel' VALUE='oui'>";
456        $virtuelhttp = ($virtuel ? "" : "http://");
457
458        echo "<INPUT TYPE='text' NAME='virtuel' CLASS='formo' style='font-size:9px;' VALUE=\"$virtuelhttp$virtuel\" SIZE='40'><br>";
459        echo "<font face='Verdana,Arial,Sans,sans-serif' size=2>";
460        echo "(<b>"._T('texte_article_virtuel')."&nbsp;:</b> "._T('texte_reference_mais_redirige').")";
461        echo "</font>";
462        echo "<div align='$spip_lang_right'><INPUT TYPE='submit' NAME='Changer' CLASS='fondo' VALUE='"._T('bouton_changer')."' STYLE='font-size:10px'></div>";
463        echo "</form>";
464        echo fin_block();
465
466        fin_cadre_relief();
467 }
468
469//
470// Articles dans la meme rubrique
471//
472
473meme_rubrique_articles($id_rubrique, $id_article, $options);
474
475}
476
477function meme_rubrique_articles($id_rubrique, $id_article, $options, $order='articles.date', $limit=30)
478{
479        global $spip_lang_right, $spip_lang_left;
480
481        $vos_articles = spip_query("SELECT articles.id_article, articles.titre, articles.statut FROM spip_articles AS articles WHERE articles.id_rubrique='$id_rubrique' AND (articles.statut = 'publie' OR articles.statut = 'prop') AND articles.id_article != '$id_article' ORDER BY $order DESC LIMIT $limit");
482        if (spip_num_rows($vos_articles) > 0) {
483                        echo "<div>&nbsp;</div>";
484                        echo "<div class='bandeau_rubriques' style='z-index: 1;'>";
485                        bandeau_titre_boite2(_T('info_meme_rubrique'), "article-24.gif");
486                        echo "<div class='plan-articles'>";
487                        while($row = spip_fetch_array($vos_articles)) {
488                                $ze_article = $row['id_article'];
489                                $ze_titre = typo($row['titre']);
490                                $ze_statut = $row['statut'];
491                               
492                                if ($options == "avancees") {
493                                        $numero = "<div class='arial1' style='float: $spip_lang_right; color: black; padding-$spip_lang_left: 4px;'><b>"._T('info_numero_abbreviation')."$ze_article</b></div>";
494                                }
495                                echo "<a class='$ze_statut' style='font-size: 10px;' href='" . generer_url_ecrire("articles","id_article=$ze_article") . "'>$numero$ze_titre</a>";
496                        }
497                        echo "</div>";
498                        echo "</div>";
499                }
500}
501
502function bouton_modifier_articles($id_article, $id_rubrique, $flag_modif, $mode, $ip, $im)
503{
504        if ($flag_modif) {
505          icone(_T('icone_modifier_article'), generer_url_ecrire("articles_edit","id_article=$id_article"), $ip, $im);
506                echo "<font face='arial,helvetica,sans-serif' size='2'>$mode</font>";
507                echo aide("artmodif");
508        }
509        else {
510                icone(_T('icone_modifier_article'), generer_url_ecrire("articles_edit","id_article=$id_article"), "article-24.gif", "edit.gif");
511        }
512
513}
514
515function titres_articles($titre, $statut_article,$surtitre, $soustitre, $descriptif, $url_site, $nom_site, $flag_editable, $id_article, $id_rubrique)
516{
517        global  $dir_lang, $spip_lang_left, $connect_id_auteur;
518
519        $logo_statut = "puce-".puce_statut($statut_article).".gif";
520       
521        echo "\n<table cellpadding=0 cellspacing=0 border=0 width='100%'>";
522        echo "<tr width='100%'><td width='100%' valign='top'>";
523       
524        if ($surtitre) {
525                echo "<span $dir_lang><font face='arial,helvetica' size=3><b>";
526                echo typo($surtitre);
527                echo "</b></font></span>\n";
528         }
529         
530        gros_titre($titre, $logo_statut);
531       
532        if ($soustitre) {
533                echo "<span $dir_lang><font face='arial,helvetica' size=3><b>";
534                echo typo($soustitre);
535                echo "</b></font></span>\n";
536        }
537       
538       
539        if ($descriptif OR $url_site OR $nom_site) {
540                echo "<p><div align='$spip_lang_left' style='padding: 5px; border: 1px dashed #aaaaaa; background-color: #e4e4e4;' $dir_lang>";
541                echo "<font size=2 face='Verdana,Arial,Sans,sans-serif'>";
542                $texte_case = ($descriptif) ? "{{"._T('info_descriptif')."}} $descriptif\n\n" : '';
543                $texte_case .= ($nom_site.$url_site) ? "{{"._T('info_urlref')."}} [".$nom_site."->".$url_site."]" : '';
544                echo propre($texte_case);
545                echo "</font>";
546                echo "</div>";
547        }
548       
549       
550        if ($statut_article == 'prop') {
551                echo "<P><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2 COLOR='red'><B>"._T('text_article_propose_publication')."</B></FONT></P>";
552        }
553       
554        echo "</td>";
555       
556        $flag_modif = false;
557       
558        if ($flag_editable) {
559                echo "<td>". http_img_pack('rien.gif', " ", "width='5'") . "</td>\n";
560                echo "<td align='center'>";
561       
562                // Recuperer les donnees de l'article
563                if ($GLOBALS['meta']['articles_modif'] != 'non') {
564                        $result = spip_query("SELECT auteur_modif, UNIX_TIMESTAMP(date_modif) AS modification, UNIX_TIMESTAMP(NOW()) AS maintenant FROM spip_articles WHERE id_article='$id_article'");
565
566       
567                        if ($row = spip_fetch_array($result)) {
568                                $auteur_modif = $row["auteur_modif"];
569                                $modification = $row["modification"];
570                                $maintenant = $row["maintenant"];
571       
572                                $date_diff = floor(($maintenant - $modification)/60);
573       
574                                if ($date_diff >= 0 AND $date_diff < 60 AND $auteur_modif > 0 AND $auteur_modif != $connect_id_auteur) {
575                                        $result_auteur = spip_query("SELECT nom FROM spip_auteurs WHERE id_auteur='$auteur_modif'");
576
577                                        if ($row_auteur = spip_fetch_array($result_auteur)) {
578                                                $nom_auteur_modif = typo($row_auteur["nom"]);
579                                        }
580                                        $modif = array('nom_auteur_modif' => $nom_auteur_modif, 'date_diff' => $date_diff);
581                                }
582                        }
583                }
584                bouton_modifier_articles($id_article, $id_rubrique, $modif, _T('avis_article_modifie', $modif), "article-24.gif", "edit.gif");
585       
586                echo "</td>";
587         }
588        echo "</tr></table>\n";
589        echo "<div>&nbsp;</div>";
590        return $modif;
591}
592
593
594function dates_articles($id_article, $id_rubrique, $flag_editable, $statut_article, $date, $annee, $mois, $jour, $heure, $minute, $date_redac, $annee_redac, $mois_redac, $jour_redac, $heure_redac, $minute_redac)
595{
596
597  global $spip_lang_left, $spip_lang_right, $options;
598
599  if ($flag_editable AND $options == 'avancees') {
600        debut_cadre_couleur();
601
602        echo generer_url_post_ecrire("articles", "id_article=$id_article");
603
604        if ($statut_article == 'publie') {
605
606                echo "<div><b>";
607                echo bouton_block_invisible("datepub");
608                echo "<span class='verdana1'>"._T('texte_date_publication_article').'</span> ';
609                echo majuscules(affdate($date)),
610                        "</b>".aide('artdate')."</div>";
611
612                echo debut_block_invisible("datepub"),
613                  "<div style='margin: 5px; margin-$spip_lang_left: 20px;'>",
614                        WCalendar_controller($date,''),
615                  /*afficher_jour($jour, "name='jour' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\"", true),
616                  afficher_mois($mois, "name='mois' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\"", true),
617                  afficher_annee($annee, "name='annee' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\""),*/
618                  ' - ',
619                  afficher_heure($heure, "name='heure' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\""),
620                  afficher_minute($minute, "name='minute' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\""),
621                  "<span class='visible_au_chargement' id='valider_date'>",
622                  " &nbsp; <INPUT TYPE='submit' NAME='Changer' CLASS='fondo' VALUE='"._T('bouton_changer')."'>",
623                  "</span>",
624                  "</div>",
625                  fin_block();
626        }
627        else {
628                echo "<div><b> <span class='verdana1'>"._T('texte_date_creation_article').'</span> ';
629                echo majuscules(affdate($date))."</b>".aide('artdate')."</div>";
630        }
631
632        $possedeDateRedac=($annee_redac.'-'.$mois_redac.'-'.$jour_redac != '0000-00-00');
633        if (($options == 'avancees' AND $GLOBALS['meta']["articles_redac"] != 'non')
634        OR $possedeDateRedac) {
635                if ($possedeDateRedac)
636                        $date_affichee = majuscules(affdate($date_redac))
637#                       ." " ._T('date_fmt_heures_minutes', array('h' =>$heure_redac, 'm'=>$minute_redac))
638                        ;
639                else
640                        $date_affichee = majuscules(_T('jour_non_connu_nc'));
641
642                echo "<div><b>";
643                echo bouton_block_invisible('dateredac');
644                echo "<span class='verdana1'>"
645                        . majuscules(_T('texte_date_publication_anterieure'))
646                        .'</span> '. $date_affichee ." ".aide('artdate_redac')."</b></div>";
647
648                echo debut_block_invisible('dateredac');
649                echo "<div style='margin: 5px; margin-$spip_lang_left: 20px;'>";
650                echo '<table cellpadding="0" cellspacing="0" border="0" width="100%">';
651                echo '<tr><td align="$spip_lang_left">';
652                echo '<input type="radio" name="avec_redac" value="non" id="avec_redac_on"';
653                if (!$possedeDateRedac) echo ' checked="checked"';
654                echo " onClick=\"setvisibility('valider_date_prec', 'visible')\"";
655                echo ' /> <label for="avec_redac_on">'._T('texte_date_publication_anterieure_nonaffichee').'</label>';
656                echo '<br /><input type="radio" name="avec_redac" value="oui" id="avec_redac_off"';
657                if ($possedeDateRedac) echo ' checked="checked"';
658                echo " onClick=\"setvisibility('valider_date_prec', 'visible')\"";
659                echo ' /> <label for="avec_redac_off">'._T('bouton_radio_afficher').' :</label> ',
660                WCalendar_controller($date_redac,'_redac');
661                /*afficher_jour($jour_redac, "name='jour_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true),
662                afficher_mois($mois_redac, "name='mois_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true);
663                echo "<input type='text' name='annee_redac' class='fondl' value='".$annee_redac."' size='5' maxlength='4' onClick=\"setvisibility('valider_date_prec', 'visible')\"/>";*/
664
665                echo '<div align="center">',
666                afficher_heure($heure_redac, "name='heure_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true),
667                afficher_minute($minute_redac, "name='minute_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true),
668                "</div>\n";
669
670                echo '</td><td align="$spip_lang_right">';
671                echo "<span class='visible_au_chargement' id='valider_date_prec'>";
672                echo '<input type="submit" name="Changer" class="fondo" value="'._T('bouton_changer').'" />';
673                echo "</span>";
674                echo '</td></tr>';
675                echo '</table>';
676                echo "</div>";
677                echo fin_block();
678        }
679
680        echo "</FORM>";
681        fin_cadre_couleur();
682 }
683else {
684        if ($statut_article == 'publie') $texte_date = _T('texte_date_publication_article');
685        else $texte_date = _T('texte_date_creation_article');
686
687        debut_cadre_couleur();
688                echo "<div style='text-align:center;'><b> <span class='verdana1'>$texte_date</span> ";
689                echo majuscules(affdate($date))."</b>".aide('artdate')."</div>";
690
691
692                if ($annee_redac.'-'.$mois_redac.'-'.$jour_redac != '0000-00-00') {
693                        $date_affichee = ' : '.majuscules(affdate($date_redac));               
694                        echo "<div style='text-align:center;'><b> <span class='verdana1'>"._T(texte_date_publication_anterieure)."</span> ";
695                        echo $date_affichee."</b>".aide('artdate_redac')."</div>";
696                }
697
698        fin_cadre_couleur();
699 }
700}
701
702
703function langues_articles($id_article, $langue_article, $flag_editable, $id_rubrique, $id_trad, $dir_lang, $nom_select, $lier_trad)
704{
705
706  global $connect_statut, $couleur_claire, $options, $connect_toutes_rubriques;
707
708  if (($GLOBALS['meta']['multi_articles'] == 'oui')
709        OR (($GLOBALS['meta']['multi_rubriques'] == 'oui') AND ($GLOBALS['meta']['gerer_trad'] == 'oui'))) {
710
711        list($langue_article) = spip_fetch_array(spip_query("SELECT lang FROM spip_articles WHERE id_article=$id_article"),SPIP_NUM);
712
713        if ($GLOBALS['meta']['gerer_trad'] == 'oui')
714                $titre_barre = _T('titre_langue_trad_article');
715        else
716                $titre_barre = _T('titre_langue_article');
717
718        $titre_barre .= "&nbsp; (".traduire_nom_langue($langue_article).")";
719
720        debut_cadre_enfonce('langues-24.gif', false, "", bouton_block_invisible('languesarticle,ne_plus_lier,lier_traductions').$titre_barre);
721
722
723        // Choix langue article
724        if ($GLOBALS['meta']['multi_articles'] == 'oui' AND $flag_editable) {
725                echo debut_block_invisible('languesarticle');
726
727                $row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
728                $langue_parent = $row['lang'];
729
730                debut_cadre_couleur();
731                echo "<div style='text-align: center;'>";
732                echo menu_langues('changer_lang', $langue_article, _T('info_multi_cet_article').' ', $langue_parent);
733                echo "</div>\n";
734                fin_cadre_couleur();
735
736                echo fin_block();
737        }
738
739
740        // Gerer les groupes de traductions
741        if ($GLOBALS['meta']['gerer_trad'] == 'oui') {
742                if ($flag_editable AND _request('supp_trad') == 'oui') { // Ne plus lier a un groupe de trad
743                        spip_query("UPDATE spip_articles SET id_trad=0, date_modif=NOW() WHERE id_article = $id_article");
744
745                        // Verifier si l'ancien groupe ne comporte plus qu'un seul article. Alors mettre a zero.
746                        $result_autres_trad= spip_query("SELECT COUNT(id_article) AS total FROM spip_articles WHERE id_trad = $id_trad");
747                        if ($row = spip_fetch_array($result_autres_trad))
748                                $nombre_autres_trad = $row["total"];
749                        if ($nombre_autres_trad == 1)
750                                spip_query("UPDATE spip_articles SET id_trad = 0, date_modif=NOW() WHERE id_trad = $id_trad");
751
752                        $id_trad = 0;
753                }
754
755                // Changer article de reference de la trad
756                if ($id_trad_new = intval($id_trad_new)
757                AND $id_trad_old = intval($id_trad_old)
758                AND $connect_statut=='0minirezo'
759                AND $connect_toutes_rubriques) { 
760                        spip_query("UPDATE spip_articles SET id_trad = $id_trad_new, date_modif=NOW() WHERE id_trad = $id_trad_old");
761                        $id_trad = $id_trad_new;
762                }
763
764                if ($flag_editable AND $lier_trad > 0) { // Lier a un groupe de trad
765                        $result_lier = spip_query("SELECT id_trad FROM spip_articles WHERE id_article=$lier_trad");
766
767                        if ($row = spip_fetch_array($result_lier)) {
768                                $id_lier = $row['id_trad'];
769
770                                if ($id_lier == 0) { // Si l'article vise n'a pas deja de traduction, creer nouveau id_trad
771                                        $nouveau_trad = $lier_trad;
772                                }
773                                else {
774                                        if ($id_lier == $id_trad) $err = "<div>"._T('trad_deja_traduit')."</div>";
775                                        $nouveau_trad = $id_lier;
776                                }
777
778                                spip_query("UPDATE spip_articles SET id_trad = $nouveau_trad, date_modif=NOW() WHERE id_article = $lier_trad");
779                                if ($id_lier > 0) spip_query("UPDATE spip_articles SET id_trad = $nouveau_trad, date_modif=NOW() WHERE id_trad = $id_lier");
780                                spip_query("UPDATE spip_articles SET id_trad = $nouveau_trad, date_modif=NOW() WHERE id_article = $id_article");
781                                if ($id_trad > 0) spip_query("UPDATE spip_articles SET id_trad = $nouveau_trad, date_modif=NOW() WHERE id_trad = $id_trad");
782
783                                $id_trad = $nouveau_trad;
784                        }
785                        else
786                                $err .= "<div>"._T('trad_article_inexistant')."</div>";
787
788                        if ($err) echo "<font color='red' size=2' face='verdana,arial,helvetica,sans-serif'>$err</font>";
789                }
790
791
792                // Afficher la liste des traductions
793                if ($id_trad != 0) {
794                        $result_trad = spip_query("SELECT id_article, id_rubrique, titre, lang, statut FROM spip_articles WHERE id_trad = $id_trad");
795                       
796                        $table='';
797                        while ($row = spip_fetch_array($result_trad)) {
798                                $vals = '';
799                                $id_article_trad = $row["id_article"];
800                                $id_rubrique_trad = $row["id_rubrique"];
801                                $titre_trad = $row["titre"];
802                                $lang_trad = $row["lang"];
803                                $statut_trad = $row["statut"];
804
805                                changer_typo($lang_trad);
806                                $titre_trad = "<span $dir_lang>$titre_trad</span>";
807
808                                if ($ifond == 1) {
809                                        $ifond = 0;
810                                        $bgcolor = "white";
811                                } else {
812                                        $ifond = 1;
813                                        $bgcolor = $couleur_claire;
814                                }
815
816
817                                $vals[] = http_img_pack("puce-".puce_statut($statut_trad).'.gif', "", "width='7' height='7' border='0' NAME='statut'");
818                               
819                                if ($id_article_trad == $id_trad) {
820                                  $vals[] = http_img_pack('langues-12.gif', "", "width='12' height='12' border='0'");
821                                        $titre_trad = "<b>$titre_trad</b>";
822                                } else {
823                                  if ($connect_statut=='0minirezo'
824                                  AND $connect_toutes_rubriques)
825                                        $vals[] = "<a href='" . generer_url_ecrire("articles","id_article=$id_article&id_trad_old=$id_trad&id_trad_new=$id_article_trad&id_rubrique=$id_rubrique_trad") . "'>". 
826                                    http_img_pack('langues-off-12.gif', _T('trad_reference'), "width='12' height='12' border='0'", _T('trad_reference')) . "</a>";
827                                  else $vals[] = http_img_pack('langues-off-12.gif', "", "width='12' height='12' border='0'");
828                                }
829
830                                $ret .= "</td>";
831
832                                $s = typo($titre_trad);
833                                if ($id_article_trad != $id_article) 
834                                        $s = "<a href='" . generer_url_ecrire("articles","id_article=$id_article_trad&id_rubrique=$id_rubrique_trad") . "'>$s</a>";
835                                if ($id_article_trad == $id_trad)
836                                        $s .= " "._T('trad_reference');
837
838                                $vals[] = $s;
839                                $vals[] = traduire_nom_langue($lang_trad);
840                                $table[] = $vals;
841                        }
842
843                        // changer_typo($spip_lang); (probleme d'affichage rtl?)
844
845                        // bloc traductions
846                        if (count($vals) > 0) {
847
848                                echo "<div class='liste'>";
849                                bandeau_titre_boite2(_T('trad_article_traduction'),'');
850                                echo "<table width='100%' cellspacing='0' border='0' cellpadding='2'>";
851                                //echo "<tr bgcolor='#eeeecc'><td colspan='4' class='serif2'><b>"._T('trad_article_traduction')."</b></td></tr>";
852
853                                $largeurs = array(7, 12, '', 100);
854                                $styles = array('', '', 'arial2', 'arial2');
855                                echo afficher_liste($largeurs, $table, $styles);
856
857                                echo "</table>";
858                                echo "</div>";
859
860                        }
861
862                        changer_typo($langue_article);
863                }
864
865                echo debut_block_invisible('lier_traductions');
866
867                echo "<table width='100%'><tr>";
868                if ($flag_editable AND $options == "avancees" AND !$ret) {
869                        // Formulaire pour lier a un article
870                        echo "<td class='arial2' width='60%'>";
871
872                        echo "<form action='" . generer_url_ecrire("articles","id_article=$id_article") . "' method='post' style='margin:0px; padding:0px;'>";
873                        echo _T('trad_lier');
874                        echo "<div align='$spip_lang_right'><input type='text' class='fondl' name='lier_trad' size='5'> <INPUT TYPE='submit' NAME='Valider' VALUE='"._T('bouton_valider')."' CLASS='fondl'></div>";
875                        echo "</form>";
876                        echo "</td>\n";
877                        echo "<td background='' width='10'> &nbsp; </td>";
878                        echo "<td background='" . _DIR_IMG_PACK . "tirets-separation.gif' width='2'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>";
879                        echo "<td background='' width='10'> &nbsp; </td>";
880                }
881                echo "<td>";
882                icone_horizontale(_T('trad_new'), generer_url_ecrire("articles_edit","new=oui&lier_trad=$id_article&id_rubrique=$id_rubrique"), "traductions-24.gif", "creer.gif");
883                echo "</td>";
884                if ($flag_editable AND $options == "avancees" AND $ret) {
885                        echo "<td background='' width='10'> &nbsp; </td>";
886                        echo "<td background='" . _DIR_IMG_PACK . "tirets-separation.gif' width='2'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>";
887                        echo "<td background='' width='10'> &nbsp; </td>";
888                        echo "<td>";
889                        icone_horizontale(_T('trad_delier'), generer_url_ecrire("articles","id_article=$id_article&supp_trad=oui"), "traductions-24.gif", "supprimer.gif");
890                        echo "</td>\n";
891                }
892
893                echo "</tr></table>";
894
895                echo fin_block();
896        }
897
898        fin_cadre_enfonce();
899  }
900}
901
902function add_auteur_article($id_article, $nouv_auteur)
903{
904        $res = spip_query("SELECT id_article FROM spip_auteurs_articles WHERE id_auteur='$nouv_auteur' AND id_article='$id_article'");
905        if (!spip_num_rows($res))
906                spip_abstract_insert('spip_auteurs_articles', "(id_auteur,id_article)", "('$nouv_auteur','$id_article')");
907}
908
909function rechercher_auteurs_articles($cherche_auteur, $id_article, $id_rubrique, $ajout_auteur, $flag_editable, $nouv_auteur, $supp_auteur)
910{
911  global $spip_lang_left;
912
913  $supprimer_bouton_creer_auteur = false;
914
915  if ($cherche_auteur) {
916        echo "<P ALIGN='$spip_lang_left'>";
917        $result = spip_query("SELECT id_auteur, nom FROM spip_auteurs");
918        $table_auteurs = array();
919        $table_ids = array();
920        while ($row = spip_fetch_array($result)) {
921                $table_auteurs[] = $row["nom"];
922                $table_ids[] = $row["id_auteur"];
923        }
924        $resultat = mots_ressemblants($cherche_auteur, $table_auteurs, $table_ids);
925        debut_boite_info();
926        if (!$resultat) {
927                echo "<B>"._T('texte_aucun_resultat_auteur', array('cherche_auteur' => $cherche_auteur)).".</B><BR>";
928        }
929        else if (count($resultat) == 1) {
930                $ajout_auteur = 'oui';
931                list(, $nouv_auteur) = each($resultat);
932                echo "<B>"._T('texte_ajout_auteur')."</B><BR>";
933                $result = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur=$nouv_auteur");
934                echo "<UL>";
935                while ($row = spip_fetch_array($result)) {
936                        $id_auteur = $row['id_auteur'];
937                        $nom_auteur = $row['nom'];
938                        $email_auteur = $row['email'];
939                        $bio_auteur = $row['bio'];
940
941                        echo "<LI><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><B><FONT SIZE=3>".typo($nom_auteur)."</FONT></B>";
942                        echo "</FONT>\n";
943                }
944                echo "</UL>";
945        }
946        else if (count($resultat) < 16) {
947                reset($resultat);
948                $les_auteurs = array();
949                while (list(, $id_auteur) = each($resultat)) $les_auteurs[] = $id_auteur;
950                if ($les_auteurs) {
951                        $les_auteurs = join(',', $les_auteurs);
952                        echo "<B>"._T('texte_plusieurs_articles', array('cherche_auteur' => $cherche_auteur))."</B><BR>";
953                        $result = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur IN ($les_auteurs) ORDER BY nom");
954
955                        echo "<UL class='verdana1'>";
956                        while ($row = spip_fetch_array($result)) {
957                                $id_auteur = $row['id_auteur'];
958                                $nom_auteur = $row['nom'];
959                                $email_auteur = $row['email'];
960                                $bio_auteur = $row['bio'];
961
962                                echo "<li><b>".typo($nom_auteur)."</b>";
963
964                                if ($email_auteur) echo " ($email_auteur)";
965                                echo " | <A href='", generer_url_ecrire('articles', "id_article=$id_article&ajout_auteur=oui&nouv_auteur=$id_auteur#auteurs"),
966                                  "'>",_T('lien_ajouter_auteur'),"</A>";
967
968                                if (trim($bio_auteur)) {
969                                        echo "<br />".couper(propre($bio_auteur), 100)."\n";
970                                }
971                                echo "</li>\n";
972                        }
973                        echo "</UL>";
974                }
975        }
976        else {
977                echo "<B>"._T('texte_trop_resultats_auteurs', array('cherche_auteur' => $cherche_auteur))."</B><BR>";
978        }
979
980        if ($GLOBALS['connect_statut'] == '0minirezo' 
981        AND $GLOBALS['connect_toutes_rubriques']) {
982
983                echo "<div style='width: 200px;'>";
984                $retour = rawurlencode(generer_url_ecrire("articles","id_article=$id_article"));
985                $titre = rawurlencode($cherche_auteur);
986                icone_horizontale(_T('icone_creer_auteur'), generer_url_ecrire("auteur_infos","ajouter_id_article=$id_article&nom=$titre&redirect=$retour"), "redacteurs-24.gif", "creer.gif");
987                echo "</div> ";
988
989                // message pour ne pas afficher le second bouton "creer un auteur"
990                $supprimer_bouton_creer_auteur = true;
991        }
992
993        fin_boite_info();
994        echo "<P>";
995
996  }
997
998//
999// Appliquer les modifications sur les auteurs
1000//
1001
1002  if ($ajout_auteur && $flag_editable) {
1003        if ($nouv_auteur > 0) {
1004                add_auteur_article($id_article, $nouv_auteur);
1005        }
1006
1007        if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
1008                include_spip("inc/indexation");
1009                marquer_indexer('article', $id_article);
1010        }
1011  }
1012
1013
1014  if ($supp_auteur && $flag_editable) {
1015        spip_query("DELETE FROM spip_auteurs_articles WHERE id_auteur='$supp_auteur' AND id_article='$id_article'");
1016
1017        if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
1018                include_spip("inc/indexation");
1019                marquer_indexer('article', $id_article);
1020        }
1021  }
1022
1023  return $supprimer_bouton_creer_auteur;
1024}
1025
1026function afficher_auteurs_articles($id_article, $flag_editable)
1027{
1028        global $connect_statut, $options,$connect_id_auteur;
1029
1030        $les_auteurs = array();
1031
1032        $result = spip_query("SELECT * FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien WHERE auteurs.id_auteur=lien.id_auteur AND lien.id_article=$id_article GROUP BY auteurs.id_auteur ORDER BY auteurs.nom");
1033
1034        if (spip_num_rows($result)) {
1035                echo "<div class='liste'>";
1036                echo "<table width='100%' cellpadding='3' cellspacing='0' border='0' background=''>";
1037                $table = array();
1038                while ($row = spip_fetch_array($result)) {
1039                        $vals = array();
1040                        $id_auteur = $row["id_auteur"];
1041                        $nom_auteur = $row["nom"];
1042                        $email_auteur = $row["email"];
1043                        if ($bio_auteur = attribut_html(propre(couper($row["bio"], 100))))
1044                          $bio_auteur = " TITLE=\"$bio_auteur\"";
1045                        $url_site_auteur = $row["url_site"];
1046                        $statut_auteur = $row["statut"];
1047                        if ($row['messagerie'] == 'non' OR $row['login'] == '') $messagerie = 'non';
1048                       
1049                        $les_auteurs[] = $id_auteur;
1050
1051                        if ($connect_statut == "0minirezo") $aff_articles = "('prepa', 'prop', 'publie', 'refuse')";
1052                        else $aff_articles = "('prop', 'publie')";
1053
1054                        $result2 = spip_query("SELECT COUNT(articles.id_article) AS compteur FROM spip_auteurs_articles AS lien, spip_articles AS articles WHERE lien.id_auteur=$id_auteur AND articles.id_article=lien.id_article AND articles.statut IN $aff_articles GROUP BY lien.id_auteur");
1055
1056                        if ($result2) list($nombre_articles) = spip_fetch_array($result2,SPIP_NUM);
1057                        else $nombre_articles = 0;
1058
1059                        $vals[] = bonhomme_statut($row);
1060
1061                        $vals[] = "<A href='" . generer_url_ecrire('auteurs_edit', "id_auteur=$id_auteur") . "' $bio_auteur>".typo($nom_auteur)."</A>";
1062
1063                        $vals[] = bouton_imessage($id_auteur);
1064
1065               
1066               
1067                if ($email_auteur) $vals[] =  "<A href='mailto:$email_auteur'>"._T('email')."</A>";
1068                else $vals[] =  "&nbsp;";
1069
1070                if ($url_site_auteur) $vals[] =  "<A href='$url_site_auteur'>"._T('info_site_min')."</A>";
1071                else $vals[] =  "&nbsp;";
1072
1073                if ($nombre_articles > 1) $vals[] =  $nombre_articles.' '._T('info_article_2');
1074                else if ($nombre_articles == 1) $vals[] =  _T('info_1_article');
1075                else $vals[] =  "&nbsp;";
1076
1077                if ($flag_editable AND ($connect_id_auteur != $id_auteur OR $connect_statut == '0minirezo') AND $options == 'avancees') {
1078                  $vals[] =  "<A href='" . generer_url_ecrire("articles","id_article=$id_article&supp_auteur=$id_auteur#auteurs") . "'>"._T('lien_retirer_auteur')."&nbsp;". http_img_pack('croix-rouge.gif', "X", "width='7' height='7' border='0' align='middle'") . "</A>";
1079                } else {
1080                        $vals[] = "";
1081                }
1082               
1083                $table[] = $vals;
1084                }
1085       
1086       
1087        $largeurs = array('14', '', '', '', '', '', '');
1088        $styles = array('arial11', 'arial2', 'arial11', 'arial11', 'arial11', 'arial11', 'arial1');
1089        echo afficher_liste($largeurs, $table, $styles);
1090
1091       
1092        echo "</table></div>\n";
1093
1094        $les_auteurs = join(',', $les_auteurs);
1095        }
1096        return $les_auteurs ;
1097}
1098
1099
1100function ajouter_auteurs_articles($id_article, $id_rubrique, $les_auteurs, $flag_editable, $rubrique_article, $supprimer_bouton_creer_auteur)
1101{
1102        global $connect_toutes_rubriques, $connect_statut, $couleur_claire ;
1103
1104        echo debut_block_invisible("auteursarticle");
1105        echo "<table width='100%'><tr>";
1106
1107        if ($connect_statut == '0minirezo'
1108            AND $connect_toutes_rubriques
1109            AND !$supprimer_bouton_creer_auteur) {
1110        echo "<td width='200'>";
1111        $retour = rawurlencode(generer_url_ecrire("articles","id_article=$id_article"));
1112        icone_horizontale(_T('icone_creer_auteur'), generer_url_ecrire("auteur_infos","ajouter_id_article=$id_article&redirect=$retour"), "redacteurs-24.gif", "creer.gif");
1113        echo "</td>";
1114        echo "<td width='20'>&nbsp;</td>";
1115        }
1116
1117        echo "<td>";
1118
1119        $result = spip_query("SELECT * FROM spip_auteurs WHERE " .
1120                        (!$les_auteurs ? '' : "id_auteur NOT IN ($les_auteurs) AND ") .
1121                        "statut!='5poubelle' AND statut!='6forum' AND statut!='nouveau' ORDER BY statut, nom");
1122
1123        $num = spip_num_rows($result);
1124        if ($num) {
1125                echo generer_url_post_ecrire("articles", "id_article=$id_article");;
1126                echo "<span class='verdana1'><B>"._T('titre_cadre_ajouter_auteur')."&nbsp; </B></span>\n";
1127                echo "<DIV><INPUT TYPE='Hidden' NAME='id_article' VALUE=\"$id_article\">";
1128
1129                if ($num > 200) {
1130                        echo "<INPUT TYPE='text' NAME='cherche_auteur' onClick=\"setvisibility('valider_ajouter_auteur','visible');\" CLASS='fondl' VALUE='' SIZE='20'>";
1131                        echo "<span  class='visible_au_chargement' id='valider_ajouter_auteur'>";
1132                        echo " <INPUT TYPE='submit' NAME='Chercher' VALUE='"._T('bouton_chercher')."' CLASS='fondo'>";
1133                        echo "</span>";
1134                } else {
1135                        echo "<INPUT TYPE='Hidden' NAME='ajout_auteur' VALUE='oui'>";
1136                        echo "<SELECT NAME='nouv_auteur' SIZE='1' STYLE='width:150px;' CLASS='fondl' onChange=\"setvisibility('valider_ajouter_auteur','visible');\">";
1137                        while ($row = spip_fetch_array($result)) {
1138                                $id_auteur = $row["id_auteur"];
1139                                $nom = $row["nom"];
1140                                $email = $row["email"];
1141                                $statut = $row["statut"];
1142
1143                                $statut=str_replace("0minirezo", _T('info_administrateurs'), $statut);
1144                                $statut=str_replace("1comite", _T('info_redacteurs'), $statut);
1145                                $statut=str_replace("6visiteur", _T('info_visiteurs'), $statut);
1146                               
1147                                $premiere = strtoupper(substr(trim($nom), 0, 1));
1148
1149                                if ($connect_statut != '0minirezo')
1150                                        if ($p = strpos($email, '@'))
1151                                          $email = substr($email, 0, $p).'@...';
1152                                if ($email)
1153                                        $email = " ($email)";
1154
1155                                if ($statut != $statut_old) {
1156                                        echo "\n<OPTION VALUE=\"x\">";
1157                                        echo "\n<OPTION VALUE=\"x\" style='background-color: $couleur_claire;'> $statut";
1158                                }
1159
1160                                if ($premiere != $premiere_old AND ($statut != _T('info_administrateurs') OR !$premiere_old)) {
1161                                  echo "\n<OPTION VALUE=\"x\">";
1162                                }
1163
1164                               
1165                                echo "\n<OPTION VALUE=\"$id_auteur\">&nbsp;&nbsp;&nbsp;&nbsp;", supprimer_tags(couper(typo("$nom$email"), 40));
1166                                $statut_old = $statut;
1167                                $premiere_old = $premiere;
1168                        }
1169                       
1170                        echo "</SELECT>",
1171                                "<span  class='visible_au_chargement' id='valider_ajouter_auteur'>",
1172                                " <input type='submit' value="._T('bouton_ajouter')." CLASS='fondo'>",
1173                                "</span>";
1174                }
1175                echo "</div></FORM>";
1176        }
1177       
1178        echo "</td></tr></table>";
1179
1180        echo fin_block();
1181}
1182
1183function afficher_corps_articles($virtuel, $chapo, $texte, $ps$extra)
1184{
1185  global $revision_nbsp, $activer_revision_nbsp, $champs_extra, $les_notes, $dir_lang;
1186
1187        echo "\n\n<div align='justify' style='padding: 10px;'>";
1188
1189        if ($virtuel) {
1190                debut_boite_info();
1191                echo _T('info_renvoi_article')." ".propre("<center>[->$virtuel]</center>");
1192                fin_boite_info();
1193        } else {
1194                $revision_nbsp = $activer_revision_nbsp;
1195
1196                if (strlen($chapo) > 0) {
1197                        echo "<div $dir_lang><b>";
1198                        echo propre($chapo);
1199                        echo "</b></div>\n\n";
1200                }
1201
1202                echo "<div $dir_lang>";
1203#       echo reduire_image(propre($texte), 500,10000);
1204                echo propre($texte);
1205                echo "<br clear='both' />";
1206                echo "</div>";
1207
1208                if ($ps) {
1209                        echo debut_cadre_enfonce();
1210                        echo "<div $dir_lang><font style='font-family:Verdana,Arial,Sans,sans-serif; font-size: small;'>";
1211                        echo justifier("<b>"._T('info_ps')."</b> ".propre($ps));
1212                        echo "</font></div>";
1213                        echo fin_cadre_enfonce();
1214                }
1215                $revision_nbsp = false;
1216
1217                if ($les_notes) {
1218                        echo debut_cadre_relief();
1219                        echo "<div $dir_lang class='arial11'>";
1220                        echo justifier("<b>"._T('info_notes')."&nbsp;:</b> ".$les_notes);
1221                        echo "</div>";
1222                        echo fin_cadre_relief();
1223                }
1224               
1225                if ($champs_extra AND $extra) {
1226                        include_spip('inc/extra');
1227                        extra_affichage($extra, "articles");
1228                }
1229        }
1230}
1231
1232function affiche_forums_article($id_article, $id_rubrique, $titre, $debut, $mute=false)
1233{
1234  global $spip_lang_left;
1235
1236  echo "<BR><BR>";
1237
1238  $forum_retour = generer_url_ecrire("articles","id_article=$id_article", true);
1239 
1240  if (!$mute) {
1241    $tm = rawurlencode($titre);
1242    echo "\n<div align='center'>";
1243    icone(_T('icone_poster_message'), generer_url_ecrire("forum_envoi","statut=prive&adresse_retour=" . rawurlencode($forum_retour) . "&id_article=$id_article&titre_message=$tm"), "forum-interne-24.gif", "creer.gif");
1244    echo "</div>";
1245  }
1246
1247  echo "<P align='$spip_lang_left'>";
1248
1249  $result_forum = spip_query("SELECT COUNT(*) AS cnt FROM spip_forum WHERE statut='prive' AND id_article='$id_article' AND id_parent=0");
1250
1251  $total = 0;
1252  if ($row = spip_fetch_array($result_forum)) $total = $row["cnt"];
1253
1254  if (!$debut) $debut = 0;
1255  $total_afficher = 8;
1256  if ($total > $total_afficher) {
1257        echo "<div class='serif2' align='center'>";
1258        for ($i = 0; $i < $total; $i = $i + $total_afficher){
1259                $y = $i + $total_afficher - 1;
1260                if ($i == $debut)
1261                        echo "<FONT SIZE=3><B>[$i-$y]</B></FONT> ";
1262                else
1263                        echo "[<A href='" . generer_url_ecrire("articles","id_article=$id_article&debut=$i") . "'>$i-$y</A>] ";
1264        }
1265        echo "</div>";
1266}
1267
1268        $result_forum = spip_query("SELECT * FROM spip_forum WHERE statut='prive' AND id_article='$id_article' AND id_parent=0 ORDER BY date_heure DESC" .
1269#                                  " LIMIT $total_afficher OFFSET $debut" # PG
1270                                   " LIMIT $debut,$total_afficher"
1271                                   );
1272
1273        afficher_forum($result_forum, $forum_retour, $mute);
1274
1275        if (!$debut) $debut = 0;
1276        $total_afficher = 8;
1277        if ($total > $total_afficher) {
1278          echo "<div class='serif2' align='center'>";
1279          for ($i = 0; $i < $total; $i = $i + $total_afficher){
1280                $y = $i + $total_afficher - 1;
1281                if ($i == $debut)
1282                        echo "<FONT SIZE=3><B>[$i-$y]</B></FONT> ";
1283                else
1284                        echo "[<A href='" . generer_url_ecrire("articles","id_article=$id_article&debut=$i") . "'>$i-$y</A>] ";
1285          }
1286          echo "</div>";
1287        }
1288
1289        echo "</div>\n";
1290}
1291
1292function afficher_statut_articles($id_article, $rubrique_article, $statut_article)
1293{
1294  global $connect_statut;
1295
1296  if ($connect_statut == '0minirezo' AND acces_rubrique($rubrique_article)) {
1297       
1298    echo "\n<form method='post' action='",
1299      generer_action_auteur("instituer", "article $id_article", generer_url_ecrire('articles', "id_article=$id_article", true)),
1300      "'>",
1301          debut_cadre_relief("", true),
1302      "\n<center>", "<B>",_T('texte_article_statut'),"</B>",
1303          "\n<SELECT NAME='statut_nouv' SIZE='1' CLASS='fondl'\n",
1304          "onChange=\"document.statut.src='",
1305          _DIR_IMG_PACK,
1306          "' + puce_statut(options[selectedIndex].value);",
1307          " setvisibility('valider_statut', 'visible');\">\n",
1308         "<OPTION" , mySel("prepa", $statut_article) ," style='background-color: white'>",_T('texte_statut_en_cours_redaction'),"</OPTION>\n",
1309         "<OPTION" , mySel("prop", $statut_article) , " style='background-color: #FFF1C6'>",_T('texte_statut_propose_evaluation'),"</OPTION>\n",
1310         "<OPTION" , mySel("publie", $statut_article) , " style='background-color: #B4E8C5'>",_T('texte_statut_publie'),"</OPTION>\n",
1311         "<OPTION" , mySel("poubelle", $statut_article),
1312           http_style_background('rayures-sup.gif') , '>' ,_T('texte_statut_poubelle'),"</OPTION>\n",
1313         "<OPTION" , mySel("refuse", $statut_article) , " style='background-color: #FFA4A4'>",_T('texte_statut_refuse'),"</OPTION>\n",
1314          "</SELECT>",
1315          " &nbsp; ",
1316          http_img_pack("puce-".puce_statut($statut_article).'.gif', "", "border='0' NAME='statut'"),
1317          "  &nbsp;\n";
1318
1319        echo "<span class='visible_au_chargement' id='valider_statut'>";
1320        echo "<INPUT TYPE='submit' VALUE='"._T('bouton_valider')."' CLASS='fondo'>";
1321        echo "</span>";
1322        echo aide("artstatut");
1323        echo "</center>";
1324        fin_cadre_relief();
1325        echo "\n</form>";
1326 }
1327}
1328
1329//
1330// Reunit les textes decoupes parce que trop longs
1331//
1332
1333function trop_longs_articles($texte_plus)
1334{
1335        $nb_texte = 0;
1336        while ($nb_texte ++ < count($texte_plus)+1){
1337                $texte_ajout .= ereg_replace("<!--SPIP-->[\n\r]*","",
1338                                             $texte_plus[$nb_texte]);
1339        }
1340        return $texte_ajout;
1341}
1342
1343
1344function modif_langue_articles($id_article, $id_rubrique, $changer_lang)
1345{
1346
1347// Appliquer la modification de langue
1348 if ($GLOBALS['meta']['multi_articles'] == 'oui') {
1349        list($langue_parent) = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=" . $id_rubrique),SPIP_NUM);
1350
1351        if ($changer_lang) {
1352                if ($changer_lang != "herit")
1353                        spip_query("UPDATE spip_articles SET lang='".addslashes($changer_lang)."', langue_choisie='oui', date_modif=NOW() WHERE id_article=$id_article");
1354                else
1355                        spip_query("UPDATE spip_articles SET lang='".addslashes($langue_parent)."', langue_choisie='non', date_modif=NOW() WHERE id_article=$id_article");
1356        }
1357 }
1358}
1359
1360// Passer les images/docs en "inclus=non"
1361
1362function inclus_non_articles($id_article)
1363{
1364  $result = spip_query("SELECT docs.id_document FROM spip_documents AS docs, spip_documents_articles AS lien WHERE lien.id_article=$id_article AND lien.id_document=docs.id_document");
1365
1366while($row=spip_fetch_array($result)){
1367        $ze_doc[]=$row['id_document'];
1368}
1369
1370if (count($ze_doc)>0){
1371        $ze_docs = join($ze_doc,",");
1372        spip_query("UPDATE spip_documents SET inclus='non' WHERE id_document IN ($ze_docs)");
1373}
1374
1375}
1376
1377function revisions_articles ($id_article, $id_secteur, $id_rubrique, $id_rubrique_old, $change_rubrique, $new, $champs) {
1378{
1379  global $connect_id_auteur, $flag_revisions, $champs_extra;
1380
1381        // Stockage des versions : creer une premier version si non-existante
1382        if (($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions) {
1383                include_spip('inc/revisions');
1384                if  ($new != 'oui') {
1385                        $query = spip_query("SELECT id_article FROM spip_versions WHERE id_article=$id_article LIMIT 1");
1386                        if (!spip_num_rows($query)) {
1387                                $select = join(", ", array_keys($champs));
1388                                $query = spip_query("SELECT $select FROM spip_articles WHERE id_article=$id_article");
1389                                $champs_originaux = spip_fetch_array($query);
1390                                $id_version = ajouter_version($id_article, $champs_originaux, _T('version_initiale'), 0);
1391
1392                                // Remettre une date un peu ancienne pour la version initiale
1393                                if ($id_version == 1) // test inutile ?
1394                                spip_query("UPDATE spip_versions SET date=DATE_SUB(NOW(), INTERVAL 2 HOUR) WHERE id_article=$id_article AND id_version=1");
1395                        }
1396                }
1397        }
1398
1399        if ($champs_extra) {
1400                include_spip('inc/extra');
1401                $champs_extra = ", extra = '".addslashes(extra_recup_saisie("articles", $id_secteur))."'";
1402        }
1403
1404        spip_query("UPDATE spip_articles SET surtitre='" .
1405                   addslashes($champs['surtitre']) .
1406                   "', titre='" .
1407                   addslashes($champs['titre']) .
1408                   "', soustitre='" .
1409                   addslashes($champs['soustitre']) .
1410                   "', id_rubrique=" .
1411                   intval($id_rubrique) .
1412                   ", descriptif='" .
1413                   addslashes($champs['descriptif']) .
1414                   "', chapo='" .
1415                   addslashes($champs['chapo']) .
1416                   "', texte='" .
1417                   addslashes($champs['texte']) .
1418                   "', ps='" .
1419                   addslashes($champs['ps']) .
1420                   "', url_site='" .
1421                   addslashes($champs['url_site']) .
1422                   "', nom_site='" .
1423                   addslashes($champs['nom_site']) .
1424                   "', date_modif=NOW() $champs_extra WHERE id_article=$id_article");
1425
1426        // Stockage des versions
1427        if (($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions) {
1428                ajouter_version($id_article, $champs, '', $connect_id_auteur);
1429        }
1430
1431        // Changer la langue heritee
1432        if ($id_rubrique != $id_rubrique_old) {
1433                propager_les_secteurs();
1434                $row = spip_fetch_array(spip_query("SELECT lang, langue_choisie FROM spip_articles WHERE id_article=$id_article"));
1435                $langue_old = $row['lang'];
1436                $langue_choisie_old = $row['langue_choisie'];
1437
1438                if ($langue_choisie_old != "oui") {
1439                        $row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
1440                        $langue_new = $row['lang'];
1441                        if ($langue_new != $langue_old) spip_query("UPDATE spip_articles SET lang = '$langue_new', date_modif=NOW() WHERE id_article = $id_article");
1442                }
1443        }
1444
1445        // marquer l'article (important pour les articles nouvellement crees)
1446        spip_query("UPDATE spip_articles SET date_modif=NOW(), auteur_modif=$connect_id_auteur WHERE id_article=$id_article");
1447        calculer_rubriques();
1448 }
1449}
1450
1451function insert_article($id_parent, $new)
1452{
1453        if ($new!='oui')  redirige_par_entete("./");
1454        // Avec l'Ajax parfois id_rubrique vaut 0... ne pas l'accepter
1455        if (!$id_rubrique = intval($id_parent)) {
1456                list($id_rubrique) = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0 ORDER by 0+titre,titre LIMIT 1"),SPIP_NUM);
1457        }
1458
1459        $row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
1460
1461        $id_article = spip_abstract_insert("spip_articles",
1462                        "(id_rubrique, statut, date, accepter_forum, lang, langue_choisie)", 
1463                        "($id_rubrique, 'prepa', NOW(), '" .
1464                                substr($GLOBALS['meta']['forums_publics'],0,3)
1465                                . "', '"
1466                                . ($row["lang"] ? $row["lang"] : $GLOBALS['meta']['langue_site'])
1467                                . "', 'non')");
1468        return $id_article;
1469}
1470// Y a-t-il vraiment 56 variables determinant l'edition d'un article ?
1471
1472function exec_articles_dist()
1473{
1474global $ajout_auteur, $annee, $annee_redac, $avec_redac, $champs_extra, $change_accepter_forum, $change_petition, $changer_lang, $changer_virtuel, $chapo, $cherche_auteur, $cherche_mot, $connect_id_auteur, $date, $date_redac, $debut, $descriptif, $email_unique, $heure, $heure_redac, $id_article, $id_article_bloque, $id_parent, $id_rubrique_old, $id_secteur, $jour, $jour_redac, $langue_article, $lier_trad, $message, $minute, $minute_redac, $mois, $mois_redac, $new, $nom_select, $nom_site, $nouv_auteur, $nouv_mot, $ps, $row, $site_obli, $site_unique, $soustitre, $supp_auteur, $supp_mot, $surtitre, $texte, $texte_petition, $texte_plus, $titre, $titre_article, $url_site, $virtuel; 
1475
1476 $id_parent = intval($id_parent);
1477 $nouv_auteur = intval($nouv_auteur);
1478 if (!($id_article=intval($id_article))) {
1479   $id_article = insert_article($id_parent, $new);
1480   add_auteur_article($id_article, $connect_id_auteur);
1481 }
1482
1483// aucun doc implicitement inclus au départ.
1484
1485inclus_non_articles($id_article);
1486
1487
1488if ($row = spip_fetch_array(spip_query("SELECT statut, titre, id_rubrique FROM spip_articles WHERE id_article=$id_article"))) {
1489        $statut_article = $row['statut'];
1490        $titre_article = $row['titre'];
1491        $id_rubrique = $row['id_rubrique'];
1492        $statut_rubrique = acces_rubrique($id_rubrique);
1493        if ($titre_article=='') $titre_article = _T('info_sans_titre');
1494}
1495else {
1496        $statut_article = '';
1497        $statut_rubrique = false;
1498        $id_rubrique = '0';
1499        if ($titre=='') $titre = _T('info_sans_titre');
1500}
1501
1502$flag_auteur = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur LIMIT 1"));
1503
1504 $flag_editable = ($statut_rubrique OR ($flag_auteur AND $flag_editable));
1505
1506if ($flag_editable) {
1507
1508if ($jour) {
1509        $date = format_mysql_date($annee, $mois, $jour, $heure, $minute);
1510        spip_query("UPDATE spip_articles SET date='$date', date_modif=NOW()
1511                WHERE id_article=$id_article");
1512        calculer_rubriques();
1513}
1514
1515if ($jour_redac) {
1516        if ($annee_redac<>'' AND $annee_redac < 1001) $annee_redac += 9000;
1517
1518        if ($avec_redac == 'non')
1519                $date_redac = format_mysql_date();
1520        else
1521                $date_redac = format_mysql_date(
1522                        $annee_redac, $mois_redac, $jour_redac,
1523                        $heure_redac, $minute_redac);
1524
1525        spip_query("UPDATE spip_articles SET date_redac='$date_redac',  date_modif=NOW() WHERE id_article=$id_article");
1526}
1527
1528
1529modif_langue_articles($id_article, $id_rubrique, $changer_lang);
1530
1531maj_documents($id_article, 'article');
1532
1533if ($changer_virtuel) {
1534        $virtuel = eregi_replace("^http://$", "", trim($virtuel));
1535        if ($virtuel) $chapo = addslashes(corriger_caracteres("=$virtuel"));
1536        else $chapo = "";
1537        spip_query("UPDATE spip_articles SET chapo='$chapo', date_modif=NOW() WHERE id_article=$id_article");
1538}
1539
1540if ($titre) {
1541
1542  // prendre en compte le changement eventuel, et seulement si autorise
1543        if ($id_parent AND ($flag_auteur OR acces_rubrique($id_parent))) {
1544                $id_rubrique = $id_parent;
1545        }
1546        $champs = array(
1547                        'surtitre' => corriger_caracteres($surtitre),
1548                        'titre' => ($titre_article=corriger_caracteres($titre)),
1549                        'soustitre' => corriger_caracteres($soustitre),
1550                        'descriptif' => corriger_caracteres($descriptif),
1551                        'nom_site' => corriger_caracteres($nom_site),
1552                        'url_site' => corriger_caracteres($url_site),
1553                        'chapo' => corriger_caracteres($chapo),
1554                        'texte' => corriger_caracteres(trop_longs_articles($texte_plus) . $texte),
1555                        'ps' => corriger_caracteres($ps))  ;
1556
1557        revisions_articles ($id_article, $id_secteur, $id_rubrique, $id_rubrique_old,
1558                            ($flag_auteur||$statut_rubrique),
1559                            $new, $champs);
1560        $id_article_bloque = $id_article;   // message pour inc/presentation
1561
1562 }
1563 }
1564
1565exec_affiche_articles_dist($id_article, $ajout_auteur, $change_accepter_forum, $change_petition, $changer_virtuel, $cherche_auteur, $cherche_mot, $debut, $email_unique, $flag_auteur, $flag_editable, $langue_article, $message, $nom_select, $nouv_auteur, $nouv_mot, $id_rubrique, $site_obli, $site_unique, $supp_auteur, $supp_mot, $texte_petition, $titre_article, $lier_trad);
1566
1567}
1568?>
Note: See TracBrowser for help on using the repository browser.