XLAgenda
Un agenda en PHP pour votre site Web

 

Accueil | Présentation | Configuration nécessaire | Installation | Historique | FAQ | Forum | Utilisateurs | Démonstration


XLAgenda - Le Forum

Bienvenue ! Le forum de XLAgenda est à votre disposition depuis le 26 janvier 2007. N'hésitez pas à l'utiliser pour signaler des problèmes, suggérer des améliorations ou demander de l'aide.

Vous n'êtes pas identifié(e).

#1 16/08/2009 14:45:13

Laurent
Membre
Inscription : 16/08/2009
Messages : 16
Site Web

créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

1) Créer un fichier PHP feed.php

<?php
require_once('include/data.php');
include("include/data.php");
include("include/connexion.php");
include("include/functions.php");
//VERIFICATION DE L'EXISTENCE DES TABLES
$query="SELECT id FROM $table_agenda";
$result=mysql_query($query);
if (!$result)
{
die ("<p>XLAgenda n'est pas encore installé.<br>Vous devez <a href=\"install/index.php\">lancer l'installation automatique</a>.</p>");
}
//INITALISATION DES VARIABLES
$texte="";
$request="";
//RECUPERATION DES DONNEES
$the_user=(isset($_SESSION['the_user'])) ? $_SESSION['the_user'] : Null;
$year=(isset($_REQUEST["year"])) ? $_REQUEST["year"] : Null;
$month=(isset($_REQUEST["month"])) ? $_REQUEST["month"] : Null;
$day=(isset($_REQUEST["day"])) ? $_REQUEST["day"] : Null;
$categorie=(isset($_REQUEST["categorie"])) ? $_REQUEST["categorie"] : Null;
$navigation=(isset($_REQUEST["navigation"])) ? $_REQUEST["navigation"] : Null;
$limit=(isset($_REQUEST["limit"])) ? $_REQUEST["limit"] : Null;
//PROTECTION POUR EVITER LES INJECTIONS SQL
$year=mysql_real_escape_string($year);
$month=mysql_real_escape_string($month);
$day=mysql_real_escape_string($day);
$categorie=mysql_real_escape_string($categorie);
$navigation=mysql_real_escape_string($navigation);
$limit=mysql_real_escape_string($limit);
//CONTROLE DE LA VALIDITE DES DONNEES
if (($year AND !is_numeric($year)) OR ($month AND !is_numeric($month)) OR ($day AND !is_numeric($day)) OR ($categorie AND !is_numeric($categorie)) OR ($navigation AND !is_numeric($navigation)) OR ($limit AND !is_numeric($limit)))
{
die ("<p>Erreur : une variable possède une valeur interdite.<br />L'exécution est interrompue par mesure de sécurité.</p>");
}

//SI AUCUNE DATE N'A ETE SELECTIONNEE ON SELECTIONNE LA DATE DU JOUR
if (!$month)
{
$month = date("m");
//DANS CE CAS SEULS LES EVENEMENTS POSTERIEURS A LA DATE DU JOUR SERONT AFFICHES
$limit = "1";
}
if (!$year)
{
$year = date("Y");
}

//DETERMINATION DU NOM DU MOIS
if ($month == "1") $nom_mois="January";
if ($month == "2") $nom_mois="February";
if ($month == "3") $nom_mois="March";
if ($month == "4") $nom_mois="April";
if ($month == "5") $nom_mois="May";
if ($month == "6") $nom_mois="June";
if ($month == "7") $nom_mois="July";
if ($month == "8") $nom_mois="August";
if ($month == "9") $nom_mois="September";
if ($month == "10") $nom_mois="October";
if ($month == "11") $nom_mois="November";
if ($month == "12") $nom_mois="December";

//MEMORISATION DE LA DATE DU JOUR

$this_year = date("Y");
$this_month = date("m");
$this_day = date("d");
$this_date = date("Y-m-d");


function cleanText($intext) {
    return utf8_encode(htmlspecialchars(stripslashes($intext)));
}
header("Content-Type: text/xml;charset=utf-8");
$date_fmt = date("D, j M Y H:i:s O",strtotime($this_date));

echo <<<END
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Nom du site ou de la page</title>
      <link>URL du site ou de la page</link>
      <description>description du site ou de la page</description>
      <pubDate>$date1</pubDate>
      <language>fr</language>
