Thursday, 4 June 2015

PHP: Allows for the creation of calendars in HTML pages

<?php
       
        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( "?" );

                        /* start filling in the days of the month */
                        for ( $lintDay = 1; $lintDay <= $lintTotalDays; $lintDay++ )
                        {
                                $this->intDisplayDay( $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( "?" );

                        $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( $intDay )
                {
                        /* this function should be overridden with your own routines */

                        echo '<td>', $intDay, '</td>';
                }
        }
?>

0 comments:

Post a Comment