/**
  * InitContent.
  * Checks the cache status and create the content.
  */
 function pmxc_InitContent()
 {
     global $sourcedir, $pmxCacheFunc, $options;
     // if visible init the content
     if ($this->visible) {
         $this->today = array('day' => (int) strftime('%d', forum_time()), 'month' => (int) strftime('%m', forum_time()), 'year' => (int) strftime('%Y', forum_time()), 'date' => strftime('%Y-%m-%d', forum_time()));
         $this->cal_startday = isset($options['calendar_start_day']) ? $options['calendar_start_day'] : $this->cfg['config']['settings']['firstday'];
         $this->cache_key .= '-' . $this->cal_startday;
         $cachedata = null;
         if (!empty($this->cfg['cache'])) {
             if (($cachedata = $pmxCacheFunc['get']($this->cache_key, $this->cache_mode)) !== null) {
                 list($curday, $this->calgrid, $this->calbirthdays, $this->calholidays, $this->calevents) = $cachedata;
                 if ($curday != $this->today['date']) {
                     $pmxCacheFunc['clear']($this->cache_key, $this->cache_mode);
                     $cachedata = null;
                 }
             }
         }
         if (empty($cachedata)) {
             include_once $sourcedir . '/Subs-Calendar.php';
             $calendarOptions = array('start_day' => $this->cal_startday, 'show_birthdays' => false, 'show_events' => false, 'show_holidays' => false, 'show_week_num' => false, 'short_day_titles' => true, 'show_next_prev' => false, 'show_week_links' => false, 'size' => 'small');
             $this->calgrid = getCalendarGrid($this->today['month'], $this->today['year'], $calendarOptions);
             $this->calbirthdays = array();
             if (!empty($this->cfg['config']['settings']['birthdays']['show'])) {
                 $start_data = isset($this->cfg['config']['settings']['birthdays']['before']) ? date('Y-m-d', time() - 86400 * intval($this->cfg['config']['settings']['birthdays']['after'])) : date('Y-m-d');
                 $end_data = isset($this->cfg['config']['settings']['birthdays']['after']) ? date('Y-m-d', time() + 86400 * intval($this->cfg['config']['settings']['birthdays']['before'])) : date('Y-m-d');
                 $temp = getBirthdayRange($start_data, $end_data);
                 foreach ($temp as $key => $val) {
                     $mnt = intval(substr($key, 5, 2));
                     if (in_array($mnt, array(11, 12)) && in_array($this->today['month'], array(1, 12))) {
                         $nkey = strval($this->today['year'] - 1) . substr($key, 4);
                     } else {
                         $nkey = strval($this->today['year']) . substr($key, 4);
                     }
                     $this->calbirthdays[$nkey] = $val;
                 }
                 ksort($this->calbirthdays);
             }
             $this->calholidays = array();
             if (!empty($this->cfg['config']['settings']['holidays']['show'])) {
                 $start_data = isset($this->cfg['config']['settings']['holidays']['before']) ? date('Y-m-d', time() - 86400 * intval($this->cfg['config']['settings']['holidays']['after'])) : date('Y-m-d');
                 $end_data = isset($this->cfg['config']['settings']['holidays']['after']) ? date('Y-m-d', time() + 86400 * intval($this->cfg['config']['settings']['holidays']['before'])) : date('Y-m-d');
                 $this->calholidays = getHolidayRange($start_data, $end_data);
                 ksort($this->calholidays);
             }
             $this->calevents = array();
             if (!empty($this->cfg['config']['settings']['events']['show'])) {
                 $start_data = isset($this->cfg['config']['settings']['events']['before']) ? date('Y-m-d', time() - 86400 * intval($this->cfg['config']['settings']['events']['after'])) : date('Y-m-d');
                 $end_data = isset($this->cfg['config']['settings']['events']['after']) ? date('Y-m-d', time() + 86400 * intval($this->cfg['config']['settings']['events']['before'])) : date('Y-m-d');
                 $events = getEventRange($start_data, $end_data);
                 ksort($events);
                 foreach ($events as $event) {
                     foreach ($event as $data) {
                         if (!array_key_exists($data['id'], $this->calevents)) {
                             $this->calevents[$data['id']] = $data;
                         }
                     }
                 }
             }
             if (!empty($this->cfg['cache'])) {
                 $cachedata = array($this->today['date'], $this->calgrid, $this->calbirthdays, $this->calholidays, $this->calevents);
                 $pmxCacheFunc['put']($this->cache_key, $cachedata, $this->cache_time, $this->cache_mode);
                 unset($cachedata);
             }
         }
     }
     return $this->visible;
 }
