Newsgroup: it.comp.www.php
Titolo: Santi e feste comandate

Salve,
ho visto in giro databases mysql di Santi.
Alcuni però sono stati creati l'anno scorso come semplice copia dal
calendario, quindi non aggiornati e senza tenere conto del fatto che le
domeniche cambiano...
C'è un modo di tenere traccia delle domeniche, della Pasqua, di altre feste
mobili (Avvento, Pentecoste, ecc...)?
In fondo si tratterebbe di associare delle formule al database, prima di
visualizzare il santo del giorno.
Grazie per i suggerimenti.
Salvo Micciché




Mi sembra piu' semplice PRIMA calcolare se il giorno in questione e' una
delle feste mobili, e poi, in caso negativo, vedere se.
function Santo($data)
{
	// Se non e' domenica, inutile stare a schiccherellarci su
	// se sia Pasqua o altra festa che cade domenica di sicuro
	if ($getdate($data)["wday"] == 0)
	{
		$pasqua = easter_date(year($data));
		if ($data == $pasqua)
			return "Pasqua di Resurrezione";
		// Non garantisco! Potrebbe essere 50, non 49.
		if ($data == $pasqua + 49*86400)
			return "Domenica di Pentecoste";
	}
	...connessione al DB...
}
Leonardo
-- 
And where the black and corkscrew towers climb
Lost and athirst the ragged pack abides,
Old as the aeons, trapped in tombs of time,
Sailing the tortuous temporal tides...

 wrote in message
news:9v3u70$ct4rg$1...@ID-51471.news.dfncis.de...

alcune funzioni utili possono essere (devono essere compilati nel PHP):
easter_date
easter_days
Partendo da Pasqua penso che sia facile calcolare tutte le sue feste
relative (i famosi 40 gg. e qualcosa prima), che sono a distanza fissa da
quella data.
Domenica del giorno da controllare:
Dato $mese, $giorno, $anno (ordine americano):
$ctrlData = mktime(0,0,0,$mese,$giorno, $anno);
if (date("w", $ctrlData)==0) // check sunday
    echo "Domenica non si lavora";

 function Santo($data)
farò qualche prova, grazie!
Riferirò qui i risultati.
ciao,
Salvo

     echo "Domenica non si lavora";
Thanks!
Se riesco ad assemblare qualcosa di completo indico il link dove scaricarla.
Salvo

 $pasqua = easter_date(year($data));
Hi,
nel server che sto usando non è abilitata la funzione: come posso
sostituirla?
Grazie,
Salvo

 */
 pval *year_arg;
 struct tm *ta, te;
 time_t the_time;
 long year, golden, solar, lunar, pfm, dom, tmp, easter;
 switch(ZEND_NUM_ARGS()) {
 case 0:
  the_time = time(NULL);
  ta = localtime(&the_time);
  year = ta->tm_year + 1900;
  break;
 case 1:
  if (getParameters(ht, 1, &year_arg) == FAILURE) {
   WRONG_PARAM_COUNT;
  }
  convert_to_long(year_arg);
  year = year_arg->value.lval;
  break;
 default:
  WRONG_PARAM_COUNT;
 }
 if (gm && (year<1970 || year>2037)) {    /* out of range for timestamps */
  php3_error(E_WARNING, "easter_date() is only valid for years between 1970
and 2037 inclusive");
  RETURN_FALSE;
 }
 golden = (year % 19) + 1;     /* the Golden number */
 if ( year <= 1752 ) {      /* JULIAN CALENDAR */
  dom = (year + (year/4) + 5) % 7;   /* the "Dominical number" - finding a
Sunday */
  if (dom < 0) {
   dom += 7;
  }
  pfm = (3 - (11*golden) - 7) % 30;   /* uncorrected date of the Paschal
full moon */
  if (pfm < 0) {
   pfm += 30;
  }
 } else {       /* GREGORIAN CALENDAR */
  dom = (year + (year/4) - (year/100) + (year/400)) % 7; /* the "Domincal
number" */
  if (dom < 0) {
   dom += 7;
  }
  solar = (year-1600)/100 - (year-1600)/400;  /* the solar and lunar
corrections */
  lunar = (((year-1400) / 100) * 8) / 25;
  pfm = (3 - (11*golden) + solar - lunar) % 30;  /* uncorrected date of the
Paschal full moon */
  if (pfm < 0) {
   pfm += 30;
  }
 }
 if ((pfm == 29) || (pfm == 28 && golden > 11)) {  /* corrected date of the
Paschal full moon */
  pfm--;       /* - days after 21st March                 */
 }
 tmp = (4-pfm-dom) % 7;
 if (tmp < 0) {
  tmp += 7;
 }
 easter = pfm + tmp + 1;          /* Easter as the number of days after 21st
March */
 if (gm) {       /* return a timestamp */
  te.tm_isdst = -1;
  te.tm_year = year-1900;
  te.tm_sec = 0;
  te.tm_min = 0;
  te.tm_hour = 0;
  if (easter < 11) {
   te.tm_mon = 2;   /* March */
   te.tm_mday = easter+21;
  } else {
   te.tm_mon = 3;   /* April */
   te.tm_mday = easter-10;
  }
         return_value->value.lval = mktime(&te);
 } else {       /* return the days after March 21 */
         return_value->value.lval = easter;
 }
        return_value->type = IS_LONG;
}

 Per il resto basta mettere dei $ davanti alle variabili.
