blob: 98ee2a2bf279a2145c6957563a4fdff679d41429 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
<?php
// 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"] < $drawTimes["draw_end"]) and ($event["event_end"] > $drawTimes["draw_start"])) {
if ($event["event_start"] < $drawTimes["draw_start"]) $overlap_start = $drawTimes["draw_start"];
else $overlap_start = $event["event_start"];
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;
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;
}
?>
|