function create_week($week_of_year, $from_stamp, $to_stamp, $year) { global $phpcdb, $phpcid, $phpc_cal; $start_day = date("j", $from_stamp); $start_month = date("n", $from_stamp); $start_year = date("Y", $from_stamp); $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; } } $week_table = tag('tbody'); $week_html = tag('tr', tag('th', $week_of_year)); $week_table->add($week_html); for ($day_of_week = 0; $day_of_week < 7; $day_of_week++) { $day = $start_day + $day_of_week; $week_html->add(create_day($start_month, $day, $start_year, $days_events)); } return $week_table; }
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 get_events($from_stamp, $to_stamp) { global $phpc_cal, $phpcdb, $phpcid; //echo "<pre>$from_stamp $to_stamp\n"; $results = $phpcdb->get_occurrences_by_date_range($phpcid, $from_stamp, $to_stamp); $days_events = array(); //var_dump($results); while ($row = $results->fetch_assoc()) { //var_dump($row); //echo "here\n"; $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]) == $phpc_cal->events_max) { $days_events[$key][] = false; } if (sizeof($days_events[$key]) > $phpc_cal->events_max) { continue; } $days_events[$key][] = $event; } } return $days_events; }