Bene,
grazie,
vedrò se sarò capace di combinare qualcosa :-)
ciao,
Salvo

 sostituirla?
Oltre alla risposta che gia` ti hanno dato, puoi dare
un' occhiata al sito in firma e trovi del codice in
php gia` pronto.
	gpb
-- 
attenzione: indirizzo alterato antispam
http://gpbizzaro.supereva.it/index.html

 gpb
Grazie,
è molto utile!
ciao,
Salvo

 ha scritto nel messaggio
news:9v3u70$ct4rg$1...@ID-51471.news.dfncis.de...
Per chi fosse interessato ho preparato un database mysql corretto e
"ufficiale" (con i Santi della Liturgia delle Ore, o Breviario, della CEI)
che contiene solo i Santi, quindi valido ogni anno e per tutti i giorni.
Sono 23 kb.
Resterebbe ora da approntare - per chi vuole aiutarmi - un piccolo script
per le festività mobili, in gran parte basato sulla data della Pasqua (o la
funzione easter_date() o - dove manca (il mio caso, purtroppo) - lo script
proposto da Gian Paolo B.)
In tal modo lo script generale può indicare due righe: il Santo del Giorno e
l'eventuale festività "mobile".
Considerando:
Le Ceneri        P-46
I Quaresima    P-42
II Quaresima    P-35
III Quaresima    P-28
IV Quaresima    P-21
V Quaresima    P-14
Le Palme        P-7
Pasqua            P
Domenica in Albis    P+7
Ascensione     P+39
Pentecoste    P+56
Corpus Domini    P+61
e poi
I Avvento
II Avvento
III Avvento
IV Avvento
(domeniche prima del 25/12)
Il resto è nel database.
Correggetemi se sbaglio i calcoli, grazie.
ciao,
Salvo Micciché

 - ICQ#91902715
http://www.matteomoro.cjb.net
"Thank God it's Christmas for one day
A very merry Christmas to you all" ©fm

 proposto da Gian Paolo B.)
Uso qualcosa del genere nel mio calendario: in una tabella html
(una riga al giorno) viene indicata la festivita`, eventuali compleanni
(prendendo le date di nascita degli amici da una tabella mysql),
scadenze varie (ICI, bollo auto, appuntamenti periodici o occasionali,
ecc. da un'altra tabella).
Allego di seguito il codice per chi possa interessare ma e` proprio
una cosa buttata giu` quasi al volo (sto riguardandolo ora e quasi
inorridisco vedendolo) ma forse puo` essere utile come punto di
partenza.
Mi piace l'elenco di date che hai messo (Ceneri, ecc.), e mi hai
stuzzicato a migliorare la routine, aggiungendo, volendo, anche i
santi del giorno (qualche anno fa utilizzavo una tabella scaricata
da qualche sito cattolico, ora non ricordo quale), ma probabilmente
la tua sara` piu` completa e mi farebbe piacere riceverla, grazie.
Bye
	gpb
=== clip here ============== clip here===
<?php
  include("Auth.php");   // contiene autenticazione utente e apertura