Ejemplo n.º 2
0
function ShowMyCalendar()
{
    global $sourcedir, $options, $modSettings, $scripturl, $txt, $context, $settings, $boardurl, $smcFunc, $adkFolder;
    //My Own Require
    require_once $sourcedir . '/Subs-Calendar.php';
    $today = getTodayInfo();
    $curPage = array('day' => $today['day'], 'month' => $today['month'], 'year' => $today['year']);
    $calendarOptions = array('start_day' => !empty($options['calendar_start_day']) ? $options['calendar_start_day'] : 0, 'show_birthdays' => in_array($modSettings['cal_showbdays'], array(1, 2)), 'show_events' => true, 'show_holidays' => true, 'show_week_num' => true, 'short_day_titles' => true, 'show_next_prev' => true, 'show_week_links' => false, 'size' => 'small');
    $my_array = array();
    $context['calendar_grid_main'] = getCalendarGrid($curPage['month'], $curPage['year'], $calendarOptions);
    $calendar_data =& $context['calendar_grid_main'];
    $colspan = !empty($calendar_data['show_week_links']) ? 8 : 7;
    if (empty($calendar_data['disable_title'])) {
        echo '
				<div class="adk_padding_5" align="center">';
        if (empty($calendar_data['previous_calendar']['disabled']) && $calendar_data['show_next_prev']) {
            echo '
					<span class="floatleft"><a href="' . $calendar_data['previous_calendar']['href'] . '">&#171;</a></span>';
        }
        if (empty($calendar_data['next_calendar']['disabled']) && $calendar_data['show_next_prev']) {
            echo '
					<span class="floatright"><a href="' . $calendar_data['next_calendar']['href'] . '">&#187;</a></span>';
        }
        if ($calendar_data['show_next_prev']) {
            echo '
					' . $txt['months_titles'][$calendar_data['current_month']] . ' ' . $calendar_data['current_year'];
        } else {
            echo '
					' . $txt['months_titles'][$calendar_data['current_month']] . ' ' . $calendar_data['current_year'] . '';
        }
        echo '<hr />
				</div>';
    }
    echo '
				<table align="center" class="calendar_table" style="table-layout:fixed;width:100%;">';
    // Show each day of the week.
    if (empty($calendar_data['disable_day_titles'])) {
        echo '
					<tr>';
        if (!empty($calendar_data['show_week_links'])) {
            echo '
						<td class="">&nbsp;</td>';
        }
        foreach ($calendar_data['week_days'] as $day) {
            echo '
						<th class=" days" scope="col" ' . ($calendar_data['size'] == 'small' ? 'style="font-size: x-small;"' : '') . '>' . (!empty($calendar_data['short_day_titles']) ? $smcFunc['substr']($txt['days_short'][$day], 0, 1) : $txt['days'][$day]) . '</th>';
        }
        echo '
					</tr>';
    }
    foreach ($calendar_data['weeks'] as $week) {
        echo '
					<tr>';
        if (!empty($calendar_data['show_week_links'])) {
            echo '
						<td align="center">
							<a href="' . $scripturl . '?action=calendar;viewweek;year=' . $calendar_data['current_year'] . ';month=' . $calendar_data['current_month'] . ';day=' . $week['days'][0]['day'] . '">&#187;</a>
						</td>';
        }
        foreach ($week['days'] as $day) {
            echo '
						<td align="center" style="height: ' . ($calendar_data['size'] == 'small' ? '20' : '100') . 'px; padding: 2px;' . ($calendar_data['size'] == 'small' ? 'font-size: x-small;' : '') . '" class="' . ($day['is_today'] ? 'windowbg' : '') . ' days">';
            if (!empty($day['day'])) {
                if (!empty($day['holidays']) || !empty($day['birthdays']) || !empty($day['events'])) {
                    $my_array[$day['day']]['day'] = $day['day'];
                    echo '
					<a href="javascript:ShowAdkCalendar(\'day_' . $day['day'] . '\')" class="birthday" style="color: #920ac4; font-weight: bold;">';
                }
                echo $day['day'];
                if (!empty($day['holidays']) || !empty($day['birthdays']) || !empty($day['events'])) {
                    echo '
				</a>';
                }
                if (!empty($day['holidays'])) {
                    $my_array[$day['day']]['event'][] = '<img style="vertical-align: middle;" src="' . $adkFolder['images'] . '/calendar.png" alt="" />&nbsp;<span class="holiday smalltext">' . $txt['calendar_prompt'] . ' ' . implode(', ', $day['holidays']) . '</span>';
                }
                if (!empty($day['birthdays'])) {
                    foreach ($day['birthdays'] as $member) {
                        $my_array[$day['day']]['event'][] = '
					<img style="vertical-align: middle;" src="' . $adkFolder['images'] . '/cake.png" alt="" />&nbsp;
					<a class="smalltext" href="' . $scripturl . '?action=profile;u=' . $member['id'] . '">' . $member['name'] . (isset($member['age']) ? ' (' . $member['age'] . ')' : '') . '</a>';
                    }
                }
                if (!empty($day['events'])) {
                    foreach ($day['events'] as $event) {
                        $my_array[$day['day']]['event'][] = '<img style="vertical-align: middle;" src="' . $adkFolder['images'] . '/calendar.png" alt="" />&nbsp;
						' . $event['link'];
                    }
                }
            }
            echo '
						</td>';
        }
        echo '
					</tr>';
    }
    echo '
				</table>';
    if (!empty($my_array)) {
        echo '
		<script type="text/javascript">
			function ShowAdkCalendar(id) {
			if(document.getElementById(id).style.display == "none"){
				document.getElementById(id).style.display = "block";
			}
			else{
				document.getElementById(id).style.display = "none";
			}
		}
		</script>
		<hr />';
        $true_days = array();
        foreach ($my_array as $event) {
            echo '
			
			<div id="day_' . $event['day'] . '" style="display: none;">
			<strong class="smalltext">' . $txt['calendar_day'] . ' ' . $event['day'] . '</strong>';
            foreach ($event['event'] as $num => $e) {
                echo '<br />' . $e;
            }
            echo '
			</div>';
        }
    }
    echo '
	<div class="adk_height_1"></div>';
}
function sp_calendar($parameters, $id, $return_parameters = false)
{
    global $context, $sourcedir, $modSettings, $options, $scripturl, $txt;
    $block_parameters = array('events' => 'check', 'birthdays' => 'check', 'holidays' => 'check');
    if ($return_parameters) {
        return $block_parameters;
    }
    require_once $sourcedir . '/Subs-Calendar.php';
    $today = getTodayInfo();
    $curPage = array('day' => $today['day'], 'month' => $today['month'], 'year' => $today['year']);
    $calendarOptions = array('start_day' => !empty($options['calendar_start_day']) ? $options['calendar_start_day'] : 0, 'show_week_num' => false, 'show_events' => !empty($parameters['events']), 'show_birthdays' => !empty($parameters['birthdays']), 'show_holidays' => !empty($parameters['holidays']));
    $calendar_data = getCalendarGrid($curPage['month'], $curPage['year'], $calendarOptions);
    echo '
								<table class="sp_acalendar smalltext">
									<tr>
										<td class="sp_center" colspan="7">
											', !empty($modSettings['cal_enabled']) ? '<a href="' . $scripturl . '?action=calendar;year=' . $calendar_data['current_year'] . ';month=' . $calendar_data['current_month'] . '">' . $txt['months_titles'][$calendar_data['current_month']] . ' ' . $calendar_data['current_year'] . '</a>' : $txt['months_titles'][$calendar_data['current_month']] . ' ' . $calendar_data['current_year'], '
										</td>
									</tr><tr>';
    foreach ($calendar_data['week_days'] as $day) {
        echo '
										<td class="sp_center">', $txt['days_short'][$day], '</td>';
    }
    echo '
									</tr>';
    foreach ($calendar_data['weeks'] as $week_key => $week) {
        echo '<tr>';
        foreach ($week['days'] as $day_key => $day) {
            echo '
										<td class="sp_acalendar_day">';
            if (empty($day['day'])) {
                unset($calendar_data['weeks'][$week_key]['days'][$day_key]);
            } else {
                if (!empty($day['holidays']) || !empty($day['birthdays']) || !empty($day['events'])) {
                    echo '<a href="#day" onclick="return sp_collapseCalendar(\'', $day['day'], '\');"><strong>', $day['is_today'] ? '[' : '', $day['day'], $day['is_today'] ? ']' : '', '</strong></a>';
                } else {
                    echo '<a href="#day" onclick="return sp_collapseCalendar(\'0\');">', $day['is_today'] ? '[' : '', $day['day'], $day['is_today'] ? ']' : '', '</a>';
                }
            }
            echo '</td>';
        }
        echo '
									</tr>';
    }
    echo '
								</table>
								<hr class="sp_acalendar_divider" />';
    foreach ($calendar_data['weeks'] as $week) {
        foreach ($week['days'] as $day) {
            if (empty($day['holidays']) && empty($day['birthdays']) && empty($day['events']) && !$day['is_today']) {
                continue;
            } elseif (empty($day['holidays']) && empty($day['birthdays']) && empty($day['events'])) {
                echo '
								<div class="sp_center smalltext" id="sp_calendar_', $day['day'], '">', $txt['error_sp_no_items_day'], '</div>';
                continue;
            }
            echo '
								<ul class="sp_list smalltext" id="sp_calendar_', $day['day'], '" ', !$day['is_today'] ? ' style="display: none;"' : '', '>';
            if (!empty($day['holidays'])) {
                echo '
									<li class="sp_center"><strong>- ', $txt['sp_calendar_holidays'], ' -</strong></li>';
                foreach ($day['holidays'] as $key => $holiday) {
                    echo '
									<li class="sp_list_indent">', sp_embed_image('holiday'), ' ', $holiday, '</li>';
                }
            }
            if (!empty($day['birthdays'])) {
                echo '
									<li class="sp_center"><strong>- ', $txt['sp_calendar_birthdays'], ' -</strong></li>';
                foreach ($day['birthdays'] as $member) {
                    echo '
									<li class="sp_list_indent">', sp_embed_image('birthday'), ' <a href="', $scripturl, '?action=profile;u=', $member['id'], '">', $member['name'], isset($member['age']) ? ' (' . $member['age'] . ')' : '', '</a></li>';
                }
            }
            if (!empty($day['events'])) {
                echo '
									<li class="sp_center"><strong>- ', $txt['sp_calendar_events'], ' -</strong></li>';
                foreach ($day['events'] as $event) {
                    echo '
									<li class="sp_list_indent">', sp_embed_image('event'), ' ', $event['link'], '</li>';
                }
            }
            echo '
								</ul>';
        }
    }
    echo '
								<div class="sp_center smalltext" id="sp_calendar_0" style="display: none;">', $txt['error_sp_no_items_day'], '</div>
								<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
									var current_day = "sp_calendar_', $curPage['day'], '";
									function sp_collapseCalendar(id)
									{
										new_day = "sp_calendar_" + id;
										if (new_day == current_day)
											return false;
										document.getElementById(current_day).style.display = "none";
										document.getElementById(new_day).style.display = "";
										current_day = new_day;
									}
									// ]]></script>';
}
Ejemplo n.º 4
0
function CalendarMain()
{
    global $txt, $context, $modSettings, $scripturl, $options, $sourcedir;
    // Permissions, permissions, permissions.
    isAllowedTo('calendar_view');
    // Doing something other than calendar viewing?
    $subActions = array('ical' => 'iCalDownload', 'post' => 'CalendarPost');
    if (isset($_GET['sa']) && isset($subActions[$_GET['sa']]) && !WIRELESS) {
        return $subActions[$_GET['sa']]();
    }
    // This is gonna be needed...
    loadTemplate('Calendar');
    // You can't do anything if the calendar is off.
    if (empty($modSettings['cal_enabled'])) {
        fatal_lang_error('calendar_off', false);
    }
    // Set the page title to mention the calendar ;).
    $context['page_title'] = $txt['calendar'];
    // Is this a week view?
    $context['view_week'] = isset($_GET['viewweek']);
    // Don't let search engines index weekly calendar pages.
    if ($context['view_week']) {
        $context['robot_no_index'] = true;
    }
    // Get the current day of month...
    require_once $sourcedir . '/Subs-Calendar.php';
    $today = getTodayInfo();
    // If the month and year are not passed in, use today's date as a starting point.
    $curPage = array('day' => isset($_REQUEST['day']) ? (int) $_REQUEST['day'] : $today['day'], 'month' => isset($_REQUEST['month']) ? (int) $_REQUEST['month'] : $today['month'], 'year' => isset($_REQUEST['year']) ? (int) $_REQUEST['year'] : $today['year']);
    // Make sure the year and month are in valid ranges.
    if ($curPage['month'] < 1 || $curPage['month'] > 12) {
        fatal_lang_error('invalid_month', false);
    }
    if ($curPage['year'] < $modSettings['cal_minyear'] || $curPage['year'] > $modSettings['cal_maxyear']) {
        fatal_lang_error('invalid_year', false);
    }
    // If we have a day clean that too.
    if ($context['view_week']) {
        // Note $isValid is -1 < PHP 5.1
        $isValid = mktime(0, 0, 0, $curPage['month'], $curPage['day'], $curPage['year']);
        if ($curPage['day'] > 31 || !$isValid || $isValid == -1) {
            fatal_lang_error('invalid_day', false);
        }
    }
    // Load all the context information needed to show the calendar grid.
    $calendarOptions = array('start_day' => !empty($options['calendar_start_day']) ? $options['calendar_start_day'] : 0, 'show_birthdays' => in_array($modSettings['cal_showbdays'], array(1, 2)), 'show_events' => in_array($modSettings['cal_showevents'], array(1, 2)), 'show_holidays' => in_array($modSettings['cal_showholidays'], array(1, 2)), 'show_week_num' => true, 'short_day_titles' => false, 'show_next_prev' => true, 'show_week_links' => true, 'size' => 'large');
    // Load up the main view.
    if ($context['view_week']) {
        $context['calendar_grid_main'] = getCalendarWeek($curPage['month'], $curPage['year'], $curPage['day'], $calendarOptions);
    } else {
        $context['calendar_grid_main'] = getCalendarGrid($curPage['month'], $curPage['year'], $calendarOptions);
    }
    // Load up the previous and next months.
    $calendarOptions['show_birthdays'] = $calendarOptions['show_events'] = $calendarOptions['show_holidays'] = false;
    $calendarOptions['short_day_titles'] = true;
    $calendarOptions['show_next_prev'] = false;
    $calendarOptions['show_week_links'] = false;
    $calendarOptions['size'] = 'small';
    $context['calendar_grid_current'] = getCalendarGrid($curPage['month'], $curPage['year'], $calendarOptions);
    // Only show previous month if it isn't pre-January of the min-year
    if ($context['calendar_grid_current']['previous_calendar']['year'] > $modSettings['cal_minyear'] || $curPage['month'] != 1) {
        $context['calendar_grid_prev'] = getCalendarGrid($context['calendar_grid_current']['previous_calendar']['month'], $context['calendar_grid_current']['previous_calendar']['year'], $calendarOptions);
    }
    // Only show next month if it isn't post-December of the max-year
    if ($context['calendar_grid_current']['next_calendar']['year'] < $modSettings['cal_maxyear'] || $curPage['month'] != 12) {
        $context['calendar_grid_next'] = getCalendarGrid($context['calendar_grid_current']['next_calendar']['month'], $context['calendar_grid_current']['next_calendar']['year'], $calendarOptions);
    }
    // Basic template stuff.
    $context['can_post'] = allowedTo('calendar_post');
    $context['current_day'] = $curPage['day'];
    $context['current_month'] = $curPage['month'];
    $context['current_year'] = $curPage['year'];
    $context['show_all_birthdays'] = isset($_GET['showbd']);
    // Set the page title to mention the month or week, too
    $context['page_title'] .= ' - ' . ($context['view_week'] ? sprintf($txt['calendar_week_title'], $context['calendar_grid_main']['week_number'], $context['calendar_grid_main']['week_number'] == 53 ? $context['current_year'] - 1 : $context['current_year']) : $txt['months'][$context['current_month']] . ' ' . $context['current_year']);
    // Load up the linktree!
    $context['linktree'][] = array('url' => $scripturl . '?action=calendar', 'name' => $txt['calendar']);
    // Add the current month to the linktree.
    $context['linktree'][] = array('url' => $scripturl . '?action=calendar;year=' . $context['current_year'] . ';month=' . $context['current_month'], 'name' => $txt['months'][$context['current_month']] . ' ' . $context['current_year']);
    // If applicable, add the current week to the linktree.
    if ($context['view_week']) {
        $context['linktree'][] = array('url' => $scripturl . '?action=calendar;viewweek;year=' . $context['current_year'] . ';month=' . $context['current_month'] . ';day=' . $context['current_day'], 'name' => $txt['calendar_week'] . ' ' . $context['calendar_grid_main']['week_number']);
    }
}
/**
 * Calendar Block, Displays a full calendar block
 *
 * @param mixed[] $parameters
 *		'events' => show events
 *		'birthdays' => show birthdays
 *		'holidays' => show holidays
 * @param int $id - not used in this block
 * @param boolean $return_parameters if true returns the configuration options for the block
 */
