コード例 #1
0
 /**
  * A function to generate month view of a set of events
  * @param array $day day to show
  * @param integer $month month to show
  * @param integer $year year to show
  * @param array $weekdaynames
  * @return object with `count` attribute containing the number of associated events with the item
  */
 public static function month_calendar($day, $month, $year)
 {
     global $uid, $langDay_of_weekNames, $langMonthNames, $langToday, $langDay, $langWeek, $langMonth, $langView;
     $calendar_content = "";
     //Handle leap year
     $numberofdays = array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
     if ($year % 400 == 0 or $year % 4 == 0 and $year % 100 != 0) {
         $numberofdays[2] = 29;
     }
     $eventlist = Calendar_Events::get_calendar_events("month", "{$year}-{$month}-{$day}");
     $events = array();
     if ($eventlist) {
         foreach ($eventlist as $event) {
             $eventday = new DateTime($event->startdate);
             $eventday = $eventday->format('j');
             if (!array_key_exists($eventday, $events)) {
                 $events[$eventday] = array();
             }
             array_push($events[$eventday], $event);
         }
     }
     //Get the first day of the month
     $dayone = getdate(mktime(0, 0, 0, $month, 1, $year));
     //Start the week on monday
     $startdayofweek = $dayone['wday'] != 0 ? $dayone['wday'] - 1 : 6;
     $backward = array('month' => $month == 1 ? 12 : $month - 1, 'year' => $month == 1 ? $year - 1 : $year);
     $foreward = array('month' => $month == 12 ? 1 : $month + 1, 'year' => $month == 12 ? $year + 1 : $year);
     $calendar_content .= '<div class="right" style="width:100%">' . $langView . ':&nbsp;' . '<a href="#" onclick="show_day(selectedday, selectedmonth, selectedyear);return false;">' . $langDay . '</a>&nbsp;|&nbsp;' . '<a href="#" onclick="show_week(selectedday, selectedmonth, selectedyear);return false;">' . $langWeek . '</a>&nbsp;|&nbsp;' . '<a href="#" onclick="show_month(selectedday, selectedmonth, selectedyear);return false;">' . $langMonth . '</a></div>';
     $calendar_content .= '<table width=100% class="title1">';
     $calendar_content .= "<tr>";
     $calendar_content .= '<td width="250"><a href="#" onclick="show_month(1,' . $backward['month'] . ',' . $backward['year'] . '); return false;">&laquo;</a></td>';
     $calendar_content .= "<td class='center'><b>{$langMonthNames['long'][$month - 1]} {$year}</b></td>";
     $calendar_content .= '<td width="250" class="right"><a href="#" onclick="show_month(1,' . $foreward['month'] . ',' . $foreward['year'] . '); return false;">&raquo;</a></td>';
     $calendar_content .= "</tr>";
     $calendar_content .= "</table><br />";
     $calendar_content .= "<table class='table-default'><tr>";
     for ($ii = 1; $ii < 8; $ii++) {
         $calendar_content .= "<th class='center'>" . $langDay_of_weekNames['long'][$ii % 7] . "</th>";
     }
     $calendar_content .= "</tr>";
     $curday = -1;
     $today = getdate();
     while ($curday <= $numberofdays[$month]) {
         $calendar_content .= "<tr>";
         for ($ii = 0; $ii < 7; $ii++) {
             if ($curday == -1 && $ii == $startdayofweek) {
                 $curday = 1;
             }
             if ($curday > 0 && $curday <= $numberofdays[$month]) {
                 $bgcolor = $ii < 5 ? "class='alert alert-danger'" : "class='odd'";
                 $dayheader = "{$curday}";
                 $class_style = "class=odd";
                 if ($curday == $today['mday'] && $year == $today['year'] && $month == $today['mon']) {
                     $dayheader = "<b>{$curday}</b> <small>({$langToday})</small>";
                     $class_style = "class='today'";
                 }
                 $calendar_content .= "<td height=50 width=14% valign=top {$class_style}><b>{$dayheader}</b>";
                 $thisDayItems = "";
                 if (array_key_exists($curday, $events)) {
                     foreach ($events[$curday] as $ev) {
                         $thisDayItems .= Calendar_Events::month_calendar_item($ev, Calendar_Events::$calsettings->{$ev->event_group . "_color"});
                     }
                     $calendar_content .= "{$thisDayItems}</td>";
                 }
                 $curday++;
             } else {
                 $calendar_content .= "<td width=14%>&nbsp;</td>";
             }
         }
         $calendar_content .= "</tr>";
     }
     $calendar_content .= "</table>";
     /* Legend */
     $calendar_content .= Calendar_Events::calendar_legend();
     /***************************************  Bootstrap calendar  ******************************************************/
     $calendar_content .= '<div id="bootstrapcalendar"></div>';
     return $calendar_content;
 }