database mysql
?>
<html><head><title>gpb db</title></head><body>
<?php
function EasterDates($anno)   // ritorna in formato yyyymmdd le data di
palme, pasqua e pasquetta in un array
{
 $a = $anno % 19 ; $b = floor( $anno / 100) ; $c = $anno % 100 ;
 $p = (19 * $a + $b - floor( $b / 4 ) - floor( ($b - floor( ($b + 8) /
25) + 1) / 3) + 15) % 30 ;
 $q = (32 + 2 * (($b % 4) + floor( $c / 4 ) ) - $p - ($c % 4)) % 7 ;
 $r = $p + $q - 7 * ( floor( ($a + 11 * $p + 22 * $q) / 451)) + 114 ;
 return array (
sprintf("%04d%02d%02d",$anno,floor(($r-7)/31),($r-7)%31+1),    // palme
 
sprintf("%04d%02d%02d",$anno,floor($r/31),$r%31+1),            // pasqua
 
sprintf("%04d%02d%02d",$anno,floor(($r+1)/31),($r+1)%31+1) );  //
pasquetta
}
  setlocale(LC_TIME,"it_IT");
  $dataoggi =  time();
  $datapackoggi = date ("Ymd",$dataoggi);
  $datainiziale = $dataoggi; // in attesa variabile passata come
parametro
  print("<h2>Calendario</h2><table border width=100%>");
  for ($i=(-3);$i<367;$i++)   // +352 per vedere tutto l'anno
  {
    $questadata = $datainiziale+86400*$i;
    $datapack = date ("Ymd",$questadata);
    $mmggpack = date ("md",$questadata);
    $giornosettimana = 1 * date("w",$questadata);
    $questomese = 1 * date("m",$questadata) ;
    $dataformattata = strftime
("%a&nbsp;%d&nbsp;%b&nbsp;%Y",$questadata);
    $festivo = 0;
    if ( $giornosettimana == 0 ) $festivo = 1;
    $scritta = "";
    if ( ($giornosettimana == 0 || $giornosettimana == 1) && (
$questomese == 3 || $questomese == 4 ) )  // domenica o lunedě di marzo
o aprile
    {
       $festapasqua = EasterDates(date("Y",$questadata)) ;
       if     ($datapack == $festapasqua[0])  $scritta = "Domenica delle
Palme";
       elseif ($datapack == $festapasqua[1])  $scritta = "Domenica di
Pasqua";
       elseif ($datapack == $festapasqua[2])  $scritta = "Lunedě
dell'Angelo";
    }
    if     ($mmggpack == "1225")   $scritta = "Natale di Gesů";
    elseif ($mmggpack == "1226")   $scritta = "Santo Stefano";
    elseif ($mmggpack == "0101")   $scritta = "Sacra Famiglia";
    elseif ($mmggpack == "0106")   $scritta = "Epifania";
    elseif ($mmggpack == "1208")   $scritta = "Immacolata";
    elseif ($mmggpack == "0815")   $scritta = "Assunzione";
    if ( $scritta != "" )  { $festivo=1;  $scritta = "<font
color=indigo><i>" . $scritta . "</i></font><br>"; }
    if ($datapack == $datapackoggi)
    {
      $dataformattata = "&lt;&nbsp;" . $dataformattata . "&nbsp;&gt;" ;
      print("<tr bgcolor=orange><td align=center>");
    }
    else
    {
      print("<tr><td align=center>");
    }
    if ($festivo!=0)
       print ( "<font color=blue><b>" . $dataformattata .
"</b></font></td><td>" ) ;  // festivo in blu grassetto
    else
       print ( $dataformattata . "</td><td>" ) ;
    // ======= compleanni ========
    $query = strftime ("select Nascita,Nominativo,%Y-Year(Nascita) as
Anni from DataNascita where dayofmonth(Nascita)=%d and
month(Nascita)=%m;",$questadata);
    if (($rs = mysql_query($query,$link))==0)
        print("cannot execute query");
    else
    {
      while ($row = mysql_fetch_array($rs)) {
        $scritta = $scritta . "<LI type=circle><b>" . $row["Nominativo"]
. "</b><i> compie </i><b>" . $row["Anni"] . "</b><i> anni</i><br>" ;
      }
    }
    // ======= ricorrenze ========
    $query = strftime ("select Descrizione from Ricorrenza where
dayofmonth(Ricorrenza)=%d and (month(Ricorrenza)=0 or
month(Ricorrenza)=%m) and (year(Ricorrenza)=0 or
year(Ricorrenza)=%Y);",$questadata);
    if (($rs = mysql_query($query,$link))==0)
        print("cannot execute query");
    else
    {
      while ($row = mysql_fetch_array($rs)) {
        $scritta = $scritta . "<LI type=disc><i>" . $row["Descrizione"]
."</i><br>" ;
      }
    }
    // ===========================
    if ($scritta != "") print($scritta . "</td></tr>");    else   
print("&nbsp;</td></tr>\n");
  }
  print("</table>");
//  mysql_close($link); // commento, essendo connessione permanente
?>
</body></html>
=== clip here ============== clip here===


 che non conosco ma che penso meriti molto rispetto, ha scrtto:
Grazie per il "molto rispetto" :-)))
You have got mail ;-)
Salvo

 la tua sara` piu` completa e mi farebbe piacere riceverla, grazie.
