Salve,
ho scaricato e modificato questo script php per la visualizzazione di un semplice ma potente calendario.
In particolare ho inserito una fuzione che permette di inserire un link in un giorno da me indicato (vedi riga 63).
Ora vorrei poter inserire un determinato link in un determinato giorno non appartenente al mese stampato (per esempio inserire il 25 dicembre 'BUON NATALE').
mi basta anche sapere come far leggere una determinata data allo script.
Codice PHP:
<?php
# PHP Calendar (version 2.3), written by Keith Devens
# [url]http://keithdevens.com/software/php_calendar[/url]
# see example at [url]http://keithdevens.com/weblog[/url]
# License: [url]http://keithdevens.com/software/license[/url]
function generate_calendar($year, $month, $days = array(), $day_name_length = 2, $month_href = NULL, $first_day = 0, $pn = array()){
$first_of_month = gmmktime(0,0,0,$month,1,$year);
#remember that mktime will automatically correct if invalid dates are entered
# for instance, mktime(0,0,0,12,32,1997) will be the date for Jan 1, 1998
# this provides a built in "rounding" feature to generate_calendar()
$day_names = array(); #generate all the day names according to the current locale
for($n=0,$t=(3+$first_day)*86400; $n<7; $n++,$t+=86400) #January 4, 1970 was a Sunday
$day_names[$n] = ucfirst(gmstrftime('%A',$t)); #%A means full textual day name
list($month, $year, $month_name, $weekday) = explode(',',gmstrftime('%m,%Y,%B,%w',$first_of_month));
$weekday = ($weekday + 7 - $first_day) % 7; #adjust for $first_day
$title = htmlentities(ucfirst($month_name)).''.$year; #note that some locales don't capitalize month and day names
#Begin calendar. Uses a real <caption>. See [url]http://diveintomark.org/archives/2002/07/03[/url]
@list($p, $pl) = each($pn); @list($n, $nl) = each($pn); #previous and next links, if applicable
if($p) $p = '<span class="calendar-prev">'.($pl ? '[url="'.htmlspecialchars($pl).'"]'.$p.'[/url]' : $p).'</span>';
if($n) $n = '<span class="calendar-next">'.($nl ? '[url="'.htmlspecialchars($nl).'"]'.$n.'[/url]' : $n).'</span>';
$calendar = '<table class="calendar">'."\n".
'<caption class="calendar-month">'.$p.($month_href ? '[url="'.htmlspecialchars($month_href).'"]'.$title.'[/url]' : $title).$n."</caption>\n<tr>";
if($day_name_length){ #if the day names should be shown ($day_name_length > 0)
#if day_name_length is >3, the full name of the day will be printed
foreach($day_names as $d)
$calendar .= '<th abbr="'.htmlentities($d).'">'.htmlentities($day_name_length < 4 ? substr($d,0,$day_name_length) : $d).'</th>';
$calendar .= "</tr>\n<tr>";
}
if($weekday > 0) $calendar .= '<td colspan="'.$weekday.'"></td>'; #initial 'empty' days
for($day=1,$days_in_month=gmdate('t',$first_of_month); $day<=$days_in_month; $day++,$weekday++){
if($weekday == 7){
$weekday = 0; #start a new week
$calendar .= "</tr>\n<tr>";
}
if(isset($days[$day]) and is_array($days[$day])){
@list($link, $classes, $content) = $days[$day];
if(is_null($content)) $content = $day;
$calendar .= '<td'.($classes ? ' class="'.htmlspecialchars($classes).'">' : '>').
($link ? '[url="'.htmlspecialchars($link).'"]'.$content.'[/url]' : $content).'</td>';
}
else $calendar .= "<td>$day</td>";
}
if($weekday != 7) $calendar .= '<td colspan="'.(7-$weekday).'"></td>'; #remaining "empty" days
return $calendar."</tr>\n</table>\n";
}
$time = time();
$today = date('j',$time);
$days = array($today=>array(NULL,NULL,'<span style="color: red; font-weight: bold; font-size: larger; text-decoration: blink;">'.$today.'</span>'),#evidenzia il giorno corrente
9=>array('http://www.liceomoscati.it/incontroautore.php','linked-day'), #inserisce un link nel giorno indicato
);
$oldlocale = setlocale(LC_TIME, NULL); #save current locale
setlocale(LC_TIME, 'it_IT');
?>
questo è la stampa:
Codice PHP:
<?php
include("calendario.php");
echo generate_calendar(date('Y', $time), date('n', $time), $days, 2, NULL, 1);
setlocale(LC_TIME, $oldlocale);
?>