Zend - The PHP Company




Calendars

Add Code


solbot  

Type: application
Added by: solbot
Entered: 01/10/2003
Last modified: 31/10/2002
Rating: - (fewer than 3 votes)
Views: 4327
A Modified version of Calendar with Holidays. Allows Holidays for specific Year as well as recurring holidays.


<? 
/* calendar.php */ 

$gmt=0
$item=
        <tr> 
          <td width="
14%" bgcolor="#FFFFFF"> 
            
<p align="center"><b><font color="#1COLOR" size="1" face="helvetica, arial, verdana">1X&nbsp;</font></b></td
          <
td width="14%" bgcolor="#FFFFFF"
            <
p align="center"><b><font color="#2COLOR" size="1" face="helvetica, arial, verdana">2X&nbsp;</font></b></td
          <
td width="14%" bgcolor="#FFFFFF"
            <
p align="center"><b><font color="#3COLOR" size="1" face="helvetica, arial, verdana">3X&nbsp;</font></b></td
          <
td width="14%" bgcolor="#FFFFFF"
            <
p align="center"><b><font color="#4COLOR" size="1" face="helvetica, arial, verdana">4X&nbsp;</font></b></td
          <
td width="14%" bgcolor="#FFFFFF"
            <
p align="center"><b><font color="#5COLOR" size="1" face="helvetica, arial, verdana">5X&nbsp;</font></b></td
          <
td width="15%" bgcolor="#FFFFFF"
            <
p align="center"><b><font color="#6COLOR" size="1" face="helvetica, arial, verdana">6X&nbsp;</font></b></td
          <
td width="15%" bgcolor="#FFFFFF"
            <
p align="center"><b><font color="#7COLOR" size="1" face="helvetica, arial, verdana">7X&nbsp;</font></b></td
        </
tr
"; 

