function agenda_memo_evt_full($date_deb=0, $date_fin=0 , $titre='', $descriptif='', $lieu='', $url='', $cal='') { static $evenements = array(); if (!$date_deb) return $evenements; $url=str_replace("&","&",$url); $idatedeb = date_ical(reset(explode(" ",$date_deb))." 00:00:00"); $idatefin = date_ical(reset(explode(" ",$date_fin))." 00:00:00"); $cal = trim($cal); // func_get_args (filtre alterner) rajoute \n !!!! $startday1=explode(' ',$date_deb); $startday1=$startday1['0'].' 00:00:00'; $ts_startday1=strtotime($startday1); $ts_date_fin=strtotime($date_fin); $maxdays=365; while (($ts_startday1<=$ts_date_fin)&&($maxdays-->0)) { $day=date('Y-m-d H:i:s',$ts_startday1); $evenements[$cal][(date_anneemoisjour($day))][] = array( 'CATEGORIES' => $cal, 'DTSTART' => $idatedeb, 'DTEND' => $idatefin, 'DESCRIPTION' => $descriptif, 'SUMMARY' => $titre, 'LOCATION' => $lieu, 'URL' => $url); $ts_startday1 += 26*3600; // le jour suivant : +26 h pour gerer les changements d'heure $ts_startday1 = mktime(0, 0, 0, date("m",$ts_startday1), date("d",$ts_startday1), date("Y",$ts_startday1)); // et remise a zero de l'heure } // toujours retourner vide pour qu'il ne se passe rien return ""; }
function quete_calendrier_interval_rv($avant, $apres) { global $connect_id_auteur; $evenements= $auteurs = array(); if (!$connect_id_auteur) return $evenements; $result=sql_select("M.id_message, M.titre, M.texte, M.date_heure, M.date_fin, M.type", "spip_messages AS M LEFT JOIN spip_auteurs_messages AS L ON (L.id_message=M.id_message)", "(L.id_auteur=$connect_id_auteur OR M.type='affich') AND M.rv='oui' AND ((M.date_fin >= $avant OR M.date_heure >= $avant) AND M.date_heure <= $apres) AND M.statut='publie'", "M.id_message", "M.date_heure"); while($row=sql_fetch($result)){ $date_heure=$row["date_heure"]; $date_fin=$row["date_fin"]; $type=$row["type"]; $id_message=$row['id_message']; if ($type=="pb") $cat = 'calendrier-couleur2'; else { if ($type=="affich") $cat = 'calendrier-couleur4'; else { if ($type!="normal") $cat = 'calendrier-couleur12'; else { $cat = 'calendrier-couleur9'; $auteurs = array_map('array_shift', sql_allfetsel('id_auteur', 'spip_auteurs_messages', "id_message=$id_message AND id_auteur!=$connect_id_auteur")); } } } $jour_avant = substr($avant, 9,2); $mois_avant = substr($avant, 6,2); $annee_avant = substr($avant, 1,4); $jour_apres = substr($apres, 9,2); $mois_apres = substr($apres, 6,2); $annee_apres = substr($apres, 1,4); $ical_apres = date_anneemoisjour("$annee_apres-$mois_apres-".sprintf("%02d",$jour_apres)); // Calcul pour les semaines a cheval sur deux mois $j = 0; $amj = date_anneemoisjour("$annee_avant-$mois_avant-".sprintf("%02d", $j+($jour_avant))); while ($amj <= $ical_apres) { if (!($amj == date_anneemoisjour($date_fin) AND preg_match(",00:00:00,", $date_fin))) // Ne pas prendre la fin a minuit sur jour precedent $evenements[$amj][$id_message]= array( 'URL' => generer_url_ecrire("message","id_message=$id_message"), 'DTSTART' => date_ical($date_heure), 'DTEND' => date_ical($date_fin), 'DESCRIPTION' => $row['texte'], 'SUMMARY' => $row['titre'], 'CATEGORIES' => $cat, 'ATTENDEE' => $auteurs); $j ++; $ladate = date("Y-m-d",mktime (1,1,1,$mois_avant, ($j + $jour_avant), $annee_avant)); $amj = date_anneemoisjour($ladate); } } return $evenements; }
function agenda_memo($date=0 , $descriptif='', $titre='', $url='', $cal='') { static $agenda = array(); if (!$date) return $agenda; $idate = date_ical($date); $cal = trim($cal); // func_get_args (filtre alterner) rajoute \n !!!! $agenda[$cal][(date_anneemoisjour($date))][] = array( 'CATEGORIES' => $cal, 'DTSTART' => $idate, 'DTEND' => $idate, 'DESCRIPTION' => texte_script($descriptif), 'SUMMARY' => texte_script($titre), 'URL' => $url); // toujours retourner vide pour qu'il ne se passe rien return ""; }
function quete_calendrier_interval_rv($avant, $apres) { include_spip('inc/session'); $connect_id_auteur = session_get('id_auteur'); $evenements = array(); if (!$connect_id_auteur) { return $evenements; } $result = sql_select("M.id_message, M.titre, M.texte, M.date_heure, M.date_fin, M.type", "spip_messages AS M LEFT JOIN spip_auteurs_liens AS L ON (L.id_objet=M.id_message)", "((L.objet='message' AND (L.id_auteur={$connect_id_auteur} OR M.type='affich')) OR (L.objet IS NULL AND M.id_auteur={$connect_id_auteur} AND " . sql_in('M.type', array('pb', 'affich')) . "))" . " AND M.rv='oui' AND ((M.date_fin >= {$avant} OR M.date_heure >= {$avant}) AND M.date_heure <= {$apres}) AND M.statut='publie'", "M.id_message", "M.date_heure"); while ($row = sql_fetch($result)) { $date_heure = $row["date_heure"]; $date_fin = $row["date_fin"]; $type = $row["type"]; $id_message = $row['id_message']; if ($type == "pb") { $cat = 'calendrier-couleur2'; } else { if ($type == "affich") { $cat = 'calendrier-couleur4'; } else { if ($type != "normal") { $cat = 'calendrier-couleur12'; } else { $cat = 'calendrier-couleur9'; $auteurs = array_map('array_shift', sql_allfetsel("nom", "spip_auteurs AS A LEFT JOIN spip_auteurs_liens AS L ON L.id_auteur=A.id_auteur", "(L.objet='message' AND L.id_objet={$id_message} AND (A.id_auteur!={$connect_id_auteur}))")); } } } $jour_avant = substr($avant, 9, 2); $mois_avant = substr($avant, 6, 2); $annee_avant = substr($avant, 1, 4); $jour_apres = substr($apres, 9, 2); $mois_apres = substr($apres, 6, 2); $annee_apres = substr($apres, 1, 4); $ical_apres = date_anneemoisjour("{$annee_apres}-{$mois_apres}-" . sprintf("%02d", $jour_apres)); // Calcul pour les semaines a cheval sur deux mois $j = 0; $amj = date_anneemoisjour("{$annee_avant}-{$mois_avant}-" . sprintf("%02d", $j + $jour_avant)); while ($amj <= $ical_apres) { if (!($amj == date_anneemoisjour($date_fin) and preg_match(",00:00:00,", $date_fin))) { // Ne pas prendre la fin a minuit sur jour precedent $evenements[$amj][$id_message] = array('URL' => generer_url_ecrire("message", "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, ", ")); } $j++; $ladate = date("Y-m-d", mktime(1, 1, 1, $mois_avant, $j + $jour_avant, $annee_avant)); $amj = date_anneemoisjour($ladate); } } return $evenements; }
function sql_calendrier_interval_rv($avant, $apres) { /* // Debug info echo "<!-- sql_calendrier_interval_rv($avant, $apres)"; */ global $connect_id_auteur; $evenements = array(); if (!$connect_id_auteur) { return $evenements; } /* [ML] 2007-01-16: "group by a.id_app" was commented out because in theory there should not be multiple identical rows for (id_app, id_author) but who knows, there are mysterious bugs sometimes.. NOTE: if someone adds the 'group by', dont forget to group by on all 'select' fields, otherwise postgresql panics. */ $q = "SELECT a.*\n\t\t\t\tFROM lcm_app as a, lcm_author_app as ap\n\t\t\t\tWHERE (ap.id_author = " . $GLOBALS['author_session']['id_author'] . "\n\t\t\t\tAND a.id_app = ap.id_app\n\t\t\t\tAND a.hidden != 'Y'\n\t\t\t\tAND ((a.end_time >= {$avant} OR a.start_time >= {$avant}) AND a.start_time <= {$apres}))\n\t" . "\n\t\t\t\tORDER BY a.start_time"; $result = lcm_query($q); while ($row = lcm_fetch_array($result)) { $date_heure = $row["start_time"]; $date_fin = $row["end_time"]; $type = $row["type"]; $id_message = $row['id_app']; $cat = 9; $auteurs = array(); $result_aut = lcm_query("SELECT au.name_first, au.name_last\n\t\t\t\t\tFROM\tlcm_author as au, lcm_author_app as ap\n\t\t\t\t\tWHERE\t(ap.id_app = {$id_message}\n\t\t\t\t\tAND\tau.id_author != " . $GLOBALS['author_session']['id_author'] . "\n\t\t\t\t\tAND\tap.id_author = au.id_author)"); while ($row_auteur = lcm_fetch_array($result_aut)) { $auteurs[] = get_person_name($row_auteur); } $jour_avant = substr($avant, 9, 2); $mois_avant = substr($avant, 6, 2); $annee_avant = substr($avant, 1, 4); $jour_apres = substr($apres, 9, 2); $mois_apres = substr($apres, 6, 2); $annee_apres = substr($apres, 1, 4); $ical_apres = sql_calendrier_jour_ical("{$annee_apres}-{$mois_apres}-" . sprintf("%02d", $jour_apres)); // Calcul pour les semaines a cheval sur deux mois $j = 0; $amj = sql_calendrier_jour_ical("{$annee_avant}-{$mois_avant}-" . sprintf("%02d", $j + $jour_avant)); while ($amj <= $ical_apres) { if (!($amj == sql_calendrier_jour_ical($date_fin) and preg_match("/00:00:00/", $date_fin))) { // Ne pas prendre la fin a minuit sur jour precedent $evenements[$amj][$id_message] = array('URL' => "app_det.php?app={$id_message}", 'DTSTART' => date_ical($date_heure), 'DTEND' => date_ical($date_fin), 'DESCRIPTION' => $row['description'], 'SUMMARY' => $row['title'], 'CATEGORIES' => $cat, 'ATTENDEE' => count($auteurs) == 0 ? '' : join($auteurs, ", ")); } $j++; $ladate = date("Y-m-d", mktime(1, 1, 1, $mois_avant, $j + $jour_avant, $annee_avant)); $amj = sql_calendrier_jour_ical($ladate); } } /* // Debug info echo " = "; var_dump($evenements); echo " -->\n"; */ return $evenements; }