Esempio n. 1
0
 /**
  * Standard modular run function.
  *
  * @return tempcode	The result of execution.
  */
 function run()
 {
     if (!addon_installed('calendar')) {
         return new ocp_tempcode();
     }
     require_lang('calendar');
     $bits = new ocp_tempcode();
     if (get_option('calendar_show_stats_count_events', true) == '1') {
         $bits->attach(do_template('BLOCK_SIDE_STATS_SUBLINE', array('KEY' => do_lang_tempcode('EVENTS'), 'VALUE' => integer_format($GLOBALS['SITE_DB']->query_value('calendar_events', 'COUNT(*)')))));
     }
     if (get_option('calendar_show_stats_count_events_this_week', true) == '1') {
         require_code('calendar');
         $events = calendar_matches($GLOBALS['FORUM_DRIVER']->get_guest_id(), true, utctime_to_usertime(time()), utctime_to_usertime(time() + 60 * 60 * 24 * 7));
         $bits->attach(do_template('BLOCK_SIDE_STATS_SUBLINE', array('KEY' => do_lang_tempcode('EVENTS_THIS_WEEK'), 'VALUE' => integer_format(count($events)))));
     }
     if (get_option('calendar_show_stats_count_events_this_month', true) == '1') {
         require_code('calendar');
         $events = calendar_matches($GLOBALS['FORUM_DRIVER']->get_guest_id(), true, utctime_to_usertime(time()), utctime_to_usertime(time() + 60 * 60 * 24 * 31));
         $bits->attach(do_template('BLOCK_SIDE_STATS_SUBLINE', array('KEY' => do_lang_tempcode('EVENTS_THIS_MONTH'), 'VALUE' => integer_format(count($events)))));
     }
     if (get_option('calendar_show_stats_count_events_this_year', true) == '1') {
         require_code('calendar');
         $events = calendar_matches($GLOBALS['FORUM_DRIVER']->get_guest_id(), true, utctime_to_usertime(time()), utctime_to_usertime(time() + 60 * 60 * 24 * 365));
         $bits->attach(do_template('BLOCK_SIDE_STATS_SUBLINE', array('KEY' => do_lang_tempcode('EVENTS_THIS_YEAR'), 'VALUE' => integer_format(count($events)))));
     }
     if ($bits->is_empty()) {
         return new ocp_tempcode();
     }
     $section = do_template('BLOCK_SIDE_STATS_SECTION', array('SECTION' => do_lang_tempcode('CALENDAR'), 'CONTENT' => $bits));
     return $section;
 }
Esempio n. 2
0
 /**
  * Standard modular run function for realtime-rain hooks.
  *
  * @param  TIME			Start of time range.
  * @param  TIME			End of time range.
  * @return array			A list of template parameter sets for rendering a 'drop'.
  */
 function run($from, $to)
 {
     $drops = array();
     if (has_actual_page_access(get_member(), 'calendar')) {
         require_code('calendar');
         $rows = calendar_matches(get_member(), true, $from, $to);
         // NOTE: We also show (automatically) any RSS items the user has overlayed onto the calendar
         foreach ($rows as $row) {
             $timestamp = $row[2];
             $member_id = $row[1]['e_submitter'];
             $drops[] = rain_get_special_icons(NULL, $timestamp) + array('TYPE' => 'calendar', 'FROM_MEMBER_ID' => strval($member_id), 'TO_MEMBER_ID' => NULL, 'TITLE' => rain_truncate_for_title(get_translated_text($row[1]['e_title'])), 'IMAGE' => $row[1]['t_logo'], 'TIMESTAMP' => strval($timestamp), 'RELATIVE_TIMESTAMP' => strval($timestamp - $from), 'TICKER_TEXT' => NULL, 'URL' => build_url(array('page' => 'calendar', 'type' => 'event', 'id' => $row[1]['id']), '_SEARCH'), 'IS_POSITIVE' => false, 'IS_NEGATIVE' => false, 'FROM_ID' => 'member_' . strval($member_id), 'TO_ID' => NULL, 'GROUP_ID' => 'event_' . strval($row[1]['id']));
         }
     }
     return $drops;
 }
