Skip to content
Snippets Groups Projects
Commit 88e13f8e authored by Kevin Abel's avatar Kevin Abel
Browse files

Copy prereq related files from Undergrad bulletin

parent a57bd6bc
No related branches found
No related tags found
1 merge request!2Allow for searching by parsed prerequisite strings
...@@ -65,9 +65,17 @@ $edition = new Controller; ...@@ -65,9 +65,17 @@ $edition = new Controller;
$db->exec('ALTER TABLE `crosslistings` ADD INDEX ( `subjectArea` ) '); $db->exec('ALTER TABLE `crosslistings` ADD INDEX ( `subjectArea` ) ');
$db->exec('ALTER TABLE `crosslistings` ADD INDEX ( `courseNumber` ) '); $db->exec('ALTER TABLE `crosslistings` ADD INDEX ( `courseNumber` ) ');
$db->exec('CREATE TABLE IF NOT EXISTS prereqs (
course_id INT UNSIGNED NOT NULL ,
subjectArea VARCHAR( 4 ) NOT NULL ,
courseNumber VARCHAR( 4 ) NOT NULL
);');
$db->exec('CREATE INDEX IF NOT EXISTS IX_prereqs_subjectArea_courseNumber ON prereqs ( subjectArea, courseNumber );');
$course_stmt = $db->prepare('INSERT INTO courses (id,subjectArea,courseNumber,title,slo,prerequisite,credits,xml) VALUES (?,?,?,?,?,?,?,?);'); $course_stmt = $db->prepare('INSERT INTO courses (id,subjectArea,courseNumber,title,slo,prerequisite,credits,xml) VALUES (?,?,?,?,?,?,?,?);');
$cross_stmt = $db->prepare('INSERT INTO crosslistings (course_id, subjectArea, courseNumber) VALUES (?,?,?);'); $cross_stmt = $db->prepare('INSERT INTO crosslistings (course_id, subjectArea, courseNumber) VALUES (?,?,?);');
$prereq_stmt = $db->prepare('INSERT INTO prereqs (course_id, subjectArea, courseNumber) VALUES (?,?,?);');
foreach ($courses as $course) { foreach ($courses as $course) {
$id++; $id++;
...@@ -90,6 +98,14 @@ $edition = new Controller; ...@@ -90,6 +98,14 @@ $edition = new Controller;
} }
$values[] = $course->prerequisite; $values[] = $course->prerequisite;
$prereqs = UNL_UndergraduateBulletin_EPUB_Utilities::findCourses($course->prerequisite);
foreach ($prereqs as $subj => $courseNums) {
foreach ($courseNums as $num) {
$prereq_stmt->execute(array($id, $subj, $num));
}
}
unset($subj, $courseNums, $num, $prereqs);
$credits = $course->getCredits(); $credits = $course->getCredits();
if (isset($credits['Single Value'])) { if (isset($credits['Single Value'])) {
......
...@@ -107,7 +107,14 @@ class DBSearcher extends \UNL_Services_CourseApproval_SearchInterface ...@@ -107,7 +107,14 @@ class DBSearcher extends \UNL_Services_CourseApproval_SearchInterface
function prerequisiteQuery($prereq) function prerequisiteQuery($prereq)
{ {
return 'courses.prerequisite LIKE '.self::getDB()->quote('%'.$prereq.'%'); $query = explode(' ', $prereq, 2);
$sql = '
SELECT DISTINCT courses.id, courses.xml
FROM courses
INNER JOIN prereqs ON prereqs.course_id = courses.id
WHERE prereqs.subjectArea = ' . self::getDB()->quote($query[0]) . ' AND prereqs.courseNumber = ' . self::getDB()->quote($query[1] ?: '');
return new Select($sql);
} }
function intersectQuery($query1, $query2) function intersectQuery($query1, $query2)
...@@ -127,6 +134,9 @@ class DBSearcher extends \UNL_Services_CourseApproval_SearchInterface ...@@ -127,6 +134,9 @@ class DBSearcher extends \UNL_Services_CourseApproval_SearchInterface
function getQueryResult($query, $offset = 0, $limit = -1) function getQueryResult($query, $offset = 0, $limit = -1)
{ {
if ($query instanceof Select) {
$query = $query->__toString();
} else {
$query = 'SELECT DISTINCT courses.id, courses.xml $query = 'SELECT DISTINCT courses.id, courses.xml
FROM courses INNER JOIN crosslistings ON courses.id=crosslistings.course_id FROM courses INNER JOIN crosslistings ON courses.id=crosslistings.course_id
WHERE ( WHERE (
...@@ -135,6 +145,7 @@ class DBSearcher extends \UNL_Services_CourseApproval_SearchInterface ...@@ -135,6 +145,7 @@ class DBSearcher extends \UNL_Services_CourseApproval_SearchInterface
OR LENGTH(crosslistings.courseNumber) < 3 OR LENGTH(crosslistings.courseNumber) < 3
) )
AND (' . $query . ');'; AND (' . $query . ');';
}
return new DBSearchResults($query, $offset, $limit); return new DBSearchResults($query, $offset, $limit);
} }
} }
\ No newline at end of file
<?php
namespace UNL\Catalog\CourseSearch;
class Select
{
protected $sql;
public function __construct($sql)
{
$this->sql = $sql;
}
public function __toString()
{
return $this->sql;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment