Beispiel #1
0
function create_month($month, $year)
{
    global $phpcdb, $phpc_cal, $phpcid;
    $wim = weeks_in_month($month, $year);
    $first_day = 1 - day_of_week($month, 1, $year);
    $from_stamp = mktime(0, 0, 0, $month, $first_day, $year);
    $last_day = $wim * 7 - day_of_week($month, 1, $year);
    $to_stamp = mktime(23, 59, 59, $month, $last_day, $year);
    $max_events = $phpc_cal->events_max;
    $results = $phpcdb->get_occurrences_by_date_range($phpcid, $from_stamp, $to_stamp);
    $days_events = array();
    while ($row = $results->fetch_assoc()) {
        $event = new PhpcOccurrence($row);
        if (!$event->can_read()) {
            continue;
        }
        $end_stamp = mktime(0, 0, 0, $event->get_end_month(), $event->get_end_day(), $event->get_end_year());
        $start_stamp = mktime(0, 0, 0, $event->get_start_month(), $event->get_start_day(), $event->get_start_year());
        $diff = $from_stamp - $start_stamp;
        if ($diff > 0) {
            $add_days = floor($diff / 86400);
        } else {
            $add_days = 0;
        }
        // put the event in every day until the end
        for (;; $add_days++) {
            $stamp = mktime(0, 0, 0, $event->get_start_month(), $event->get_start_day() + $add_days, $event->get_start_year());
            if ($stamp > $end_stamp || $stamp > $to_stamp) {
                break;
            }
            $key = date('Y-m-d', $stamp);
            if (!isset($days_events[$key])) {
                $days_events[$key] = array();
            }
            if (sizeof($days_events[$key]) == $max_events) {
                $days_events[$key][] = false;
            }
            if (sizeof($days_events[$key]) > $max_events) {
                continue;
            }
            $days_events[$key][] = $event;
        }
    }
    $month_table = tag('tbody');
    for ($week_of_month = 1; $week_of_month <= $wim; $week_of_month++) {
        $month_table->add(create_week($week_of_month, $month, $year, $days_events));
    }
    return $month_table;
}
function create_month($month, $year)
{
    global $phpcdb, $phpc_cal, $phpcid;
    $weeks = weeks_in_month($month, $year);
    $first_day = 1 - day_of_week($month, 1, $year);
    $from_stamp = mktime(0, 0, 0, $month, $first_day, $year);
    $last_day = $weeks * 7 - day_of_week($month, 1, $year);
    $to_stamp = mktime(23, 59, 59, $month, $last_day, $year);
    $days_events = get_events($from_stamp, $to_stamp);
    $week_list = array();
    for ($week_of_month = 1; $week_of_month <= $weeks; $week_of_month++) {
        // We could be showing a week from the previous or next year
        $days = ($week_of_month - 1) * 7;
        $start_stamp = strtotime("+{$days} day", $from_stamp);
        $week_list[] = create_week($start_stamp, $year, $days_events);
    }
    return $week_list;
}
Beispiel #3
0
function create_weeks($week_of_month, $month, $year)
{
    if ($week_of_month > weeks_in_month($month, $year)) {
        return array();
    }
    $html_week = tag('tr', display_days(1, $week_of_month, $month, $year));
    return array_merge(array($html_week), create_weeks($week_of_month + 1, $month, $year));
}