<?php |
class CalendarForm { |
protected $year ; |
protected $month ; |
protected $day ; |
protected $weekend ; |
protected $currentdate ; |
protected $dayofmonth ; |
protected $day_count ; |
protected $num ; |
protected $week = array (); |
protected $retunrhtml = "" ; |
function __construct( $year , $month ) { |
$this ->makeWeeks( $year , $month ); |
} |
public function setYearMonth( $year , $month ) { |
$this ->year = $year ; |
$this ->month = $month ; |
} |
private function resetDayCount() { |
$this ->day_count = 1; |
} |
private function setFirstWeek() { |
$this ->num = 0; |
} |
public function getDayOfMonth( $year , $month ) { |
$this ->resetDayCount(); |
return date ( 't' , mktime (0, 0, 0, $month , $this ->day_count, $year )); |
} |
private function setDayOfMonth( $year , $month ) { |
$this ->dayofmonth = $this ->getDayOfMonth( $year , $month ); |
} |
private function getDayOfWeek() { |
return date ( 'w' , mktime (0, 0, 0, $this ->month, $this ->day_count, $this ->year)); |
} |
public function getNextMonth() { |
return date ( 'm' , mktime (0, 0, 0, $this ->month, 28, $this ->year) + 432000); |
} |
public function getNextYear() { |
return date ( 'Y' , mktime (0, 0, 0, $this ->month, 28, $this ->year) + 432000); |
} |
public function getPrevMonth() { |
return date ( 'm' , mktime (0, 0, 0, $this ->month, 1, $this ->year) - 432000); |
} |
public function getPrevYear() { |
return date ( 'Y' , mktime (0, 0, 0, $this ->month, 1, $this ->year) - 432000); |
} |
private function makeWeeks( $year , $month ) { |
$this ->setYearMonth( $year , $month ); |
$this ->setDayOfMonth( $this ->year, $this ->month); |
$this ->setFirstWeek(); |
$this ->num = 0; |
for ( $i = 0; $i < 7; $i ++) { |
$dayofweek = $this ->getDayOfWeek(); |
$dayofweek = $dayofweek - 1; |
if ( $dayofweek == -1) { |
$dayofweek = 6; |
} |
if ( $dayofweek == $i ) { |
$this ->week[ $this ->num][ $i ] = $this ->day_count; |
$this ->day_count++; |
} |
else { |
$this ->week[ $this ->num][ $i ] = "" ; |
} |
} |
while (TRUE) { |
$this ->num++; |
for ( $i = 0; $i < 7; $i ++) { |
$this ->week[ $this ->num][ $i ] = $this ->day_count; |
$this ->day_count++; |
if ( $this ->day_count > $this ->dayofmonth) { |
break ; |
} |
} |
if ( $this ->day_count > $this ->dayofmonth) { |
break ; |
} |
} |
} |
public function getCalendarHeader() { |
$this ->retunrhtml = |
"<table class=\\" calendar-table\\ ">" . |
"<tbody>" . |
"<tr><th colspan=\\" 7\\ ">" . $this ->month . "/" . $this ->year . "</th></tr>" . |
"<tr>" . |
"<th style=\\" text-align: center;\\ ">Monday</th>" . |
"<th style=\\" text-align: center;\\ ">Tuesday</th>" . |
"<th style=\\" text-align: center;\\ ">Wednesday</th>" . |
"<th style=\\" text-align: center;\\ ">Thursday</th>" . |
"<th style=\\" text-align: center;\\ ">Friday</th>" . |
"<th style=\\" text-align: center;\\ ">Saturday</th>" . |
"<th style=\\" text-align: center;\\ ">Sunday</th>" . |
"</tr>" ; |
} |
public function getCalendarFooter() { |
$this ->retunrhtml .= "</tbody></table>" ; |
} |
public function getBeginTR() { |
$this ->retunrhtml .= "<tr>" ; |
} |
public function getEndTR() { |
$this ->retunrhtml .= "</tr>" ; |
} |
protected function getDay() { |
return $this ->day; |
} |
protected function getMonth() { |
return $this ->month; |
} |
protected function getYear() { |
return $this ->year; |
} |
protected function isWeekend() { |
return $this ->weekend; |
} |
protected function isCurrent() { |
return $this ->currentdate; |
} |
public function getTDHref() { |
return $this ->getDay(); |
} |
public function getTD() { |
$class = '' ; |
$td = "td" ; |
if ( $this ->isCurrent()) { |
$class = 'today' ; |
} |
$this ->retunrhtml .= "<$td class=\\" $class \\ ">" . $this ->getTDHref() . "</$td>" ; |
} |
public function getTDWeekend() { |
$class = '' ; |
$td = "td" ; |
if ( $this ->isCurrent()) { |
$class = 'today' ; |
} |
$this ->retunrhtml .= "<$td class=\\" $class \\ ">" . $this ->getTDHref() . "</$td>" ; |
} |
protected function makeCodeMonth( $year , $month ) { |
$this ->makeWeeks( $year , $month ); |
$this ->getCalendarHeader(); |
for ( $i = 0; $i < count ( $this ->week); $i ++) { |
$this ->getBeginTR(); |
for ( $j = 0; $j < 7; $j ++) { |
if (! empty ( $this ->week[ $i ][ $j ])) { |
$this ->day = $this ->week[ $i ][ $j ]; |
$this ->currentdate = 0; |
if ( $this ->year == date ( 'Y' ) && $this ->month == date ( 'm' ) && $this ->day == date ( 'j' )) { |
$this ->currentdate = 1; |
} |
if ( $j == 5 || $j == 6) { |
$this ->weekend = 1; |
$this ->getTDWeekend(); |
} |
else { |
$this ->weekend = 0; |
$this ->getTD(); |
} |
} |
else { |
$this ->retunrhtml .= "<td> </td>" ; |
} |
} |
$this ->getEndTR(); |
} |
$this ->getCalendarFooter(); |
} |
public function getCodeMonth() { |
$this ->makeCodeMonth( $this ->year, $this ->month); |
return $this ->retunrhtml; |
} |
public function showCodeMonth() { |
echo $this ->getCodeMonth(); |
} |
} |
class TechCalendarForm extends CalendarForm { |
public function getTDHref() { |
if ( $this ->isWeekend()) { |
$font = "<font color=\\" #FF3F4F\\ ">" ; |
} |
else { |
$font = "<font color=\\" #4A5B6C\\ ">" ; |
} |
return "<a href=\\" " . $_SERVER[" PHP_SELF "] . " ?action=showdate& date = " . parent::getYear() . " - " . parent::getMonth() . " - " . parent::getDay() . " \\ ">" . $font . parent::getDay() . "</font></a>" ; |
} |
} |