Esempio n. 3
0
 /**
  * Standard modular run function for RSS hooks.
  *
  * @param  string			A list of categories we accept from
  * @param  TIME			Cutoff time, before which we do not show results from
  * @param  string			Prefix that represents the template set we use
  * @set    RSS_ ATOM_
  * @param  string			The standard format of date to use for the syndication type represented in the prefix
  * @param  integer		The maximum number of entries to return, ordering by date
  * @return ?array			A pair: The main syndication section, and a title (NULL: error)
  */
 function run($_filters, $cutoff, $prefix, $date_string, $max)
 {
     if (!addon_installed('calendar')) {
         return NULL;
     }
     if (!has_actual_page_access(get_member(), 'calendar')) {
         return NULL;
     }
     $filters = ocfilter_to_sqlfragment($_filters, 'c.id', 'calendar_types', NULL, 'e_type', 'id');
     $content = new ocp_tempcode();
     $_categories = $GLOBALS['SITE_DB']->query('SELECT c.id,c.t_title FROM ' . $GLOBALS['SITE_DB']->get_table_prefix() . 'calendar_types c WHERE ' . $filters, NULL, NULL, false, false, array('t_title'));
     foreach ($_categories as $i => $_category) {
         $_categories[$i]['text_original'] = get_translated_text($_category['t_title']);
     }
     $categories = collapse_2d_complexity('id', 'text_original', $_categories);
     //$rows=$GLOBALS['SITE_DB']->query('SELECT * FROM '.$GLOBALS['SITE_DB']->get_table_prefix().'calendar_events WHERE e_add_date>'.strval((integer)$cutoff).' ORDER BY e_add_date DESC',$max);
     $period_start = utctime_to_usertime($cutoff);
     $period_end = utctime_to_usertime(time() * 2 - $cutoff);
     if (is_float($period_end)) {
         $period_end = intval($period_end);
     }
     require_code('calendar');
     $rows = calendar_matches(get_member(), true, $period_start, $period_end, NULL, false);
     $rows = array_reverse($rows);
     foreach ($rows as $i => $_row) {
         if ($i == $max) {
             break;
         }
         $row = $_row[1];
         if (!array_key_exists('id', $row)) {
             continue;
         }
         // RSS event
         $id = strval($row['id']);
         $author = '';
         // The "add" date'll be actually used for the event time
         //$_news_date=mktime($row['e_start_hour'],$row['e_start_minute'],0,$row['e_start_month'],$row['e_start_day'],$row['e_start_year']);
         $_news_date = $_row[2];
         $news_date = date($date_string, usertime_to_utctime($_news_date));
         // The edit date'll be the latest of add/edit
         $edit_date = is_null($row['e_edit_date']) ? date($date_string, $row['e_add_date']) : date($date_string, $row['e_edit_date']);
         $news_title = xmlentities(escape_html(get_translated_text($row['e_title'])));
         $_summary = get_translated_tempcode($row['e_content']);
         $summary = xmlentities($_summary->evaluate());
         $news = '';
         $category = array_key_exists($row['e_type'], $categories) ? $categories[$row['e_type']] : '';
         $category_raw = strval($row['e_type']);
         $view_url = build_url(array('page' => 'calendar', 'type' => 'view', 'id' => $row['id']), get_module_zone('calendar'), NULL, false, false, true);
         if (!array_key_exists('allow_comments', $row)) {
             $row['allow_comments'] = 1;
         }
         if ($prefix == 'RSS_' && get_option('is_on_comments') == '1' && $row['allow_comments'] >= 1) {
             $if_comments = do_template('RSS_ENTRY_COMMENTS', array('_GUID' => '202a32693ce54d9ce960b72e66714df0', 'COMMENT_URL' => $view_url, 'ID' => strval($row['id'])));
         } else {
             $if_comments = new ocp_tempcode();
         }
         $content->attach(do_template($prefix . 'ENTRY', array('VIEW_URL' => $view_url, 'SUMMARY' => $summary, 'EDIT_DATE' => $edit_date, 'IF_COMMENTS' => $if_comments, 'TITLE' => $news_title, 'CATEGORY_RAW' => $category_raw, 'CATEGORY' => $category, 'AUTHOR' => $author, 'ID' => $id, 'NEWS' => $news, 'DATE' => $news_date)));
     }
     require_lang('calendar');
     return array($content, do_lang('CALENDAR'));
 }
Esempio n. 4
0
 /**
  * The calendar area view for viewing a single year.
  *
  * @param  string			The year we are viewing
  * @param  string			The day (Y-m-d) we are viewing
  * @param  array			List of components of our viewed ID
  * @param  MEMBER			The member ID we are viewing as
  * @param  ?array			The type filter (NULL: none)
  * @return tempcode		The UI
  */
 function view_calendar_view_year($view_id, $day, $explode, $member_id, $filter)
 {
     $period_start = mktime(0, 0, 0, 1, 1, intval($explode[0]));
     $period_end = mktime(0, 0, 0, 1, 0, intval($explode[0]) + 1);
     $happenings = calendar_matches($member_id, true, $period_start, $period_end, $filter);
     global $M_SORT_KEY;
     $M_SORT_KEY = 0;
     usort($happenings, 'multi_sort');
     $months = '';
     $month_rows = new ocp_tempcode();
     for ($i = 1; $i <= 12; $i++) {
         $entries = array();
         $priorities = array();
         if (($i - 1) % 3 == 0 && $i != 1) {
             if ($i == 4) {
                 list($month_a, $month_b, $month_c) = array(do_lang_tempcode('JANUARY'), do_lang_tempcode('FEBRUARY'), do_lang_tempcode('MARCH'));
             }
             if ($i == 7) {
                 list($month_a, $month_b, $month_c) = array(do_lang_tempcode('APRIL'), do_lang_tempcode('MAY'), do_lang_tempcode('JUNE'));
             }
             if ($i == 10) {
                 list($month_a, $month_b, $month_c) = array(do_lang_tempcode('JULY'), do_lang_tempcode('AUGUST'), do_lang_tempcode('SEPTEMBER'));
             }
             $map = array_merge($filter, array('page' => '_SELF', 'type' => 'misc', 'view' => 'month', 'id' => $explode[0] . '-' . strval($i - 3)));
             if (get_param_integer('member_id', get_member()) != get_member()) {
                 $map['member_id'] = get_param_integer('member_id');
             }
             $month_a_url = build_url($map, '_SELF');
             $map = array_merge($filter, array('page' => '_SELF', 'type' => 'misc', 'view' => 'month', 'id' => $explode[0] . '-' . strval($i - 2)));
             if (get_param_integer('member_id', get_member()) != get_member()) {
                 $map['member_id'] = get_param_integer('member_id');
             }
             $month_b_url = build_url($map, '_SELF');
             $map = array_merge($filter, array('page' => '_SELF', 'type' => 'misc', 'view' => 'month', 'id' => $explode[0] . '-' . strval($i - 1)));
             if (get_param_integer('member_id', get_member()) != get_member()) {
                 $map['member_id'] = get_param_integer('member_id');
             }
             $month_c_url = build_url($map, '_SELF');
             $month_rows->attach(do_template('CALENDAR_YEAR_MONTH_ROW', array('_GUID' => 'cf4f7b66a32afee1c69b2e4338af8dd5', 'MONTHS' => $months, 'MONTH_A_URL' => $month_a_url, 'MONTH_B_URL' => $month_b_url, 'MONTH_C_URL' => $month_c_url, 'MONTH_A' => $month_a, 'MONTH_B' => $month_b, 'MONTH_C' => $month_c)));
             $months = '';
         }
         foreach ($happenings as $happening) {
             list($e_id, $event, $from, $to, $real_from, $real_to, $utc_real_from) = $happening;
             $date = date('m', $from);
             if (intval($date) == $i) {
                 if (is_numeric($e_id)) {
                     $map = array_merge($filter, array('page' => '_SELF', 'type' => 'view', 'id' => $event['e_id'], 'day' => date('Y-m-d', $utc_real_from), 'date' => $view_id, 'back' => 'year'));
                     if (get_param_integer('member_id', get_member()) != get_member()) {
                         $map['member_id'] = get_param_integer('member_id');
                     }
                     $url = build_url($map, '_SELF');
                 } else {
                     $url = $e_id;
                 }
                 $icon = $event['t_logo'];
                 $title = is_integer($event['e_title']) ? get_translated_text($event['e_title']) : $event['e_title'];
                 $date = locale_filter(date(do_lang('calendar_date'), $real_from));
                 $_from = $from;
                 do {
                     $_day = intval(date('d', $_from));
                     if (!array_key_exists($_day, $entries)) {
                         $entries[$_day] = array('ID' => is_string($event['e_id']) ? $event['e_id'] : strval($event['e_id']), 'T_TITLE' => array_key_exists('t_title', $event) ? is_string($event['t_title']) ? $event['t_title'] : get_translated_text($event['t_title']) : 'RSS', 'PRIORITY' => strval($event['e_priority']), 'ICON' => $icon, 'TIME' => $date, 'TITLE' => $title, 'URL' => $url);
                         $priorities[$_day] = $event['e_priority'];
                     } else {
                         $entries[$_day] = is_array($entries[$_day]) ? 2 : $entries[$_day] + 1;
                         $priorities[$_day] = min($priorities[$_day], $event['e_priority']);
                     }
                     // Maybe spanning multiple days of month
                     if (!is_null($to)) {
                         $_explode = explode('-', date('d-m', $to));
                         $continues = intval($_explode[0]) != $_day || intval($_explode[1]) != $i;
                         if ($continues) {
                             $_from = mktime(0, 0, 0, intval(date('m', $_from)), intval(date('d', $_from)) + 1, intval(date('Y', $_from)));
                             if (intval(date('m', $_from)) != $i) {
                                 $continues = false;
                             }
                             // Don't let it roll to another month
                         }
                     } else {
                         $continues = false;
                     }
                 } while ($continues);
                 // Push to other months too
                 if (!is_null($to)) {
                     $date2 = date('m', $to);
                     if (intval($date2) > $i) {
                         $ntime = mktime(0, 0, 0, intval(date('m', $from)) + 1, 1, intval(date('Y', $from)));
                         $happenings[] = array($e_id, $event, $ntime, $to, $real_from, $real_to, $utc_real_from);
                     }
                 }
             }
         }
         $_period_start = mktime(0, 0, 0, $i, 1, intval($explode[0]));
         $_period_end = mktime(0, 0, 0, $i + 1, 0, intval($explode[0]));
         $_days = intval(round(floatval($_period_end - $_period_start) / floatval(60 * 60 * 24)));
         $_entries = new ocp_tempcode();
         $__entries = new ocp_tempcode();
         $_dotw = date('D', $_period_start);
         if (get_option('ssw') == '0') {
             $ex_array = array('Mon' => 0, 'Tue' => 1, 'Wed' => 2, 'Thu' => 3, 'Fri' => 4, 'Sat' => 5, 'Sun' => 6);
         } else {
             $ex_array = array('Sun' => 0, 'Mon' => 1, 'Tue' => 2, 'Wed' => 3, 'Thu' => 4, 'Fri' => 5, 'Sat' => 6);
         }
         $dotw = $ex_array[$_dotw];
         for ($j = 0; $j < $dotw; $j++) {
             $__entries->attach(do_template('CALENDAR_YEAR_MONTH_DAY_SPACER'));
         }
         for ($j = 1; $j <= $_days + 1; $j++) {
             $date = $explode[0] . '-' . str_pad(strval($i), 2, '0', STR_PAD_LEFT) . '-' . str_pad(strval($j), 2, '0', STR_PAD_LEFT);
             $date_formatted = locale_filter(date(do_lang('calendar_date'), mktime(0, 0, 0, $i, $j, intval($explode[0]))));
             $map = array_merge($filter, array('page' => '_SELF', 'type' => 'misc', 'view' => 'day', 'id' => $date));
             if (get_param_integer('member_id', get_member()) != get_member()) {
                 $map['member_id'] = get_param_integer('member_id');
             }
             $day_url = build_url($map, '_SELF');
             if (!array_key_exists($j, $entries)) {
                 $class = 'free_time';
                 $__entries->attach(do_template('CALENDAR_YEAR_MONTH_DAY_FREE', array('_GUID' => 'cccf839895121ae14fd1948ed4024d4b', 'CURRENT' => date('Y-m-d') == $date, 'DAY_URL' => $day_url, 'DATE' => $date_formatted, 'DAY' => strval($j), 'CLASS' => $class)));
             } elseif (is_array($entries[$j])) {
                 $class = 'single';
                 $events_and_priority_lang = do_lang_tempcode('TOTAL_EVENTS_AND_HIGHEST_PRIORITY', '1', do_lang_tempcode('PRIORITY_' . strval($priorities[$j])));
                 $__entries->attach(do_template('CALENDAR_YEAR_MONTH_DAY_ACTIVE', array_merge(array('CURRENT' => date('Y-m-d') == $date, 'DAY_URL' => $day_url, 'DATE' => $date_formatted, 'DAY' => strval($j), 'CLASS' => $class, 'COUNT' => '1', 'EVENTS_AND_PRIORITY_LANG' => $events_and_priority_lang), $entries[$j])));
             } else {
                 $class = 'multiple';
                 $e_count = integer_format($entries[$j]);
                 $events_and_priority_lang = do_lang_tempcode('TOTAL_EVENTS_AND_HIGHEST_PRIORITY', make_string_tempcode($e_count), do_lang_tempcode('PRIORITY_' . strval($priorities[$j])));
                 $__entries->attach(do_template('CALENDAR_YEAR_MONTH_DAY_ACTIVE', array('_GUID' => '9f016773fce6402eca1a7a0afa6bb89f', 'CURRENT' => date('Y-m-d') == $date, 'DAY_URL' => $day_url, 'DATE' => $date_formatted, 'TITLE' => '', 'TIME' => '', 'URL' => '', 'ID' => '', 'PRIORITY' => strval($priorities[$j]), 'DAY' => strval($j), 'ICON' => '', 'COUNT' => $e_count, 'EVENTS_AND_PRIORITY_LANG' => $events_and_priority_lang)));
             }
             if ($dotw == 6) {
                 $_entries->attach(do_template('CALENDAR_YEAR_MONTH_DAY_ROW', array('_GUID' => 'f0d29f0cf53ba119a7ab4351807a9f2f', 'ENTRIES' => $__entries)));
                 $__entries = new ocp_tempcode();
                 $dotw = 0;
             } else {
                 $dotw++;
             }
         }
         if (!$__entries->is_empty()) {
             for ($j = $dotw; $j < 7; $j++) {
                 $__entries->attach(do_template('CALENDAR_YEAR_MONTH_DAY_SPACER'));
             }
             $_entries->attach(do_template('CALENDAR_YEAR_MONTH_DAY_ROW', array('_GUID' => '5c7fa5d50e1e9eb30f0a19cc7da03c4b', 'ENTRIES' => $__entries)));
         }
         $month = do_template('CALENDAR_YEAR_MONTH', array('_GUID' => '58c9f4cc04186dce6e7ea3dd8ec9269b', 'ENTRIES' => $_entries));
         $months .= $month->evaluate();
     }
     $map = array_merge($filter, array('page' => '_SELF', 'type' => 'misc', 'view' => 'month', 'id' => $explode[0] . '-' . strval($i - 3)));
     if (get_param_integer('member_id', get_member()) != get_member()) {
         $map['member_id'] = get_param_integer('member_id');
     }
     $month_a_url = build_url($map, '_SELF');
     $map = array_merge($filter, array('page' => '_SELF', 'type' => 'misc', 'view' => 'month', 'id' => $explode[0] . '-' . strval($i - 2)));
     if (get_param_integer('member_id', get_member()) != get_member()) {
         $map['member_id'] = get_param_integer('member_id');
     }
     $month_b_url = build_url($map, '_SELF');
     $map = array_merge($filter, array('page' => '_SELF', 'type' => 'misc', 'view' => 'month', 'id' => $explode[0] . '-' . strval($i - 1)));
     if (get_param_integer('member_id', get_member()) != get_member()) {
         $map['member_id'] = get_param_integer('member_id');
     }
     $month_c_url = build_url($map, '_SELF');
     list($month_a, $month_b, $month_c) = array(do_lang_tempcode('OCTOBER'), do_lang_tempcode('NOVEMBER'), do_lang_tempcode('DECEMBER'));
     $month_rows->attach(do_template('CALENDAR_YEAR_MONTH_ROW', array('_GUID' => 'd169c06319ca2c089faa6fbb92b39115', 'MONTHS' => $months, 'MONTH_A_URL' => $month_a_url, 'MONTH_B_URL' => $month_b_url, 'MONTH_C_URL' => $month_c_url, 'MONTH_A' => $month_a, 'MONTH_B' => $month_b, 'MONTH_C' => $month_c)));
     return do_template('CALENDAR_YEAR', array('_GUID' => 'ee8f09d406eff18637b37b762bad62cd', 'MONTH_ROWS' => $month_rows, 'PERIOD_START' => strval($period_start), 'PERIOD_END' => strval($period_end)));
 }
