Location: PHPKode > scripts > pcCalendar > pccalendar/pccalendar.php3
<?
        /*
                pcCalendar - display calendar for a given month & year
                Copyright (c) 2000, Polaris Computing
                http://www.polaris.ca/
        */

        class pcCalendar
        {

                var $gaWeekTitles;

                function pcCalendar()
                {
                        /* initialise the global variables */
                        $this->gaWeekTitles[] = "Sunday";
                        $this->gaWeekTitles[] = "Monday";
                        $this->gaWeekTitles[] = "Tuesday";
                        $this->gaWeekTitles[] = "Wednesday";
                        $this->gaWeekTitles[] = "Thursday";
                        $this->gaWeekTitles[] = "Friday";
                        $this->gaWeekTitles[] = "Saturday";
                }

                function intShowCalendar( $intYear = 0, $intMonth = 0 )
                {
                        /* if month and/or year not set, change to current month and year */
                        $intMonth = ( $intMonth == 0 ) ? strftime( "%m" ) : $intMonth;
                        $intYear = ( $intYear == 0 ) ? strftime( "%Y" ) : $intYear;

                        /* determine total days in month */
                        $lintTotalDays = 0;
                        while ( checkdate( $intMonth, $lintTotalDays + 1, $intYear ) )
                                $lintTotalDays++;

                        /* build table */
                        $this->intStartTable();
                        $this->intStartRow();

                        for ( $i = 0; $i < 7; $i++ )
                                $this->intDisplayWeekTitle( $i );

                        $this->intFinishRow();
                        $this->intStartRow();

                        /* ensure that enough blanks are put in so that the first day of the month
                           lines up with the proper day of the week */
                        $lintOffset = date( "w", mktime( 0, 0, 0, $intMonth, 1, $intYear ) );
                        for ( $i = 0; $i < $lintOffset; $i++ )
                                $this->intDisplayDay( 0, 0, "&nbsp;" );

                        /* start filling in the days of the month */
                        for ( $lintDay = 1; $lintDay <= $lintTotalDays; $lintDay++ )
                        {
                                $this->intDisplayDay( $intYear, $intMonth, $lintDay );

                                /* terminate row if we're at on the last day of the week */
                                $lintOffset++;
                                if ( $lintOffset > 6 )
                                {
                                        $lintOffset = 0;
                                        $this->intFinishRow;
                                        if ( $lintDay < $lintTotalDays )
                                                $this->intStartRow();
                                }
                        }

                        /* fill in the remainder of the row with spaces */
                        if ( $lintOffset > 0 )
                                $lintOffset = 7 - $lintOffset;

                        for ( $i = 0; $i < $lintOffset; $i++ )
                                $this->intDisplayDay( 0, 0, "&nbsp;" );

                        $this->intFinishRow();
                        $this->intFinishTable();
                }


                function intStartTable()
                {
                        /* this function should be overridden with your own routines */

                        echo '<table border="1" cellpadding="5" cellspacing="5" width="100%">';
                }

                function intFinishTable()
                {
                        /* this function should be overridden with your own routines */

                        echo '</table>';
                } 

                function intStartRow()
                {
                        /* this function should be overridden with your own routines */

                        echo '<tr>';
                }

                function intFinishRow()
                {
                        /* this function should be overridden with your own routines */

                        echo '</tr>';
                }

                function intDisplayWeekTitle( $intWeekDay )
                {
                        /* this function should be overridden with your own routines */

                        echo '<th><b><font face="Arial">', $this->gaWeekTitles[ $intWeekDay ], '</font></b></th>';
                }

                function intDisplayDay( $intYear, $intMonth, $intDay )
                {
                        /* this function should be overridden with your own routines */

                        echo '<td>', $intDay, '</td>';
                }
        }
?>
Return current item: pcCalendar