diff --git a/ecrire/inc_agenda.php3 b/ecrire/inc_agenda.php3 index 8e1e7968020512946989e953e813eb4d44b431c9..27e6f80f30eeb7db40fa8c3f3fe171bafffded9d 100644 --- a/ecrire/inc_agenda.php3 +++ b/ecrire/inc_agenda.php3 @@ -5,6 +5,8 @@ if (defined("_ECRIRE_INC_AGENDA")) return; define("_ECRIRE_INC_AGENDA", "1"); +include_ecrire("inc_acces.php3"); + // // Afficher un agenda (un mois) sous forme de petit tableau @@ -312,7 +314,7 @@ function liste_rv($query, $type) { } function afficher_taches () { - global $connect_id_auteur; + global $connect_id_auteur, $options; $query = "SELECT * FROM spip_messages WHERE type = 'affich' AND rv != 'oui' AND statut = 'publie' ORDER BY date_heure DESC"; liste_rv($query, "annonces"); @@ -321,7 +323,13 @@ function afficher_taches () { $query = "SELECT messages.* FROM spip_messages AS messages, spip_auteurs_messages AS lien WHERE ((lien.id_auteur='$connect_id_auteur' AND lien.id_message=messages.id_message) OR messages.type='affich') AND messages.rv='oui' AND messages.date_heure > DATE_SUB(NOW(), INTERVAL 1 DAY) AND messages.date_heure < DATE_ADD(NOW(), INTERVAL 1 MONTH) AND messages.statut='publie' GROUP BY messages.id_message ORDER BY messages.date_heure"; liste_rv($query, "rv"); - + + if ($options == "avancees") { + echo debut_cadre_enfonce(); + echo "<div class='verdana1'>"._T("calendrier_synchro")."</div>"; + icone_horizontale (_T("calendrier_synchro_lien"), "../spip_cal.php3?cle=".afficher_low_sec($connect_id_auteur), "calendrier-24.gif"); + echo fin_cadre_enfonce(); + } } diff --git a/ecrire/index.php3 b/ecrire/index.php3 index 1bf9d1d12f7403d8f82b0afe988208210a30e955..306a668ec66562c749e2b6a862b5a12251fcc147 100644 --- a/ecrire/index.php3 +++ b/ecrire/index.php3 @@ -108,19 +108,53 @@ fin_cadre_relief(); // -// Annonces +// Afficher le calendrier du mois s'il y a des rendez-vous // -if (lire_meta('activer_messagerie') != 'non') { - include_ecrire("inc_agenda.php3"); - afficher_taches(); +include_ecrire("inc_agenda.php3"); + +if (lire_meta('activer_messagerie') != 'non' AND $connect_activer_messagerie != "non" AND $options == "avancees") { + $today = getdate(time()); + $jour_today = $today["mday"]; + $mois_today = $today["mon"]; + $annee_today = $today["year"]; + $date = date("Y-m-d", mktime(0,0,0,$mois_today, 1, $annee_today)); + $mois = mois($date); + $annee = annee($date); + $jour = jour($date); + + // rendez-vous personnels dans le mois + $result_messages = spip_query("SELECT messages.id_message FROM spip_messages AS messages, spip_auteurs_messages AS lien ". + "WHERE ((lien.id_auteur='$connect_id_auteur' AND lien.id_message=messages.id_message) OR messages.type='affich') ". + "AND messages.rv='oui' AND messages.date_heure >='$annee-$mois-1' AND date_heure < DATE_ADD('$annee-$mois-1', INTERVAL 1 MONTH) ". + "AND messages.statut='publie' LIMIT 0,1"); + if (spip_num_rows($result_messages)) { + echo "<p />"; + agenda ($mois_today, $annee_today, $jour_today, $mois_today, $annee_today); + } + // rendez-vous personnels dans le mois + $result_messages = spip_query("SELECT messages.id_message FROM spip_messages AS messages, spip_auteurs_messages AS lien ". + "WHERE ((lien.id_auteur='$connect_id_auteur' AND lien.id_message=messages.id_message) OR messages.type='affich') ". + "AND messages.rv='oui' AND messages.date_heure >='$annee_today-$mois_today-$jour_today' AND messages.date_heure < DATE_ADD('$annee_today-$mois_today-$jour_today', INTERVAL 1 DAY) ". + "AND messages.statut='publie' LIMIT 0,1"); + if (spip_num_rows($result_messages)) { + echo "<p />"; + calendrier_jour($jour_today,$mois_today,$annee_today, false); + } } -debut_raccourcis(); +if ($options != 'avancees') { + debut_boite_info(); + echo "<div class='verdana2'>"; + echo "<p><center><b>« "._T('info_a_suivre')."</b></center>"; + echo "<p>"._T('texte_actualite_site_1')."<a href='index.php3?&set_options=avancees'>"._T('texte_actualite_site_2')."</a>"._T('texte_actualite_site_3'); + echo "</div>"; + fin_boite_info(); +} +debut_raccourcis(); // // Afficher les boutons de creation d'article et de breve // - $query = "SELECT id_rubrique FROM spip_rubriques LIMIT 0,1"; $result = spip_query($query); @@ -170,55 +204,15 @@ else if ($connect_statut == '0minirezo' and $connect_toutes_rubriques) { fin_raccourcis(); - // -// Afficher le calendrier du mois s'il y a des rendez-vous +// Annonces // + afficher_taches(); -if (lire_meta('activer_messagerie') != 'non' AND $connect_activer_messagerie != "non" AND $options == "avancees") { - $today = getdate(time()); - $jour_today = $today["mday"]; - $mois_today = $today["mon"]; - $annee_today = $today["year"]; - $date = date("Y-m-d", mktime(0,0,0,$mois_today, 1, $annee_today)); - $mois = mois($date); - $annee = annee($date); - $jour = jour($date); - // rendez-vous personnels dans le mois - $result_messages = spip_query("SELECT messages.id_message FROM spip_messages AS messages, spip_auteurs_messages AS lien ". - "WHERE ((lien.id_auteur='$connect_id_auteur' AND lien.id_message=messages.id_message) OR messages.type='affich') ". - "AND messages.rv='oui' AND messages.date_heure >='$annee-$mois-1' AND date_heure < DATE_ADD('$annee-$mois-1', INTERVAL 1 MONTH) ". - "AND messages.statut='publie' LIMIT 0,1"); - if (spip_num_rows($result_messages)) { - echo "<p />"; - agenda ($mois_today, $annee_today, $jour_today, $mois_today, $annee_today); - } - // rendez-vous personnels dans le mois - $result_messages = spip_query("SELECT messages.id_message FROM spip_messages AS messages, spip_auteurs_messages AS lien ". - "WHERE ((lien.id_auteur='$connect_id_auteur' AND lien.id_message=messages.id_message) OR messages.type='affich') ". - "AND messages.rv='oui' AND messages.date_heure >='$annee_today-$mois_today-$jour_today' AND messages.date_heure < DATE_ADD('$annee_today-$mois_today-$jour_today', INTERVAL 1 DAY) ". - "AND messages.statut='publie' LIMIT 0,1"); - if (spip_num_rows($result_messages)) { - echo "<p />"; - calendrier_jour($jour_today,$mois_today,$annee_today, false); - } -} debut_droite(); -if ($options != 'avancees') { - debut_boite_info(); - echo "<div class='verdana2'>"; - echo "<p><center><b>« "._T('info_a_suivre')."</b></center>"; - echo "<p>"._T('texte_actualite_site_1')."<a href='index.php3?&set_options=avancees'>"._T('texte_actualite_site_2')."</a>"._T('texte_actualite_site_3'); - echo "</div>"; - fin_boite_info(); -} - - - - // // Restauration d'une archive // diff --git a/ecrire/lang/spip_fr.php3 b/ecrire/lang/spip_fr.php3 index f892a4b0b441f54e615a184db4120f5dbe16cf60..de61a605ca8abf59ae002d466b0f38f4144aa6b2 100644 --- a/ecrire/lang/spip_fr.php3 +++ b/ecrire/lang/spip_fr.php3 @@ -170,6 +170,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( 'bouton_voir_message' => 'Voir ce message avant de le valider', +// C +'calendrier_synchro' => 'Si vous utilisez un logiciel d\'agenda compatible <b>iCal</b> (Apple iCal, Mozilla Calendar, Ximian Evolution, KOrganizer...), vous pouvez le synchroniser avec l\'actualitŽ de ce site.', +'calendrier_synchro_lien' => 'Récupérer le fichier <i>iCal</i>', // D 'date_avant_jc' => 'av. J.C.', 'date_fmt_heures_minutes' => '@h@h@m@min', diff --git a/ecrire/messagerie.php3 b/ecrire/messagerie.php3 index f52c8387bc5c468810c4289b9f5c89b28e8434a8..2049c0ce0c06610e2b50201b562b56ac030cdccd 100644 --- a/ecrire/messagerie.php3 +++ b/ecrire/messagerie.php3 @@ -41,8 +41,6 @@ echo "<p>"."<IMG SRC='img_pack/m_envoi_jaune$spip_lang_rtl.gif' WIDTH='14' HEIGH fin_boite_info(); -echo "<div> </div>"; -icone ("iCal", "../spip_cal.php3?cle=".afficher_low_sec($connect_id_auteur), "calendrier-24.gif"); diff --git a/spip_cal.php3 b/spip_cal.php3 new file mode 100644 index 0000000000000000000000000000000000000000..d4a8fd125798fe747fdc501aed35ebca42387156 --- /dev/null +++ b/spip_cal.php3 @@ -0,0 +1,181 @@ +<?php + +include ("ecrire/inc_version.php3"); + +include_ecrire("inc_filtres.php3"); +include_ecrire("inc_texte.php3"); +include_ecrire("inc_charsets.php3"); +include_ecrire("inc_meta.php3"); +include_ecrire("inc_admin.php3"); + + +function ligne_x ($texte) { + if (ereg("^BEGIN", $texte)) echo "<br>"; + echo $texte."<br>"; +} +function ligne ($texte) { + echo $texte."\n"; +} + +function filtrer_ical ($texte) { + global $charset; + $texte = html2unicode($texte); + $texte = unicode2charset(charset2unicode($texte, $charset, 1), 'utf-8'); + $texte = ereg_replace("\n", " ", $texte); + $texte = ereg_replace(",", "\,", $texte); + + return $texte; +} + + + +if (!$charset = lire_meta('charset')) $charset = 'utf-8'; +$nom_site = filtrer_ical(lire_meta("nom_site")); +$adresse_site = lire_meta("adresse_site"); + + +if (strlen($cle)>1) { + $query = "SELECT * FROM spip_auteurs WHERE low_sec='$cle'"; + $result = spip_query($query); + + if ($row = spip_fetch_array($result)) { + $id_utilisateur=$row['id_auteur']; + $nom_utilisateur=$row['nom']; + $nom_utilisateur = filtrer_ical(unicode2charset(charset2unicode($nom_utilisateur, $charset, 1), 'utf-8')); + } else { + die ("Interdit"); + } +} else { + die ("Interdit"); +} + + +@header ("content-type:text/calendar"); +//@header("Content-Disposition: attachment; filename=spipcal-$id_utilisateur.ics"); + +ligne ("BEGIN:VCALENDAR"); +ligne ("CALSCALE:GREGORIAN"); +ligne ("X-WR-CALNAME;VALUE=TEXT:$nom_site / $nom_utilisateur"); +ligne ("X-WR-RELCALID:cal$id_utilisateur @ $adresse_site"); +ligne ("VERSION:2.0"); + + + // rendez-vous + $result_messages=spip_query("SELECT messages.* FROM spip_messages AS messages, spip_auteurs_messages AS lien WHERE ((lien.id_auteur='$id_utilisateur' AND lien.id_message=messages.id_message) OR messages.type='affich') AND messages.rv='oui' AND messages.statut='publie' GROUP BY messages.id_message ORDER BY messages.date_heure"); + while($row=spip_fetch_array($result_messages)){ + $id_message=$row['id_message']; + $date_heure=$row["date_heure"]; + $date_heure_fin=$row["date_fin"]; + //$titre=typo($row["titre"]); + $titre = filtrer_ical($row["titre"]); + $texte = filtrer_ical($row["texte"]); + $type=$row["type"]; + + if ($type == "affich") { + $titre = "[$nom_site] $titre"; + } + + ligne ("BEGIN:VEVENT"); + if ($type == "normal") { + $result_auteurs=spip_query("SELECT auteurs.* FROM spip_auteurs AS auteurs, spip_auteurs_messages AS lien WHERE (lien.id_message='$id_message' AND lien.id_auteur=auteurs.id_auteur)"); + while($row_auteur=spip_fetch_array($result_auteurs)){ + $id_auteur=$row_auteur['id_auteur']; + $nom_auteur=$row_auteur['nom']; + $email = $row_auteur ['email']; + $nom_auteur = filtrer_ical($nom_auteur); + + if ($id_auteur != $id_utilisateur) $titre = $titre." - ".$nom_auteur; + + if ($id_auteur == $id_utilisateur) ligne ("ORGANIZER:$nom_auteur <$email>"); + else ligne ("ATTENDEE:$nom_auteur <$email>"); + } + } + ligne ("SUMMARY:".$titre); + ligne ("DESCRIPTION:$texte"); + ligne ("UID:mess$id_message @ $adresse_site"); + ligne ("DTSTAMP:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))); + ligne ("DTSTART:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))); + if ($date_heure_fin > $date_heure) ligne ("DTEND:".date ("Ymd\THis", mktime (heures($date_heure_fin),minutes($date_heure_fin),0,mois($date_heure_fin),jour($date_heure_fin),annee($date_heure_fin)))); + ligne ("CATEGORIES:$type"); + ligne("URL:$adresse_site/ecrire/message.php3?id_message=$id_message"); + + ligne ("END:VEVENT"); + + } + + // todo + $result_messages=spip_query("SELECT messages.* FROM spip_messages AS messages, spip_auteurs_messages AS lien WHERE ((lien.id_auteur='$id_utilisateur' AND lien.id_message=messages.id_message AND messages.type='pb') OR messages.type='affich') AND messages.rv!='oui' AND messages.statut='publie' GROUP BY messages.id_message ORDER BY messages.date_heure"); + while($row=spip_fetch_array($result_messages)){ + $id_message=$row['id_message']; + $date_heure=$row["date_heure"]; + $titre = filtrer_ical($row["titre"]); + $texte = filtrer_ical($row["texte"]); + $type=$row["type"]; + + if ($type == "affich") { + $titre = "[$nom_site] $titre"; + } + + ligne ("BEGIN:VTODO"); + ligne ("SUMMARY:".$titre); + ligne ("DESCRIPTION:$texte"); + ligne ("UID:mess$id_message @ $adresse_site"); + ligne ("DTSTAMP:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))); + ligne ("DTSTART:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))); + ligne ("CATEGORIES:$type"); + ligne("URL:$adresse_site/ecrire/message.php3?id_message=$id_message"); + ligne ("END:VTODO"); + + } + + + + // Articles et breves proposes + $result_articles = spip_query("SELECT id_article, titre, date FROM spip_articles WHERE statut = 'prop'"); + while($row=spip_fetch_array($result_articles)){ + $id_article=$row['id_article']; + $titre = filtrer_ical(_T('info_article_propose').": ".$row['titre']); + $date_heure = $row['date']; + ligne ("BEGIN:VTODO"); + ligne ("SUMMARY:[$nom_site] $titre "); + ligne ("UID:article$id_article @ $adresse_site"); + ligne ("DTSTAMP:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))); + ligne ("DTSTART:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))); + ligne ("CATEGORIES:article"); + ligne("URL:$adresse_site/ecrire/articles.php3?id_article=$id_article"); + ligne ("END:VTODO"); + } + $result_articles = spip_query("SELECT id_breve, titre, date_heure FROM spip_breves WHERE statut = 'prop'"); + while($row=spip_fetch_array($result_articles)){ + $id_breve=$row['id_breve']; + $titre = filtrer_ical(_T('item_breve_proposee').": ".$row['titre']); + $date_heure = $row['date_heure']; + ligne ("BEGIN:VTODO"); + ligne ("SUMMARY:[$nom_site] $titre"); + ligne ("UID:breve$id_breve @ $adresse_site"); + ligne ("DTSTAMP:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))); + ligne ("DTSTART:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))); + ligne ("CATEGORIES:breve"); + ligne("URL:$adresse_site/ecrire/breves_voir.php3?id_breve=$id_breve"); + ligne ("END:VTODO"); + } + + + + +/*ligne ("BEGIN:VEVENT"); + DTSTAMP:20031121T064748Z + SUMMARY:L.A. Clippers @ Kings Preseason \nW 101-82\n + LOCATION: + UID:4FF899AA-1BE0-11D8-8939-000A959A2EA8-RID + DTSTART;TZID=US/Pacific:20031007T190000 + DURATION:PT3H +ligne ("END:VEVENT"); +*/ + + +ligne ("END:VCALENDAR"); + + + +?> \ No newline at end of file