function checkholiday(
$date,$month,$year){ 
  global 
$strholiday
  
$f=file("holidays.txt"); 
  for(
$i=0;$i<sizeof($f);$i++){ 
    
$l=$f[$i]
    list(
$strdate,$strholiday)=explode(":",$l); 
    
$strholiday=chop($strholiday); 
    list(
$xdate,$xmonth,$xyear)=explode("-",$strdate); 
    if(
$xyear=="" || $xyear==NULL) $xyear=$year;
    if(
$date==$xdate && $month==$xmonth && $year==$xyear) return 1; 
  } 
  return 0; 


$date=date("g-i-s-n-j-Y"); 
list(
$hour,$min,$sec,$month,$day,$year)=explode("-",$date); 

$date=date("j",mktime($hour+$gmt,$min,$sec,$month,$day,$year)); 
list(
$day)=explode("-",$date); 

$mdiff = $_REQUEST['mdiff'];
$ydiff = $_REQUEST['ydiff'];

if(!
$mdiff$mdiff=0; 
if(!
$ydiff$ydiff=0; 
$year2=date("Y",mktime($hour,$min,$sec,$month+$mdiff,$day,$year+$ydiff)); 

$date2=date("j-F-Y-n",mktime($hour+$gmt,$min,$sec,$month+$mdiff,$day,$year+$ydiff)); 
list(
$strdate,$strmonth,$stryear,$month2)=explode("-",$date2); 

$dateone=date("w-t",mktime(0+$gmt,0,0,$month2,1,$year2)); 
list(
$first,$sumofday)=explode("-",$dateone); 
$last=date("w",mktime(0+$gmt,0,0,$month2,$sumofday,$year2)); 

if(
$first){ 
  
$sunday=1+(7-$first); 
  if(
$sunday==7) $sunday=0; 
} else { 
  
$sunday=1; 


$sumofdaybefore=date("t",mktime(0+$gmt,0,0,($month2-1),1,$year2)); 
for(
$i=0;$i<$first;$i++){ 
  
$datelist[$i]=$sumofdaybefore - $first + $i + 1; 
  
$color[$i]="C0C0C0"; 


for(
$i=$first,$t=1;$t<=$sumofday;$i++,$t++){ 
  
$datelist[$i]=$t
  if((
$t%7)==$sunday) { $color[$i]="FF0000"; } 
  else { 
$color[$i]="000000"; } 
  if(checkholiday(
$t,$month2,$year2)){ 
    
$color[$i]="CC00CC"; 
    
$datelist[$i]="<a name="$strholidayhref="javascript:holiday('$strholiday')">$t</a>"; 
  } 
  if(
$t==$strdate$color[$i]="00BB00"; 


$sumofdatenow=sizeof($datelist); 
for(
$i=$sumofdatenow,$s=0;$s<(6-$last);$i++,$s++){ 
  
$datelist[$i]=$s+1; 
  
$color[$i]="C0C0C0"; 


$sumofweek=sizeof($datelist)/7; 
for(
$i=0;$i<$sumofweek;$i++){ 
  
$idx=$i*7; 
  
$idx1=$idx+1; 
  
$idx2=$idx+2; 
  
$idx3=$idx+3; 
  
$idx4=$idx+4; 
  
$idx5=$idx+5; 
  
$idx6=$idx+6; 
  
$temp=$item
  
$temp=ereg_replace("1X","$datelist[$idx]",$temp); 
  
$temp=ereg_replace("1COLOR",$color[$idx],$temp); 
  
$temp=ereg_replace("2X","$datelist[$idx1]",$temp); 
  
$temp=ereg_replace("2COLOR",$color[$idx+1],$temp); 
  
$temp=ereg_replace("3X","$datelist[$idx2]",$temp); 
  
$temp=ereg_replace("3COLOR",$color[$idx+2],$temp); 
  
$temp=ereg_replace("4X","$datelist[$idx3]",$temp); 
  
$temp=ereg_replace("4COLOR",$color[$idx+3],$temp); 
  
$temp=ereg_replace("5X","$datelist[$idx4]",$temp); 
  
$temp=ereg_replace("5COLOR",$color[$idx+4],$temp); 
  
$temp=ereg_replace("6X","$datelist[$idx5]",$temp); 
  
$temp=ereg_replace("6COLOR",$color[$idx+5],$temp); 
  
$temp=ereg_replace("7X","$datelist[$idx6]",$temp); 
  
$temp=ereg_replace("7COLOR",$color[$idx+6],$temp); 

  
$calendarlist.=$temp


$mdiffmin=$mdiff-1; 
$mdiffplus=$mdiff+1; 
$ydiffmin=$ydiff-1; 
$ydiffplus=$ydiff+1; 

$f=file("calendar.htm"); 
for(
$i=0;$i<sizeof($f);$i++){ 
  
$line=$f[$i]
  
$line=ereg_replace("__MONTH__",$strmonth,$line); 
  
$line=ereg_replace("__YEAR__",$stryear,$line); 
  
$line=ereg_replace("__MDIFF__","$mdiff",$line); 
  
$line=ereg_replace("__YDIFF__","$ydiff",$line); 
  
$line=ereg_replace("__MDIFFMIN__","$mdiffmin",$line); 
  
$line=ereg_replace("__MDIFFPLUS__","$mdiffplus",$line); 
  
$line=ereg_replace("__YDIFFMIN__","$ydiffmin",$line); 
  
$line=ereg_replace("__YDIFFPLUS__","$ydiffplus",$line); 
  
$line=ereg_replace("__CALENDARLIST__",$calendarlist,$line); 
  echo 
$line

?> 


/****************************************************************/ 
/* THESE ARE TEMPLATE AND HOLIDAYS LIST FILES */ 
/****************************************************************/ 
/* template file calendar.htm */ 
/*
<style type="
text/css"> 
  a:link {text-decoration: none;color: #CC00CC;} 
  a:hover {text-decoration: none;color: #CC00CC;} 
  a:active {text-decoration: none;color: #CC00CC;} 
  a:visited {text-decoration: none;color: #CC00CC;} 
</style> 

<script language=javascript> 
  function holiday(str){ 
    window.status=str; 
  } 
</script> 

     <table border="
1" width="140" cellspacing="0" cellpadding="2" bordercolor="#808080"> 
      
<tr
       <
td width="100%" valign="middle" align="center"
        <
table border="0" width="100%" cellspacing="0" cellpadding="0"
         <
tr
          <
td width="100%" colspan="7" bgcolor="#6666FF"
            <
p align="center"><a href="calendar.php?mdiff=__MDIFFMIN__&ydiff=__YDIFF__"><b><font size="2" face="arial, helvetica, verdana" color="#FF0000">&lt;&lt;</font></b></a
            <
font size="2" face="arial, helvetica, verdana" color="#FFFFFF"__MONTH__ </font><a href="calendar.php?mdiff=__MDIFFPLUS__&ydiff=__YDIFF__"><b><font size="2" face="arial, helvetica, verdana" color="#FF0000">&gt;&gt;<br
           </
font></b></a><img border="0" src="images/spacer.gif" width="100" height="1"></p
          </
td
         </
tr
         <
tr
          <
td width="100%" colspan="7" bgcolor="#CCCCFF"
            <
p align="center"><a href="calendar.php?ydiff=__YDIFFMIN__&mdiff=__MDIFF__"><b><font size="2" face="arial, helvetica, verdana" color="#FF0000">&lt;&lt;</font></b></a><font size="2" face="arial, helvetica, verdana" color="#000000"
            
__YEAR__</font><a href="calendar.php?ydiff=__YDIFFPLUS__&mdiff=__MDIFF__"><b><font size="2" face="arial, helvetica, verdana" color="#FF0000">&gt;&gt;</font></b></a></td
         </
tr
         <
tr
          <
td width="15%" bgcolor="#FFFFFF"
            <
p align="center"><b><font size="1" face="helvetica, arial, verdana" color="#AA0000">S</font></b></td
          <
td width="14%" bgcolor="#FFFFFF"
            <
p align="center"><b><font size="1" face="helvetica, arial, verdana" color="#0000FF">M</font></b></td
          <
td width="14%" bgcolor="#FFFFFF"
            <
p align="center"><b><font size="1" face="helvetica, arial, verdana" color="#0000FF">T</font></b></td
          <
td width="14%" bgcolor="#FFFFFF"
            <
p align="center"><b><font size="1" face="helvetica, arial, verdana" color="#0000FF">W</font></b></td
          <
td width="14%" bgcolor="#FFFFFF"
            <
p align="center"><b><font size="1" face="helvetica, arial, verdana" color="#0000FF">T</font></b></td
          <
td width="14%" bgcolor="#FFFFFF"
            <
p align="center"><b><font size="1" face="helvetica, arial, verdana" color="#0000FF">F</font></b></td
          <
td width="15%" bgcolor="#FFFFFF"
            <
p align="center"><b><font size="1" face="helvetica, arial, verdana" color="#0000FF">S</font></b></td
         </
tr
__CALENDARLIST__ 
        
</table
       </
td
      </
tr
     </
table

/* end of template file calendar.htm */ 


/* holidays list file holidays.txt */ 
/* format : dd-mm(-yy):holiday name */ 
/* Year is optional. If not entered then it assumes that it is every year. */
/* Otherwise the date is displayed for a specific year only. */
/* 
01-01:New Years Day
26-01:Australia Day
01-03-2004:Labour Day (WA)
08-03-2004:Labour Day (VIC,TAS)
09-04-2004:Good Friday
11-04-2004:Easter Sunday
12-04-2004:Easter Monday
25-04:Anzac Day
03-05-2004:Labour Day (QLD), May Day (NT)
07-06-2004:Foundation Day (WA)
14-06-2004:Queens Birthday Holiday (All States Except WA)
02-08-2004:Bank Holiday (NSW)
03-09-2004:Australian National Flag Day (Not a Public Holiday)
30-09-2004:Queens Birthday Holiday (WA)
04-10-2004:Labour Day (NSW,ACT,SA)
06-10-2003:Labour Day (NSW,ACT,SA)
04-11-2003:Melbourne Cup Day
02-11-2004:Melbourne Cup Day
11-11:Remeberance Day
24-12:Christmas Eve
25-12:Christmas Day
26-12:Boxing Day
31-12:New Years Eve
*/ 
/* end of holidays list file holidays.txt */ 


Usage Example


Just open calendar.php


Rate This Script





Search



This Category All Categories