php 日歷類 日歷控件

efy6 9年前發布 | 3K 次閱讀 PHP

<?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>"; } }</pre>

 本文由用戶 efy6 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!