css — Подсветка праздников (красных дней) в календаре PHP

Я искал способ выделить праздники в календаре, который работает до сих пор.
Это какая-то библиотека, которая мне нужна, и если да, то как мне ее реализовать, чтобы выделить праздники? Вот коды, которые у меня есть:

<?php

/*
Class for Calendar
*/

class Ccalendar {/*Property*/
private $dayLabels = array("Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag","Söndag");

private $currentYear=0;

private $currentMonth=0;

private $currentDay=0;

private $currentDate=null;

private $daysInMonth=0;

private $naviHref= null;

/*  public functions ------------------------------------------------------------------------------- */

/**
* print out the calendar
*/
public function showCal() {
$year  = null;

$month = null;

if(null==$year&&isset($_GET['year'])){

$year = $_GET['year'];

}else if(null==$year){

$year = date("Y",time());

}

if(null==$month&&isset($_GET['month'])){

$month = $_GET['month'];

}else if(null==$month){

$month = date("m",time());

}

$this->currentYear=$year;

$this->currentMonth=$month;

$this->daysInMonth=$this->_daysInMonth($month,$year);

$content='<div id="calendar">'.
'<div class="box">'.
$this->_createNavi().
'</div>'.
'<div class="box-content">'.
'<ul class="label">'.$this->_createLabels().'</ul>';
$content.='<div class="clear"></div>';
$content.='<ul class="dates">';

$weeksInMonth = $this->_weeksInMonth($month,$year);
// Create weeks in a month
for( $i=0; $i<$weeksInMonth; $i++ ){

//Create days in a week
for($j=1;$j<=7;$j++){
$content.=$this->_showDay($i*7+$j);
}
}

$content.='</ul>';

$content.='<div class="clear"></div>';

$content.='</div>';

$content.='</div>';
return $content;
}/*  private functions ------------------------------------------------------------------------------- */

/**
* create the li element for ul
*/
private function _showDay($cellNumber){

if($this->currentDay==0){

$firstDayOfTheWeek = date('N',strtotime($this->currentYear.'-'.$this->currentMonth.'-01'));

if(intval($cellNumber) == intval($firstDayOfTheWeek)){

$this->currentDay=1;

}
}

if( ($this->currentDay!=0)&&($this->currentDay<=$this->daysInMonth) ){

$this->currentDate = date('Y-m-d',strtotime($this->currentYear.'-'.$this->currentMonth.'-'.($this->currentDay)));

$cellContent = $this->currentDay;

$this->currentDay++;

}else{

$this->currentDate =null;

$cellContent=null;
}return '<li id="li-'.$this->currentDate.'" class="'.($cellNumber%7==1?' start ':($cellNumber%7==0?' end ':' ')).
($cellContent==null?'mask':'').'">'.$cellContent.'</li>';
}

/**
* create navigation
*/
private function _createNavi(){

$nextMonth = $this->currentMonth==12?1:intval($this->currentMonth)+1;

$nextYear = $this->currentMonth==12?intval($this->currentYear)+1:$this->currentYear;

$preMonth = $this->currentMonth==1?12:intval($this->currentMonth)-1;

$preYear = $this->currentMonth==1?intval($this->currentYear)-1:$this->currentYear;

return
'<div class="header">'.
'<a class="prev" href="'.$this->naviHref.'?month='.sprintf('%02d',$preMonth).'&year='.$preYear.'"><<</a>'.
'<span class="title">'.date('Y M',strtotime($this->currentYear.'-'.$this->currentMonth.'-1')).'</span>'.
'<a class="next" href="'.$this->naviHref.'?month='.sprintf("%02d", $nextMonth).'&year='.$nextYear.'">>></a>'.
'</div>';
}

/**
* create calendar week labels
*/
private function _createLabels(){

$content='';

foreach($this->dayLabels as $index=>$label){

$content.='<li class="'.($label==6?'end title':'start title').' title">'.$label.'</li>';

}

return $content;
}/**
* calculate number of weeks in a particular month
*/
private function _weeksInMonth($month=null,$year=null){

if( null==($year) ) {
$year =  date("Y",time());
}

if(null==($month)) {
$month = date("m",time());
}

// find number of days in this month
$daysInMonths = $this->_daysInMonth($month,$year);

$numOfweeks = ($daysInMonths%7==0?0:1) + intval($daysInMonths/7);

$monthEndingDay= date('N',strtotime($year.'-'.$month.'-'.$daysInMonths));

$monthStartDay = date('N',strtotime($year.'-'.$month.'-01'));

if($monthEndingDay<$monthStartDay){

$numOfweeks++;

}

return $numOfweeks;
}

/**
* calculate number of days in a particular month
*/
private function _daysInMonth($month=null,$year=null){

if(null==($year))
$year =  date("Y",time());

if(null==($month))
$month = date("m",time());

return date('t',strtotime($year.'-'.$month.'-01'));
}

}//End class Ccalendar

?>

Вызов класса Ccalendar:

DIR ‘/ config.php’).

$calendar = new Ccalendar();
$calendarView = $calendar->showCal();

// Do it and store it all in variables in the Ichinoda container.
$ichinoda['stylesheets'][]        = 'css/calendar.css';
$ichinoda['title'] = "Kalender";$ichinoda['main'] = <<<EOD<article class="readable">

<h1>Kalender</h1>

. $calendarView .

{$ichinoda['byline']}
</article>

EOD;

// Finally, leave it all to the rendering phase of Ichinoda.
include(ICHINODA_THEME_PATH);

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …