} if ($skip === true) { $log->write("Skipping {$id}"); flush(); continue; } $class = explode('</td>', $class); foreach ($class as &$entry) { $entry = StringUtil::textFromHtml($entry); } $page = $curl->fetchPageAndLogin(OCI_SERVER . "/oci/resultDetail.jsp?course={$id}&term={$term}", null, false, true); $courseInfo = extractCourseInfo($page); $courseNames = new MysqlTable($mysqli, 'course_names'); $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');
$evaluationInfo['comments'] = array(); foreach ($commentPages as &$qidNumber) { $page = $curl->fetchPageAndLogin("https://faculty.yale.edu/viewevals/Search/ViewAnswersByQuestion?subType=all&ap=0&qid={$qidPrefixes[$type]}{$qidNumber}&na=10000", null, false, true); if (empty($page)) { continue; } $comments = getCommentsFromPage($page); if (!empty($comments)) { $evaluationInfo['comments'][(int) $qidNumber] = $comments; } } // This part commits to the database $existingEvaluationId = false; $courseNames = new MysqlTable($mysqli, 'evaluation_course_names'); foreach ($evaluationInfo['courses'] as &$course) { $courseNames->retrieve(array('subject', 'number', 'section', 'season'), array($course['subject'], $course['number'], $course['section'], $season), array('course_id')); if ($courseNames->resultsExist) { $existingEvaluationId = $courseNames->info['course_id']; break; } } $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;