Пример #1
0
 /**
  * Set line and bar dataset
  * 
  * @param Collection $data
  * @param String $title
  * @param Integer $i
  */
 public function setLineBarDataSet($data, $title, $i = 0)
 {
     // Copy the Carbon instance of start_date
     $iterate_date = $this->start_date->copy();
     $color = new Color(config('chartjs.colors.' . $i));
     $collection = collect();
     // Set dates with leads
     while ($iterate_date <= $this->end_date) {
         $count = isset($data[$iterate_date->toDateString()]) ? $data[$iterate_date->toDateString()] : 0;
         $collection->push($count);
         $iterate_date->addDay();
     }
     $this->dataset = collect(['label' => $title, 'data' => $collection, 'fillColor' => '#' . $color->getHex(), 'strokeColor' => '#' . $color->getHex(), 'pointColor' => '#' . $color->getHex(), 'pointHighlightStroke' => '#' . $color->getHex()]);
 }
 /**
  * Make a calendar list of events.
  *
  * Outputs a list of events according to events for the specified range.
  *
  * @since  3.0.0
  * @access private
  *
  * @param  int $timestamp
  * @param  int $id
  *
  * @return string
  */
 private function draw_list($timestamp, $id = 0)
 {
     $calendar = $this->calendar;
     if (empty($calendar)) {
         $calendar = $this->calendar = simcal_get_calendar(intval($id));
         if (!$calendar instanceof Default_Calendar) {
             return '';
         }
     }
     date_default_timezone_set($calendar->timezone);
     $now = $calendar->now;
     $current_events = $this->get_events($timestamp);
     $day_format = explode(' ', $calendar->date_format);
     ob_start();
     // Draw the events.
     $block_tag = $calendar->compact_list && !empty($current_events) ? 'div' : 'dl';
     $data_heading = '';
     $heading = $this->get_heading();
     foreach ($heading as $k => $v) {
         $data_heading .= ' data-heading-' . $k . '="' . $v . '"';
     }
     echo '<' . $block_tag . ' class="simcal-events-list-container"' . ' data-prev="' . $this->prev . '"' . ' data-next="' . $this->next . '"' . $data_heading . '>';
     if (!empty($current_events) && is_array($current_events)) {
         foreach ($current_events as $ymd => $events) {
             $day_ts = Carbon::createFromFormat('Ymd', $ymd, $calendar->timezone)->getTimestamp();
             if (!$calendar->compact_list) {
                 $date = new Carbon('now', $calendar->timezone);
                 $date->setLocale(substr(get_locale(), 0, 2));
                 $date->setTimestamp($day_ts);
                 if ($date->isToday()) {
                     $the_color = new Color($calendar->today_color);
                 } else {
                     $the_color = new Color($calendar->days_events_color);
                 }
                 $bg_color = '#' . $the_color->getHex();
                 $color = $the_color->isDark() ? '#ffffff' : '#000000';
                 $border_style = ' style="border-bottom: 1px solid ' . $bg_color . ';" ';
                 $bg_style = ' style="background-color: ' . $bg_color . '; color: ' . $color . ';"';
                 echo "\t" . '<dt class="simcal-day-label"' . $border_style . '>';
                 echo '<span' . $bg_style . '>';
                 foreach ($day_format as $format) {
                     echo $format ? '<span class="simcal-date-format" data-date-format="' . $format . '">' . date_i18n($format, $day_ts) . '</span> ' : ' ';
                 }
                 echo '</span>';
                 echo '</dt>' . "\n";
             }
             $list_events = '<ul class="simcal-events">' . "\n";
             $calendar_classes = array();
             $day_classes = 'simcal-weekday-' . date('w', $day_ts);
             // Is this the present, the past or the future, Doc?
             if ($timestamp <= $now && $timestamp >= $now) {
                 $day_classes .= ' simcal-today simcal-present simcal-day';
             } elseif ($timestamp < $now) {
                 $day_classes .= ' simcal-past simcal-day';
             } elseif ($this->end > $now) {
                 $day_classes .= ' simcal-future simcal-day';
             }
             $count = 0;
             foreach ($events as $day_events) {
                 foreach ($day_events as $event) {
                     if ($event instanceof Event) {
                         $event_classes = $event_visibility = '';
                         $calendar_class = 'simcal-events-calendar-' . strval($event->calendar);
                         $calendar_classes[] = $calendar_class;
                         $recurring = $event->recurrence ? 'simcal-event-recurring ' : '';
                         $has_location = $event->venue ? 'simcal-event-has-location ' : '';
                         $event_classes .= 'simcal-event ' . $recurring . $has_location . $calendar_class;
                         // Toggle some events visibility if more than optional limit.
                         if ($calendar->events_limit > -1 && $count >= $calendar->events_limit) {
                             $event_classes .= ' simcal-event-toggled';
                             $event_visibility = ' style="display: none"';
                         }
                         $event_color = '';
                         $bullet = '';
                         $event_color = $event->get_color();
                         if (!empty($event_color)) {
                             $side = is_rtl() ? 'right' : 'left';
                             $event_color = ' style="border-' . $side . ': 4px solid ' . $event_color . '; padding-' . $side . ': 8px;"';
                         }
                         $list_events .= "\t" . '<li class="' . $event_classes . '"' . $event_visibility . $event_color . ' itemprop="event" itemscope itemtype="http://schema.org/Event">' . "\n";
                         $list_events .= "\t\t" . '<div class="simcal-event-details">' . $calendar->get_event_html($event) . '</div>' . "\n";
                         $list_events .= "\t" . '</li>' . "\n";
                         $count++;
                         // Event falls within today.
                         if ($this->end <= $now && $this->start >= $now) {
                             $day_classes .= ' simcal-today-has-events';
                         }
                         $day_classes .= ' simcal-day-has-events simcal-day-has-' . strval($count) . '-events';
                         if ($calendar_classes) {
                             $day_classes .= ' ' . trim(implode(' ', array_unique($calendar_classes)));
                         }
                     }
                 }
             }
             $list_events .= '</ul>' . "\n";
             // If events visibility is limited, print the button toggle.
             if ($calendar->events_limit > -1 && $count > $calendar->events_limit) {
                 $list_events .= '<button class="simcal-events-toggle"><i class="simcal-icon-down simcal-icon-animate"></i></button>';
             }
             // Print final list of events for the current day.
             $tag = $calendar->compact_list ? 'div' : 'dd';
             echo '<' . $tag . ' class="' . $day_classes . '" data-events-count="' . strval($count) . '">' . "\n";
             echo "\t" . $list_events . "\n";
             echo '</' . $tag . '>' . "\n";
         }
     } else {
         echo "\t" . '<p>';
         $message = get_post_meta($calendar->id, '_no_events_message', true);
         if ('events' == $calendar->group_type) {
             echo !empty($message) ? $message : __('Nothing to show.', 'google-calendar-events');
         } else {
             if (!empty($message)) {
                 echo $message;
             } else {
                 $from = Carbon::createFromTimestamp($this->start, $calendar->timezone)->getTimestamp();
                 $to = Carbon::createFromTimestamp($this->end, $calendar->timezone)->getTimestamp();
                 echo apply_filters('simcal_no_events_message', sprintf(__('Nothing from %1$s to %2$s.', 'google-calendar-events'), date_i18n($calendar->date_format, $from), date_i18n($calendar->date_format, $to)), $calendar->id, $from, $to);
             }
         }
         echo "\t" . '</p>' . "\n";
     }
     echo '</' . $block_tag . '>';
     date_default_timezone_set($calendar->site_timezone);
     return ob_get_clean();
 }
 /**
  * Make a calendar grid.
  *
  * Outputs an html calendar according to month and year passed in arguments.
  * Loosely inspired by: http://davidwalsh.name/php-calendar
  * Adjusted by timezone and with an arbitrary week start day.
  *
  * @since  3.0.0
  * @access private
  *
  * @param  int $month The month to print (two digits).
  * @param  int $year  The corresponding year (four digits).
  * @param  int $id    The calendar id.
  *
  * @return string
  */
 private function draw_month($month, $year, $id = 0)
 {
     $calendar = $this->calendar;
     if (empty($calendar)) {
         $calendar = simcal_get_calendar(intval($id));
         if (!$calendar) {
             return '';
         }
     }
     date_default_timezone_set($calendar->timezone);
     $events = $calendar->events;
     // Variables to cycle days in current month and find today in calendar.
     $now = $calendar->now;
     $current = Carbon::create($year, $month, 1, 0, 0, 59, $calendar->timezone);
     $current_min = $current->getTimestamp();
     $current_max = $current->endOfDay()->getTimestamp();
     // Calendar grid variables.
     $week_starts = $calendar->week_starts;
     $week_of_year = $current->weekOfYear;
     // Relative count of the week number of the year.
     $month_starts = $current->dayOfWeek;
     // Day upon which the month starts.
     $days_in_month = $current->daysInMonth;
     // Number of days in the given month.
     // Set current month events timestamp boundaries.
     $this->start = $current_min;
     $this->end = $current->endOfMonth()->timestamp;
     // Get daily events for this month.
     if ($events && is_array($events)) {
         // Filter events within the boundaries previously set above.
         $timestamps = array_keys($events);
         $lower_bound = array_filter($timestamps, array($this, 'filter_events_before'));
         $higher_bound = array_filter($lower_bound, array($this, 'filter_events_after'));
         $filtered = array_intersect_key($events, array_combine($higher_bound, $higher_bound));
         // Put resulting events in an associative array, with day of the month as key for easy retrieval in calendar days loop.
         $day_events = array();
         foreach ($filtered as $timestamp => $events_in_day) {
             foreach ($events_in_day as $event) {
                 if ($event instanceof Event) {
                     $day = intval(Carbon::createFromTimestamp($timestamp, $event->timezone)->endOfDay()->day);
                     $day_events[$day][] = $event;
                 }
             }
         }
         ksort($day_events, SORT_NUMERIC);
     }
     ob_start();
     echo '<tbody class="simcal-month simcal-month-' . $month . '">' . "\n";
     echo "\t" . '<tr class="simcal-week simcal-week-' . $week_of_year . '">';
     $days_in_row = 0;
     // Week may start on an arbitrary day (sun, 0 - sat, 6).
     $week_day = $week_starts;
     // This fixes a possible bug when a month starts by Sunday (0).
     if (0 !== $week_starts) {
         $b = $month_starts === 0 ? 7 : $month_starts;
     } else {
         $b = $month_starts;
     }
     // Void days in first week.
     for ($a = $week_starts; $a < $b; $a++) {
         $last_void_day_class = $a === $b - 1 ? 'simcal-day-void-last' : '';
         echo '<td class="simcal-day simcal-day-void ' . $last_void_day_class . '"></td>' . "\n";
         // Reset day of the week count (sun, 0 - sat, 6).
         if ($week_day === 6) {
             $week_day = -1;
         }
         $week_day++;
         $days_in_row++;
     }
     // Actual days of the month.
     for ($day = 1; $day <= $days_in_month; $day++) {
         $count = 0;
         $calendar_classes = array();
         $day_classes = 'simcal-day-' . $day . ' simcal-weekday-' . $week_day;
         $border_style = $bg_color = $color = '';
         // Is this the present, the past or the future, Doc?
         if ($current_min <= $now && $current_max >= $now) {
             $day_classes .= ' simcal-today simcal-present simcal-day';
             $the_color = new Color($calendar->today_color);
             $bg_color = '#' . $the_color->getHex();
             $color = $the_color->isDark() ? '#ffffff' : '#000000';
             $border_style = ' style="border: 1px solid ' . $bg_color . ';"';
         } elseif ($current_max < $now) {
             $day_classes .= ' simcal-past simcal-day';
         } elseif ($current_min > $now) {
             $day_classes .= ' simcal-future simcal-day';
         }
         // Print events for the current day in loop, if found any.
         if (isset($day_events[$day])) {
             $list_events = '<ul class="simcal-events">';
             foreach ($day_events[$day] as $event) {
                 $event_classes = $event_visibility = '';
                 if ($event instanceof Event) {
                     // Store the calendar id where the event belongs (useful in grouped calendar feeds)
                     $calendar_class = 'simcal-events-calendar-' . strval($event->calendar);
                     $calendar_classes[] = $calendar_class;
                     $recurring = $event->recurrence ? 'simcal-event-recurring ' : '';
                     $has_location = $event->venue ? 'simcal-event-has-location ' : '';
                     $event_classes .= 'simcal-event ' . $recurring . $has_location . $calendar_class . ' simcal-tooltip';
                     // Toggle some events visibility if more than optional limit.
                     if ($calendar->events_limit > -1 && $count >= $calendar->events_limit) {
                         $event_classes .= ' simcal-event-toggled';
                         $event_visibility = ' style="display: none"';
                     }
                     // Event title in list.
                     $title = !empty($event->title) ? trim($event->title) : __('Event', 'google-calendar-events');
                     if ($calendar->trim_titles >= 1) {
                         $title = strlen($title) > $calendar->trim_titles ? substr($title, 0, $calendar->trim_titles) . '&hellip;' : $title;
                     }
                     // Event color.
                     $bullet = '';
                     $event_color = $event->get_color();
                     if (!empty($event_color)) {
                         $bullet = '<span style="color: ' . $event_color . ';">&#9632;</span> ';
                     }
                     // Event contents.
                     $list_events .= "\t" . '<li class="' . $event_classes . '"' . $event_visibility . ' itemprop="event" itemscope itemtype="http://schema.org/Event">' . "\n";
                     $list_events .= "\t\t" . '<span class="simcal-event-title">' . $bullet . $title . '</span>' . "\n";
                     $list_events .= "\t\t" . '<div class="simcal-event-details simcal-tooltip-content" style="display: none;">' . $calendar->get_event_html($event) . '</div>' . "\n";
                     $list_events .= "\t" . '</li>' . "\n";
                     $count++;
                 }
             }
             if ($current_min <= $now && $current_max >= $now) {
                 $day_classes .= ' simcal-today-has-events';
             }
             $day_classes .= ' simcal-day-has-events simcal-day-has-' . strval($count) . '-events';
             if ($calendar_classes) {
                 $day_classes .= ' ' . trim(implode(' ', array_unique($calendar_classes)));
             }
             $list_events .= '</ul>' . "\n";
             // Optional button to toggle hidden events in list.
             if ($calendar->events_limit > -1 && $count > $calendar->events_limit) {
                 $list_events .= '<button class="simcal-events-toggle"><i class="simcal-icon-down simcal-icon-animate"></i></button>';
             }
         } else {
             // Empty cell for day with no events.
             $list_events = '<span class="simcal-no-events"></span>';
         }
         // The actual days with numbers and events in each row cell.
         echo '<td class="' . $day_classes . '" data-events-count="' . strval($count) . '">' . "\n";
         if ($color) {
             $day_style = ' style="background-color: ' . $bg_color . '; color: ' . $color . '"';
         } elseif ($count > 0) {
             $the_color = new Color($calendar->days_events_color);
             $color = !$color ? $the_color->isDark() ? '#ffffff' : '#000000' : $color;
             $bg_color = !$bg_color ? '#' . $the_color->getHex() : $bg_color;
             $day_style = ' style="background-color: ' . $bg_color . '; color: ' . $color . '"';
         } else {
             $day_style = '';
         }
         echo "\t" . '<div' . $border_style . '>' . "\n";
         echo "\t\t" . '<span class="simcal-day-label simcal-day-number"' . $day_style . '>' . $day . '</span>' . "\n";
         echo "\t\t" . $list_events . "\n";
         echo "\t\t";
         echo '<span class="simcal-events-dots" style="display: none;">';
         // Event bullets for calendar mobile mode.
         for ($i = 0; $i < $count; $i++) {
             echo '<b> &bull; </b>';
         }
         echo '</span>' . "\n";
         echo "\t" . '</div>' . "\n";
         echo '</td>' . "\n";
         // Reset day of the week count (sun, 0 - sat, 6).
         if ($week_day === 6) {
             $week_day = -1;
         }
         $week_day++;
         // Reset count of days for this row (0-6).
         if ($days_in_row === 6) {
             // Close the week row.
             echo '</tr>';
             // Open a new week row.
             if ($day < $days_in_month) {
                 echo '<tr class="simcal-week simcal-week-' . $week_of_year++ . '">' . "\n";
             }
             $days_in_row = -1;
         }
         $days_in_row++;
         $current_min = Carbon::createFromTimestamp($current_min, $calendar->timezone)->addDay()->getTimestamp();
         $current_max = Carbon::createFromTimestamp($current_max, $calendar->timezone)->addDay()->getTimestamp();
     }
     // Void days at the end of the month.
     $remainder_days = 6 - $days_in_row;
     for ($i = 0; $i <= $remainder_days; $i++) {
         $last_void_day_class = $i == $remainder_days ? 'simcal-day-void-last' : '';
         echo '<td class="simcal-day simcal-day-void ' . $last_void_day_class . '"></td>' . "\n";
         $week_day++;
     }
     echo "\t" . '</tr>' . "\n";
     echo '</tbody>' . "\n";
     date_default_timezone_set($calendar->site_timezone);
     return ob_get_clean();
 }
