/** * CMonthCalendar::_drawMain() * * { Description } * */ function _drawMain() { global $AppUI; $today = new CDate(); $today = $today->format('%Y%m%d%w'); $date = $this->this_month; $this_day = intval($date->getDay()); $this_month = intval($date->getMonth()); $this_year = intval($date->getYear()); setlocale(LC_TIME, 'en_AU'); $cal = Date_Calc::getCalendarMonth($this_month, $this_year, '%Y%m%d%w', LOCALE_FIRST_DAY); setlocale(LC_ALL, $AppUI->user_lang); $df = $AppUI->getPref('SHDATEFORMAT'); $html = ''; foreach ($cal as $week) { $html .= "\n<tr>"; if ($this->showWeek) { $html .= "\n\t" . '<td class="week">'; $html .= $this->dayFunc ? '<a href="javascript:' . $this->weekFunc . "('" . $week[0] . "')" . '">' : ''; $html .= dPshowImage(dPfindImage('view.week.gif'), 16, 15, $AppUI->_('Week View')); $html .= $this->dayFunc ? '</a>' : ''; $html .= "</td>"; } foreach ($week as $day) { $this_day = new CDate($day); $y = intval(substr($day, 0, 4)); $m = intval(substr($day, 4, 2)); $d = intval(substr($day, 6, 2)); $dow = intval(substr($day, 8, 1)); if ($m != $this_month) { $class = 'empty'; } else { if ($day == $today) { $class = 'today'; } else { if ($dow == 0 || $dow == 6) { $class = 'weekend'; } else { $class = 'day'; } } } $day = substr($day, 0, 8); $html .= "\n\t" . '<td class="' . $class . '"'; if ($this->showHighlightedDays && isset($this->highlightedDays[$day])) { $html .= ' style="border: 1px solid ' . $this->highlightedDays[$day] . '"'; } $html .= ' onclick="' . $this->dayFunc . "('" . $day . "','" . $this_day->format($df) . "')" . '">'; if ($m == $this_month) { if ($this->dayFunc) { $html .= '<a href="javascript:' . $this->dayFunc . "('" . $day . "','" . $this_day->format($df) . "')" . '" class="' . $class . '">'; } $html .= $d . ($this->dayFunc ? '</a>' : ''); if ($this->showEvents) { $html .= $this->_drawEvents(substr($day, 0, 8)); } } $html .= "</td>"; } $html .= "\n</tr>"; } return $html; }
/** * Display a small monthly calendar for the current month. * Dates that have events scheduled are highlighted. * * @param integer $year Year to display, default is current year * @param integer $month Starting month * @return string HTML for calendar page */ function EVLIST_smallmonth($year = 0, $month = 0, $opts = array()) { global $_CONF, $_EV_CONF, $LANG_MONTH, $_SYSTEM; $retval = ''; // Default to the current year if ($year == 0) { $year = date('Y'); } if ($month == 0) { $month = date('m'); } $monthnum_str = sprintf("%02d", (int) $month); // Get all the dates in the period $starting_date = date('Y-m-d', mktime(0, 0, 0, $month, 1, $year)); $ending_date = date('Y-m-d', mktime(23, 59, 59, $month, 31, $year)); $calendarView = Date_Calc::getCalendarMonth($month, $year, '%Y-%m-%d'); $events = EVLIST_getEvents($starting_date, $ending_date, $opts); $T = new Template(EVLIST_PI_PATH . '/templates'); $T->set_file(array('smallmonth' => 'phpblock_month.thtml')); $T->set_var('thisyear', $year); $T->set_var('month', $month); $T->set_var('monthname', $LANG_MONTH[(int) $month]); // Set each day column header to the first letter of the day name $T->set_block('smallmonth', 'daynames', 'nBlock'); $daynames = EVLIST_getDayNames(1); foreach ($daynames as $key => $dayname) { $T->set_var('dayname', $dayname); $T->parse('nBlock', 'daynames', true); } $T->set_block('smallmonth', 'week', 'wBlock'); USES_class_date(); $dt = new Date('now', $_CONF['timezone']); foreach ($calendarView as $weeknum => $weekdata) { list($weekYear, $weekMonth, $weekDay) = explode('-', $weekdata[0]); $T->set_var(array('weekyear' => $weekYear, 'weekmonth' => $weekMonth, 'weekday' => $weekDay)); $T->set_block('smallmonth', 'day', 'dBlock'); foreach ($weekdata as $daynum => $daydata) { list($y, $m, $d) = explode('-', $daydata); $T->clear_var('no_day_link'); if ($daydata == $_EV_CONF['_today']) { $dayclass = 'monthtoday'; } elseif ($m == $monthnum_str) { $dayclass = 'monthon'; } else { $T->set_var('no_day_link', 'true'); $dayclass = 'monthoff'; } $popup = ''; if (isset($events[$daydata])) { // Create the tooltip hover text $daylinkclass = $dayclass == 'monthoff' ? 'nolink-events' : 'day-events'; foreach ($events[$daydata] as $event) { // Show event titles on different lines if more than one if (!empty($popup)) { $popup .= EVLIST_tooltip_newline(); } // Don't show a time for all-day events if ($event['allday'] == 0 && $event['rp_date_start'] == $event['rp_date_end']) { $dt->setTimestamp(strtotime($event['rp_date_start'] . ' ' . $event['rp_time_start1'])); // Time is a localized string, not a timestamp, so // don't adjust for the timezone $popup .= $dt->format($_CONF['timeonly'], false) . ': '; } $popup .= htmlentities($event['title']); } $T->set_var('popup', $popup); } else { $daylinkclass = 'day-noevents'; $T->clear_var('popup'); } $T->set_var(array('daylinkclass' => $daylinkclass, 'dayclass' => $dayclass, 'day' => substr($daydata, 8, 2), 'pi_url' => EVLIST_URL)); $T->parse('dBlock', 'day', true); } $T->parse('wBlock', 'week', true); $T->clear_var('dBlock'); } $T->parse('output', 'smallmonth'); return $T->finish($T->get_var('output')); }
/** * Return a set of arrays to construct a calendar year for * the given date. * * @param string year in format CCYY, default current local year * @param string format for returned date * * @access public * * @return array $year[$month][$row][$col] */ function getCalendarYear($year = "", $format = "%Y%m%d") { if (empty($year)) { $year = Date_Calc::dateNow("%Y"); } $year_array = array(); for ($curr_month = 0; $curr_month <= 11; $curr_month++) { $year_array[$curr_month] = Date_Calc::getCalendarMonth(sprintf("%02d", $curr_month + 1), $year, $format); } return $year_array; }
/** * CMonthCalendar::_drawMain() * * { Description } * */ function _drawMain() { global $AppUI; $today = new CDate(); $today = $today->format("%Y%m%d%w"); $date = $this->this_month; $this_day = intval($date->getDay()); $this_month = intval($date->getMonth()); $this_year = intval($date->getYear()); $cal = Date_Calc::getCalendarMonth($this_month, $this_year, "%Y%m%d%w", LOCALE_FIRST_DAY); $df = $AppUI->getPref('SHDATEFORMAT'); $html = ''; foreach ($cal as $week) { $html .= "\n<tr>"; if ($this->showWeek) { $html .= "\n\t<td class=\"week\">"; $html .= $this->dayFunc ? "<a href=\"javascript:{$this->weekFunc}('{$week['0']}')\">" : ''; $html .= '<img src="./images/view.week.gif" width="16" height="15" border="0" alt="Week View" /></a>'; $html .= $this->dayFunc ? "</a>" : ''; $html .= "\n\t</td>"; } foreach ($week as $day) { $this_day = new CDate($day); $y = intval(substr($day, 0, 4)); $m = intval(substr($day, 4, 2)); $d = intval(substr($day, 6, 2)); $dow = intval(substr($day, 8, 1)); if ($m != $this_month) { $class = 'empty'; } else { if ($day == $today) { $class = 'today'; } else { if ($dow == 0 || $dow == 6) { $class = 'weekend'; } else { $class = 'day'; } } } $day = substr($day, 0, 8); $html .= "\n\t<td class=\"{$class}\""; if ($this->showHighlightedDays && isset($this->highlightedDays[$day])) { $html .= " style=\"border: 1px solid " . $this->highlightedDays[$day] . "\""; } $html .= ">"; if ($m == $this_month) { if ($this->dayFunc) { $html .= "<a href=\"javascript:{$this->dayFunc}('{$day}','" . $this_day->format($df) . "')\" class=\"{$class}\">"; $html .= "{$d}"; $html .= "</a>"; } else { $html .= "{$d}"; } if ($this->showEvents) { $html .= $this->_drawEvents(substr($day, 0, 8)); } } $html .= "\n\t</td>"; } $html .= "\n</tr>"; } return $html; }
/** * Return a set of arrays to construct a calendar year for the given date * * @param int $year the year in four digit format, default current * local year * @param string $format the string indicating how to format the output * * @return array $year[$month][$row][$col] * @access public * @static */ function getCalendarYear($year = null, $format = DATE_CALC_FORMAT) { if (is_null($year)) { $year = Date_Calc::dateNow('%Y'); } $year_array = array(); for ($curr_month = 0; $curr_month <= 11; $curr_month++) { $year_array[$curr_month] = Date_Calc::getCalendarMonth($curr_month + 1, $year, $format); } return $year_array; }
/** * CMonthCalendar::_drawMain() * * { Description } * */ private function _drawMain() { global $AppUI; $today = new w2p_Utilities_Date(); $today = $today->format('%Y%m%d%w'); $date = $this->this_month; $this_day = intval($date->getDay()); $this_month = intval($date->getMonth()); $this_year = intval($date->getYear()); setlocale(LC_TIME, 'en'); $cal = Date_Calc::getCalendarMonth($this_month, $this_year, '%Y%m%d%w', LOCALE_FIRST_DAY); setlocale(LC_ALL, $AppUI->user_lang); $df = $AppUI->getPref('SHDATEFORMAT'); $html = ''; foreach ($cal as $week) { $html .= '<tr>'; if ($this->showWeek) { $html .= '<td class="week">'; $html .= $this->dayFunc ? "<a href=\"javascript:{$this->weekFunc}('{$week['0']}')\">" : ''; $html .= '<img src="' . w2PfindImage('view.week.gif') . '" width="16" height="15" border="0" alt="Week View" /></a>'; $html .= $this->dayFunc ? '</a>' : ''; $html .= '</td>'; } foreach ($week as $day) { $this_day = new w2p_Utilities_Date($day); $y = intval(substr($day, 0, 4)); $m = intval(substr($day, 4, 2)); $d = intval(substr($day, 6, 2)); $dow = intval(substr($day, 8, 1)); $cday = intval(substr($day, 0, 8)); //If we are on minical mode and we find tasks or events for this day then lets color code the cell depending on that if (array_key_exists($cday, $this->events) && $this->styleMain == 'minical') { $nr_tasks = 0; $nr_events = 0; //lets count tasks and events foreach ($this->events[$cday] as $record) { if ($record['task']) { ++$nr_tasks; } else { ++$nr_events; } } if ($nr_events && $nr_tasks) { //if we find both $class = 'eventtask'; } elseif ($nr_events) { //if we just find events $class = 'event'; } elseif ($nr_tasks) { //if we just find tasks $class = 'task'; } if ($day == $today) { $class .= 'today'; } } elseif ($m != $this_month) { $class = 'empty'; } elseif ($day == $today) { $class = 'today'; } elseif ($dow == 0 || $dow == 6) { $class = 'weekend'; } else { $class = 'day'; } $day = substr($day, 0, 8); $html .= '<td class="' . $class . '"'; if ($this->showHighlightedDays && isset($this->highlightedDays[$day])) { $html .= ' style="border: 1px solid ' . $this->highlightedDays[$day] . '"'; } $html .= ' onclick="' . $this->dayFunc . '(\'' . $day . '\',\'' . $this_day->format($df) . '\')' . '">'; if ($this->dayFunc) { $html .= "<a href=\"javascript:{$this->dayFunc}('{$day}','" . $this_day->format($df) . "')\" class=\"{$class}\">"; $html .= $d; $html .= '</a>'; } else { $html .= $d; } if ($this->showEvents) { $html .= $this->_drawEvents(substr($day, 0, 8)); } $html .= '</td>'; } $html .= '</tr>'; } return $html; }
/** * CMonthCalendar::_drawMain() * * { Description } * */ function _drawMain() { global $AppUI; $today = new CDate(); $today = $today->format("%Y%m%d%w"); $date = $this->this_month; $this_day = intval($date->getDay()); $this_month = intval($date->getMonth()); $this_year = intval($date->getYear()); $cal = Date_Calc::getCalendarMonth($this_month, $this_year, "%Y%m%d%w", LOCALE_FIRST_DAY); $df = $AppUI->getPref('SHDATEFORMAT'); $q = new DBQuery(); $q->addTable('holidays'); $q->addQuery('hdate, description'); $q->addOrder('hdate'); $holidays = $q->loadHashList(); $html = ''; foreach ($cal as $week) { $html .= '<tr>'; if ($this->showWeek) { $html .= '<td class="week' . ($this->weekFunc ? ' clickable" title="Week View" onclick="' . $this->weekFunc . '(' . $week[0] . ')"' : '"') . '>'; $html .= '<img src="images/view.week.gif"/></td>'; } foreach ($week as $day) { $this_day = new CDate($day); $y = intval(substr($day, 0, 4)); $m = intval(substr($day, 4, 2)); $d = intval(substr($day, 6, 2)); $dow = intval(substr($day, 8, 1)); $description = $dd = $this->showWeek ? $holidays[$this_day->format('%Y-%m-%d')] : ''; if ($description != '') { $class = 'holiday'; $description = '<br/><b>' . str_replace("\n", '<br/>', $description) . '</b><br/><br/>'; } else { if ($dow == 0 || $dow == 6) { $class = 'weekend'; } else { if ($m != $this_month) { $class = 'empty'; } else { if ($day == $today) { $class = 'today'; } else { $class = 'day'; } } } } $day = substr($day, 0, 8); $html .= '<td class="' . $class . ' clickable" ' . ($this->dayFunc ? 'onclick="' . $this->dayFunc . "('" . ($this->isHolidayControl ? $d . '/' . $m . '/' . $y . "', '" . rawurlencode($dd) : $day) . "', this)" . '"' : ''); if ($this->showHighlightedDays && isset($this->highlightedDays[$day])) { $html .= ' style="border: 1px solid ' . $this->highlightedDays[$day] . '"'; } $html .= '>'; if ($m == $this_month) { $html .= '<span class="day_number">' . $d . '</span>' . $description; if ($this->showEvents) { $html .= $this->_drawEvents(substr($day, 0, 8), $day == $today); } } else { if ($this->showWeek) { $html .= '<span class="day_number2">' . $d . '</span>' . $description; } } $html .= '</td>'; } $html .= '</tr>'; } return $html; }
/** * display block */ function postcalendar_calendarblock_display($blockinfo) { // You supposed to be here? if (!pnSecAuthAction(0, 'PostCalendar:calendarblock:', "{$blockinfo['title']}::", ACCESS_OVERVIEW)) { return false; } // find out what view we're using $template_view = pnVarCleanFromInput('tplview'); if (!isset($template_view)) { $template_view = 'default'; } // find out what template we're using $template_name = _SETTING_TEMPLATE; if (!isset($template_name) || empty($template_name)) { $template_name = 'default'; } // What is today's correct date $Date =& postcalendar_getDate(); // Get variables from content block $vars = unserialize($blockinfo['content']); $showcalendar = $vars['pcbshowcalendar']; $showevents = $vars['pcbeventoverview']; $eventslimit = $vars['pcbeventslimit']; $nextevents = $vars['pcbnextevents']; $pcbshowsslinks = $vars['pcbshowsslinks']; $pcbeventsrange = $vars['pcbeventsrange']; // Let's setup the info to build this sucka! $the_year = substr($Date, 0, 4); $the_month = substr($Date, 4, 2); $the_day = substr($Date, 6, 2); $uid = pnUserGetVar('uid'); $cacheid1 = $cacheid2 = $cacheid3 = ''; $theme = pnUserGetTheme(); pnThemeLoad($theme); global $bgcolor1, $bgcolor2, $bgcolor3, $bgcolor4, $bgcolor5; global $textcolor1, $textcolor2; // 20021125 - rraymond :: we have to do this to make it work with envolution $pcModInfo = pnModGetInfo(pnModGetIDFromName(__POSTCALENDAR__)); $pcDir = pnVarPrepForOS($pcModInfo['directory']); require_once "modules/{$pcDir}/pnincludes/Smarty/Config_File.class.php"; unset($pcModInfo); // set up Smarty $tpl =& new pcSmarty(); // setup the Smarty cache id $templates_cached = true; if ($showcalendar) { $cacheid1 = md5($Date . 'M' . $template_view . $template_name . $showcalendar . $showevents . $nextevents . $uid . $theme); if (!$tpl->is_cached($template_name . '/views/calendarblock/month_view.html', $cacheid1)) { $templates_cached = false; } } if ($showevents) { $cacheid2 = md5($Date . 'T' . $template_view . $template_name . $showcalendar . $showevents . $nextevents . $uid . $theme); if (!$tpl->is_cached($template_name . '/views/calendarblock/todays_events.html', $cacheid2)) { $templates_cached = false; } } if ($nextevents) { $cacheid3 = md5($Date . 'U' . $template_view . $template_name . $showcalendar . $showevents . $nextevents . $uid . $theme); if (!$tpl->is_cached($template_name . '/views/calendarblock/upcoming_events.html', $cacheid3)) { $templates_cached = false; } } // start the output container $output = pnModAPIFunc(__POSTCALENDAR__, 'user', 'pageSetup'); // if one of the templates is not cached, we need to run the following if (!$templates_cached) { // set up the next and previous months to move to $prev_month = Date_Calc::beginOfPrevMonth(1, $the_month, $the_year, '%Y%m%d'); $next_month = Date_Calc::beginOfNextMonth(1, $the_month, $the_year, '%Y%m%d'); $last_day = Date_Calc::daysInMonth($the_month, $the_year); $pc_prev = pnModURL(__POSTCALENDAR__, 'user', 'view', array('tplview' => $template_view, 'viewtype' => 'month', 'Date' => $prev_month)); $pc_next = pnModURL(__POSTCALENDAR__, 'user', 'view', array('tplview' => $template_view, 'viewtype' => 'month', 'Date' => $next_month)); $pc_month_name = pnModAPIFunc(__POSTCALENDAR__, 'user', 'getmonthname', array('Date' => mktime(0, 0, 0, $the_month, $the_day, $the_year))); $month_link_url = pnModURL(__POSTCALENDAR__, 'user', 'view', array('tplview' => $template_view, 'viewtype' => 'month', 'Date' => date('Ymd', mktime(0, 0, 0, $the_month, 1, $the_year)))); $month_link_text = $pc_month_name . ' ' . $the_year; //******************************************************************* // Here we get the events for the current month view //******************************************************************* $day_of_week = 1; $pc_month_names = array(_CALJAN, _CALFEB, _CALMAR, _CALAPR, _CALMAY, _CALJUN, _CALJUL, _CALAUG, _CALSEP, _CALOCT, _CALNOV, _CALDEC); $pc_short_day_names = array(_CALSUNDAYSHORT, _CALMONDAYSHORT, _CALTUESDAYSHORT, _CALWEDNESDAYSHORT, _CALTHURSDAYSHORT, _CALFRIDAYSHORT, _CALSATURDAYSHORT); $pc_long_day_names = array(_CALSUNDAY, _CALMONDAY, _CALTUESDAY, _CALWEDNESDAY, _CALTHURSDAY, _CALFRIDAY, _CALSATURDAY); switch (_SETTING_FIRST_DAY_WEEK) { case _IS_MONDAY: $pc_array_pos = 1; $first_day = date('w', mktime(0, 0, 0, $the_month, 0, $the_year)); $end_dow = date('w', mktime(0, 0, 0, $the_month, $last_day, $the_year)); if ($end_dow != 0) { $the_last_day = $last_day + (7 - $end_dow); } else { $the_last_day = $last_day; } break; case _IS_SATURDAY: $pc_array_pos = 6; $first_day = date('w', mktime(0, 0, 0, $the_month, 2, $the_year)); $end_dow = date('w', mktime(0, 0, 0, $the_month, $last_day, $the_year)); if ($end_dow == 6) { $the_last_day = $last_day + 6; } elseif ($end_dow != 5) { $the_last_day = $last_day + (5 - $end_dow); } else { $the_last_day = $last_day; } break; case _IS_SUNDAY: default: $pc_array_pos = 0; $first_day = date('w', mktime(0, 0, 0, $the_month, 1, $the_year)); $end_dow = date('w', mktime(0, 0, 0, $the_month, $last_day, $the_year)); if ($end_dow != 6) { $the_last_day = $last_day + (6 - $end_dow); } else { $the_last_day = $last_day; } break; } $month_view_start = date('Y-m-d', mktime(0, 0, 0, $the_month, 1, $the_year)); $month_view_end = date('Y-m-t', mktime(0, 0, 0, $the_month, 1, $the_year)); $today_date = postcalendar_today('%Y-%m-%d'); $starting_date = date('m/d/Y', mktime(0, 0, 0, $the_month, 1 - $first_day, $the_year)); $ending_date = date('m/t/Y', mktime(0, 0, 0, $the_month + $pcbeventsrange, 1, $the_year)); $eventsByDate =& pnModAPIFunc(__POSTCALENDAR__, 'user', 'pcGetEvents', array('start' => $starting_date, 'end' => $ending_date)); $calendarView = Date_Calc::getCalendarMonth($the_month, $the_year, '%Y-%m-%d'); $sdaynames = array(); $numDays = count($pc_short_day_names); for ($i = 0; $i < $numDays; $i++) { if ($pc_array_pos >= $numDays) { $pc_array_pos = 0; } array_push($sdaynames, $pc_short_day_names[$pc_array_pos]); $pc_array_pos++; } $daynames = array(); $numDays = count($pc_long_day_names); for ($i = 0; $i < $numDays; $i++) { if ($pc_array_pos >= $numDays) { $pc_array_pos = 0; } array_push($daynames, $pc_long_day_names[$pc_array_pos]); $pc_array_pos++; } $dates = array(); while ($starting_date <= $ending_date) { array_push($dates, $starting_date); list($m, $d, $y) = explode('/', $starting_date); $starting_date = Date_Calc::nextDay($d, $m, $y, '%m/%d/%Y'); } $categories =& pnModAPIFunc(__POSTCALENDAR__, 'user', 'getCategories'); if (isset($calendarView)) { $tpl->assign_by_ref('CAL_FORMAT', $calendarView); } $tpl->assign_by_ref('A_MONTH_NAMES', $pc_month_names); $tpl->assign_by_ref('A_LONG_DAY_NAMES', $pc_long_day_names); $tpl->assign_by_ref('A_SHORT_DAY_NAMES', $pc_short_day_names); $tpl->assign_by_ref('S_LONG_DAY_NAMES', $daynames); $tpl->assign_by_ref('S_SHORT_DAY_NAMES', $sdaynames); $tpl->assign_by_ref('A_EVENTS', $eventsByDate); $tpl->assign_by_ref('A_CATEGORY', $categories); $tpl->assign_by_ref('PREV_MONTH_URL', $pc_prev); $tpl->assign_by_ref('NEXT_MONTH_URL', $pc_next); $tpl->assign_by_ref('MONTH_START_DATE', $month_view_start); $tpl->assign_by_ref('MONTH_END_DATE', $month_view_end); $tpl->assign_by_ref('TODAY_DATE', $today_date); $tpl->assign_by_ref('DATE', $Date); $tpl->assign_by_ref('DISPLAY_LIMIT', $eventslimit); $tpl->assign('TODAYS_EVENTS_TITLE', _PC_TODAYS_EVENTS); $tpl->assign('UPCOMING_EVENTS_TITLE', _PC_UPCOMING_EVENTS); $tpl->assign('NO_EVENTS', _PC_BLOCK_NO_EVENTS); } if ($showcalendar) { // we need to create a unique ID for caching purposes $output .= $tpl->fetch($template_name . '/views/calendarblock/month_view.html', $cacheid1); } if ($showevents) { if ($showcalendar) { $tpl->assign('SHOW_TITLE', 1); } else { $tpl->assign('SHOW_TITLE', 0); } // we need to create a unique ID for caching purposes $output .= $tpl->fetch($template_name . '/views/calendarblock/todays_events.html', $cacheid2); } if ($nextevents) { if ($showcalendar || $showevents) { $tpl->assign('SHOW_TITLE', 1); } else { $tpl->assign('SHOW_TITLE', 0); } // we need to create a unique ID for caching purposes $output .= $tpl->fetch($template_name . '/views/calendarblock/upcoming_events.html', $cacheid3); } if ($pcbshowsslinks) { $output .= '<br /><br />'; $submit_event_url = pnModURL(__POSTCALENDAR__, 'user', 'submit'); $search_event_url = pnModURL(__POSTCALENDAR__, 'user', 'search'); $output .= '<center>'; if (PC_ACCESS_ADD) { $output .= '[ <a href="' . $submit_event_url . '">' . _PC_SUBMIT_EVENT . '</a> ] '; } $output .= '[ <a href="' . $search_event_url . '">' . _PC_SEARCH_EVENT . '</a> ]'; $output .= '</center>'; } // Populate block info and pass to theme $blockinfo['content'] = $output; return themesideblock($blockinfo); }
/** * Display a monthly calendar. * Dates that have events scheduled are highlighted. * * @param integer $year Year to display, default is current year * @param integer $month Starting month * @param integer $day Starting day * @param integer $cat Event category * @plaram integer $cal Calendar ID * @return string HTML for calendar page */ function EVLIST_monthview($year = 0, $month = 0, $day = 0, $cat = 0, $cal = 0, $opt = '') { global $_CONF, $_EV_CONF, $LANG_MONTH; EVLIST_setViewSession('month', $year, $month, $day); $retval = ''; list($currentyear, $currentmonth, $currentday) = explode('-', $_EV_CONF['_today']); // Default to the current month if ($year == 0) { $year = $currentyear; } if ($month == 0) { $month = $currentmonth; } if ($day == 0) { $day = $currentday; } $cat = (int) $cat; $cal = (int) $cal; // Set the calendar header. Done early because the _can_add value is // set by this function $cal_header = EVLIST_calHeader($year, $month, $day, 'month', $cat, $cal); // Get all the dates in the month $calendarView = Date_Calc::getCalendarMonth($month, $year, '%Y-%m-%d'); $x = count($calendarView) - 1; $y = count($calendarView[$x]) - 1; $starting_date = $calendarView[0][0]; $ending_date = $calendarView[$x][$y]; $daynames = EVLIST_getDayNames(); $events = EVLIST_getEvents($starting_date, $ending_date, array('cat' => $cat, 'cal' => $cal)); $nextmonth = $month + 1; $nextyear = $year; if ($nextmonth > 12) { $nextmonth = 1; $nextyear = $year + 1; } $prevmonth = $month - 1; $prevyear = $year; if ($prevmonth < 1) { $prevmonth = 12; $prevyear = $year - 1; } $tplpath = EVLIST_PI_PATH . '/templates/monthview'; $tpl = 'monthview'; if ($opt == 'print') { $tpl .= '_print'; } elseif ($_EV_CONF['cal_tmpl'] == 'json') { $tpl .= '_json'; } $T = new Template($tplpath); $T->set_file(array('monthview' => $tpl . '.thtml', 'allday_event' => 'event_allday.thtml', 'timed_event' => 'event_timed.thtml')); foreach ($daynames as $key => $dayname) { $T->set_var('dayname' . $key, $dayname); } list($y, $m, $d) = explode('-', $starting_date); $weekOfYear = Date_Calc::weekOfYear($d, $m, $y); $calendars_used = array(); $i = 0; $T->set_block('monthview', 'weekBlock', 'wBlock'); foreach ($calendarView as $weeknum => $weekdata) { list($weekYear, $weekMonth, $weekDay) = explode('-', $weekdata[0]); $T->set_var(array('wyear' => $weekYear, 'wmonth' => $weekMonth, 'wday' => $weekDay, 'urlfilt_cat' => $cat, 'urlfilt_cal' => $cal, 'weeknum' => $weekOfYear, $tplx => 'true')); $weekOfYear++; foreach ($weekdata as $daynum => $daydata) { list($y, $m, $d) = explode('-', $daydata); if ($daydata == $_EV_CONF['_today']) { $dayclass = 'today'; } elseif ($m == $month) { $dayclass = 'on'; } else { $dayclass = 'off'; } $T->set_var('cal_day_anchortags', COM_createLink(sprintf("%02d", $d), EVLIST_URL . '/index.php?view=day&' . "cat={$cat}&cal={$cal}" . "&day={$d}&month={$m}&year={$y}", array('class' => 'cal-date'))); if (!isset($events[$daydata])) { // Just to avoid foreach() errors $events[$daydata] = array(); } $dayentries = ''; $T->clear_var('cal_day_entries'); $T->set_block('monthview', 'dayBlock', 'dBlock'); foreach ($events[$daydata] as $event) { if (empty($event['title'])) { continue; } $ev_hover = ''; // Sanitize fields for display. No HTML in the popup. $title = htmlentities(strip_tags($event['title'])); $summary = htmlentities(strip_tags($event['summary'])); // add the calendar to the array to create the JS checkboxes $calendars_used[$event['cal_id']] = array('cal_name' => $event['cal_name'], 'cal_ena_ical' => $event['cal_ena_ical'], 'cal_id' => $event['cal_id'], 'fgcolor' => $event['fgcolor'], 'bgcolor' => $event['bgcolor']); // Create the hover tooltip. Timed events show the times first if ($event['allday'] == 0) { $ev_hover = date($_CONF['timeonly'], strtotime($event['rp_date_start'] . ' ' . $event['rp_time_start1'])); if ($event['split'] == 1 && !empty($event['rp_time_start2'])) { $ev_hover .= ' & ' . date($_CONF['timeonly'], strtotime($event['rp_date_start'] . ' ' . $event['rp_time_start2'])); } $ev_hover .= ' - '; } else { $ev_hover = ''; } // All events show the summary or title, if available if (!empty($summary)) { $ev_hover .= $summary; } else { $ev_hover .= $title; } $T->set_var(array('cal_id' => $event['cal_id'], 'cal_id_url' => $cal_id, 'cat_id' => $cat, 'ev_hover' => $ev_hover, 'ev_title' => $event['title'], 'eid' => $event['rp_id'], 'fgcolor' => $event['fgcolor'], 'bgcolor' => $event['bgcolor'], 'pi_url' => EVLIST_URL)); if ($event['allday'] == 1) { $dayentries .= $T->parse('output', 'allday_event', true); } else { $dayentries .= $T->parse('output', 'timed_event', true); } } // Now set the vars for the entire day block $T->set_var(array('year' => $y, 'month' => $m, 'day' => $d, 'cal_day_style' => $dayclass, 'pi_url' => EVLIST_URL, 'cal_day_entries' => $dayentries)); if ($_EV_CONF['_can_add']) { // Add the "Add Event" link for the day $T->set_var('can_add', 'true'); } $T->parse('dBlock', 'dayBlock', true); } $T->parse('wBlock', 'weekBlock', true); $T->clear_var('dBlock'); } $T->set_var(array('pi_url' => EVLIST_URL, 'thisyear' => $year, 'thismonth' => $month, 'thismonth_str' => $LANG_MONTH[(int) $month], 'prevmonth' => $prevmonth, 'prevyear' => $prevyear, 'nextmonth' => $nextmonth, 'nextyear' => $nextyear, 'urlfilt_cat' => (int) $cat, 'urlfilt_cal' => (int) $cal, 'cal_header' => $cal_header, 'cal_footer' => EVLIST_calFooter($calendars_used), 'cal_checkboxes' => EVLIST_cal_checkboxes($calendars_used), 'site_name' => $_CONF['site_name'], 'site_slogan' => $_CONF['site_slogan'])); $T->parse('output', 'monthview'); return $T->finish($T->get_var('output')); }
/** * postcalendar_userapi_buildView * * Builds the calendar display * @param string $Date mm/dd/yyyy format (we should use timestamps) * @return string generated html output * @access public */ function postcalendar_userapi_buildView($args) { $print = pnVarCleanFromInput('print'); $show_days = pnVarCleanFromInput('show_days'); extract($args); unset($args); $schedule_start = $GLOBALS[schedule_start]; $schedule_end = $GLOBALS[schedule_end]; // $times is an array of associative arrays, where each sub-array // has keys 'hour', 'minute' and 'mer'. // $times = array(); // For each hour in the schedule... // for ($blocknum = $schedule_start; $blocknum <= $schedule_end; $blocknum++) { $mer = $blocknum >= 12 ? 'pm' : 'am'; // $minute is an array of time slot strings within this hour. $minute = array('00'); for ($minutes = $GLOBALS['calendar_interval']; $minutes <= 60; $minutes += $GLOBALS['calendar_interval']) { if ($minutes <= '9') { $under_ten = "0" . $minutes; array_push($minute, "{$under_ten}"); } else { if ($minutes >= '60') { break; } else { array_push($minute, "{$minutes}"); } } } foreach ($minute as $m) { array_push($times, array("hour" => $blocknum, "minute" => $m, "mer" => $mer)); } } //================================================================= // get the module's information //================================================================= $modinfo = pnModGetInfo(pnModGetIDFromName(__POSTCALENDAR__)); $pcDir = $modinfo['directory']; unset($modinfo); //================================================================= // grab the for post variable //================================================================= // $pc_username = pnVarCleanFromInput('pc_username'); $pc_username = $_SESSION['pc_username']; // from Michael Brinson 2006-09-19 $category = pnVarCleanFromInput('pc_category'); $topic = pnVarCleanFromInput('pc_topic'); //================================================================= // set the correct date //================================================================= $Date = postcalendar_getDate(); //================================================================= // get the current view //================================================================= if (!isset($viewtype)) { $viewtype = 'month'; } //================================================================= // Find out what Template we're using //================================================================= $template_name = _SETTING_TEMPLATE; if (!isset($template_name)) { $template_name = 'default'; } //================================================================= // Find out what Template View to use //================================================================= $template_view = pnVarCleanFromInput('tplview'); if (!isset($template_view)) { $template_view = 'default'; } //================================================================= // See if the template view exists //================================================================= if (!file_exists("modules/{$pcDir}/pntemplates/{$template_name}/views/{$viewtype}/{$template_view}.html")) { $template_view_load = 'default'; } else { $template_view_load = pnVarPrepForOS($template_view); } //================================================================= // Grab the current theme information //================================================================= pnThemeLoad(pnUserGetTheme()); global $bgcolor1, $bgcolor2, $bgcolor3, $bgcolor4, $bgcolor5, $bgcolor6, $textcolor1, $textcolor2; //================================================================= // Insert necessary JavaScript into the page //================================================================= $output = pnModAPIFunc(__POSTCALENDAR__, 'user', 'pageSetup'); //================================================================= // Setup Smarty Template Engine //================================================================= $tpl = new pcSmarty(); //if(!$tpl->is_cached("$template_name/views/$viewtype/$template_view_load.html",$cacheid)) { //diable caching completely if (true) { //================================================================= // Let's just finish setting things up //================================================================= $the_year = substr($Date, 0, 4); $the_month = substr($Date, 4, 2); $the_day = substr($Date, 6, 2); $last_day = Date_Calc::daysInMonth($the_month, $the_year); //================================================================= // populate the template object with information for // Month Names, Long Day Names and Short Day Names // as translated in the language files // (may be adding more here soon - based on need) //================================================================= $pc_month_names = array(_CALJAN, _CALFEB, _CALMAR, _CALAPR, _CALMAY, _CALJUN, _CALJUL, _CALAUG, _CALSEP, _CALOCT, _CALNOV, _CALDEC); $pc_short_day_names = array(_CALSUNDAYSHORT, _CALMONDAYSHORT, _CALTUESDAYSHORT, _CALWEDNESDAYSHORT, _CALTHURSDAYSHORT, _CALFRIDAYSHORT, _CALSATURDAYSHORT); $pc_long_day_names = array(_CALSUNDAY, _CALMONDAY, _CALTUESDAY, _CALWEDNESDAY, _CALTHURSDAY, _CALFRIDAY, _CALSATURDAY); //================================================================= // here we need to set up some information for later // variable creation. This helps us establish the correct // date ranges for each view. There may be a better way // to handle all this, but my brain hurts, so your comments // are very appreciated and welcomed. //================================================================= switch (_SETTING_FIRST_DAY_WEEK) { case _IS_MONDAY: $pc_array_pos = 1; $first_day = date('w', mktime(0, 0, 0, $the_month, 0, $the_year)); $week_day = date('w', mktime(0, 0, 0, $the_month, $the_day - 1, $the_year)); $end_dow = date('w', mktime(0, 0, 0, $the_month, $last_day, $the_year)); if ($end_dow != 0) { $the_last_day = $last_day + (7 - $end_dow); } else { $the_last_day = $last_day; } break; case _IS_SATURDAY: $pc_array_pos = 6; $first_day = date('w', mktime(0, 0, 0, $the_month, 2, $the_year)); $week_day = date('w', mktime(0, 0, 0, $the_month, $the_day + 1, $the_year)); $end_dow = date('w', mktime(0, 0, 0, $the_month, $last_day, $the_year)); if ($end_dow == 6) { $the_last_day = $last_day + 6; } elseif ($end_dow != 5) { $the_last_day = $last_day + (5 - $end_dow); } else { $the_last_day = $last_day; } break; case _IS_SUNDAY: default: $pc_array_pos = 0; $first_day = date('w', mktime(0, 0, 0, $the_month, 1, $the_year)); $week_day = date('w', mktime(0, 0, 0, $the_month, $the_day, $the_year)); $end_dow = date('w', mktime(0, 0, 0, $the_month, $last_day, $the_year)); if ($end_dow != 6) { $the_last_day = $last_day + (6 - $end_dow); } else { $the_last_day = $last_day; } break; } // passing the times array to the tpl the times array is for the days schedule $tpl->assign_by_ref("times", $times); // load the table width to the template // $tpl->assign("day_td_width",$GLOBALS['day_view_td_width']); //================================================================= // Week View is a bit of a pain in the ass, so we need to // do some extra setup for that view. This section will // find the correct starting and ending dates for a given // seven day period, based on the day of the week the // calendar is setup to run under (Sunday, Saturday, Monday) //================================================================= $first_day_of_week = sprintf('%02d', $the_day - $week_day); $week_first_day = date('m/d/Y', mktime(0, 0, 0, $the_month, $first_day_of_week, $the_year)); list($week_first_day_month, $week_first_day_date, $week_first_day_year) = explode('/', $week_first_day); $week_first_day_month_name = pnModAPIFunc(__POSTCALENDAR__, 'user', 'getmonthname', array('Date' => mktime(0, 0, 0, $week_first_day_month, $week_first_day_date, $week_first_day_year))); $week_last_day = date('m/d/Y', mktime(0, 0, 0, $the_month, $first_day_of_week + 6, $the_year)); list($week_last_day_month, $week_last_day_date, $week_last_day_year) = explode('/', $week_last_day); $week_last_day_month_name = pnModAPIFunc(__POSTCALENDAR__, 'user', 'getmonthname', array('Date' => mktime(0, 0, 0, $week_last_day_month, $week_last_day_date, $week_last_day_year))); $week_view_start = date('Y-m-d', mktime(0, 0, 0, $the_month, $first_day_of_week, $the_year)); $week_view_end = date('Y-m-d', mktime(0, 0, 0, $the_month, $first_day_of_week + 6, $the_year)); //================================================================= // Setup some information so we know the actual month's dates // also get today's date for later use and highlighting //================================================================= $month_view_start = date('Y-m-d', mktime(0, 0, 0, $the_month, 1, $the_year)); $month_view_end = date('Y-m-t', mktime(0, 0, 0, $the_month, 1, $the_year)); $today_date = postcalendar_today('%Y-%m-%d'); //================================================================= // Setup the starting and ending date ranges for pcGetEvents() //================================================================= switch ($viewtype) { case 'day': $starting_date = date('m/d/Y', mktime(0, 0, 0, $the_month, $the_day, $the_year)); $ending_date = date('m/d/Y', mktime(0, 0, 0, $the_month, $the_day, $the_year)); break; case 'week': $starting_date = "{$week_first_day_month}/{$week_first_day_date}/{$week_first_day_year}"; $ending_date = "{$week_last_day_month}/{$week_last_day_date}/{$week_last_day_year}"; $calendarView = Date_Calc::getCalendarWeek($week_first_day_date, $week_first_day_month, $week_first_day_year, '%Y-%m-%d'); break; case 'month': $starting_date = date('m/d/Y', mktime(0, 0, 0, $the_month, 1 - $first_day, $the_year)); $ending_date = date('m/d/Y', mktime(0, 0, 0, $the_month, $the_last_day, $the_year)); $calendarView = Date_Calc::getCalendarMonth($the_month, $the_year, '%Y-%m-%d'); break; case 'year': $starting_date = date('m/d/Y', mktime(0, 0, 0, 1, 1, $the_year)); $ending_date = date('m/d/Y', mktime(0, 0, 0, 1, 1, $the_year + 1)); $calendarView = Date_Calc::getCalendarYear($the_year, '%Y-%m-%d'); break; } //================================================================= // Identify the Providers whose schedules we should load //================================================================= //================================== //FACILITY FILTERING (CHEMED) if ($_SESSION['pc_facility']) { $provinfo = getProviderInfo('%', true, $_SESSION['pc_facility']); } else { $provinfo = getProviderInfo(); } //EOS FACILITY FILTERING (CHEMED) //================================== $single = array(); $provIDs = array(); // array of numeric provider IDs // filter the display on the requested username, the provinfo array is // used to build columns in the week view. foreach ($provinfo as $provider) { if (is_array($pc_username)) { foreach ($pc_username as $uname) { if (!empty($pc_username) && $provider['username'] == $uname) { array_push($single, $provider); array_push($provIDs, $provider['id']); } } } else { if (!empty($pc_username) && $provider['username'] == $pc_username) { array_push($single, $provider); array_push($provIDs, $provider['id']); } } } if ($single != null) { $provinfo = $single; } //================================================================= // Load the events //================================================================= if ($viewtype != 'year') { $eventsByDate =& postcalendar_userapi_pcGetEvents(array('start' => $starting_date, 'end' => $ending_date, 'viewtype' => $viewtype, 'provider_id' => $provIDs)); } else { $eventsByDate = array(); } //================================================================= // Create an array with the day names in the correct order //================================================================= $daynames = array(); $numDays = count($pc_long_day_names); for ($i = 0; $i < $numDays; $i++) { if ($pc_array_pos >= $numDays) { $pc_array_pos = 0; } array_push($daynames, $pc_long_day_names[$pc_array_pos]); $pc_array_pos++; } unset($numDays); $sdaynames = array(); $numDays = count($pc_short_day_names); for ($i = 0; $i < $numDays; $i++) { if ($pc_array_pos >= $numDays) { $pc_array_pos = 0; } array_push($sdaynames, $pc_short_day_names[$pc_array_pos]); $pc_array_pos++; } unset($numDays); //================================================================= // Prepare some values for the template //================================================================= $prev_month = Date_Calc::beginOfPrevMonth(1, $the_month, $the_year, '%Y%m%d'); $next_month = Date_Calc::beginOfNextMonth(1, $the_month, $the_year, '%Y%m%d'); $pc_prev = pnModURL(__POSTCALENDAR__, 'user', 'view', array('tplview' => $template_view, 'viewtype' => 'month', 'Date' => $prev_month, 'pc_username' => $pc_username, 'pc_category' => $category, 'pc_topic' => $topic)); $pc_next = pnModURL(__POSTCALENDAR__, 'user', 'view', array('tplview' => $template_view, 'viewtype' => 'month', 'Date' => $next_month, 'pc_username' => $pc_username, 'pc_category' => $category, 'pc_topic' => $topic)); $prev_day = Date_Calc::prevDay($the_day, $the_month, $the_year, '%Y%m%d'); $next_day = Date_Calc::nextDay($the_day, $the_month, $the_year, '%Y%m%d'); $pc_prev_day = pnModURL(__POSTCALENDAR__, 'user', 'view', array('tplview' => $template_view, 'viewtype' => 'day', 'Date' => $prev_day, 'pc_username' => $pc_username, 'pc_category' => $category, 'pc_topic' => $topic)); $pc_next_day = pnModURL(__POSTCALENDAR__, 'user', 'view', array('tplview' => $template_view, 'viewtype' => 'day', 'Date' => $next_day, 'pc_username' => $pc_username, 'pc_category' => $category, 'pc_topic' => $topic)); $prev_week = date('Ymd', mktime(0, 0, 0, $week_first_day_month, $week_first_day_date - 7, $week_first_day_year)); $next_week = date('Ymd', mktime(0, 0, 0, $week_last_day_month, $week_last_day_date + 1, $week_last_day_year)); $pc_prev_week = pnModURL(__POSTCALENDAR__, 'user', 'view', array('viewtype' => 'week', 'Date' => $prev_week, 'pc_username' => $pc_username, 'pc_category' => $category, 'pc_topic' => $topic)); $pc_next_week = pnModURL(__POSTCALENDAR__, 'user', 'view', array('viewtype' => 'week', 'Date' => $next_week, 'pc_username' => $pc_username, 'pc_category' => $category, 'pc_topic' => $topic)); $prev_year = date('Ymd', mktime(0, 0, 0, 1, 1, $the_year - 1)); $next_year = date('Ymd', mktime(0, 0, 0, 1, 1, $the_year + 1)); $pc_prev_year = pnModURL(__POSTCALENDAR__, 'user', 'view', array('viewtype' => 'year', 'Date' => $prev_year, 'pc_username' => $pc_username, 'pc_category' => $category, 'pc_topic' => $topic)); $pc_next_year = pnModURL(__POSTCALENDAR__, 'user', 'view', array('viewtype' => 'year', 'Date' => $next_year, 'pc_username' => $pc_username, 'pc_category' => $category, 'pc_topic' => $topic)); //================================================================= // Populate the template //================================================================= $all_categories = pnModAPIFunc(__POSTCALENDAR__, 'user', 'getCategories'); if (isset($calendarView)) { $tpl->assign_by_ref('CAL_FORMAT', $calendarView); } if ($viewtype == "week") { $last_blocks = array(); foreach ($eventsByDate as $cdate => $day) { $tblock = array_reverse($day['blocks']); $last_blocks[$cdate] = count($tblock) - 1; for ($i = 0; $i < count($tblock); $i++) { if (!empty($tblock[$i])) { $last_blocks[$cdate] = count($tblock) - $i; break; } } } $tpl->assign("last_blocks", $last_blocks); } $tpl->assign('STYLE', $GLOBALS['style']); $tpl->assign('show_days', $show_days); //$provinfo[count($provinfo) +1] = array("id" => "","lname" => "Other"); $tpl->assign_by_ref('providers', $provinfo); if (pnVarCleanFromInput("show_days") != 1) { $tpl->assign('showdaysurl', "index.php?" . $_SERVER['QUERY_STRING'] . "&show_days=1"); } $tpl->assign('interval', $GLOBALS['calendar_interval']); $tpl->assign_by_ref('VIEW_TYPE', $viewtype); $tpl->assign_by_ref('A_MONTH_NAMES', $pc_month_names); $tpl->assign_by_ref('A_LONG_DAY_NAMES', $pc_long_day_names); $tpl->assign_by_ref('A_SHORT_DAY_NAMES', $pc_short_day_names); $tpl->assign_by_ref('S_LONG_DAY_NAMES', $daynames); $tpl->assign_by_ref('S_SHORT_DAY_NAMES', $sdaynames); $tpl->assign_by_ref('A_EVENTS', $eventsByDate); $tpl->assign_by_ref('A_CATEGORY', $all_categories); $tpl->assign_by_ref('PREV_MONTH_URL', $pc_prev); $tpl->assign_by_ref('NEXT_MONTH_URL', $pc_next); $tpl->assign_by_ref('PREV_DAY_URL', $pc_prev_day); $tpl->assign_by_ref('NEXT_DAY_URL', $pc_next_day); $tpl->assign_by_ref('PREV_WEEK_URL', $pc_prev_week); $tpl->assign_by_ref('NEXT_WEEK_URL', $pc_next_week); $tpl->assign_by_ref('PREV_YEAR_URL', $pc_prev_year); $tpl->assign_by_ref('NEXT_YEAR_URL', $pc_next_year); $tpl->assign_by_ref('WEEK_START_DATE', $week_view_start); $tpl->assign_by_ref('WEEK_END_DATE', $week_view_end); $tpl->assign_by_ref('MONTH_START_DATE', $month_view_start); $tpl->assign_by_ref('MONTH_END_DATE', $month_view_end); $tpl->assign_by_ref('TODAY_DATE', $today_date); $tpl->assign_by_ref('DATE', $Date); $tpl->assign('SCHEDULE_BASE_URL', pnModURL(__POSTCALENDAR__, 'user', 'submit')); $tpl->assign_by_ref('intervals', $intervals); } //================================================================= // Parse the template //================================================================= $template = "{$template_name}/views/{$viewtype}/{$template_view_load}.html"; if (!$print) { $output .= "\n\n<!-- START POSTCALENDAR OUTPUT [-: HTTP://POSTCALENDAR.TV :-] -->\n\n"; $output .= $tpl->fetch($template, $cacheid); // cache id $output .= "\n\n<!-- END POSTCALENDAR OUTPUT [-: HTTP://POSTCALENDAR.TV :-] -->\n\n"; } else { $theme = pnUserGetTheme(); echo "<html><head>"; echo "<LINK REL=\"StyleSheet\" HREF=\"themes/{$theme}/style/styleNN.css\" TYPE=\"text/css\">\n\n\n"; echo "<style type=\"text/css\">\n"; echo "@import url(\"themes/{$theme}/style/style.css\"); "; echo "</style>\n"; echo "</head><body>\n"; echo $output; $tpl->display($template, $cacheid); echo postcalendar_footer(); echo "\n</body></html>"; session_write_close(); exit; } //================================================================= // Return the output //================================================================= return $output; }
/** * Generate the HTML_Table object of the calendar * * @param day day of the calendar to generate, null = today's day * @param month month of the calendar to generate, null = today's month * @param year year of the calendar to generate, null = today's year * * @access public * @return the HTML_Table object of the calendar */ function generateTable($day = null, $month = null, $year = null) { if (empty($year)) { $year = Date_Calc::dateNow('%Y'); } if (empty($month)) { $month = Date_Calc::dateNow('%m'); } if (empty($day)) { $day = Date_Calc::dateNow('%d'); } $year = sprintf('%04d', $year); $month = sprintf('%02d', $month); $day = sprintf('%02d', $day); // get month structure for generating calendar $month_cal = Date_Calc::getCalendarMonth($month, $year, '%E'); $this->_todayDays = Date_Calc::dateFormat(null, null, null, '%E'); $this->_thisMonth = Date_Calc::dateFormat($day, $month, $year, '%m'); $row = 0; $table = new HTML_Table($this->_attributes['table']); $table->addRow(array($this->drawTitle($day, $month, $year))); $table->setRowAttributes($row, $this->_attributes['title']); $row++; for ($col = 0; $col < 7; $col++) { $table->setCellContents($row, $col, $this->drawWeekDayText($col), 'TH'); } $table->setRowAttributes($row++, $this->_attributes['weekday']); for ($week = 0; $week < count($month_cal); $week++) { for ($col = 0; $col < 7; $col++) { $table->setCellContents($row, $col, $this->drawCell($month_cal[$week][$col], $week, $col)); $type = $this->getType($month_cal[$week][$col]); $table->setCellAttributes($row, $col, $this->_attributes['cell']); $table->updateCellAttributes($row, $col, $this->_attributes['cell_' . $type]); } $row++; } return $table; }
?> "><img src="<?php echo w2PfindImage('next.gif'); ?> " width="16" height="16" alt="next" title="next" border="0"></a> </td> </tr> </table> </td> </tr> </table> <?php $wk = Date_Calc::getCalendarWeek(null, null, null, '%a', LOCALE_FIRST_DAY); for ($m = 1; $m <= 12; $m++) { $monthname = Date_Calc::getMonthFullname($m); $cal = Date_Calc::getCalendarMonth($m, $year, '%Y%m%d%w', LOCALE_FIRST_DAY); ?> <div class="holiday-calendar-month"> <span class="holiday-calendar-monthname"><?php echo $AppUI->_($monthname, UI_CASE_UPPERFIRST) . ' '; ?> </span> <ol class="selectable"> <?php foreach ($wk as $day) { ?> <li class="ui-dayname"><?php $d = $AppUI->_($day); echo strtoupper($d[0]); ?>
compare(29, Date_Calc::daysInMonth('02', 1996), 'daysInMonth 2 str'); compare(29, Date_Calc::daysInMonth('02', 2000), 'daysInMonth 3 str'); compare(28, Date_Calc::daysInMonth('02', 2001), 'daysInMonth 4 str'); compare(30, Date_Calc::daysInMonth('11', '2000'), 'daysInMonth 5 str'); compare(5, Date_Calc::weeksInMonth(11, 2000), 'weeksInMonth'); compare(5, Date_Calc::weeksInMonth('11', '2000'), 'weeksInMonth str'); $exp = array('19000226', '19000227', '19000228', '19000301', '19000302', '19000303', '19000304'); compare($exp, Date_Calc::getCalendarWeek(27, 2, 1900), 'getCalendarWeek 1'); $exp = array('20000228', '20000229', '20000301', '20000302', '20000303', '20000304', '20000305'); compare($exp, Date_Calc::getCalendarWeek(28, 2, 2000), 'getCalendarWeek 2'); $exp = array('20001127', '20001128', '20001129', '20001130', '20001201', '20001202', '20001203'); compare($exp, Date_Calc::getCalendarWeek(27, 11, 2000), 'getCalendarWeek 3'); compare($exp, Date_Calc::getCalendarWeek('27', '11', '2000'), 'getCalendarWeek 3 str'); $exp = array(array('20001030', '20001031', '20001101', '20001102', '20001103', '20001104'), array('20001105', '20001106', '20001107', '20001108', '20001109', '20001110', '20001111'), array('20001112', '20001113', '20001114', '20001115', '20001116', '20001117', '20001118'), array('20001119', '20001121', '20001122', '20001123', '20001124', '20001125', '20001126'), array('20001127', '20001128', '20001129', '20001130', '20001201', '20001202', '20001203')); compare($exp, Date_Calc::getCalendarMonth(11, 2000), 'getCalendarMonth'); compare($exp, Date_Calc::getCalendarMonth('11', '2000'), 'getCalendarMonth str'); // I don't feel like dealing with this right now... //compare('', Date_Calc::getCalendarYear(2000), 'getCalendarYear'); compare('20001121', Date_Calc::prevDay(22, 11, 2000), 'prevDay'); compare('20001123', Date_Calc::nextDay(22, 11, 2000), 'nextDay'); compare('20001121', Date_Calc::prevDay(22, 11, 2000), 'prevDay str'); compare('20001123', Date_Calc::nextDay('22', '11', '2000'), 'nextDay str'); compare('20001117', Date_Calc::prevWeekday('19', '11', '2000'), 'prevWeekday 1 str'); compare('20001117', Date_Calc::prevWeekday(19, 11, 2000), 'prevWeekday 1'); compare('20001121', Date_Calc::prevWeekday(22, 11, 2000), 'prevWeekday 2'); compare('20001123', Date_Calc::nextWeekday(22, 11, 2000), 'nextWeekday 1'); compare('20001127', Date_Calc::nextWeekday(24, 11, 2000), 'nextWeekday 2'); compare('20001127', Date_Calc::nextWeekday('24', '11', '2000'), 'nextWeekday 2 str'); compare('20001121', Date_Calc::prevDayOfWeek('2', '22', '11', '2000'), 'prevDayOfWeek 1 str'); compare('20001121', Date_Calc::prevDayOfWeek(2, 22, 11, 2000), 'prevDayOfWeek 1'); compare('20001115', Date_Calc::prevDayOfWeek(3, 22, 11, 2000), 'prevDayOfWeek 2');
/** * CMonthCalendar::_drawMain() * * { Description } * */ function _drawMain() { global $AppUI, $locale_char_set; $today = new CDate(); $today = $today->format('%Y%m%d%w'); $date = $this->this_month; $this_day = intval($date->getDay()); $this_month = intval($date->getMonth()); $this_year = intval($date->getYear()); $AppUI->setBaseLocale(LC_ALL); $cal = Date_Calc::getCalendarMonth($this_month, $this_year, '%Y:%m:%d:%w', LOCALE_FIRST_DAY); setlocale(LC_ALL, $AppUI->user_lang); $df = $AppUI->getPref('SHDATEFORMAT'); $html = ''; foreach ($cal as $week) { $html .= "\n<tr>"; if ($this->showWeek) { list($y, $m, $d, $dow) = explode(':', $week[0]); $firstday = sprintf("%04d%02d%02d", $y, $m, $d); $html .= "\n\t" . '<td class="week">'; $html .= $this->dayFunc ? '<a href="javascript:' . $this->weekFunc . "('" . $firstday . "')" . '">' : ''; $html .= dPshowImage(dPfindImage('view.week.gif'), 16, 15, $AppUI->_('Week View')); $html .= $this->dayFunc ? '</a>' : ''; $html .= "</td>"; } foreach ($week as $day) { list($y, $m, $d, $dow) = explode(':', $day); $day = sprintf("%04d%02d%02d", $y, $m, $d); if ($m != $this_month) { $class = 'empty'; } else { if ($day == $today) { $class = 'today'; } else { if ($dow == 0 || $dow == 6) { $class = 'weekend'; } else { $class = 'day'; } } } $day = mb_substr($day, 0, 8); $this_day = new CDate($day); $html .= "\n\t" . '<td class="' . $class . '"'; if ($this->showHighlightedDays && isset($this->highlightedDays[$day])) { $html .= ' style="border: 1px solid ' . $this->highlightedDays[$day] . '"'; } $html .= ' onclick="' . $this->dayFunc . "('" . $day . "','" . $this_day->format($df) . "')" . '">'; if ($m == $this_month) { if ($this->dayFunc) { $html .= '<a href="javascript:' . $this->dayFunc . "('" . $day . "','" . $this_day->format($df) . "')" . '" class="' . $class . '">'; } $html .= $d . ($this->dayFunc ? '</a>' : ''); if ($this->showWeek) { $html .= $this->_drawBirthdays($day); } if ($this->showEvents) { $html .= $this->_drawEvents($day); } } $html .= "</td>"; } $html .= "\n</tr>"; } return $html; }