Hele PHP koden: (linje 126 og frem, er foreachen)
- <?php
-
- class Calendar {
-
- /**
- * Constructor
- */
- public function __construct(){
- $this->naviHref = htmlentities($_SERVER['PHP_SELF']);
- }
-
- /********************* PROPERTY ********************/
- // private $dayLabels = array("Man","Tir","Ons","Tor","Fre","Lør","Søn");
- private $dayLabels = array("M","T","O","T","F","L","S");
-
-
- private $currentYear=0;
-
- private $currentMonth=0;
-
- private $currentDay=0;
-
- private $currentDate=null;
-
- private $daysInMonth=0;
-
- private $naviHref= null;
-
- /********************* PUBLIC **********************/
-
- /**
- * print out the calendar
- */
- public function show() {
- $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 **********************/
- /**
- * 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;
- }
-
- $begivenheder = array(1 => "Middag med John", 2 => "Fødselsdag hos Alex", 3 => "Kage");
- $ost = "";
- foreach ($begivenheder as $key => $eventInfo) {
- //HVIS $KEY er lig den dag der er i loopet skal den tilføje en klasse/boks med infoen.
- if($key == $cellContent){
- $ost .= '<li id="li-'.$this->currentDate.'" class="eventToday'.($cellContent==date('d')?' TodayHL ':'').($cellNumber%7==1?' start ':($cellNumber%7==0?' end ':' ')).
- ($cellContent==null?'mask':'').'"><a href="">'.$cellContent.'</a><span class="eventInfo">'.$eventInfo.'</span></li>';
- }
- if(empty($ost)){
- $ost = '<li id="li-'.$this->currentDate.'" class="'.($cellContent==date('d')?' TodayHL ':'').($cellNumber%7==1?' start ':($cellNumber%7==0?' end ':' ')).
- ($cellContent==null?'mask':'').'"><a href="">'.$cellContent.'</a></li>';
- }
- }
- return $ost;
-
- }
-
- /**
- * 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.'">Prev</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.'">Next</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'));
- }
-
- }
Og php koden på Index siden:
- include 'calendar.php';
-
- $calendar = new Calendar();
-
- echo $calendar->show();
Indlæg senest redigeret d. 19.07.2015 01:36 af Bruger #21207