[ Index ]
 

Code source de SPIP 1.9.2c

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/ecrire/action/ -> ical.php (source)

   1  <?php
   2  
   3  /***************************************************************************\
   4   *  SPIP, Systeme de publication pour l'internet                           *
   5   *                                                                         *
   6   *  Copyright (c) 2001-2007                                                *
   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  
  13  if (!defined("_ECRIRE_INC_VERSION")) return;
  14  
  15  
  16  include_spip('inc/lang');
  17  utiliser_langue_visiteur();
  18  include_spip('inc/texte');
  19  include_spip('inc/charsets');
  20  include_spip('inc/meta');
  21  include_spip('inc/acces');
  22  
  23  // avec le nouveau compilateur tout ceci me semble faisable en squelette.
  24  
  25  // http://doc.spip.org/@ligne_uid
  26  function ligne_uid ($texte) {
  27      echo filtrer_ical("UID:$texte @ " . url_de_base())."\n";
  28  }
  29  
  30  // http://doc.spip.org/@action_ical_dist
  31  function action_ical_dist()
  32  {
  33      global $id_auteur, $arg, $action, $titres;
  34  
  35      // compatibilite des URLs spip_cal.php3?id=xxx&cle=yyy (SPIP 1.8)
  36      if (!$id_auteur AND _request('id')) {
  37          $id_auteur = _request('id');
  38          $arg = _request('cle');
  39      }
  40  
  41      if (verifier_low_sec($id_auteur, $arg, $action)) {
  42          $result = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur=" . intval($id_auteur));
  43  
  44          if ($row = spip_fetch_array($result)) {
  45              $id_utilisateur=$row['id_auteur'];
  46              $nom_utilisateur=extraire_multi($row['nom']);
  47              $statut_utilisateur=$row['statut'];
  48              $langue_utilisateur=$row['lang'];
  49          }
  50        }
  51      if (!$id_utilisateur) {
  52          spip_log("spip_cal: acces interdit a $id_auteur par $arg");
  53          echo _T('info_acces_interdit');
  54          exit;
  55      }
  56      lang_select($langue_utilisateur);
  57      $nom_site = $GLOBALS['meta']["nom_site"];
  58      $adresse_site = url_de_base();
  59      $spip = "SPIP " . $GLOBALS['spip_version_affichee'] . ' ' . $GLOBALS['home_server'];
  60  
  61      header("Content-Type: text/calendar; charset=utf-8");
  62      echo    filtrer_ical ("BEGIN:VCALENDAR"), "\n",
  63          filtrer_ical ("CALSCALE:GREGORIAN"), "\n",
  64          filtrer_ical ("PRODID: $spip"), "\n",
  65          filtrer_ical ("VERSION:2.0"), "\n",
  66          filtrer_ical ("X-WR-CALNAME;VALUE=TEXT:$nom_site / $nom_utilisateur"), "\n",
  67          filtrer_ical ("X-WR-RELCALID:cal$id_utilisateur @ $adresse_site"), "\n";
  68      spip_ical_rendez_vous($id_utilisateur, $nom_site);
  69      spip_ical_taches($id_utilisateur, $nom_site);
  70  
  71      $titres = Array();
  72      $nb_articles = spip_ical_articles($nom_site);
  73      $nb_breves = spip_ical_breves($nom_site);
  74      if ($nb_articles || $nb_breves) {
  75          if ($nb_articles > 0) $titre_prop[] = _T('info_articles_proposes').": ".$nb_articles;
  76          if ($nb_breves > 0) $titre_prop[] = _T('info_breves_valider').": ".$nb_breves;
  77          $titre = join($titre_prop," / ");
  78          echo    filtrer_ical ("BEGIN:VTODO"), "\n",
  79              filtrer_ical ("SUMMARY:[$nom_site] $titre"), "\n";
  80          ligne_uid ("prop");
  81          $texte = join($titres," / ");
  82          echo filtrer_ical ("DESCRIPTION:$texte"), "\n";
  83      
  84          $today=getdate(time());
  85          $jour = $today["mday"];
  86          $mois=$today["mon"];
  87          $annee=$today["year"];
  88          echo    filtrer_ical ("DTSTAMP:".date ("Ymd\THis", mktime (12,0,0,$mois,$jour,$annee))), "\n",
  89              filtrer_ical ("DTSTART:".date ("Ymd\THis", mktime (12,0,0,$mois,$jour,$annee))), "\n",
  90              filtrer_ical ("CATEGORIES:"._T('icone_a_suivre')), "\n",
  91              filtrer_ical ("URL:$adresse_site" . _DIR_RESTREINT_ABS), "\n",
  92              filtrer_ical ("END:VTODO"), "\n";
  93      }
  94      spip_ical_messages($id_utilisateur, $nom_site);
  95      if ($statut_utilisateur == "0minirezo") {
  96          spip_ical_forums($id_utilisateur, $nom_site);
  97      }
  98      echo filtrer_ical ("END:VCALENDAR"), "\n";
  99  }
 100  
 101  // http://doc.spip.org/@spip_ical_rendez_vous
 102  function spip_ical_rendez_vous($id_utilisateur, $nom_site)
 103  {
 104      $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");
 105      while($row=spip_fetch_array($result_messages)){
 106          $id_message=$row['id_message'];
 107          $date_heure=$row["date_heure"];
 108          $date_heure_fin=$row["date_fin"];
 109          //$titre=typo($row["titre"]);
 110          $titre = $row["titre"];
 111          $texte = $row["texte"];
 112          $type=$row["type"];
 113  
 114          if ($type == 'normal') {
 115              $le_type = _T('info_message_2');
 116              $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)");
 117              while($row_auteur=spip_fetch_array($result_auteurs)){
 118                  $id_auteur=$row_auteur['id_auteur'];
 119                  $nom_auteur=$row_auteur['nom'];
 120                  $email = $row_auteur ['email'];
 121  
 122                  if ($id_auteur != $id_utilisateur) $titre = $titre." - ".$nom_auteur;
 123              
 124                  if ($id_auteur == $id_utilisateur) echo filtrer_ical ("ORGANIZER:$nom_auteur <$email>"), "\n";
 125                  else  echo filtrer_ical ("ATTENDEE:$nom_auteur <$email>"), "\n";
 126              }
 127          }
 128          else if ($type == 'pb') {
 129              $le_type = _T('info_pense_bete');
 130          }
 131          else if ($type == 'affich') {
 132              $le_type = _T('info_annonce');
 133              $titre = "[$nom_site] $titre";
 134          }
 135  
 136          echo    filtrer_ical ("BEGIN:VEVENT"), "\n",
 137              filtrer_ical ("SUMMARY:".$titre), "\n",
 138              filtrer_ical ("DESCRIPTION:$texte"), "\n";
 139  
 140          ligne_uid ("mess$id_message");
 141  
 142          echo    filtrer_ical ("DTSTAMP:".date_ical($date_heure)), "\n",
 143              filtrer_ical ("DTSTART:".date_ical($date_heure)), "\n";
 144          if ($date_heure_fin > $date_heure) echo filtrer_ical ("DTEND:".date_ical($date_heure_fin)), "\n";
 145          
 146          echo    filtrer_ical ("CATEGORIES:$le_type"), "\n",
 147              filtrer_ical ("URL:" . generer_url_ecrire("message","id_message=$id_message")), "\n",
 148              filtrer_ical ("END:VEVENT"), "\n";
 149      }
 150  }
 151  
 152  // http://doc.spip.org/@spip_ical_taches
 153  function spip_ical_taches($id_utilisateur, $nom_site)
 154  {
 155      $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' AND messages.rv!='oui' AND messages.statut='publie' GROUP BY messages.id_message ORDER BY messages.date_heure");
 156      while($row=spip_fetch_array($result_messages)){
 157          $id_message=$row['id_message'];
 158          $date_heure=$row["date_heure"];
 159          $titre = $row["titre"];
 160          $texte = $row["texte"];
 161          $type=$row["type"];
 162  
 163          if ($type == 'normal') {
 164              $le_type = _T('info_message_2');
 165              $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)");
 166              while($row_auteur=spip_fetch_array($result_auteurs)){
 167                  $id_auteur=$row_auteur['id_auteur'];
 168                  $nom_auteur=$row_auteur['nom'];
 169                  $email = $row_auteur ['email'];
 170  
 171                  if ($id_auteur != $id_utilisateur) $titre = $titre." - ".$nom_auteur;
 172              
 173                  if ($id_auteur == $id_utilisateur) echo filtrer_ical ("ORGANIZER:$nom_auteur <$email>"), "\n";
 174                  else  echo filtrer_ical ("ATTENDEE:$nom_auteur <$email>"), "\n";
 175              }
 176          }
 177          else if ($type == 'pb') {
 178              $le_type = _T('info_pense_bete');
 179          }
 180          else if ($type == 'affich') {
 181              $le_type = _T('info_annonce');
 182              $titre = "[$nom_site] $titre";
 183          }
 184      
 185          echo    filtrer_ical ("BEGIN:VTODO"), "\n",
 186              filtrer_ical ("SUMMARY:".$titre), "\n",
 187              filtrer_ical ("DESCRIPTION:$texte"), "\n";
 188          ligne_uid ("mess$id_message");
 189          echo    filtrer_ical ("DTSTAMP:".date_ical($date_heure)), "\n",
 190              filtrer_ical ("DTSTART:".date_ical($date_heure)), "\n",
 191              filtrer_ical ("CATEGORIES:$le_type"), "\n",
 192              filtrer_ical ("URL:" . generer_url_ecrire("message","id_message=$id_message")), "\n",
 193              filtrer_ical ("END:VTODO"), "\n";
 194      }
 195  }
 196  
 197  // http://doc.spip.org/@spip_ical_articles
 198  function spip_ical_articles($nom_site)
 199  {
 200      global $titres;
 201      $result_articles = spip_query("SELECT id_article, titre, date FROM spip_articles WHERE statut = 'prop'");
 202      while($row=spip_fetch_array($result_articles)){
 203          $id_article=$row['id_article'];
 204          $titre = supprimer_numero($row['titre']);
 205          $titres[] = $titre;
 206          $date_heure = $row['date'];
 207          $nb_articles ++;
 208          echo filtrer_ical ("BEGIN:VEVENT"), "\n",
 209          filtrer_ical ("SUMMARY:[$nom_site] $titre ("._T('info_article_propose').")"), "\n";
 210          ligne_uid ("article$id_article");
 211          echo filtrer_ical ("DTSTAMP:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))), "\n",
 212              filtrer_ical ("DTSTART;VALUE=DATE:".date ("Ymd", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))), "\n",
 213              filtrer_ical ("CATEGORIES:"._T('info_article_propose')), "\n",
 214              filtrer_ical ("URL:" . generer_url_ecrire("articles","id_article=$id_article")), "\n",
 215              filtrer_ical ("END:VEVENT"), "\n";
 216      }
 217      return $nb_articles;
 218  }
 219  
 220  
 221  // http://doc.spip.org/@spip_ical_breves
 222  function spip_ical_breves($nom_site)
 223  {
 224      global $titres;
 225      $result = spip_query("SELECT id_breve, titre, date_heure FROM spip_breves WHERE statut = 'prop'");
 226      while($row=spip_fetch_array($result)){
 227          $id_breve=$row['id_breve'];
 228          $titre = supprimer_numero($row['titre']);
 229          $titres[] = $titre;
 230          $date_heure = $row['date_heure'];
 231          $nb_breves++;
 232          echo filtrer_ical ("BEGIN:VEVENT"), "\n",
 233              filtrer_ical ("SUMMARY:[$nom_site] $titre ("._T('item_breve_proposee').")"), "\n";
 234          ligne_uid ("breve$id_breve");
 235          echo    filtrer_ical ("DTSTAMP:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))), "\n",
 236              filtrer_ical ("DTSTART;VALUE=DATE:".date ("Ymd", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))), "\n",
 237              filtrer_ical ("CATEGORIES:"._T('item_breve_proposee')), "\n",
 238              filtrer_ical ("URL:" . generer_url_ecrire("breves_voir","id_breve=$id_breve")), "\n",
 239              filtrer_ical ("END:VEVENT"), "\n";
 240      }
 241      return $nb_breves;
 242  }
 243  
 244  
 245  // http://doc.spip.org/@spip_ical_messages
 246  function spip_ical_messages($id_utilisateur, $nom_site)
 247  {
 248      $result_messages = spip_query("SELECT * FROM spip_messages AS messages, spip_auteurs_messages AS lien WHERE lien.id_auteur=$id_utilisateur AND vu='non' AND statut='publie' AND type='normal' AND lien.id_message=messages.id_message");
 249      while($row=spip_fetch_array($result_messages)){
 250          $id_message=$row['id_message'];
 251          $date_heure=$row["date_heure"];
 252          $titre = $row["titre"];
 253          $texte = $row["texte"];
 254          $type=$row["type"];
 255  
 256          if ($type == 'normal') {
 257              $le_type = _T('info_message_2');
 258              $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)");
 259              while($row_auteur=spip_fetch_array($result_auteurs)){
 260                  $id_auteur=$row_auteur['id_auteur'];
 261                  $nom_auteur = $row_auteur['nom'];
 262                  $email = $row_auteur ['email'];
 263  
 264                  if ($id_auteur != $id_utilisateur) $titre = $nom_auteur." - ".$titre;
 265              
 266                  if ($id_auteur == $id_utilisateur) echo filtrer_ical ("ORGANIZER:$nom_auteur <$email>"), "\n";
 267                  else  echo filtrer_ical ("ATTENDEE:$nom_auteur <$email>"), "\n";
 268              }
 269              $result_forum = spip_query("SELECT * FROM spip_forum WHERE statut='perso' AND id_message='$id_message' ORDER BY date_heure DESC LIMIT 1");
 270  
 271              if ($row_forum = spip_fetch_array($result_forum)) {
 272                  $date_heure = $row_forum["date_heure"];
 273                  $texte = $row_forum["texte"];
 274                  $titre = $row_forum["titre"];
 275                  $id_auteur = $row_forum["id_auteur"];
 276  
 277                  $result_auteurs2 = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur = $id_auteur");
 278                  if ($row_auteur2 = spip_fetch_array($result_auteurs2)){
 279                      $nom_auteur = $row_auteur2['nom'];
 280                      $email = $row_auteur2 ['email'];
 281                  
 282                      $titre = $nom_auteur." - ".$titre;
 283                  }
 284              }
 285          }
 286          else if ($type == 'pb') {
 287              $le_type = _T('info_pense_bete');
 288          }
 289          else if ($type == 'affich') {
 290              $le_type = _T('info_annonce');
 291              $titre = "[$nom_site] $titre";
 292          }
 293      
 294          echo    filtrer_ical ("BEGIN:VTODO"), "\n",
 295              filtrer_ical ("SUMMARY:".$titre), "\n",
 296              filtrer_ical ("DESCRIPTION:$texte"), "\n";
 297      ligne_uid ("nouv_mess$id_message");
 298      echo    filtrer_ical ("DTSTAMP:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))), "\n",
 299          filtrer_ical ("DTSTART:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))), "\n",
 300          filtrer_ical ("CATEGORIES:$le_type"), "\n",
 301          filtrer_ical ("URL:" . generer_url_ecrire("message","id_message=$id_message")), "\n",
 302          filtrer_ical ("END:VTODO"), "\n";
 303      }    
 304  }
 305  
 306  // http://doc.spip.org/@spip_ical_forums
 307  function spip_ical_forums($id_utilisateur, $nom_site)
 308  {
 309      $result_forum = spip_query("SELECT * FROM spip_forum WHERE statut = 'prop'");
 310  
 311      while($row=spip_fetch_array($result_forum)){
 312          $nb_forum ++;
 313      
 314          $id_forum=$row['id_forum'];
 315          $date_heure = $row['date_heure'];
 316          $titre = $row['titre'];
 317          $texte = $row['texte'];
 318          $auteur = $row['auteur'];
 319          $email_auteur = $row['email_auteur'];
 320          if ($email_auteur) $email_auteur = "<$email_auteur>";
 321          
 322          echo    filtrer_ical ("BEGIN:VEVENT"), "\n",
 323              filtrer_ical ("SUMMARY:[$nom_site] $titre "._T('icone_forum_suivi')), "\n",
 324              filtrer_ical ("DESCRIPTION:$texte\r$auteur $email_auteur"), "\n";
 325          ligne_uid ("forum$id_forum");
 326          echo    filtrer_ical ("DTSTAMP:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))), "\n",
 327              filtrer_ical ("DTSTART:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure)))), "\n",
 328              filtrer_ical ("DTEND:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure)+60,0,mois($date_heure),jour($date_heure),annee($date_heure)))), "\n",
 329              filtrer_ical ("CATEGORIES:"._T('icone_forum_suivi')), "\n",
 330              filtrer_ical ("URL:" . generer_url_ecrire("controle_forum")), "\n",
 331              filtrer_ical ("END:VEVENT"), "\n";
 332      }
 333  
 334      if ($nb_forum > 0) {
 335          echo filtrer_ical ("BEGIN:VTODO"), "\n",
 336              filtrer_ical ("SUMMARY:[$nom_site] "._T('icone_forum_suivi').": $nb_forum"), "\n";
 337          ligne_uid ("forum");
 338          
 339          $today=getdate(time());
 340          $jour = $today["mday"];
 341          $mois=$today["mon"];
 342          $annee=$today["year"];
 343          echo    filtrer_ical ("DTSTAMP:".date ("Ymd\THis", mktime (12,0,0,$mois,$jour,$annee))), "\n",
 344              filtrer_ical ("DTSTART:".date ("Ymd\THis", mktime (12,0,0,$mois,$jour,$annee))), "\n",
 345              filtrer_ical ("CATEGORIES:"._T('icone_forum_suivi')), "\n",
 346              filtrer_ical ("URL:" . generer_url_ecrire("controle_forum")), "\n",
 347              filtrer_ical ("END:VTODO"), "\n";
 348      }
 349  }
 350  ?>


Généré le : Wed Nov 21 10:20:27 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics