diff --git a/class.schedule.php b/class.schedule.php
--- a/class.schedule.php
+++ b/class.schedule.php
@@ -71,7 +71,7 @@ class Schedule
//--------------------------------------------------
// Adds a section to the desired class.
//--------------------------------------------------
- function addSection($n, $l, $s, $e, $d, $synonym = NULL, $faculty = NULL, $room = NULL)
+ function addSection($course_name, $letter, $time_start, $time_end, $days, $synonym = NULL, $faculty = NULL, $room = NULL)
{
$found = false;
$counter = 0;
@@ -80,7 +80,7 @@ class Schedule
{
$temp = $this->classStorage[$counter]->getName();
- if((strcmp($temp,$n)) == 0)
+ if((strcmp($temp,$course_name)) == 0)
{
$found = true;
} else {
@@ -90,9 +90,15 @@ class Schedule
if($counter == $this->nclasses)
{
- echo "Could not find class: " . $n . "
";
+ echo 'Could not find class: ' . $course_name . "
\n";
} else {
- $this->classStorage[$counter]->section_add(new Section($l, $s, $e, $d, $synonym, $faculty, $room));
+ $section = $this->classStorage[$counter]->section_get($letter);
+ if (!$section)
+ {
+ $section = new Section($letter, array(), $synonym, $faculty);
+ $this->classStorage[$counter]->section_add($section);
+ }
+ $section->meeting_add(new SectionMeeting($days, $time_start, $time_end, $room));
}
}
@@ -276,45 +282,69 @@ class Schedule
for($dayLoop = 0; $dayLoop < 5; $dayLoop++)
{
+ $last_meeting = NULL;
for($j = 0; $j < $this->nclasses; $j++)
{
+ $class = $this->classStorage[$j];
+ $section_index = $this->storage[$i][$j];
+ $section = $class->getSection($section_index);
// Makes sure there is not a class already in progress
if($this->getClassCont($dayLoop) == -1)
{
- // Checks if the class meets on the given day
- if(($this->classStorage[$j]->getSection($this->storage[$i][$j])->getDay($dayLoop)))
+ /* iterate through all of a class's meeting times */
+ $meetings = $section->getMeetings();
+
+ /* find any meeting which are going on at this time */
+ $current_meeting = NULL;
+ foreach ($meetings as $meeting)
+ {
+ if ($meeting->getDay($dayLoop)
+ && $meeting->getStartTime() >= $time[$r]
+ && $meeting->getStartTime() < $time[$r+1])
+ {
+ $current_meeting = $meeting;
+ /* $last_meeting has meaning for a longer time than $current_meeting does. */
+ $last_meeting = $meeting;
+ }
+ }
+
+ if ($current_meeting)
+ {
+ // Checks if the class continues after the given time
+ if($current_meeting->getEndTime() > $time[$r+1])
{
- // Checks if the class meets at the given time
- if(($this->classStorage[$j]->getSection($this->storage[$i][$j])->getStartTime() >= $time[$r]) && ($this->classStorage[$j]->getSection($this->storage[$i][$j])->getStartTime() < $time[$r+1]))
- {
- // Checks if the class continues after the given time
- if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getEndTime() > $time[$r+1])
- {
- $table .= "\n\t\t