/** * 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; }
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'] . '">«</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'] . '">»</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=""> </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'] . '">»</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="" /> <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="" /> <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="" /> ' . $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>'; }
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); }