| 1 | <?php |
|---|
| 2 | /** |
|---|
| 3 | * Description: Performs same behaviour as 2.php but uses Month::buildWeekDays() |
|---|
| 4 | * and is faster |
|---|
| 5 | */ |
|---|
| 6 | function getmicrotime(){ |
|---|
| 7 | list($usec, $sec) = explode(" ",microtime()); |
|---|
| 8 | return ((float)$usec + (float)$sec); |
|---|
| 9 | } |
|---|
| 10 | $start = getmicrotime(); |
|---|
| 11 | |
|---|
| 12 | if ( !@include 'Calendar/Calendar.php' ) { |
|---|
| 13 | define('CALENDAR_ROOT','../../'); |
|---|
| 14 | } |
|---|
| 15 | require_once CALENDAR_ROOT.'Month/Weekdays.php'; |
|---|
| 16 | require_once CALENDAR_ROOT.'Day.php'; |
|---|
| 17 | |
|---|
| 18 | if (!isset($_GET['y'])) $_GET['y'] = date('Y'); |
|---|
| 19 | if (!isset($_GET['m'])) $_GET['m'] = date('m'); |
|---|
| 20 | if (!isset($_GET['d'])) $_GET['d'] = date('d'); |
|---|
| 21 | |
|---|
| 22 | // Build the month |
|---|
| 23 | $Month = new Calendar_Month_Weekdays($_GET['y'],$_GET['m']); |
|---|
| 24 | |
|---|
| 25 | // Construct strings for next/previous links |
|---|
| 26 | $PMonth = $Month->prevMonth('object'); // Get previous month as object |
|---|
| 27 | $prev = $_SERVER['PHP_SELF'].'?y='.$PMonth->thisYear().'&m='.$PMonth->thisMonth().'&d='.$PMonth->thisDay(); |
|---|
| 28 | $NMonth = $Month->nextMonth('object'); |
|---|
| 29 | $next = $_SERVER['PHP_SELF'].'?y='.$NMonth->thisYear().'&m='.$NMonth->thisMonth().'&d='.$NMonth->thisDay(); |
|---|
| 30 | ?> |
|---|
| 31 | <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN"> |
|---|
| 32 | <html> |
|---|
| 33 | <head> |
|---|
| 34 | <title> Calendar </title> |
|---|
| 35 | <style text="text/css"> |
|---|
| 36 | table { |
|---|
| 37 | background-color: silver; |
|---|
| 38 | } |
|---|
| 39 | caption { |
|---|
| 40 | font-family: verdana; |
|---|
| 41 | font-size: 12px; |
|---|
| 42 | background-color: while; |
|---|
| 43 | } |
|---|
| 44 | .prevMonth { |
|---|
| 45 | font-size: 10px; |
|---|
| 46 | text-align: left; |
|---|
| 47 | } |
|---|
| 48 | .nextMonth { |
|---|
| 49 | font-size: 10px; |
|---|
| 50 | text-align: right; |
|---|
| 51 | } |
|---|
| 52 | th { |
|---|
| 53 | font-family: verdana; |
|---|
| 54 | font-size: 11px; |
|---|
| 55 | color: navy; |
|---|
| 56 | text-align: right; |
|---|
| 57 | } |
|---|
| 58 | td { |
|---|
| 59 | font-family: verdana; |
|---|
| 60 | font-size: 11px; |
|---|
| 61 | text-align: right; |
|---|
| 62 | } |
|---|
| 63 | .selected { |
|---|
| 64 | background-color: yellow; |
|---|
| 65 | } |
|---|
| 66 | </style> |
|---|
| 67 | </head> |
|---|
| 68 | |
|---|
| 69 | <body> |
|---|
| 70 | |
|---|
| 71 | <?php |
|---|
| 72 | $selectedDays = array ( |
|---|
| 73 | new Calendar_Day($_GET['y'],$_GET['m'],$_GET['d']), |
|---|
| 74 | new Calendar_Day($_GET['y'],12,25), |
|---|
| 75 | ); |
|---|
| 76 | |
|---|
| 77 | // Build the days in the month |
|---|
| 78 | $Month->build($selectedDays); |
|---|
| 79 | ?> |
|---|
| 80 | <h2>Built with Calendar_Month_Weekday::build()</h2> |
|---|
| 81 | <table class="calendar"> |
|---|
| 82 | <caption> |
|---|
| 83 | <?php echo ( date('F Y',$Month->getTimeStamp())); ?> |
|---|
| 84 | </caption> |
|---|
| 85 | <tr> |
|---|
| 86 | <th>M</th> |
|---|
| 87 | <th>T</th> |
|---|
| 88 | <th>W</th> |
|---|
| 89 | <th>T</th> |
|---|
| 90 | <th>F</th> |
|---|
| 91 | <th>S</th> |
|---|
| 92 | <th>S</th> |
|---|
| 93 | </tr> |
|---|
| 94 | <?php |
|---|
| 95 | while ( $Day = $Month->fetch() ) { |
|---|
| 96 | |
|---|
| 97 | // Build a link string for each day |
|---|
| 98 | $link = $_SERVER['PHP_SELF']. |
|---|
| 99 | '?y='.$Day->thisYear(). |
|---|
| 100 | '&m='.$Day->thisMonth(). |
|---|
| 101 | '&d='.$Day->thisDay(); |
|---|
| 102 | |
|---|
| 103 | // isFirst() to find start of week |
|---|
| 104 | if ( $Day->isFirst() ) |
|---|
| 105 | echo ( "<tr>\n" ); |
|---|
| 106 | |
|---|
| 107 | if ( $Day->isSelected() ) { |
|---|
| 108 | echo ( "<td class=\"selected\">".$Day->thisDay()."</td>\n" ); |
|---|
| 109 | } else if ( $Day->isEmpty() ) { |
|---|
| 110 | echo ( "<td> </td>\n" ); |
|---|
| 111 | } else { |
|---|
| 112 | echo ( "<td><a href=\"".$link."\">".$Day->thisDay()."</a></td>\n" ); |
|---|
| 113 | } |
|---|
| 114 | |
|---|
| 115 | // isLast() to find end of week |
|---|
| 116 | if ( $Day->isLast() ) |
|---|
| 117 | echo ( "</tr>\n" ); |
|---|
| 118 | } |
|---|
| 119 | ?> |
|---|
| 120 | <tr> |
|---|
| 121 | <td> |
|---|
| 122 | <a href="<?php echo ($prev);?>" class="prevMonth"><< </a> |
|---|
| 123 | </td> |
|---|
| 124 | <td colspan="5"> </td> |
|---|
| 125 | <td> |
|---|
| 126 | <a href="<?php echo ($next);?>" class="nextMonth"> >></a> |
|---|
| 127 | </td> |
|---|
| 128 | </tr> |
|---|
| 129 | </table> |
|---|
| 130 | <?php |
|---|
| 131 | echo ( '<p><b>Took: '.(getmicrotime()-$start).' seconds</b></p>' ); |
|---|
| 132 | ?> |
|---|
| 133 | </body> |
|---|
| 134 | </html> |
|---|