- <?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>";
- }
- }
来源: http://www.phpxs.com/code/1003576/