echo $myBlue->getHex();
?>
</div>
<div class="block testDiv plain">Plain #<?php 
echo $myBlue->getHex();
?>
</div>
<div class="clear"></div>
<div class="block testDiv2">phpColor Gradient #<?php 
echo $myBlack->getHex();
?>
</div>
<div class="block testDiv2 plain">Plain #<?php 
echo $myBlack->getHex();
?>
</div>
<div class="clear"></div>
<div class="block testDiv3">phpColor Gradient #<?php 
echo $myPurple->getHex();
?>
</div>
<div class="block testDiv3 plain">Plain #<?php 
echo $myPurple->getHex();
?>
</div>
<div class="clear"></div>
<div class="block wide-block testDiv4">phpColor Gradient with vintage browsers support #<?php 
echo $myVintage->getHex();
?>
</div>
 /**
  * Make a calendar list of events.
  *
  * Outputs a list of events according to events for the specified range.
  *
  * @since  3.0.0
  * @access private
  *
  * @param  int $timestamp
  * @param  int $id
  *
  * @return string
  */
 private function draw_list($timestamp, $id = 0)
 {
     $calendar = $this->calendar;
     if (empty($calendar)) {
         $calendar = $this->calendar = simcal_get_calendar(intval($id));
         if (!$calendar instanceof Default_Calendar) {
             return '';
         }
     }
     $now = $calendar->now;
     $current_events = $this->get_events($timestamp);
     $format = $calendar->date_format;
     ob_start();
     // Draw the events.
     $block_tag = $calendar->compact_list && !empty($current_events) ? 'div' : 'dl';
     $data_heading = '';
     $heading = $this->get_heading();
     foreach ($heading as $k => $v) {
         $data_heading .= ' data-heading-' . $k . '="' . $v . '"';
     }
     echo '<' . $block_tag . ' class="simcal-events-list-container"' . ' data-prev="' . $this->prev . '"' . ' data-next="' . $this->next . '"' . $data_heading . '>';
     if (!empty($current_events) && is_array($current_events)) {
         $last_event = null;
         foreach ($current_events as $ymd => $events) {
             // This is where we can find out if an event is a multi-day event and if it needs to be shown.
             // Since this is for list view we are showing the event on the day viewed if it is part of that day even when
             // expand multi-day events are turned off.
             $first_event = $events[0][0];
             if (isset($first_event->multiple_days) && $first_event->multiple_days > 0) {
                 if ('current_day_only' == get_post_meta($calendar->id, '_default_calendar_expand_multi_day_events', true)) {
                     $year = substr($ymd, 0, 4);
                     $month = substr($ymd, 4, 2);
                     $day = substr($ymd, 6, 2);
                     $temp_date = Carbon::createFromDate($year, $month, $day);
                     if (!($temp_date < Carbon::now()->endOfDay())) {
                         // Break here only if event already shown once.
                         if ($last_event == $first_event) {
                             continue;
                         } else {
                             // Save event as "last" for next time through, then break.
                             $last_event = $first_event;
                         }
                     }
                 }
             }
             // Add offset offset for list view day headings.
             $day_date = Carbon::createFromFormat('Ymd', $ymd, $calendar->timezone);
             $day_date_offset = clone $day_date;
             $day_date_offset->addSeconds($day_date->offset);
             $day_date_ts_offset = $day_date_offset->timestamp;
             if (!$calendar->compact_list) {
                 if ($day_date_offset->isToday()) {
                     $the_color = new Color($calendar->today_color);
                 } else {
                     $the_color = new Color($calendar->days_events_color);
                 }
                 $bg_color = '#' . $the_color->getHex();
                 $color = $the_color->isDark() ? '#ffffff' : '#000000';
                 $border_style = ' style="border-bottom: 1px solid ' . $bg_color . ';" ';
                 $bg_style = ' style="background-color: ' . $bg_color . '; color: ' . $color . ';"';
                 echo "\t" . '<dt class="simcal-day-label"' . $border_style . '>';
                 echo '<span' . $bg_style . '>';
                 echo $format ? '<span class="simcal-date-format" data-date-format="' . $format . '">' . date_i18n($format, $day_date_ts_offset, strtotime($day_date_offset->toDateTimeString())) . '</span> ' : ' ';
                 echo '</span>';
                 echo '</dt>' . "\n";
             }
             $list_events = '<ul class="simcal-events">' . "\n";
             $calendar_classes = array();
             // Add day of week number to CSS class.
             $day_classes = 'simcal-weekday-' . date('w', $day_date_ts_offset);
             // Is this the present, the past or the future, Doc?
             if ($timestamp <= $now && $timestamp >= $now) {
                 $day_classes .= ' simcal-today simcal-present simcal-day';
             } elseif ($timestamp < $now) {
                 $day_classes .= ' simcal-past simcal-day';
             } elseif ($this->end > $now) {
                 $day_classes .= ' simcal-future simcal-day';
             }
             $count = 0;
             foreach ($events as $day_events) {
                 foreach ($day_events as $event) {
                     if ($event instanceof Event) {
                         $event_classes = $event_visibility = '';
                         $calendar_class = 'simcal-events-calendar-' . strval($event->calendar);
                         $calendar_classes[] = $calendar_class;
                         $recurring = $event->recurrence ? 'simcal-event-recurring ' : '';
                         $has_location = $event->venue ? 'simcal-event-has-location ' : '';
                         $event_classes .= 'simcal-event ' . $recurring . $has_location . $calendar_class;
                         // Toggle some events visibility if more than optional limit.
                         if ($calendar->events_limit > -1 && $count >= $calendar->events_limit) {
                             $event_classes .= ' simcal-event-toggled';
                             $event_visibility = ' style="display: none"';
                         }
                         $event_color = $event->get_color();
                         if (!empty($event_color)) {
                             $side = is_rtl() ? 'right' : 'left';
                             $event_color = ' style="border-' . $side . ': 4px solid ' . $event_color . '; padding-' . $side . ': 8px;"';
                         }
                         $list_events .= "\t" . '<li class="' . $event_classes . '"' . $event_visibility . $event_color . ' itemscope itemtype="http://schema.org/Event" data-start="' . esc_attr($event->start) . '">' . "\n";
                         $list_events .= "\t\t" . '<div class="simcal-event-details">' . $calendar->get_event_html($event) . '</div>' . "\n";
                         $list_events .= "\t" . '</li>' . "\n";
                         $count++;
                         // Event falls within today.
                         if ($this->end <= $now && $this->start >= $now) {
                             $day_classes .= ' simcal-today-has-events';
                         }
                         $day_classes .= ' simcal-day-has-events simcal-day-has-' . strval($count) . '-events';
                         if ($calendar_classes) {
                             $day_classes .= ' ' . trim(implode(' ', array_unique($calendar_classes)));
                         }
                     }
                 }
             }
             $list_events .= '</ul>' . "\n";
             // If events visibility is limited, print the button toggle.
             if ($calendar->events_limit > -1 && $count > $calendar->events_limit) {
                 $list_events .= '<button class="simcal-events-toggle"><i class="simcal-icon-down simcal-icon-animate"></i></button>';
             }
             // Print final list of events for the current day.
             $tag = $calendar->compact_list ? 'div' : 'dd';
             echo '<' . $tag . ' class="' . $day_classes . '" data-events-count="' . strval($count) . '">' . "\n";
             echo "\t" . $list_events . "\n";
             echo '</' . $tag . '>' . "\n";
         }
     } else {
         echo "\t" . '<p>';
         $message = get_post_meta($calendar->id, '_no_events_message', true);
         if ('events' == $calendar->group_type) {
             echo !empty($message) ? $message : __('There are no upcoming events.', 'google-calendar-events');
         } else {
             if (!empty($message)) {
                 echo $message;
             } else {
                 $from = Carbon::createFromTimestamp($this->start, $calendar->timezone)->getTimestamp();
                 $to = Carbon::createFromTimestamp($this->end, $calendar->timezone)->getTimestamp();
                 echo apply_filters('simcal_no_events_message', sprintf(__('Nothing from %1$s to %2$s.', 'google-calendar-events'), date_i18n($calendar->date_format, $from), date_i18n($calendar->date_format, $to)), $calendar->id, $from, $to);
             }
         }
         echo "\t" . '</p>' . "\n";
     }
     echo '</' . $block_tag . '>';
     return ob_get_clean();
 }