Esempio n. 5
0
 /**
  * Standard modular run function.
  *
  * @param  array		A map of parameters.
  * @return tempcode	The result of execution.
  */
 function run($map)
 {
     require_code('calendar');
     require_lang('calendar');
     require_lang('dates');
     require_css('calendar');
     $year = intval(date('Y', utctime_to_usertime()));
     $month = intval(date('m', utctime_to_usertime()));
     $day = intval(date('d', utctime_to_usertime()));
     $zone = array_key_exists('zone', $map) ? $map['zone'] : get_module_zone('calendar');
     $filter_map = array_key_exists('filter', $map) ? explode(",", $map['filter']) : NULL;
     $filter = $this->get_filter($filter_map);
     //if(!is_null($filter_str)) $filter=explode(",",$filter_str):NULL;
     $box_title = array_key_exists('title', $map) ? $map['title'] : do_lang_tempcode('COMING_SOON');
     $calendar_url = build_url($filter + array('page' => 'calendar', 'type' => 'misc', 'view' => 'month', 'id' => strval($year) . '-' . strval($month)), $zone);
     $member = $GLOBALS['FORUM_DRIVER']->get_guest_id();
     $type = array_key_exists('param', $map) ? $map['param'] : 'year';
     if ($type != 'listing') {
         $period_start = mktime(0, 0, 0, $month, 1, $year);
         $period_end = mktime(23, 59, 0, $month + 1, 0, $year);
         $happenings = calendar_matches($member, true, $period_start, $period_end, $filter);
         $entries = array();
         $priorities = array();
         for ($hap_i = 0; $hap_i < count($happenings); $hap_i++) {
             $happening = $happenings[$hap_i];
             list($e_id, $event, $from, $to, $real_from, $real_to) = $happening;
             $view_id = date('Y-m', $real_from);
             if (is_numeric($e_id)) {
                 $map2 = $filter + array('page' => 'calendar', 'type' => 'view', 'id' => $event['e_id'], 'day' => $day, 'date' => $view_id, 'back' => 'month');
                 $url = build_url($map2, $zone);
             } else {
                 $url = $e_id;
             }
             $icon = $event['t_logo'];
             $title = is_integer($event['e_title']) ? get_translated_text($event['e_title']) : $event['e_title'];
             $date = locale_filter(date(do_lang('calendar_date'), $real_from));
             $_day = intval(date('d', $from));
             if (!array_key_exists($_day, $entries)) {
                 $entries[$_day] = array('ID' => strval($event['e_id']), 'T_TITLE' => array_key_exists('t_title', $event) ? is_string($event['t_title']) ? $event['t_title'] : get_translated_text($event['t_title']) : 'RSS', 'PRIORITY' => strval($event['e_priority']), 'ICON' => $icon, 'TIME' => $date, 'TITLE' => $title, 'URL' => $url);
                 $priorities[$_day] = $event['e_priority'];
             } else {
                 $entries[$_day] = is_array($entries[$_day]) ? 2 : $entries[$_day] + 1;
                 $priorities[$_day] = min($priorities[$_day], $event['e_priority']);
             }
             if (!is_null($to)) {
                 $test = date('d', $to);
                 $test2 = date('d', $from);
                 if (intval($test) > intval($test2) || intval(date('m', $to)) != intval(date('m', $from)) || intval(date('Y', $to)) != intval(date('Y', $from))) {
                     $ntime = mktime(0, 0, 0, intval(date('m', $from)), intval($test2) + 1, intval(date('Y', $from)));
                     if ($ntime < $period_end) {
                         $happenings[] = array($e_id, $event, $ntime, $to, $real_from, $real_to);
                     }
                 }
             }
         }
         $_period_start = mktime(0, 0, 0, $month, 1, $year);
         $_period_end = mktime(0, 0, 0, $month + 1, 0, $year);
         $_days = intval(round(floatval($_period_end - $_period_start) / floatval(60 * 60 * 24)));
         $_entries = new ocp_tempcode();
         $__entries = new ocp_tempcode();
         $_dotw = date('D', $_period_start);
         // date() does not use locale so this is safe
         if (get_option('ssw') == '0') {
             $ex_array = array('Mon' => 0, 'Tue' => 1, 'Wed' => 2, 'Thu' => 3, 'Fri' => 4, 'Sat' => 5, 'Sun' => 6);
         } else {
             $ex_array = array('Sun' => 0, 'Mon' => 1, 'Tue' => 2, 'Wed' => 3, 'Thu' => 4, 'Fri' => 5, 'Sat' => 6);
         }
         $dotw = $ex_array[$_dotw];
         for ($j = 0; $j < $dotw; $j++) {
             $__entries->attach(do_template('CALENDAR_YEAR_MONTH_DAY_SPACER'));
         }
         for ($j = 1; $j <= $_days + 1; $j++) {
             $date = strval($year) . '-' . str_pad(strval($month), 2, '0', STR_PAD_LEFT) . '-' . str_pad(strval($j), 2, '0', STR_PAD_LEFT);
             $date_formatted = locale_filter(date(do_lang('calendar_date'), mktime(0, 0, 0, $month, $j, $year)));
             $map2 = $filter + array('page' => 'calendar', 'type' => 'misc', 'view' => 'day', 'id' => $date);
             $day_url = build_url($map2, $zone);
             if (!array_key_exists($j, $entries)) {
                 $class = 'free_time';
                 $__entries->attach(do_template('CALENDAR_YEAR_MONTH_DAY_FREE', array('_GUID' => 'd9ac194adf9fef87f3ee0161f0582b88', 'CURRENT' => date('Y-m-d', utctime_to_usertime()) == $date, 'DAY_URL' => $day_url, 'DATE' => $date_formatted, 'DAY' => strval($j), 'CLASS' => $class)));
             } elseif (is_array($entries[$j])) {
                 $class = 'single';
                 $events_and_priority_lang = do_lang_tempcode('TOTAL_EVENTS_AND_HIGHEST_PRIORITY', '1', do_lang_tempcode('PRIORITY_' . strval($priorities[$j])));
                 $__entries->attach(do_template('CALENDAR_YEAR_MONTH_DAY_ACTIVE', array_merge(array('CURRENT' => date('Y-m-d', utctime_to_usertime()) == $date, 'DAY_URL' => $day_url, 'DATE' => $date_formatted, 'DAY' => strval($j), 'CLASS' => $class, 'COUNT' => '1', 'EVENTS_AND_PRIORITY_LANG' => $events_and_priority_lang), $entries[$j])));
             } else {
                 $class = 'multiple';
                 $e_count = integer_format($entries[$j]);
                 $events_and_priority_lang = do_lang_tempcode('TOTAL_EVENTS_AND_HIGHEST_PRIORITY', make_string_tempcode($e_count), do_lang_tempcode('PRIORITY_' . strval($priorities[$j])));
                 $__entries->attach(do_template('CALENDAR_YEAR_MONTH_DAY_ACTIVE', array('_GUID' => '2190cdba146d5d18c01033fd0d9a09a1', 'CURRENT' => date('Y-m-d', utctime_to_usertime()) == $date, 'DAY_URL' => $day_url, 'DATE' => $date_formatted, 'TITLE' => '', 'TIME' => '', 'URL' => '', 'ID' => '', 'PRIORITY' => strval($priorities[$j]), 'DAY' => strval($j), 'ICON' => '', 'COUNT' => $e_count, 'EVENTS_AND_PRIORITY_LANG' => $events_and_priority_lang)));
             }
             if ($dotw == 6) {
                 $_entries->attach(do_template('CALENDAR_YEAR_MONTH_DAY_ROW', array('_GUID' => '4b4b1e5bcf541c66d1ba9a57c6521070', 'ENTRIES' => $__entries)));
                 $__entries = new ocp_tempcode();
                 $dotw = 0;
             } else {
                 $dotw++;
             }
         }
         if (!$__entries->is_empty()) {
             for ($j = $dotw; $j < 7; $j++) {
                 $__entries->attach(do_template('CALENDAR_YEAR_MONTH_DAY_SPACER'));
             }
             $_entries->attach(do_template('CALENDAR_YEAR_MONTH_DAY_ROW', array('_GUID' => '262279cb164be0fa908ec57c27dd727b', 'ENTRIES' => $__entries)));
         }
         return do_template('BLOCK_SIDE_CALENDAR', array('_GUID' => '1324e98b4debf7ebd6d398fae65fe29f', 'CALENDAR_URL' => $calendar_url, 'ENTRIES' => $_entries, '_MONTH' => strval($_period_start), 'MONTH' => locale_filter(my_strftime(do_lang('calendar_month_in_year'), $_period_start))));
     }
     // Listing mode
     $period_start = mktime(0, 0, 0, $month, $day, $year);
     $num_days = array_key_exists('days', $map) ? intval($map['days']) : 30;
     $period_end = $period_start + 60 * 60 * 24 * $num_days;
     $happenings = calendar_matches($member, true, $period_start - 100 * 60 * 60 * 24, $period_end, $filter);
     $days = array();
     for ($hap_i = 0; $hap_i < count($happenings); $hap_i++) {
         $happening = $happenings[$hap_i];
         list($e_id, $event, $from, $to, $real_from, $real_to) = $happening;
         if (!is_null($to) && $to < $period_start) {
             continue;
         }
         if ($real_from != $from) {
             continue;
         }
         // We won't render continuations
         // Because we looked 100 days before (to find stuff that might be doing a span), we need to do an extra check to see if stuff is actually in our true window
         $starts_within = $real_from >= $period_start && $real_from < $period_end;
         $ends_within = !is_null($to) && $real_to > $period_start && $real_to <= $period_end;
         $spans = !is_null($to) && $real_from < $period_start && $real_to > $period_end;
         if (!$starts_within && !$ends_within && !$spans) {
             continue;
         }
         $__day = date('Y-m-d', $from);
         $bits = explode('-', $__day);
         $day_start = mktime(12, 0, 0, intval($bits[1]), intval($bits[2]), intval($bits[0]));
         if (!array_key_exists($day_start, $days)) {
             $date_section = get_timezoned_date($day_start, false);
             // Must be rendered in user's timezone not GMT, as GMT day may be ahead of the user's timezoned day and hence render the wrong contextual date.
             if ($from < $period_start && $date_section != do_lang('YESTERDAY')) {
                 $date_section = do_lang('DATE_IN_PAST', $date_section);
             }
             $days[$day_start] = array('TIMESTAMP' => strval($day_start), 'TIME' => $date_section, 'EVENTS' => array());
         }
         $view_id = date('Y-m', $real_from);
         $icon = $event['t_logo'];
         $title = is_integer($event['e_title']) ? get_translated_text($event['e_title']) : $event['e_title'];
         if (is_numeric($e_id)) {
             $map2 = $filter + array('page' => 'calendar', 'type' => 'view', 'id' => $event['e_id'], 'day' => $__day, 'date' => $view_id, 'back' => 'month');
             $view_url = build_url($map2, $zone);
         } else {
             $view_url = $e_id;
         }
         $days[$day_start]['EVENTS'][] = array('DESCRIPTION' => is_string($event['e_content']) ? protect_from_escaping($event['e_content']) : get_translated_tempcode($event['e_content']), 'TIMESTAMP' => strval($real_from), 'TIME' => $real_from != $from ? do_lang('EVENT_CONTINUES') : (is_null($event['e_start_hour']) ? do_lang_tempcode('ALL_DAY_EVENT') : make_string_tempcode(get_timezoned_time($real_from, false, NULL, true))), 'TIME_RAW' => strval($real_from), 'FROM_DAY' => get_timezoned_date($real_from, !is_null($event['e_start_hour']), false, true), 'TO_DAY' => is_null($real_to) ? NULL : get_timezoned_date($real_to, !is_null($event['e_end_hour']), false, true), 'TO_DAY_RAW' => is_null($real_to) ? '' : strval($real_to), 'TIME_VCAL' => date('Y-m-d', $real_from) . ' ' . date('H:i:s', $real_from), 'TO_TIME_VCAL' => is_null($real_to) ? NULL : date('Y-m-d', $real_to) . ' ' . date('H:i:s', $real_to), 'T_TITLE' => array_key_exists('t_title', $event) ? is_string($event['t_title']) ? $event['t_title'] : get_translated_text($event['t_title']) : 'RSS', 'TITLE' => is_string($event['e_title']) ? protect_from_escaping($title) : make_string_tempcode($title), 'VIEW_URL' => $view_url, 'ICON' => $icon);
         $test = date('d', $to);
         $test2 = date('d', $from);
         if (!is_null($to) && (intval($test) > intval($test2) || intval(date('m', $to)) != intval(date('m', $from)) || intval(date('Y', $to)) != intval(date('Y', $from)))) {
             $ntime = mktime(0, 0, 0, intval(date('m', $from)), intval($test2) + 1, intval(date('Y', $from)));
             if ($ntime < $period_end) {
                 $happenings[] = array($e_id, $event, $ntime, $to, $real_from, $real_to);
             }
         }
     }
     return do_template('BLOCK_SIDE_CALENDAR_LISTING', array('_GUID' => '52afb27d866fa6b620a55d223e2fd3ae', 'DAYS' => $days, 'CALENDAR_URL' => $calendar_url, 'TITLE' => $box_title));
 }