<image>
      <title>nom de l'image</title>
<url>adresse de l'image</url>
<link>adresse du site</link>
<width>60</width>
<height>57</height>
</image>
END;

$date1=array("$year","$month","01");
    $date1=implode("-",$date1);
    if ($limit)
    //CAS DU CHARGEMENT DE LA PAGE - ON CHERCHE SEULEMENT LES EVENEMENTS POSTERIEURS A LA DATE DU JOUR
    $date1=$this_date;

$query1 = "SELECT * FROM $table_agenda WHERE (date_debut AND date_fin >= '$date1' AND actif = '1') ORDER BY date_debut ASC";
$result1 = @mysql_query($query1);
      while($ligne=mysql_fetch_array($result1))
      {
$tab_debut=explode("-",$date_debut);
   $id=$ligne["id"];
   $title          = cleanText($ligne["nom"]);
   $link          = "url-complet-de-l-agenda/evenement.php?id=$id";
   $date_debut       = date("d-m-Y",strtotime($date_debut));
  // $date_debut_fmt=date("j M Y H:i:s O",strtotime($date_debut));
$description = $ligne["description"];   
$description = cleanText(convert_html($ligne["description"]));

echo <<<END
      <item>
         <title>$title</title>     
         <link>$link</link>
         <description>$description</description>
         <guid>$link</guid>
      </item>
END;
}

echo <<<END

   </channel>
</rss>

END;

?>

Code basé sur celui de Cicul.Arts. Voir là > http://xavier.lequere.net/xlagenda/foru … .php?id=26

2) Créer une page "evenement.php"

<?php
/******************************************************************
*    XLAgenda 4 par Xavier LE QUERE
*   Contact : xavier[at]lequere.net
*   Web : http://www.xavier.lequere.net/xlagenda
*   (C) Xavier LE QUERE, 2003-2006
*   Version 3.2.7 - 02/03/06
*
*   This program is free software; you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation; either version 2 of the License, or
*   (at your option) any later version.
*   
*   This program is distributed in the hope that it will be useful,
*   but WITHOUT ANY WARRANTY; without even the implied warranty of
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*   GNU General Public License for more details.
*   
*   You should have received a copy of the GNU General Public License
*   along with this program; if not, write to the Free Software
*   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
******************************************************************/

//VARIABLES GENERALES
session_start();
include("include/data.php");
include("include/connexion.php");
include("include/functions.php");
//VERIFICATION DE L'EXISTENCE DES TABLES
$query="SELECT id FROM $table_agenda";
$result=mysql_query($query);
if (!$result)
{
die ("<p>XLAgenda n'est pas encore installé.<br>Vous devez <a href=\"install/index.php\">lancer l'installation automatique</a>.</p>");
}

//AFFICHAGE DE L'ENTETE
include("include/header.php");

?>

