Beispiel #1
0
 /**
  * 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'));
}
Beispiel #3
0
 /**
  * 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;
 }
Beispiel #5
0
 /**
  * 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;
 }
Beispiel #7
0
 /**
  * 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;
 }
Beispiel #8
0
/**
 * 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);
}
Beispiel #9
0
/**
*   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&amp;' . "cat={$cat}&amp;cal={$cal}" . "&amp;day={$d}&amp;month={$m}&amp;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 .= ' &amp; ' . 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'));
}
Beispiel #10
0
/**
 *  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;
}
Beispiel #11
0
 /**
  * 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) . '&nbsp;';
    ?>
</span>
                        <ol class="selectable">
                        <?php 
    foreach ($wk as $day) {
        ?>
                                <li class="ui-dayname"><?php 
        $d = $AppUI->_($day);
        echo strtoupper($d[0]);
        ?>
Beispiel #13
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');
Beispiel #14
0
 /**
  * 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;
 }