naviHref = htmlentities($_SERVER['PHP_SELF']); } /** * print out the calendar */ public function show() { $year = null; $month = null; if(null==$year&&isset($_GET['years'])){ $year = intval( $_GET['years'] ); }else if(null==$year){ $year = date("Y",time()); } if(null==$month&&isset($_GET['month'])){ $month = intval( $_GET['month'] ); }else if(null==$month){ $month = date("m",time()); } $this->currentYear=$year; $this->currentMonth=$month; $this->daysInMonth=$this->_daysInMonth($month,$year); $this->holidays = AppointmentSw::getHolidays( $month, $year ); $content = '
'; $content .= ''; $content .= ''; $content .= ''; $content .= wp_nonce_field ( 'appointmentsw', 'appointmentsw-nonce', true, false ); $content .= '
'. '
'. $this->_createNavi(). '
'. '
'. '
    '.$this->_createLabels().'
'; $content.='
'; $content.='
    '; $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.='
'; $content.='
'; $content.='
'; $content.='
'; $content .= '

'; $content .= '
'; 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; } $output = ""; $output .= '
  • '.$cellContent; if ( $this->currentDate !== null ) { $holiday_0 = isset( $this->holidays[$this->currentDate . '_0'] )?$this->holidays[$this->currentDate . '_0']:null; $holiday_1 = isset( $this->holidays[$this->currentDate . '_1'] )?$this->holidays[$this->currentDate . '_1']:null; $selected_0 = ($holiday_0==null)?"":"checked"; $selected_1 = ($holiday_1==null)?"":"checked"; $output .= ''; $output .= '
    '; $output .= 'M'; $output .= '
    '; $output .= '
    '; $output .= 'T'; $output .= '
    '; } $output .= '
  • '; return $output; } /** * 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 '
    '. ''. ''. __(date('M',strtotime($this->currentYear.'-'.$this->currentMonth.'-1'))) . date(' Y',strtotime($this->currentYear.'-'.$this->currentMonth.'-1')) .''. ''. '
    '; } /** * create calendar week labels */ private function _createLabels(){ $this->dayLabels[] = __( "Mon", 'appointmentsw' ); $this->dayLabels[] = __( "Tue", 'appointmentsw' ); $this->dayLabels[] = __( "Wed", 'appointmentsw' ); $this->dayLabels[] = __( "Thu", 'appointmentsw' ); $this->dayLabels[] = __( "Fri", 'appointmentsw' ); $this->dayLabels[] = __( "Sat", 'appointmentsw' ); $this->dayLabels[] = __( "Sun", 'appointmentsw' ); $content=''; foreach($this->dayLabels as $index=>$label){ $content.='
  • '.$label.'
  • '; } 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')); } }