<?php
      $id=$_GET["id"];
      $query="SELECT * FROM $table_agenda WHERE id='$id'";
      $result=mysql_query($query);
      while($ligne=mysql_fetch_array($result))
      {
      $date_debut=$ligne["date_debut"];
      $date_fin=$ligne["date_fin"];
      $heure_debut=$ligne["heure_debut"];
      $heure_fin=$ligne["heure_fin"];
      $nom=$ligne["nom"];
      $description=$ligne["description"];
      $categorie=$ligne["categorie"];
      $lieu=$ligne["lieu"];
      $contact=$ligne["contact"];
      $adresse=$ligne["adresse"];
      $email=$ligne["email"];
      $telephone=$ligne["telephone"];
      $fax=$ligne["fax"];
      $lien=$ligne["lien"];
      $url=$ligne["url"];
      $nom = stripslashes($nom);
      $description = stripslashes($description);
      $lieu = stripslashes($lieu);
      $contact = stripslashes($contact);
      $adresse = stripslashes($adresse);
      $lien = stripslashes($lien);
      //CONVERSION DES CARACTERES ACCENTUES
      $nom = convert_html($nom);
      $description = convert_html($description);
      $lieu = convert_html($lieu);
      $contact = convert_html($contact);
      $adresse = convert_html($adresse);
      $lien = convert_html($lien);
      //CONVERSION DES DATES
      $date_debut=formaterDate($date_debut);
      $date_fin=formaterDate($date_fin);
      $heure_debut=formaterHeure($heure_debut);
      $heure_fin=formaterHeure($heure_fin);

      if ($date_fin == $date_debut)
      {
      echo "<p><b>$tab_debut[2]/$tab_debut[1]/$tab_debut[0]</b>";
      }
      else
      {
      echo "<p><b>$tab_debut[2]/$tab_debut[1]/$tab_debut[0]</b> - <b>$tab_fin[2]/$tab_fin[1]/$tab_fin[0]</b>";
      }
      $query2="SELECT * FROM $table_categories WHERE id = '$categorie'";
      $result2=mysql_query($query2);
      if($result2)
      {
      while($ligne=mysql_fetch_array($result2))
      {
      $categorie=$ligne["nom"];
      echo "<br><b>$categorie ";
      }
      }
      echo ": $nom</b>";
      if ($description)
      {
      echo "<br>$description";
      }
      if ($lieu)
      {
      echo "<br>> Lieu : $lieu";
      }
      if ($contact)
      {
      echo "<br>> Contact : $contact ";
      }
      if ($email)
      {
      echo "- <a href=\"mailto:$email\">$email</a> ";
      }
      if ($adresse)
      {
      echo "<br>$adresse ";
      }
      if ($telephone)
      {
      echo "<br>Tél : $telephone ";
      }
      if ($fax)
      {
      echo "- Fax : $fax ";
      }
      if ($url AND $lien)
      {
      echo "<br>> <a href=\"$url\" target=\"_blank\">$lien</a>";
      }
      echo "</p>";
      }
      ?>
<?php
//AFFICHAGE DU PIED DE PAGE
include("include/footer.php");
?>

3) Modifier "include/header.php"

<?php
/********************************************************************************
*    POUR PERSONNALISER XLAgenda AJOUTEZ VOTRE CODE HTML EN BAS DE CE FICHIER
*   N'AJOUTEZ PAS DE CODE HTML AVANT LA DERNIERE LIGNE DE CE FICHIER
*********************************************************************************/
//COOKIE VUE REDUITE / DEVELOPPEE - NE PAS EDITER NI DEPLACER
$cookie=(isset($_GET["cookie"])) ? $_GET["cookie"] : Null;
$xlagenda=(isset($_COOKIE["XLAgenda"])) ? $_COOKIE["XLAgenda"] : Null;
if ($cookie AND !is_numeric($cookie))
{
die ("<p>Erreur : une variable possède une valeur interdite.<br />L'exécution est interrompue par mesure de sécurité.</p>");
}
if ($cookie == "1")
{
setcookie("XLAgenda","1",time()+31536000,'/');
$reduit=1;
}
if ($cookie == "2")
{
setcookie("XLAgenda","0",time()+31536000,'/');
$reduit=0;
}
if ((!$cookie) AND (!$xlagenda))
{
$reduit=$defaut; //PAR DEFAUT LA VUE EST DETERMINEE PAR LA VARIABLE DEFINIE DANS LE FICHIER data.php
}
if ((!$cookie) AND ($xlagenda))
{
$reduit=$xlagenda;
}

