aboutsummaryrefslogtreecommitdiffstats
path: root/functions/overlapping_events.php
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;
}
?>

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