aboutsummaryrefslogtreecommitdiffstats
path: root/functions
diff options
context:
space:
mode:
authorChad Little <clittle@users.sourceforge.net>2002-09-24 06:38:32 +0000
committerChad Little <clittle@users.sourceforge.net>2002-09-24 06:38:32 +0000
commit08bf2cc514446c193fce67737c68a082c9aa4cbd (patch)
tree18e1c8ebcc74a1dfe17294aa863f98e2243af1bd /functions
parentff53a53b1d58864e6bd8f38a204c54d6a7bb47ec (diff)
downloadphpicalendar-08bf2cc514446c193fce67737c68a082c9aa4cbd.tar.gz
phpicalendar-08bf2cc514446c193fce67737c68a082c9aa4cbd.tar.bz2
phpicalendar-08bf2cc514446c193fce67737c68a082c9aa4cbd.zip
drei - overlapping event fucntions from ical_parser.php
Diffstat (limited to 'functions')
-rw-r--r--functions/overlapping_events.php153
1 files changed, 153 insertions, 0 deletions
diff --git a/functions/overlapping_events.php b/functions/overlapping_events.php
new file mode 100644
index 0000000..be40031
--- /dev/null
+++ b/functions/overlapping_events.php
@@ -0,0 +1,153 @@
+<?
+// function to determine the colspan for overlapping events
+// takes 2 parameters: index of event (in regards of column output) and number of overlapping events
+function eventWidth($ind, $overlaps) {
+ switch ($overlaps) {
+ // case 1 means 1 overlap -> two concurrent events etc.
+ case 0:
+ return 12;
+ break;
+ case 1:
+ return 6;
+ break;
+ case 2:
+ return 4;
+ break;
+ case 3:
+ return 3;
+ break;
+ case 4:
+ switch ($ind) {
+ case 0:
+ return 3;
+ break;
+ case 2:
+ return 3;
+ break;
+ default:
+ return 2;
+ }
+ break;
+ case 5:
+ return 2;
+ break;
+ case 6:
+ switch ($ind) {
+ case 0:
+ return 1;
+ break;
+ case 3:
+ return 1;
+ break;
+ default:
+ return 2;
+ }
+ break;
+ case 7:
+ switch ($ind) {
+ case 0:
+ return 2;
+ break;
+ case 2:
+ return 2;
+ break;
+ case 4:
+ return 2;
+ break;
+ case 6:
+ return 2;
+ break;
+ default:
+ return 1;
+ }
+ break;
+ case 8:
+ switch ($ind) {
+ case 0:
+ return 2;
+ break;
+ case 3:
+ return 2;
+ break;
+ case 6:
+ return 2;
+ break;
+ default:
+ return 1;
+ }
+ break;
+ case 9:
+ switch ($ind) {
+ case 0:
+ return 2;
+ break;
+ case 7:
+ return 2;
+ break;
+ default:
+ return 1;
+ }
+ break;
+ case 10:
+ switch ($ind) {
+ case 5:
+ return 2;
+ break;
+ default:
+ return 1;
+ }
+ break;
+ case 11:
+ return 1;
+ break;
+ }
+}
+
+// drei 20020921: function for checking and counting overlapping events
+function checkOverlap() {
+ global $master_array, $overlap_array, $start_date, $start_time, $end_time;
+
+ $maxOverlaps = 0;
+ if (sizeof($master_array[($start_date)]) > 0) {
+ foreach ($master_array[($start_date)] as $keyTime => $eventTime) {
+ foreach ($eventTime as $keyEvent => $event) {
+ if (($event["event_start"] < $end_time) and ($event["event_end"] > $start_time)) {
+
+ if ($event["event_start"] < $start_time) $overlap_start = $start_time;
+ else $overlap_start = $event["event_start"];
+ if ($event["event_end"] < $end_time) $overlap_end = $event["event_end"];
+ else $overlap_end = $end_time;
+
+ if (sizeof($overlap_array[($start_date)][($keyTime)][($keyEvent)]) > 0) {
+ $newOverlapEntry = TRUE;
+ foreach ($overlap_array[($start_date)][($keyTime)][($keyEvent)] as $keyOverlap => $overlapEntry) {
+ if (($overlapEntry["start"] < $overlap_end) and ($overlapEntry["end"] > $overlap_start)) {
+ $overlap_array[($start_date)][($keyTime)][($keyEvent)][($keyOverlap)]["count"]++;
+ if ($overlapEntry["start"] < $overlap_start) {
+ $overlap_array[($start_date)][($keyTime)][($keyEvent)][($keyOverlap)]["start"] = $overlap_start;
+ }
+ if ($overlapEntry["end"] > $overlap_end) {
+ $overlap_array[($start_date)][($keyTime)][($keyEvent)][($keyOverlap)]["end"] = $overlap_end;
+ }
+ $newOverlapEntry = FALSE;
+ break;
+ }
+ }
+ if ($newOverlapEntry) {
+ array_push($overlap_array[($start_date)][($keyTime)][($keyEvent)], array ("count" => 1,"start" => $overlap_start, "end" => $overlap_end));
+ }
+ } else {
+ $overlap_array[($start_date)][($keyTime)][($keyEvent)][] = array ("count" => 1,"start" => $overlap_start, "end" => $overlap_end);
+ }
+ foreach ($overlap_array[($start_date)][($keyTime)][($keyEvent)] as $keyOverlap => $overlapEntry) {
+ if ($overlapEntry["count"] > $maxOverlaps) $maxOverlaps = $overlapEntry["count"];
+ }
+ $master_array[($start_date)][($keyTime)][($keyEvent)]["event_overlap"] = $maxOverlaps;
+ }
+ }
+ }
+ }
+
+ return $maxOverlaps;
+}
+?> \ No newline at end of file

© 2014-2024 Faster IT GmbH | imprint | privacy policy