$id=$_GET["id"];
      $query="SELECT * FROM $table_agenda WHERE id='$id'";
      $result=mysql_query($query);
      while($ligne=mysql_fetch_array($result))
      {
$nom=$ligne["nom"];
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
<head>
<title><?php echo $nom ?> <?php echo $titre_page ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="author" content="Unknown">
<meta name="author-url" content="http://xavier.lequere.net/xlagenda">
<META NAME="Identifier-URL" CONTENT="URL de votre site">
<META NAME="revisit-after" CONTENT="2 days">
<META name="distribution" content="global">
<META name="Googlebot" content="noarchive">
<META NAME="GOOGLEBOT" CONTENT="NOSNIPPET">
<META http-equiv="expires" content="Never">
<link rel="stylesheet" href="include/style.css" type="text/css" media="screen" >
<link rel="alternate" type="application/atom+xml" title="Calendar Feeds" href="feed.php" />

<script type="text/JavaScript">
<!--
function showEvent(id)
{
    if (document.getElementById('event_'+id).style.display == "none")
    {
        document.getElementById('event_'+id).style.display="block";
    }
    else
    {
        document.getElementById('event_'+id).style.display="none";
    }
}
// -->
</script>
</head>

<body>

Dans le header, j'ai fait les modification suivante :
- ajout du lien signalant la présence de flux

<link rel="alternate" type="application/atom+xml" title="Calendar Feeds" href="feed.php" />

- ajout d'un GET["id"] pour que le titre de l'évènement apparaisse dans le titre de la page évènement

$id=$_GET["id"];
      $query="SELECT * FROM $table_agenda WHERE id='$id'";
      $result=mysql_query($query);
      while($ligne=mysql_fetch_array($result))
      {
$nom=$ligne["nom"];
}
?>
<title><?php echo $nom ?> <?php echo $titre_page ?></title>

Pour en voir plus, en démonstration sur mon site > http://dub-connection.net/calendar

Dernière modification par Laurent (16/08/2009 16:58:31)

Hors ligne

#2 16/08/2009 17:03:12

Laurent
Membre
Inscription : 16/08/2009
Messages : 16
Site Web

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Si vous ne trouvez pas très claire mes explications, n'hésitez pas à laisser un message.

Hors ligne

#3 03/11/2009 20:58:54

Olivy
Membre

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Bonjour,

J'ai mis en place tes scripts pour les flux rss, et j'ai comme un gag avec firefox quand j'execute le feed.php
il me sort :

"Aucune information de style ne semble associée à ce fichier XML. L'arbre du document est affiché ci-dessous."

et il m'affiche l'arborescence des valeurs du fichier...

sous IE le problème ne se pose pas, j'ai bien les remontés des flux

si quelqu'un ou une avait une idée...

merci!

#4 04/11/2009 16:02:41

Olivy
Membre

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Olivy a écrit :

Bonjour,

J'ai mis en place tes scripts pour les flux rss, et j'ai comme un gag avec firefox quand j'execute le feed.php
il me sort :

"Aucune information de style ne semble associée à ce fichier XML. L'arbre du document est affiché ci-dessous."

et il m'affiche l'arborescence des valeurs du fichier...

sous IE le problème ne se pose pas, j'ai bien les remontés des flux

si quelqu'un ou une avait une idée...

merci!

bon... j'ai trouvé
j'avais oublié de renseigner "<link>URL du site ou de la page</link>"

pb résolu smile)

#5 20/10/2010 07:34:20

DuboisP
Membre
Inscription : 17/10/2010
Messages : 54

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

waouh, ça marche du 1er coup.
reste à customiser

Merci

Hors ligne

#6 24/11/2010 18:12:43

Rudloff
Membre
Inscription : 24/11/2010
Messages : 6

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Vachement pratique, j'ai juste eu à l'adapter un peu à mes besoins.
Pourquoi ce n'est pas inclus directement dans XLAgenda ? C'est quand même une fonction de base un flux RSS.

Hors ligne

#7 24/11/2010 21:31:09

DuboisP
Membre
Inscription : 17/10/2010
Messages : 54

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Rudloff a écrit :

Vachement pratique, j'ai juste eu à l'adapter un peu à mes besoins.
Pourquoi ce n'est pas inclus directement dans XLAgenda ? C'est quand même une fonction de base un flux RSS.

