$existingEvaluationId = false; foreach ($courseInfo['course_codes']['listings'] as &$listing) { $courseNames->retrieve(array('subject', 'number', 'section'), array($listing['subject'], $listing['number'], $courseInfo['course_codes']['section']), array('course_id')); if ($courseNames->resultsExist) { $existingEvaluationId = $courseNames->info['course_id']; break; } } $courses = new MysqlTable($mysqli, 'courses'); $infoToSet = extractFieldsFromArray(array('title', 'description', 'requirements', 'extra_info'), $courseInfo); $infoToSet['exam_group'] = $courseInfo['exam']['group']; if ($existingEvaluationId) { $infoToSet['id'] = $existingEvaluationId; } $courses->setInfoArray($infoToSet); $success = $courses->commit(); if (!$success) { $infoToSet['description'] = mb_convert_encoding($infoToSet['description'], 'UTF-8', 'Windows-1252'); $courses->setInfoArray($infoToSet); $success = $courses->commit(); } ProjectFunctions::assertAndPrint($success, $courses); if (!$existingEvaluationId) { $existingEvaluationId = $courses->insertId; } $courseNames->clearInfo(); $infoToSet = array_merge(extractFieldsFromArray(array('subject', 'number'), $courseInfo['course_codes']['listings'][0]), extractFieldsFromArray(array('section', 'oci_id'), $courseInfo['course_codes'])); $infoToSet['course_id'] = $existingEvaluationId; $courseNames->setInfoArray($infoToSet); ProjectFunctions::assertAndPrint($courseNames->commit(), $courseNames); $courseAreas = new MysqlTable($mysqli, 'course_areas');