Skip to content
Snippets Groups Projects
Commit b3bc4496 authored by Tim Steiner's avatar Tim Steiner
Browse files

Ability to update subject codes.

parent 48a7e1fb
Branches
Tags
No related merge requests found
...@@ -1376,6 +1376,7 @@ class Courses_CourseModel extends Unl_Model ...@@ -1376,6 +1376,7 @@ class Courses_CourseModel extends Unl_Model
. 'WHERE a.courseGradTieInId = b.courseGradTieInId '; . 'WHERE a.courseGradTieInId = b.courseGradTieInId ';
$db->query($sql); $db->query($sql);
$db->query('DROP TABLE creqCourseGradTieInsUpdate');
} }
static public function _deleteGradTieIns($models) static public function _deleteGradTieIns($models)
...@@ -2174,6 +2175,11 @@ class Courses_CourseModel extends Unl_Model ...@@ -2174,6 +2175,11 @@ class Courses_CourseModel extends Unl_Model
$this->_data['request'] = $request->getId(); $this->_data['request'] = $request->getId();
} }
public function clearRequest()
{
$this->_data['request'] = null;
}
public function getType() public function getType()
{ {
return $this->_data['type']; return $this->_data['type'];
...@@ -2286,5 +2292,111 @@ class Courses_CourseModel extends Unl_Model ...@@ -2286,5 +2292,111 @@ class Courses_CourseModel extends Unl_Model
$db->query('DROP TABLE creqCoursesUpdate'); $db->query('DROP TABLE creqCoursesUpdate');
} }
static public function updateSubjectCode($oldCode, $newCode)
{
$db = Zend_Registry::get('db');
$generationIds = array();
$select = new Zend_Db_Select($db);
$select->from(array('c' => 'creqCourseCodes'), array());
$select->join(array('x' => 'creqCourseCrosslistings'), 'c.courseCodeId = x.courseCode', array('generation'));
$select->join(array('g' => 'creqCourseGenerations'), 'x.generation = g.courseGenerationId', array('course', 'type'));
$select->join(array('s' => 'creqCourses'), 'g.course = s.courseId', array('currentGeneration'));
$select->where('c.subject = ?', $oldCode);
$select->where('g.courseGenerationId = s.currentGeneration');
$data = $select->query()->fetchAll();
foreach ($data as $row) {
$generationIds[] = $row['currentGeneration'];
}
$select = new Zend_Db_Select($db);
$select->from(array('d' => 'creqCourseDetails'), array('prerequisite'));
$select->join(array('g' => 'creqCourseGenerations'), 'd.generation = g.courseGenerationId', array('course', 'type'));
$select->join(array('s' => 'creqCourses'), 'g.course = s.courseId', array('currentGeneration'));
$select->where(
$db->quoteInto('d.prerequisite LIKE ? OR ', '%' . $oldCode . '%') .
$db->quoteInto('d.notes LIKE ? OR ', '%' . $oldCode . '%') .
$db->quoteInto('d.description LIKE ? OR ', '%' . $oldCode . '%') .
$db->quoteInto('d.title LIKE ?', '%' . $oldCode . '%')
);
$data = $select->query()->fetchAll();
foreach ($data as $row) {
$generationIds[] = $row['currentGeneration'];
}
$select = new Zend_Db_Select($db);
$select->from(array('c' => 'creqCourseCodes'), array());
$select->join(array('x' => 'creqCourseCrosslistings'), 'c.courseCodeId = x.courseCode', array('generation'));
$select->join(array('g' => 'creqCourseGenerations'), 'x.generation = g.courseGenerationId', array('course', 'type'));
$select->where('c.subject = ?', $oldCode);
$select->where('g.courseGenerationId NOT IN (SELECT parent FROM creqCourseGenerations WHERE parent IS NOT NULL)');
$data = $select->query()->fetchAll();
foreach ($data as $row) {
$generationIds[] = $row['generation'];
}
$select = new Zend_Db_Select($db);
$select->from(array('d' => 'creqCourseDetails'), array('prerequisite'));
$select->join(array('g' => 'creqCourseGenerations'), 'd.generation = g.courseGenerationId', array('course', 'type'));
$select->where(
$db->quoteInto('d.prerequisite LIKE ? OR ', '%' . $oldCode . '%') .
$db->quoteInto('d.notes LIKE ? OR ', '%' . $oldCode . '%') .
$db->quoteInto('d.description LIKE ?', '%' . $oldCode . '%')
);
$select->where('g.courseGenerationId NOT IN (SELECT parent FROM creqCourseGenerations WHERE parent IS NOT NULL)');
$data = $select->query()->fetchAll();
foreach ($data as $row) {
$generationIds[] = $row['generation'];
}
sort($generationIds);
$generationIds = array_unique($generationIds);
$officialGenerations = Courses_CourseModel::find($generationIds);
$parentMap = array();
foreach ($officialGenerations as $course) {
$newCourse = clone $course;
$newCourse->setType($course->getType());
$crosslistings = $newCourse->getCrosslistings();
foreach($crosslistings as $id => $x) {
if ($x['subject'] == $oldCode) {
$newCourse->editCrosslisting($id, $x['type'], $newCode, $x['courseNumber'], $x['courseLetter']);
}
}
$newCourse->setPrerequisite(strtr($newCourse->getPrerequisite(), array($oldCode => $newCode)));
$newCourse->setNotes(strtr($newCourse->getNotes(), array($oldCode => $newCode)));
$newCourse->setDescription(strtr($newCourse->getDescription(), array($oldCode => $newCode)));
$newCourse->setTitle(strtr($newCourse->getTitle(), array($oldCode => $newCode)));
$newCourse->setEffectiveSemester('20092');
if ($newCourse->getType() == 'official') {
$newCourse->clearRequest();
}
Courses_CourseModel::save($newCourse);
$parentMap[$course->getId()] = $newCourse->getId();
}
foreach ($parentMap as $oldId => $newId) {
$sql = "UPDATE creqCourseGenerations SET parent = $newId WHERE parent = $oldId AND courseGenerationId != $newId";
$db->query($sql);
$sql = "UPDATE creqCourses SET currentGeneration = $newId WHERE currentGeneration = $oldId";
$db->query($sql);
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment