diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3 index fd1ecf4d7084ee5612e731b67ce7bb01f883baad..2bb3dfdfba270bab1a09220c1fed53ff357747fd 100644 --- a/ecrire/inc_filtres.php3 +++ b/ecrire/inc_filtres.php3 @@ -472,6 +472,26 @@ function centrer($letexte) { return aligner($letexte,'center'); } +// +// Export iCal +// + +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; +} + +function date_ical ($date_heure, $minutes = 0) { + return date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure)+$minutes,0,mois($date_heure),jour($date_heure),annee($date_heure))); +} + + + // // Recuperation de donnees dans le champ extra // Ce filtre n'a de sens qu'avec la balise #EXTRA diff --git a/spip_cal.php3 b/spip_cal.php3 index 776e44e0be2fd640edb2dbe7ef1dc34b1c6a47eb..957726691201100da078cf63b22715dc0bb24558 100644 --- a/spip_cal.php3 +++ b/spip_cal.php3 @@ -19,16 +19,6 @@ 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("\r", " ", $texte); - $texte = ereg_replace(",", "\,", $texte); - - return $texte; -} if (!$charset = lire_meta('charset')) $charset = 'utf-8'; @@ -53,7 +43,7 @@ if (verifier_low_sec($id_auteur, $cle, 'ical')) { } -//@header ("content-type:text/calendar"); +@header ("content-type:text/calendar"); if ($type == "public") { @@ -71,9 +61,9 @@ if ($type == "public") { ligne ("BEGIN:VEVENT"); ligne ("SUMMARY:$titre [$nom_site]"); 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 ("DTEND:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure)+60,0,mois($date_heure),jour($date_heure),annee($date_heure)))); + ligne ("DTSTAMP:".date_ical($date_heure)); + ligne ("DTSTART:".date_ical($date_heure)); + ligne ("DTEND:".date_ical($date_heure, 60)); ligne ("CATEGORIES:".filtrer_ical(_T('titre_breve_publiee'))); ligne("URL:$adresse_site/spip_redirect.php3?id_article=$id_article"); ligne("STATUS:CONFIRMED"); @@ -87,9 +77,9 @@ if ($type == "public") { ligne ("BEGIN:VEVENT"); ligne ("SUMMARY:$titre [$nom_site]"); 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 ("DTEND:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure)+60,0,mois($date_heure),jour($date_heure),annee($date_heure)))); + ligne ("DTSTAMP:".date_ical($date_heure)); + ligne ("DTSTART:".date_ical($date_heure)); + ligne ("DTEND:".date_ical($date_heure, 60)); ligne ("CATEGORIES:".filtrer_ical(_T('titre_breve_publiee'))); ligne("URL:$adresse_site/spip_redirect.php3?id_breve=$id_breve"); ligne("STATUS:CONFIRMED"); @@ -147,9 +137,10 @@ if ($id_utilisateur) { 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 ("DTSTAMP:".date_ical($date_heure)); + ligne ("DTSTART:".date_ical($date_heure)); + if ($date_heure_fin > $date_heure) ligne ("DTEND:".date_ical($date_heure_fin)); + ligne ("CATEGORIES:$le_type"); ligne("URL:$adresse_site/ecrire/message.php3?id_message=$id_message"); @@ -193,8 +184,8 @@ if ($id_utilisateur) { 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 ("DTSTAMP:".date_ical($date_heure)); + ligne ("DTSTART:".date_ical($date_heure)); ligne ("CATEGORIES:$le_type"); ligne("URL:$adresse_site/ecrire/message.php3?id_message=$id_message"); ligne ("END:VTODO"); @@ -269,8 +260,8 @@ if ($id_utilisateur) { $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 = $row_auteur['nom']; + $email = filtrer_ical($row_auteur ['email']); $nom_auteur = filtrer_ical($nom_auteur); if ($id_auteur != $id_utilisateur) $titre = $nom_auteur." - ".$titre; @@ -278,6 +269,23 @@ if ($id_utilisateur) { if ($id_auteur == $id_utilisateur) ligne ("ORGANIZER:$nom_auteur <$email>"); else ligne ("ATTENDEE:$nom_auteur <$email>"); } + $query_forum = "SELECT * FROM spip_forum WHERE statut='perso' AND id_message='$id_message' ORDER BY date_heure DESC LIMIT 0,1"; + $result_forum = spip_query($query_forum); + if ($row_forum = spip_fetch_array($result_forum)) { + $date_heure = $row_forum["date_heure"]; + $texte = filtrer_ical($row_forum["texte"]); + $titre = filtrer_ical($row_forum["titre"]); + $id_auteur = $row_forum["id_auteur"]; + + $result_auteurs2 = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur = $id_auteur"); + if ($row_auteur2 = spip_fetch_array($result_auteurs2)){ + $nom_auteur = $row_auteur2['nom']; + $email = $row_auteur2 ['email']; + $nom_auteur = filtrer_ical($nom_auteur); + + $titre = $nom_auteur." - ".$titre; + } + } } else if ($type == 'pb') { $le_type = filtrer_ical(_T('info_pense_bete')); @@ -286,6 +294,8 @@ if ($id_utilisateur) { $le_type = filtrer_ical(_T('info_annonce')); $titre = "[$nom_site] $titre"; } + + ligne ("BEGIN:VTODO"); ligne ("SUMMARY:".$titre);