aboutsummaryrefslogtreecommitdiffstats
path: root/functions
diff options
context:
space:
mode:
authordrei <drei>2002-09-27 23:26:08 +0000
committerdrei <drei>2002-09-27 23:26:08 +0000
commit190cc7bd480ec34ecb0362ac54274d9be8835a7e (patch)
tree8957b9bd7e7bded32ef9298df3397b0356857fc9 /functions
parent60e31d1be86a845b6271fefb1fbb1367ef736928 (diff)
downloadphpicalendar-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.php123
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;

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