2010-10-29 13:19:51 +00:00
< ? php
// Copyright (C) 2010 Matteo Lucarelli
//
// Some code from PHP Calendar Class Version 1.4 (5th March 2001)
// (C)2000-2001 David Wilkinson
// URL: http://www.cascade.org.uk/software/php/calendar/
// Email: davidw@cascade.org.uk
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
// DB //////////////////////////////////////////////////////////////////////////
function getEvents ( $day , $month , $year ){
global $db ;
$date = mktime ( 12 , 0 , 0 , $month , $day , $year );
$queryStr = " SELECT * FROM tblEvents WHERE start <= " . $date . " AND stop >= " . $date ;
$ret = $db -> getResultArray ( $queryStr );
return $ret ;
}
function getEventsInInterval ( $start , $stop ){
global $db ;
2012-08-28 06:35:43 +00:00
$queryStr = " SELECT * FROM tblEvents WHERE ( start <= " . ( int ) $start . " AND stop >= " . ( int ) $start . " ) " .
" OR ( start <= " . ( int ) $stop . " AND stop >= " . ( int ) $stop . " ) " .
" OR ( start >= " . ( int ) $start . " AND stop <= " . ( int ) $stop . " ) " ;
2010-10-29 13:19:51 +00:00
$ret = $db -> getResultArray ( $queryStr );
return $ret ;
}
function addEvent ( $from , $to , $name , $comment ){
global $db , $user ;
$queryStr = " INSERT INTO tblEvents (name, comment, start, stop, date, userID) VALUES " .
2012-08-28 06:35:43 +00:00
" ( " . $db -> qstr ( $name ) . " , " . $db -> qstr ( $comment ) . " , " . ( int ) $from . " , " . ( int ) $to . " , " . mktime () . " , " . $user -> getID () . " ) " ;
2010-10-29 13:19:51 +00:00
$ret = $db -> getResult ( $queryStr );
return $ret ;
}
function getEvent ( $id ){
if ( ! is_numeric ( $id )) return false ;
global $db ;
2012-08-28 06:35:43 +00:00
$queryStr = " SELECT * FROM tblEvents WHERE id = " . ( int ) $id ;
2010-10-29 13:19:51 +00:00
$ret = $db -> getResultArray ( $queryStr );
if ( is_bool ( $ret ) && $ret == false ) return false ;
else if ( count ( $ret ) != 1 ) return false ;
return $ret [ 0 ];
}
function editEvent ( $id , $from , $to , $name , $comment ){
if ( ! is_numeric ( $id )) return false ;
global $db ;
2012-08-28 06:35:43 +00:00
$queryStr = " UPDATE tblEvents SET start = " . ( int ) $from . " , stop = " . ( int ) $to . " , name = " . $db -> qstr ( $name ) . " , comment = " . $db -> qstr ( $comment ) . " , date = " . mktime () . " WHERE id = " . ( int ) $id ;
2010-10-29 13:19:51 +00:00
$ret = $db -> getResult ( $queryStr );
return $ret ;
}
function delEvent ( $id ){
if ( ! is_numeric ( $id )) return false ;
global $db ;
2012-08-28 06:35:43 +00:00
$queryStr = " DELETE FROM tblEvents WHERE id = " . ( int ) $id ;
2010-10-29 13:19:51 +00:00
$ret = $db -> getResult ( $queryStr );
return $ret ;
}
// utilities ///////////////////////////////////////////////////////////////////
function generateCalendarArrays ()
{
global $dayNames , $monthNames , $dayNamesLong ;
$monthNames = array ( getMLText ( " january " ),
getMLText ( " february " ),
getMLText ( " march " ),
getMLText ( " april " ),
getMLText ( " may " ),
getMLText ( " june " ),
getMLText ( " july " ),
getMLText ( " august " ),
getMLText ( " september " ),
getMLText ( " october " ),
getMLText ( " november " ),
getMLText ( " december " ) );
$dayNamesLong = array ( getMLText ( " sunday " ),
getMLText ( " monday " ),
getMLText ( " tuesday " ),
getMLText ( " wednesday " ),
getMLText ( " thursday " ),
getMLText ( " friday " ),
getMLText ( " saturday " ) );
$dayNames = array ();
foreach ( $dayNamesLong as $dn ){
$dayNames [] = substr ( $dn , 0 , 2 );
}
}
// Calculate the number of days in a month, taking into account leap years.
function getDaysInMonth ( $month , $year )
{
if ( $month < 1 || $month > 12 ) return 0 ;
$daysInMonth = array ( 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 );
$d = $daysInMonth [ $month - 1 ];
if ( $month == 2 ){
if ( $year % 4 == 0 ){
if ( $year % 100 == 0 ){
if ( $year % 400 == 0 ) $d = 29 ;
}
else $d = 29 ;
}
}
return $d ;
}
// Adjust dates to allow months > 12 and < 0 and day<0 or day>days of the month
function adjustDate ( & $day , & $month , & $year )
{
$d = getDate ( mktime ( 12 , 0 , 0 , $month , $day , $year ));
$month = $d [ " mon " ];
$day = $d [ " mday " ];
$year = $d [ " year " ];
}
// output //////////////////////////////////////////////////////////////////////
// Generate the HTML for a given month
function getMonthHTML ( $month , $year )
{
global $dayNames , $monthNames , $settings ;
if ( ! isset ( $monthNames )) generateCalendarArrays ();
if ( ! isset ( $dayNames )) generateCalendarArrays ();
$startDay = $settings -> _firstDayOfWeek ;
$day = 1 ;
adjustDate ( $day , $month , $year );
$daysInMonth = getDaysInMonth ( $month , $year );
$date = getdate ( mktime ( 12 , 0 , 0 , $month , 1 , $year ));
$first = $date [ " wday " ];
$monthName = $monthNames [ $month - 1 ];
$s = " <table border=0> \n " ;
$s .= " <tr> \n " ;
$s .= " <td align= \" center \" class= \" header \" colspan= \" 7 \" ><a href= \" ../out/out.Calendar.php?mode=m&year= " . $year . " &month= " . $month . " \" > " . $monthName . " </a></td> \n " ; ;
$s .= " </tr> \n " ;
$s .= " <tr> \n " ;
$s .= " <td class= \" header \" > " . $dayNames [( $startDay ) % 7 ] . " </td> \n " ;
$s .= " <td class= \" header \" > " . $dayNames [( $startDay + 1 ) % 7 ] . " </td> \n " ;
$s .= " <td class= \" header \" > " . $dayNames [( $startDay + 2 ) % 7 ] . " </td> \n " ;
$s .= " <td class= \" header \" > " . $dayNames [( $startDay + 3 ) % 7 ] . " </td> \n " ;
$s .= " <td class= \" header \" > " . $dayNames [( $startDay + 4 ) % 7 ] . " </td> \n " ;
$s .= " <td class= \" header \" > " . $dayNames [( $startDay + 5 ) % 7 ] . " </td> \n " ;
$s .= " <td class= \" header \" > " . $dayNames [( $startDay + 6 ) % 7 ] . " </td> \n " ;
$s .= " </tr> \n " ;
// We need to work out what date to start at so that the first appears in the correct column
$d = $startDay + 1 - $first ;
while ( $d > 1 ) $d -= 7 ;
// Make sure we know when today is, so that we can use a different CSS style
$today = getdate ( time ());
while ( $d <= $daysInMonth )
{
$s .= " <tr> \n " ;
for ( $i = 0 ; $i < 7 ; $i ++ ){
$class = ( $year == $today [ " year " ] && $month == $today [ " mon " ] && $d == $today [ " mday " ]) ? " today " : " " ;
$s .= " <td class= \" $class\ " > " ;
if ( $d > 0 && $d <= $daysInMonth ){
$s .= " <a href= \" ../out/out.Calendar.php?mode=w&year= " . $year . " &month= " . $month . " &day= " . $d . " \" > " . $d . " </a> " ;
}
else $s .= " " ;
$s .= " </td> \n " ;
$d ++ ;
}
$s .= " </tr> \n " ;
}
$s .= " </table> \n " ;
return $s ;
}
function printYearTable ( $year )
{
print " <table class= \" calendaryear \" border= \" 0 \" > \n " ;
print " <tr> " ;
print " <td> " . getMonthHTML ( 1 , $year ) . " </td> \n " ;
print " <td> " . getMonthHTML ( 2 , $year ) . " </td> \n " ;
print " <td> " . getMonthHTML ( 3 , $year ) . " </td> \n " ;
print " <td> " . getMonthHTML ( 4 , $year ) . " </td> \n " ;
print " </tr> \n " ;
print " <tr> \n " ;
print " <td> " . getMonthHTML ( 5 , $year ) . " </td> \n " ;
print " <td> " . getMonthHTML ( 6 , $year ) . " </td> \n " ;
print " <td> " . getMonthHTML ( 7 , $year ) . " </td> \n " ;
print " <td> " . getMonthHTML ( 8 , $year ) . " </td> \n " ;
print " </tr> \n " ;
print " <tr> \n " ;
print " <td> " . getMonthHTML ( 9 , $year ) . " </td> \n " ;
print " <td> " . getMonthHTML ( 10 , $year ) . " </td> \n " ;
print " <td> " . getMonthHTML ( 11 , $year ) . " </td> \n " ;
print " <td> " . getMonthHTML ( 12 , $year ) . " </td> \n " ;
print " </tr> \n " ;
print " </table> \n " ;
}
?>