Also you have got mail :-))
ciao,
Salvo Micciché

 la tua sara` piu` completa e mi farebbe piacere riceverla, grazie.
oops, il tuo server mi dą errore: scrivimi in email, cosģ ti mando tutto in
reply :-)
ciao,
Salvo


Grazie 1000!
ciao.


Allego di seguito il codice "allargato" alle festività religiose
suggerite da Salvo, preparato un'ora fa e non ancora controllato.
Spero non sia troppo bacato.
Ciao
	gpb
=== clip here ============== clip here===
<?php
// la funzione restituisce un array del tipo
// "1225" => "Natale di Gesù", "1226" => "Santo Stefano" ecc.
function FestiviParticolari ($anno)
{
  $SecDay = 86400 ; // numero di secondi in un giorno
  // festivi fissi
  $festa [ "0101" ] = "Sacra Famiglia" ;
  $festa [ "0106" ] = "Epifania" ;
  $festa [ "1208" ] = "Immacolata" ;
  $festa [ "0815" ] = "Assunzione" ;
  $festa [ "1225" ] = "Natale di Gesù" ;
  $festa [ "1226" ] = "Santo Stefano" ;
  $festa = array() ;
  // Pasqua & company
  $a = $anno % 19 ; $b = floor( $anno / 100) ; $c = $anno % 100 ;
  $p = (19 * $a + $b - floor( $b / 4 ) - floor( ($b - floor( ($b + 8) / 25) + 1) / 3) + 15) % 30 ;
  $q = (32 + 2 * (($b % 4) + floor( $c / 4 ) ) - $p - ($c % 4)) % 7 ;
  $r = $p + $q - 7 * ( floor( ($a + 11 * $p + 22 * $q) / 451)) + 114 ;
  // mese : floor($r/31) , giorno: $r%31+1
  $unixPasqua = mktime ( 0 , 0 , 0 , floor($r/31) , $r%31+1 , $anno ) ;   // (hour,minute,second,month,day,year)
  $festa [ strftime("%m%d",$unixPasqua-46*$SecDay) ] = "Le Ceneri" ;
  $festa [ strftime("%m%d",$unixPasqua-42*$SecDay) ] = "1ª Quaresima" ;
  $festa [ strftime("%m%d",$unixPasqua-35*$SecDay) ] = "2ª Quaresima" ;
  $festa [ strftime("%m%d",$unixPasqua-28*$SecDay) ] = "3ª Quaresima" ;
  $festa [ strftime("%m%d",$unixPasqua-21*$SecDay) ] = "4ª Quaresima" ;
  $festa [ strftime("%m%d",$unixPasqua-14*$SecDay) ] = "5ª Quaresima" ;
  $festa [ strftime("%m%d",$unixPasqua-7*$SecDay) ]  = "Le Palme" ;
  $festa [ strftime("%m%d",$unixPasqua) ]            = "Pasqua" ;
  $festa [ strftime("%m%d",$unixPasqua+7*$SecDay) ]  = "Domenica in Albis" ;
  $festa [ strftime("%m%d",$unixPasqua+39*$SecDay) ] = "Ascensione" ;
  $festa [ strftime("%m%d",$unixPasqua+56*$SecDay) ] = "Pentecoste" ;
  $festa [ strftime("%m%d",$unixPasqua+61*$SecDay) ] = "Corpus Domini" ;
  // Natale & company
  $unixNatale = mktime ( 0 , 0 , 0 , 12 , 25 , $anno ) ;   // (hour,minute,second,month,day,year)
  $weekdayNatale = strftime("%w", $unixNatale )+0 ; // giorno della settimana in cui cade il Natale (0 dom ... 6 sab)
  $unixUltimaAvvento = $unixNatale - $SecDay * ( ( ( $weekdayNatale + 6 ) % 7 ) + 1 )  ;
  $festa [ strftime("%m%d",$unixUltimaAvvento-21*$SecDay) ] = "1ª Avvento" ;
  $festa [ strftime("%m%d",$unixUltimaAvvento-14*$SecDay) ] = "2ª Avvento" ;
  $festa [ strftime("%m%d",$unixUltimaAvvento-7*$SecDay) ]  = "3ª Avvento" ;
  $festa [ strftime("%m%d",$unixUltimaAvvento) ]            = "4ª Avvento" ;
  return $festa ;
}
  // TEST  
  $Festività = FestiviParticolari (2001) ;
  reset ($Festività);
  while (list ($key, $val) = each ($Festività)) { echo "$key => $val\n"; }
