$courseSkills = new MysqlTable($mysqli, 'course_skills'); ProjectFunctions::assertAndPrint(addCourseItemsMappings($courseSkills, $existingEvaluationId, 'skill', $courseInfo['skills']), $courseSkills); $courseProfessors = new MysqlTable($mysqli, 'course_professors'); ProjectFunctions::assertAndPrint(addCourseItemsMappings($courseProfessors, $existingEvaluationId, 'professor', $courseInfo['professors']), $courseProfessors); if ($courseInfo['exam']['group'] !== 0) { $examGroups = new MysqlTable($mysqli, 'exam_groups'); $infoToSet = extractFieldsFromArray(array('date', 'time'), $courseInfo['exam']); $infoToSet['id'] = $courseInfo['exam']['group']; $examGroups->setInfoArray($infoToSet); ProjectFunctions::assertAndPrint($examGroups->commit(), $examGroups); } $courseSessions = new MysqlTable($mysqli, 'course_sessions'); $courseSessions->addCond('course_id', $existingEvaluationId); ProjectFunctions::assertAndPrint($courseSessions->executeDeleteQuery(), $courseSessions); $courseSessions->clearSelect(); $courseSessions->setInfo('course_id', $existingEvaluationId); foreach ($courseInfo['sessions'] as &$session) { $infoToSet = extractFieldsFromArray(array('start_time', 'end_time', 'location'), $session); $infoToSet['course_id'] = $existingEvaluationId; foreach ($session['days'] as &$day) { $infoToSet['day_of_week'] = $day; $courseSessions->setInfoArray($infoToSet); ProjectFunctions::assertAndPrint($courseSessions->commit(), $courseSessions); } } $courseFlags = new MysqlTable($mysqli, 'course_flags'); ProjectFunctions::assertAndPrint(addCourseItemsMappings($courseFlags, $existingEvaluationId, 'flag', $courseInfo['extra_flags']), $courseFlags); $log->write("Done {$courseInfo['course_codes']['listings'][0]['subject']} {$courseInfo['course_codes']['listings'][0]['number']} {$courseInfo['course_codes']['oci_id']}"); flush(); } }
} } $courses = new MysqlTable($mysqli, 'evaluation_courses'); $infoToSet = $evaluationInfo['statistics']; $infoToSet['season'] = $evaluationInfo['season']; if ($existingEvaluationId) { $infoToSet['id'] = $existingEvaluationId; } $courses->setInfoArray($infoToSet); ProjectFunctions::assertAndPrint($courses->commit(), $courses); if (!$existingEvaluationId) { $existingEvaluationId = $courses->insertId; } foreach ($evaluationInfo['courses'] as &$course) { $courseNames->clearInfo(); $infoToSet = extractFieldsFromArray(array('subject', 'number', 'section'), $course); $infoToSet['course_id'] = $existingEvaluationId; $infoToSet['season'] = $evaluationInfo['season']; $courseNames->setInfoArray($infoToSet); ProjectFunctions::assertAndPrint($courseNames->commit(), $courseNames); } $evaluationComments = new MysqlTable($mysqli, 'evaluation_comments'); foreach ($evaluationInfo['comments'] as $type => &$comments) { $success = addCourseItemsMappings($evaluationComments, $existingEvaluationId, 'comment', $comments, array('type' => $type)); if (!$success) { echo "php FetchRatings.php --startsubject {$rawCourseSubject} --startnumber {$thisListing['number']} --startsection {$thisListing['section']} --startseason {$season}"; } ProjectFunctions::assertAndPrint($success, $evaluationComments->error); } $curCourse = $evaluationInfo['courses'][0]; $log->write("{$pid} Done {$rawCourseSubject} {$thisListing['number']} {$thisListing['section']} {$season} {$crn}", E_NOTICE, $logFlags);