diff options
author | drei <drei> | 2002-09-27 23:26:08 +0000 |
---|---|---|
committer | drei <drei> | 2002-09-27 23:26:08 +0000 |
commit | 190cc7bd480ec34ecb0362ac54274d9be8835a7e (patch) | |
tree | 8957b9bd7e7bded32ef9298df3397b0356857fc9 /functions | |
parent | 60e31d1be86a845b6271fefb1fbb1367ef736928 (diff) | |
download | phpicalendar-190cc7bd480ec34ecb0362ac54274d9be8835a7e.tar.gz phpicalendar-190cc7bd480ec34ecb0362ac54274d9be8835a7e.tar.bz2 phpicalendar-190cc7bd480ec34ecb0362ac54274d9be8835a7e.zip |
Inserted function to find the smallest multipe for two integers, this is used for the modified drawing of overlapping events.
This function replaced the previous one which used a fixed number of columns to draw the events into.
Therefore also some changes in the checkOverlap() function to make use of the new function.
Diffstat (limited to 'functions')
-rw-r--r-- | functions/overlapping_events.php | 123 |
1 files changed, 17 insertions, 106 deletions
diff --git a/functions/overlapping_events.php b/functions/overlapping_events.php index 3c311c4..98ee2a2 100644 --- a/functions/overlapping_events.php +++ b/functions/overlapping_events.php @@ -1,122 +1,33 @@ <?php -// 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; +// function to determine maximum necessary columns per day +// actually an algorithm to get the smallest multiple for two numbers +function kgv($a, $b) { + $x = $a; + $y = $b; + while ($x != $y) { + if ($x < $y) $x += $a; + else $y += $b; } -} + return $x; +} + // drei 20020921: function for checking and counting overlapping events function checkOverlap() { global $master_array, $overlap_array, $start_date, $start_time, $end_time; + $drawTimes = drawEventTimes($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"] < $drawTimes["draw_end"]) and ($event["event_end"] > $drawTimes["draw_start"])) { - if ($event["event_start"] < $start_time) $overlap_start = $start_time; + if ($event["event_start"] < $drawTimes["draw_start"]) $overlap_start = $drawTimes["draw_start"]; else $overlap_start = $event["event_start"]; - if ($event["event_end"] < $end_time) $overlap_end = $event["event_end"]; - else $overlap_end = $end_time; + if ($event["event_end"] < $drawTimes["draw_end"]) $overlap_end = $event["event_end"]; + else $overlap_end = $drawTimes["draw_end"]; if (sizeof($overlap_array[($start_date)][($keyTime)][($keyEvent)]) > 0) { $newOverlapEntry = TRUE; |