Update of /home/spip-cvs/spip/ecrire/Include/MySQL3
In directory alan:/tmp/cvs-serv17950/Include/MySQL3
Added Files:
calendrier.php
Log Message:
Remplace inc_agenda pour la partie SQL exclusivement
--- NEW FILE: calendrier.php ---
<?php
//
// Ce fichier ne sera execute qu'une fois
if (defined("_INCLURE_MYSQL3_CALENDRIER")) return;
define("_INCLURE_MYSQL3_CALENDRIER", "1");
function sql_calendrier_interval_jour($annee,$mois,$jour)
{
$avant = "'$annee-$mois-$jour'";
$apres = "'$annee-$mois-$jour 23:59:59'";
return array(sql_calendrier_interval_articles($avant, $apres),
sql_calendrier_interval_breves($avant, $apres),
sql_calendrier_interval_rv($avant, $apres));
}
function sql_calendrier_interval_semaine($annee,$mois,$jour)
{
$debut = $jour-date("w", mktime(0,0,0,$mois, $jour, $annee));
$avant = "'" . date("Y-m-d", mktime(1,1,1,$mois,$debut,$annee)) . "'";
$apres = "'" . date("Y-m-d", mktime(1,1,1,$mois,$debut+7,$annee)) . "'";
return array(sql_calendrier_interval_articles($avant, $apres),
sql_calendrier_interval_breves($avant, $apres),
sql_calendrier_interval_rv($avant, $apres));
}
function sql_calendrier_interval_mois($annee,$mois,$jour)
{
$periode = $annee . '-' . sprintf("%02d", $mois) . '-01';
$avant = "'$periode'";
$apres = "DATE_ADD('$periode', INTERVAL 1 MONTH)";
return array(sql_calendrier_interval_articles($avant, $apres),
sql_calendrier_interval_breves($avant, $apres),
sql_calendrier_interval_rv($avant, $apres));
}
# 3 fonctions retournant les evenements d'une période
# le tableau retourné est indexe par les balises du format ics
# afin qu'il soit facile de produire de tels documents.
function sql_calendrier_interval_articles($avant, $apres)
{
$evenements= array();
$result=spip_query("
SELECT id_article, titre, date
FROM spip_articles
WHERE statut='publie'
AND date >= $avant
AND date < $apres
ORDER BY date
");
while($row=spip_fetch_array($result)){
$amj = sql_calendrier_jour_ical($row['date']);
$evenements[$amj][]=
array(
'URL' => "articles.php3?id_article=" . $row['id_article'],
'CATEGORIES' => 'a',
'DESCRIPTION' => $row['titre']);
}
return $evenements;
}
function sql_calendrier_interval_breves($avant, $apres)
{
$evenements= array();
$result=spip_query("
SELECT id_breve, titre, date_heure
FROM spip_breves
WHERE statut='publie'
AND date_heure >= $avant
AND date_heure < $apres
ORDER BY date_heure
");
while($row=spip_fetch_array($result)){
$amj = sql_calendrier_jour_ical($row['date_heure']);
$evenements[$amj][]=
array(
'URL' => "breves_voir.php3?id_breve=" . $row['id_breve'],
'CATEGORIES' => 'b',
'DESCRIPTION' => $row['titre']);
}
return $evenements;
}
function sql_calendrier_interval_rv($avant, $apres)
{
global $connect_id_auteur;
$evenements= array();
$result=spip_query("
SELECT messages.id_message, messages.titre, messages.texte,
messages.date_heure, messages.date_fin, messages.type
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 >= $avant
AND messages.date_heure <= $apres
AND messages.statut='publie'
GROUP BY messages.id_message
ORDER BY messages.date_heure
");
while($row=spip_fetch_array($result)){
$date_heure=$row["date_heure"];
$date_fin=$row["date_fin"];
$type=$row["type"];
$id_message=$row['id_message'];
if ($type=="pb")
$cat = 2;
else {
if ($type=="affich")
$cat = 4;
else {
if ($type!="normal")
$cat = 12;
else {
$cat = 9;
$auteurs = array();
$result_aut=spip_query("
SELECT auteurs.nom
FROM spip_auteurs AS auteurs,
spip_auteurs_messages AS lien
WHERE (lien.id_message='$id_message'
AND (auteurs.id_auteur!='$connect_id_auteur'
AND lien.id_auteur=auteurs.id_auteur))");
while($row_auteur=spip_fetch_array($result_aut)){
$auteurs[] = $row_auteur['nom'];
}
}
}
}
$amj = sql_calendrier_jour_ical($date_heure);
$evenements[$amj][]=
array(
'URL' => "message.php3?id_message=$id_message",
'DTSTART' => date_ical($date_heure),
'DTEND' => date_ical($date_fin),
'DESCRIPTION' => $row['texte'],
'SUMMARY' => $row['titre'],
'CATEGORIES' => $cat,
'ATTENDEE' => (count($auteurs) == 0) ? '' : join($auteurs,", "));
}
return $evenements;
}
function sql_calendrier_taches_annonces () {
$r = array();
$result = spip_query("
SELECT * FROM spip_messages
WHERE type = 'affich' AND rv != 'oui' AND statut = 'publie' ORDER BY date_heure DESC");
if (spip_num_rows($result) > 0){
while ($x = spip_fetch_object($result)) $r[] = $x;
}
return $r;
}
function sql_calendrier_taches_pb () {
global $connect_id_auteur;
$r = array();
$result = spip_query("
SELECT * FROM spip_messages AS messages
WHERE id_auteur=$connect_id_auteur AND statut='publie' AND type='pb' AND rv!='oui'");
if (spip_num_rows($result) > 0){
$r = array();
while ($x = spip_fetch_object($result)) $r[] = $x;
}
return $r;
}
function sql_calendrier_taches_rv () {
global $connect_id_auteur;
$r = array();
$result = spip_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))
OR (messages.date_heure < NOW() AND messages.date_fin > NOW() ))
AND messages.statut='publie'
GROUP BY messages.id_message
ORDER BY messages.date_heure");
if (spip_num_rows($result) > 0){
$r = array();
while ($x = spip_fetch_object($result)) $r[] = $x;
}
return $r;
}
function sql_calendrier_agenda ($mois, $annee) {
global $connect_id_auteur;
$date = date("Y-m-d", mktime(0,0,0,$mois, 1, $annee));
$mois = mois($date);
$annee = annee($date);
// rendez-vous personnels dans le mois
$result_messages=spip_query("SELECT messages.date_heure 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'");
$rv = array();
while($row=spip_fetch_array($result_messages)){
$rv[journum($row['date_heure'])] = 1;
}
return $rv;
}
function sql_calendrier_jour_ical($d)
{return substr($d, 0, 4) . substr($d, 5, 2) .substr($d, 8, 2);}
?>