demande dans un entourage de non-informaticiens (et même d'informaticiens) ce qu'est un flux RSS.
et tu verras que ce n'est pas une fonction de base pour tout le monde. ;-)

Hors ligne

#8 24/11/2010 21:54:03

Rudloff
Membre
Inscription : 24/11/2010
Messages : 6

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Ce n'est pas ce que je voulais dire. Je sais que beaucoup de gens ne savent pas ce que c'est (mais je milite activement pour leur utilisation).
Ce que je voulais dire c'est que c'est quand même très rapide à mettre en place et bien utile pour ceux qui l'utilisent (et en plus ça peut servir de sitemap).

Hors ligne

#9 28/11/2010 01:06:44

ShuttleX34
Membre
Inscription : 22/11/2010
Messages : 28

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Bonjour à tous,
Super ce module de flux RSS. Après l'avoir un peu modifié pour avoir en plus les dates et l'heure, je l'ai utilisé pour mon site ; mais je voudrais faire apparaître les évènements dans mon site, dans une iframe nommée ifrm_pages de ma page d'accueil index.html.
L'adresse du lien, du style : "http://monsite.free.fr/index.html?ifrm_ … t.php?id=6", ne fonctionne pas.
Du moins, il semblerait que le paramètre "id:6", ne soit pas pris en compte et j'ai donc mon site avec une page évènement vide dans mon iframe.
J'ai testé "http://monsite.free.fr/xlagenda403/evenement.php?id=6" et ça s'affiche parfaitement.
Si quelqu'un à une solution, je suis preneur !....
Par avance un grand merci

Dernière modification par ShuttleX34 (28/11/2010 12:43:56)

Hors ligne

#10 28/11/2010 12:50:34

Rudloff
Membre
Inscription : 24/11/2010
Messages : 6

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Est-ce qu'il ne faudrait pas encoder l'URL passée en paramètre comme ceci ?
"http://monsite.free.fr/index.html?ifrm_ … php%3Fid=6"

Voire carrément comme ça :
"http://monsite.free.fr/index.html?ifrm_ … p%3Fid%3D6"

Dernière modification par Rudloff (28/11/2010 12:52:04)

Hors ligne

#11 28/11/2010 20:05:47

ShuttleX34
Membre
Inscription : 22/11/2010
Messages : 28

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Super,
C'est la deuxième solution qui est la bonne :
"http://monsite.free.fr/index.html?ifrm_ … p%3Fid%3D6"
Un très grand merci Rudolff, car cela faisait  plusieurs jours que je planchais dessus.

Hors ligne

#12 02/05/2011 22:44:41

grisou131
Membre
Inscription : 01/05/2011
Messages : 3

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Bonjour,

je suis un peu perdue là ... surement parce que je ne suis pas informaticienne !!!

Déjà, qu'appelez vous flux RSS ? Est-ce la possibilité pour un utilisateur de s'abonner à l'agenda pour recevoir les nouveaux événements dans sa boite mail ? Ou est-ce la possibilité de faire apparaitre sur une page de son site la liste des évènements à venir ?

Personnellement, c'est la deuxième option qui m'intéresse ... merci de votre aide si je suis complètement à coté de la plaque !

Sinon, est-ce que qq'un peut m'envoyer les fichiers "feed.php", "evenement.php" et "header.php" avec de vrais exemples à la place des "nom du site" ou je ne sais quoi d'autres ? car là, je ne comprends pas tjs ce qu'il faut mettre sad

Encore merci pour votre aide.

Hors ligne

#13 03/05/2011 00:09:16

Rudloff
Membre
Inscription : 24/11/2010
Messages : 6

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

grisou131 a écrit :

Déjà, qu'appelez vous flux RSS ? Est-ce la possibilité pour un utilisateur de s'abonner à l'agenda pour recevoir les nouveaux événements dans sa boite mail ? Ou est-ce la possibilité de faire apparaitre sur une page de son site la liste des évènements à venir ?

Un flux RSS permet à un utilisateur d'être prévenu des nouveaux événements via un agrégateur de flux (Google Reader, Thunderbird, etc).

Hors ligne

#14 03/05/2011 10:16:43

grisou131
Membre
Inscription : 01/05/2011
Messages : 3

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Rudloff a écrit :

Un flux RSS permet à un utilisateur d'être prévenu des nouveaux événements via un agrégateur de flux (Google Reader, Thunderbird, etc).

Ok ... cela peut être intéressant pour le site que je fais. Mais mes tests en local ne donnent rien ... j'ai le msg "Notice: Undefined index: id in C:\xampp\htdocs\OTMauvezin\xlagenda42\include\header.php on line 32" qui s'affiche ... et d'après Notepad++, cela correspond à la ligne $id=$_GET["id"]; ... mais je ne connais rien au php sad

Sinon, si je veux faire apparaitre la liste des événements sur la page d'accueil de mon site, je dois faire comment ?

Accepterais-tu que je t'envoie par mail mes fichiers feed.php, evenement.php et header.php pour me conseiller ?

merci pour ton aide

Hors ligne

#15 03/05/2011 14:49:06

Rudloff
Membre
Inscription : 24/11/2010
Messages : 6

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Oui, tu peux me les envoyer.
Je n'ai pas le temps de m'en occuper dans l'immédiat mais je regarderais dès que j'ai un peu de temps.

Hors ligne

#16 01/06/2011 23:08:56

tutti
Membre

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Wahou. Pour moi qui débute en php, je prends une vraie leçon ici.
Cet agenda et le flux vont m'être vraiment utiles. Je n'hésiterai pas à donner.
Merci

#17 16/05/2014 22:50:09

patcou
Membre
Inscription : 25/01/2010
Messages : 29

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Voila, si ca interesse des personnes, j'ai ajouté les flux RSS à xlagenda comme cela l'est proposé dans ce sujet. Merci à Laurent pour ce code. Par contre j'ai du modifier pour avoir les dates des événemenst avec les horaires et que lorsque l'on clique le titre sur la date, on puisse avoir l'événement clairement afficher dans xlagenda.

Donc je vous met à disposition le code de la page feed.php qui a subi une ou deux modifications (non majeures par rapport à celui de Laurent):

<?php
require_once('include/data.php');
include("include/data.php");
include("include/connexion.php");
include("include/functions.php");
//include("include/style.css");
//VERIFICATION DE L'EXISTENCE DES TABLES
$query="SELECT id FROM $table_agenda";
$result=mysql_query($query);
if (!$result)
{
die ("<p>XLAgenda n'est pas encore installé.<br>Vous devez <a href=\"install/index.php\">lancer l'installation automatique</a>.</p>");
}
//INITALISATION DES VARIABLES
$texte="";
$request="";
//RECUPERATION DES DONNEES
$the_user=(isset($_SESSION['the_user'])) ? $_SESSION['the_user'] : Null;
$year=(isset($_REQUEST["year"])) ? $_REQUEST["year"] : Null;
$month=(isset($_REQUEST["month"])) ? $_REQUEST["month"] : Null;
$day=(isset($_REQUEST["day"])) ? $_REQUEST["day"] : Null;
$categorie=(isset($_REQUEST["categorie"])) ? $_REQUEST["categorie"] : Null;
$navigation=(isset($_REQUEST["navigation"])) ? $_REQUEST["navigation"] : Null;
$limit=(isset($_REQUEST["limit"])) ? $_REQUEST["limit"] : Null;
//PROTECTION POUR EVITER LES INJECTIONS SQL
$year=mysql_real_escape_string($year);
$month=mysql_real_escape_string($month);
$day=mysql_real_escape_string($day);
$categorie=mysql_real_escape_string($categorie);
$navigation=mysql_real_escape_string($navigation);
$limit=mysql_real_escape_string($limit);
//CONTROLE DE LA VALIDITE DES DONNEES
if (($year AND !is_numeric($year)) OR ($month AND !is_numeric($month)) OR ($day AND !is_numeric($day)) OR ($categorie AND !is_numeric($categorie)) OR ($navigation AND !is_numeric($navigation)) OR ($limit AND !is_numeric($limit)))
{
die ("<p>Erreur : une variable possède une valeur interdite.<br />L'exécution est interrompue par mesure de sécurité.</p>");
}

//SI AUCUNE DATE N'A ETE SELECTIONNEE ON SELECTIONNE LA DATE DU JOUR
if (!$month)
{
$month = date("m");
//DANS CE CAS SEULS LES EVENEMENTS POSTERIEURS A LA DATE DU JOUR SERONT AFFICHES
$limit = "1";
}
if (!$year)
{
$year = date("Y");
}

//DETERMINATION DU NOM DU MOIS
if ($month == "1") $nom_mois="January";
if ($month == "2") $nom_mois="February";
if ($month == "3") $nom_mois="March";
if ($month == "4") $nom_mois="April";
if ($month == "5") $nom_mois="May";
if ($month == "6") $nom_mois="June";
if ($month == "7") $nom_mois="July";
if ($month == "8") $nom_mois="August";
if ($month == "9") $nom_mois="September";
if ($month == "10") $nom_mois="October";
if ($month == "11") $nom_mois="November";
if ($month == "12") $nom_mois="December";

//MEMORISATION DE LA DATE DU JOUR

$this_year = date("Y");
$this_month = date("m");
$this_day = date("d");
$this_date = date("Y-m-d");


function cleanText($intext) {
    return utf8_encode(htmlspecialchars(stripslashes($intext)));
}
header("Content-Type: text/xml;charset=utf-8");
$date_fmt = date("D, j M Y H:i:s O",strtotime($this_date));

echo <<<END
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>TITRE</title>
      <link>LIEN</link>
      <description>$description</description>
      <pubDate>$date</pubDate>
      <language>fr</language>
<image>
      <title>TEST</title>
<url>CHEMIN_LOGO</url>
<link>LIEN</link>
<width>60</width>
<height>57</height>
</image>
END;

$date1=array("$year","$month","01");
    $date1=implode("-",$date1);
    if ($limit)
    //CAS DU CHARGEMENT DE LA PAGE - ON CHERCHE SEULEMENT LES EVENEMENTS POSTERIEURS A LA DATE DU JOUR
    $date1=$this_date;

$query1 = "SELECT * FROM $table_agenda WHERE (date_debut AND date_fin >= '$date1' AND actif = '1') ORDER BY date_debut ASC";
$result1 = @mysql_query($query1);
      while($ligne=mysql_fetch_array($result1))
      {
$tab_debut=explode("-",$date_debut);
$id=$ligne["id"];
$title          = cleanText($ligne["nom"]);
$date_debut = $ligne["date_debut"];
$heure_debut = $ligne["heure_debut"];
$date_ev = $date_debut.' '.$heure_debut;
#$date_debut       = date("d-m-Y",strtotime($date_debut));
$date_debut_fmt=date("j M Y H:i:s O",strtotime($date_ev));
$description = $ligne["description"];
$description = cleanText(convert_html($ligne["description"]));
$class=$ligne["categorie"];
$link='http://adresse_du_site/xlagenda42/index.php?day='.date("j",strtotime($date_ev)).'&amp;month='.date("m",strtotime($date_ev)).'&amp;year='.date("Y",strtotime($date_ev));
echo <<<END
      <item>
         <title>$title</title>     
         <link>$link</link>
         <pubDate>$date_debut_fmt</pubDate>
         <description>$description</description>
         <guid>$link</guid>
      </item>
END;
}

echo <<<END

   </channel>
</rss>

END;

?>

'
Il faut bien sur mettre l'adresse du site web ou est placé xlagenda42 à la place de 'adresse_du_site'

Dernière modification par patcou (28/05/2014 16:23:11)

Hors ligne

#18 27/05/2016 09:43:14

patcou
Membre
Inscription : 25/01/2010
Messages : 29

Re : créer des flux RSS pour XLAgenda 4 - explication complète de A à Z

Bonjour à tous, voila la dernière version pour le flux RSS compatible avec xlagenda44.
Ce script est toujours tirer du travail de Laurent.

Il suffit de changer la variable mon_site par le chemin de votre site et également de fournir le chemin pour aller à une image de votre site à la place de mon_logo.png.

Ce flux est pleinement fonctionnel sur Firefox, pas fait de test sur d'autres navigateurs.
Comme je suis un débutant en php, il y a sans doute une meilleure façon de faire.

L'essentiel des changements concerne les nouvels fonction d'appel de mysql en php 5.4
Exemple : La fonction

mysql_query($query);

devient

mysqli_query($connexion,$query);

Voila le code finalisé

<?php
require_once('include/data.php');
include("include/data.php");
include("include/connexion.php");
include("include/functions.php");
include("lang/".getLang()."/common.php");
//include("include/style.css");
//VERIFICATION DE L'EXISTENCE DES TABLES
$query="SELECT id FROM $table_agenda";
$result=mysqli_query($connexion,$query);
if (!$result)
{
die ("<p>XLAgenda n'est pas encore installé.<br>Vous devez <a href=\"install/index.php\">lancer l'installation automatique</a>.</p>");
}
//INITALISATION DES VARIABLES
$texte="";
$request="";
//RECUPERATION DES DONNEES
$the_user=(isset($_SESSION['the_user'])) ? $_SESSION['the_user'] : Null;
$year=(isset($_REQUEST["year"])) ? $_REQUEST["year"] : Null;
$month=(isset($_REQUEST["month"])) ? $_REQUEST["month"] : Null;
$day=(isset($_REQUEST["day"])) ? $_REQUEST["day"] : Null;
$categorie=(isset($_REQUEST["categorie"])) ? $_REQUEST["categorie"] : Null;
$navigation=(isset($_REQUEST["navigation"])) ? $_REQUEST["navigation"] : Null;
$limit=(isset($_REQUEST["limit"])) ? $_REQUEST["limit"] : Null;
//PROTECTION POUR EVITER LES INJECTIONS SQL
$year=mysqli_real_escape_string($connexion,$year);
$month=mysqli_real_escape_string($connexion,$month);
$day=mysqli_real_escape_string($connexion,$day);
$categorie=mysqli_real_escape_string($connexion,$categorie);
$navigation=mysqli_real_escape_string($connexion,$navigation);
$limit=mysqli_real_escape_string($connexion,$limit);
//CONTROLE DE LA VALIDITE DES DONNEES
if (($year AND !is_numeric($year)) OR ($month AND !is_numeric($month)) OR ($day AND !is_numeric($day)) OR ($categorie AND !is_numeric($categorie)) OR ($navigation AND !is_numeric($navigation)) OR ($limit AND !is_numeric($limit)))
{
    die ("<p>".$lang['common_uninstalled1']."<br />".add_link($lang['common_uninstalled2'],"install/index.php")."</p>");
}

//SI AUCUNE DATE N'A ETE SELECTIONNEE ON SELECTIONNE LA DATE DU JOUR
if (!$month)
{
$month = date("m");
//DANS CE CAS SEULS LES EVENEMENTS POSTERIEURS A LA DATE DU JOUR SERONT AFFICHES
$limit = "1";
}
if (!$year)
{
$year = date("Y");
}

//DETERMINATION DU NOM DU MOIS
if ($month == "1") $nom_mois="January";
if ($month == "2") $nom_mois="February";
if ($month == "3") $nom_mois="March";
if ($month == "4") $nom_mois="April";
if ($month == "5") $nom_mois="May";
if ($month == "6") $nom_mois="June";
if ($month == "7") $nom_mois="July";
if ($month == "8") $nom_mois="August";
if ($month == "9") $nom_mois="September";
if ($month == "10") $nom_mois="October";
if ($month == "11") $nom_mois="November";
if ($month == "12") $nom_mois="December";

//MEMORISATION DE LA DATE DU JOUR

$this_year = date("Y");
$this_month = date("m");
$this_day = date("d");
$this_date = date("Y-m-d");


function cleanText($intext) {
    return utf8_encode(htmlspecialchars(stripslashes($intext)));
}
header("Content-Type: text/xml;charset=utf-8");
$date_fmt = date(DATE_RSS,strtotime($this_date));
echo <<<END
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Informations_club</title>
      <link>mon_site</link>
      <description>Flux RSS de l'agenda</description>
      <pubDate>$date</pubDate>
      <language>fr</language>
<image>
<url>mon_logo.png</url>
<link>www.astromaine.fr</link>
<width>60</width>
<height>57</height>
</image>
END;
$date1=array("$year","$month","01");
    $date1=implode("-",$date1);
    if ($limit)
    //CAS DU CHARGEMENT DE LA PAGE - ON CHERCHE SEULEMENT LES EVENEMENTS POSTERIEURS A LA DATE DU JOUR
    $date1=$this_date;


$query1 = "SELECT * FROM $table_agenda WHERE (date_debut AND date_fin >= '$date1' AND actif = '1') ORDER BY date_debut ASC";
$result1 = @mysqli_query($connexion,$query1);
while($ligne=mysqli_fetch_array($result1))
      {
        $tab_debut=explode("-",$date_debut);
        $id=$ligne["id"];
        $title = cleanText($ligne["nom"]);
        $date_debut = $ligne["date_debut"];
        $heure_debut = $ligne["heure_debut"];
        $date_ev = $date_debut.' '.$heure_debut;
        $date_debut_fmt=date("j M Y H:i:s O",strtotime($date_ev));
        $description = $ligne["description"];
        $description = cleanText(($ligne["description"]));
        $class=$ligne["categorie"];
        $link='mon_site/xlagenda44/index.php?day='.date("j",strtotime($date_ev)).'&amp;month='.date("m",strtotime($date_ev)).'&amp;year='.date("Y",strtotime($date_ev));

echo <<<END
      <item>
      <title>$title</title>     
      <link>$link</link>
      <pubDate>$date_debut_fmt</pubDate>
      <description>$description</description>
      <guid>$link</guid>
      </item>
END;
}
echo <<<END
   </channel>
</rss>
END;
?>

Hors ligne

Pied de page des forums