?>


 Spero non sia troppo bacato.
Benissimo, grazie.
Direi che ci siamo.
Ho solo aggiustato alcune cose: Ascensione = Pasqua + 42, Pentecoste +49,
SS. Trinità +56 e Corpus Domini + 63, e poi Sacra Famiglia, che per la
Chiesa è l'ultima domenica di dicembre, mentre il 1 gennaio è Santa Madre di
Dio (questo mi ha detto un parroco amico)...
Ho messo anche le sei domeniche del tempo pasquale (in effetti cominciano
dalla III, perché la II è "In Albis").
A questo punto la funzione è quasi perfetta e si può integrare con il Santo
del Giorno: la allego qui corretta.
ciao,
Salvo Micciché
________________
<?php
// la funzione restituisce un array del tipo
// "1225" => "Natale di Gesù", "1226" => "Santo Stefano" ecc.
function FestiviParticolari ($anno)
{
  $SecDay = 86400 ; // numero di secondi in un giorno
  // festivi fissi
 // $festa [ "0101" ] = "Sacra Famiglia" ; è l'ultima domenica di dicembre
  $festa [ "0106" ] = "Epifania" ;
  $festa [ "1208" ] = "Immacolata" ;
  $festa [ "0815" ] = "Assunzione" ;
  $festa [ "1225" ] = "Natale di Gesù" ;
  $festa [ "1226" ] = "Santo Stefano" ;
  $festa = array() ;
  // Pasqua & company
  $a = $anno % 19 ; $b = floor( $anno / 100) ; $c = $anno % 100 ;
  $p = (19 * $a + $b - floor( $b / 4 ) - floor( ($b - floor( ($b + 8) / 25)
+ 1) / 3) + 15) % 30 ;
  $q = (32 + 2 * (($b % 4) + floor( $c / 4 ) ) - $p - ($c % 4)) % 7 ;
  $r = $p + $q - 7 * ( floor( ($a + 11 * $p + 22 * $q) / 451)) + 114 ;
  // mese : floor($r/31) , giorno: $r%31+1
  $unixPasqua = mktime ( 0 , 0 , 0 , floor($r/31) , $r%31+1 , $anno ) ;   //
(hour,minute,second,month,day,year)
  $festa [ strftime("%m%d",$unixPasqua-46*$SecDay) ] = "Le Ceneri" ;
  $festa [ strftime("%m%d",$unixPasqua-42*$SecDay) ] = "1ª Quaresima" ;
  $festa [ strftime("%m%d",$unixPasqua-35*$SecDay) ] = "2ª Quaresima" ;
  $festa [ strftime("%m%d",$unixPasqua-28*$SecDay) ] = "3ª Quaresima" ;
  $festa [ strftime("%m%d",$unixPasqua-21*$SecDay) ] = "4ª Quaresima" ;
  $festa [ strftime("%m%d",$unixPasqua-14*$SecDay) ] = "5ª Quaresima" ;
  $festa [ strftime("%m%d",$unixPasqua-7*$SecDay) ]  = "Le Palme" ;
  $festa [ strftime("%m%d",$unixPasqua) ]            = "Pasqua" ;
 $festa [ strftime("%m%d",$unixPasqua+1*$SecDay) ]  = "Lunedì dell'Angelo" ;
  $festa [ strftime("%m%d",$unixPasqua+7*$SecDay) ]  = "Domenica in Albis" ;
// II Domenica
  $festa [ strftime("%m%d",$unixPasqua+14*$SecDay) ]  = "III Domenica di
Pasqua" ;
  $festa [ strftime("%m%d",$unixPasqua+21*$SecDay) ]  = "IV Domenica di
Pasqua" ;
  $festa [ strftime("%m%d",$unixPasqua+28*$SecDay) ]  = " V Domenica di
Pasqua" ;
  $festa [ strftime("%m%d",$unixPasqua+35*$SecDay) ]  = "VI Domenica di
Pasqua" ;
  $festa [ strftime("%m%d",$unixPasqua+42*$SecDay) ] = "Ascensione" ;
  $festa [ strftime("%m%d",$unixPasqua+49*$SecDay) ] = "Pentecoste" ;
  $festa [ strftime("%m%d",$unixPasqua+56*$SecDay) ] = "SS. Trinità" ;
  $festa [ strftime("%m%d",$unixPasqua+63*$SecDay) ] = "Corpus Domini" ;
  // Natale & company
  $unixNatale = mktime ( 0 , 0 , 0 , 12 , 25 , $anno ) ;   //
(hour,minute,second,month,day,year)
  $weekdayNatale = strftime("%w", $unixNatale )+0 ; // giorno della
settimana in cui cade il Natale (0 dom ... 6 sab)
  $unixUltimaAvvento = $unixNatale - $SecDay * ( ( ( $weekdayNatale + 6 ) %
7 ) + 1 )  ;
  $festa [ strftime("%m%d",$unixUltimaAvvento-21*$SecDay) ] = "1ª Avvento" ;
  $festa [ strftime("%m%d",$unixUltimaAvvento-14*$SecDay) ] = "2ª Avvento" ;
  $festa [ strftime("%m%d",$unixUltimaAvvento-7*$SecDay) ]  = "3ª Avvento" ;
  $festa [ strftime("%m%d",$unixUltimaAvvento) ]            = "4ª Avvento" ;
$festa [ strftime("%m%d",$unixUltimaAvvento+7*$SecDay) ]  = "Sacra Famiglia"
;
  return $festa ;
}
  // TEST
  $Festività = FestiviParticolari (2002) ;
  reset ($Festività);
  while (list ($key, $val) = each ($Festività)) { echo "$key => $val\n"; }