function sp_calendar($parameters, $id, $return_parameters = false)
{
    global $modSettings, $options, $scripturl, $txt;
    $block_parameters = array('events' => 'check', 'birthdays' => 'check', 'holidays' => 'check');
    if ($return_parameters) {
        return $block_parameters;
    }
    require_once SUBSDIR . '/Calendar.subs.php';
    $today = getTodayInfo();
    $curPage = array('day' => $today['day'], 'month' => $today['month'], 'year' => $today['year']);
    $calendarOptions = array('start_day' => !empty($options['calendar_start_day']) ? $options['calendar_start_day'] : 0, 'show_week_num' => false, 'show_events' => !empty($parameters['events']), 'show_birthdays' => !empty($parameters['birthdays']), 'show_holidays' => !empty($parameters['holidays']));
    // Check cache or fetch
    if (($calendar_data = cache_get_data('sp_calendar_data', 360)) === null) {
        $calendar_data = getCalendarGrid($curPage['month'], $curPage['year'], $calendarOptions);
        cache_put_data('sp_calendar_data', $calendar_data, 360);
    }
    // Output the calendar block
    echo '
								<table class="sp_acalendar smalltext">
									<tr>
										<td class="centertext" colspan="7">
											', !empty($modSettings['cal_enabled']) ? '<a href="' . $scripturl . '?action=calendar;year=' . $calendar_data['current_year'] . ';month=' . $calendar_data['current_month'] . '">' . $txt['months_titles'][$calendar_data['current_month']] . ' ' . $calendar_data['current_year'] . '</a>' : $txt['months_titles'][$calendar_data['current_month']] . ' ' . $calendar_data['current_year'], '
										</td>
									</tr><tr>';
    foreach ($calendar_data['week_days'] as $day) {
        echo '
										<td class="centertext">', $txt['days_short'][$day], '</td>';
    }
    echo '
									</tr>';
    foreach ($calendar_data['weeks'] as $week_key => $week) {
        echo '<tr>';
        foreach ($week['days'] as $day_key => $day) {
            echo '
										<td class="sp_acalendar_day">';
            if (empty($day['day'])) {
                unset($calendar_data['weeks'][$week_key]['days'][$day_key]);
            } else {
                if (!empty($day['holidays']) || !empty($day['birthdays']) || !empty($day['events'])) {
                    echo '<a href="#day" onclick="return sp_collapseCalendar(\'', $day['day'], '\');"><strong>', $day['is_today'] ? '[' : '', $day['day'], $day['is_today'] ? ']' : '', '</strong></a>';
                } else {
                    echo '<a href="#day" onclick="return sp_collapseCalendar(\'0\');">', $day['is_today'] ? '[' : '', $day['day'], $day['is_today'] ? ']' : '', '</a>';
                }
            }
            echo '</td>';
        }
        echo '
									</tr>';
    }
    echo '
								</table>
								<hr class="sp_acalendar_divider" />';
    foreach ($calendar_data['weeks'] as $week) {
        foreach ($week['days'] as $day) {
            if (empty($day['holidays']) && empty($day['birthdays']) && empty($day['events']) && !$day['is_today']) {
                continue;
            } elseif (empty($day['holidays']) && empty($day['birthdays']) && empty($day['events'])) {
                echo '
								<div class="centertext smalltext" id="sp_calendar_', $day['day'], '">', $txt['error_sp_no_items_day'], '</div>';
                continue;
            }
            echo '
								<ul class="sp_list smalltext" id="sp_calendar_', $day['day'], '" ', !$day['is_today'] ? ' style="display: none;"' : '', '>';
            if (!empty($day['holidays'])) {
                echo '
									<li class="centertext"><strong>- ', $txt['sp_calendar_holidays'], ' -</strong></li>';
                foreach ($day['holidays'] as $key => $holiday) {
                    echo '
									<li ', sp_embed_class('holiday', '', 'sp_list_indent'), '>', $holiday, '</li>';
                }
            }
            if (!empty($day['birthdays'])) {
                echo '
									<li class="centertext"><strong>- ', $txt['sp_calendar_birthdays'], ' -</strong></li>';
                foreach ($day['birthdays'] as $member) {
                    echo '
									<li ', sp_embed_class('birthday', '', 'sp_list_indent'), '>
										<a href="', $scripturl, '?action=profile;u=', $member['id'], '">', $member['name'], isset($member['age']) ? ' (' . $member['age'] . ')' : '', '</a>
									</li>';
                }
            }
            if (!empty($day['events'])) {
                echo '
									<li class="centertext"><strong>- ', $txt['sp_calendar_events'], ' -</strong></li>';
                foreach ($day['events'] as $event) {
                    echo '
									<li ', sp_embed_class('event', '', 'sp_list_indent'), '>', $event['link'], '</li>';
                }
            }
            echo '
								</ul>';
        }
    }
    echo '
								<div class="centertext smalltext" id="sp_calendar_0" style="display: none;">', $txt['error_sp_no_items_day'], '</div>';
    addInlineJavascript('var current_day = "sp_calendar_' . $curPage['day'] . '";', true);
}