?>
___________________

 dalla III, perché la II è "In Albis").
La riguardo subito. Nel frattempo (si vede che lavoriamo
contemporaneamente) avevo anch'io fatto qualche piccola modifica,
perché ho notato che l'Immacolata, coincidendo nel 2002 con la 2ª
di Avvento, era sparita dal calendario, e allego la versione
più recente, senza ancora le modifiche di cui avevi accennato ora.
Bye
	gpb
<?php
function FestiviParticolari ($anno)
{
  $SecDay = 86400 ; // numero di secondi in un giorno
  $festa = array() ;
  // Pasqua & company
  $a = $anno % 19 ; $b = floor( $anno / 100) ; $c = $anno % 100 ;
  $p = (19 * $a + $b - floor( $b / 4 ) - floor( ($b - floor( ($b + 8) / 25) + 1) / 3) + 15) % 30 ;
  $q = (32 + 2 * (($b % 4) + floor( $c / 4 ) ) - $p - ($c % 4)) % 7 ;
  $r = $p + $q - 7 * ( floor( ($a + 11 * $p + 22 * $q) / 451)) + 114 ;
  // mese : floor($r/31) , giorno: $r%31+1
  $unixPasqua = mktime ( 0 , 0 , 0 , floor($r/31) , $r%31+1 , $anno ) ;   // (hour,minute,second,month,day,year)
  $festa [ strftime("%m%d",$unixPasqua-46*$SecDay) ] = "Le Ceneri" ;          //  P-46
  $festa [ strftime("%m%d",$unixPasqua-42*$SecDay) ] = "1ª Quaresima" ;       //  P-42
  $festa [ strftime("%m%d",$unixPasqua-35*$SecDay) ] = "2ª Quaresima" ;       //  P-35
  $festa [ strftime("%m%d",$unixPasqua-28*$SecDay) ] = "3ª Quaresima" ;       //  P-28
  $festa [ strftime("%m%d",$unixPasqua-21*$SecDay) ] = "4ª Quaresima" ;       //  P-21
  $festa [ strftime("%m%d",$unixPasqua-14*$SecDay) ] = "5ª Quaresima" ;       //  P-14
  $festa [ strftime("%m%d",$unixPasqua-7*$SecDay) ]  = "Le Palme" ;           //  P-7
  $festa [ strftime("%m%d",$unixPasqua) ]            = "Pasqua" ;
  $festa [ strftime("%m%d",$unixPasqua+$SecDay) ]    = "Lunedì dell'Angelo" ; // P+1
  $festa [ strftime("%m%d",$unixPasqua+7*$SecDay) ]  = "Domenica in Albis" ;  // P+7
  $festa [ strftime("%m%d",$unixPasqua+42*$SecDay) ] = "Ascensione" ;         // (39)
  $festa [ strftime("%m%d",$unixPasqua+49*$SecDay) ] = "Pentecoste" ;         //
  $festa [ strftime("%m%d",$unixPasqua+56*$SecDay) ] = "SS.Trinità" ;         // (56)
  $festa [ strftime("%m%d",$unixPasqua+63*$SecDay) ] = "Corpus Domini" ;      // (61)
  // Natale & company
  $unixNatale = mktime ( 0 , 0 , 0 , 12 , 25 , $anno ) ;   // (hour,minute,second,month,day,year)
  $weekdayNatale = strftime("%w", $unixNatale )+0 ; // giorno della settimana in cui cade il Natale (0 dom ... 6 sab)
  $unixUltimaAvvento = $unixNatale - $SecDay * ( ( ( $weekdayNatale + 6 ) % 7 ) + 1 )  ;
  $festa [ strftime("%m%d",$unixUltimaAvvento-28*$SecDay) ] = "Cristo Re" ;
  $festa [ strftime("%m%d",$unixUltimaAvvento-21*$SecDay) ] = "1ª Avvento" ;
  $festa [ strftime("%m%d",$unixUltimaAvvento-14*$SecDay) ] = "2ª Avvento" ;
  $festa [ strftime("%m%d",$unixUltimaAvvento-7*$SecDay) ]  = "3ª Avvento" ;
  $festa [ strftime("%m%d",$unixUltimaAvvento) ]            = "4ª Avvento" ;
  // festivi fissi
  $festa [ "0101" ] = "Sacra Famiglia" ;
  $festa [ "0106" ] = "Epifania" ;
  $festa [ "0815" ] = "Assunzione" ;
  $festa [ "1225" ] = "Natale di Gesù" ;
  $festa [ "1226" ] = "Santo Stefano" ;
  $festa [ "1208" ] = isset($festa["1208"]) ? ($festa["1208"] . " / Immacolata" ) : "Immacolata" ;
  return $festa ;
}
  //  TEST
  for ($anno=2001 ; $anno<=2002 ; $anno++)
  {
    $Festività = FestiviParticolari ($anno) ;
    ksort($Festività) ;
    print "  ANNO $anno\n" ;
    reset ($Festività);  while (list ($key, $val) = each ($Festività)) { print "$key => $val\n"; }
  }
?>


 più recente, senza ancora le modifiche di cui avevi accennato ora.
Le festività fisse vanno bene se non si usa il Database dei Santi,
altrimenti stanno già lì, compresa l'Immacolata.
Direi, poi, che se, come quest'anno conincidono Immacolata e Domenica di
Avvento si possono anche indicare entrambe le cose (sempre usando il
database e scrivendo l'output su tre righe: data, santo e festività).
Ho visto che Cristo Re l'hai aggiunto (io l'avevo dimenticato...): ok!
ciao,
Salvo

Non sto a postare le ultime modifiche, che il tutto
comincia a diventare un po'lungo.
Come diceva Salvo forse è superfluo aggiungere
le festività che possono stare nel db dei santi.
Ho aggiunto anche i primi venerdì e sabati del mese,
il patrono (modificabile a piacimento) e
una routinetta per le festività civili.
Il codice è in
 
http://gpbizzaro.supereva.it/Calendario.txt
ed il sul output, per l'anno 2001, in
 
http://gpbizzaro.supereva.it/Calendario.html
L'aggiunta delle poche righe per l'interrogazione
del db dei santi viene lasciata come facile esercizio
per il lettore :-).
Bye
	gpb
