From a89ae2a82b5be0541a794fb7ef17348d41db9a7b Mon Sep 17 00:00:00 2001 From: Tim Steiner <tsteiner2@unl.edu> Date: Mon, 9 Dec 2013 13:48:18 -0600 Subject: [PATCH] Add updating of bulletin sections to course request Make Official action. @2h00 --- .../modules/bulletin/models/SectionModel.php | 24 +++++++++++++------ .../ApprovalActionMakeOfficialModel.php | 10 ++++++++ application/modules/cron/models/JobsModel.php | 12 ++++------ 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/application/modules/bulletin/models/SectionModel.php b/application/modules/bulletin/models/SectionModel.php index fc3f99b0..2e97dbaa 100644 --- a/application/modules/bulletin/models/SectionModel.php +++ b/application/modules/bulletin/models/SectionModel.php @@ -650,7 +650,7 @@ EOF; return $departmentSectionNames; } - static public function updateSubjectCode($oldCode, $newCode) + static public function updateCourseCode($oldCode, $newCode) { if ($oldCode == $newCode) { return; @@ -661,7 +661,9 @@ EOF; $majors = Bulletin_UtilityModel::getAllMajors(); $year = 2014; + $requestsToConsider = new Unl_Model_Collection('Requests_RequestModel'); foreach ($colleges as $collegeId => $college) { + set_time_limit(max(5, ini_get('max_execution_time'))); $requests = Bulletin_SectionModel::findActiveRequestByCollegeAndMajorId($college, NULL); if (count($requests)) { $request = $requests->pop(); @@ -673,7 +675,10 @@ EOF; $section->setCollegeId($collegeId); } - self::_updateSubjectCode($oldCode, $newCode, $request, $section); + $result = self::_updateCourseCode($oldCode, $newCode, $request, $section); + if ($result instanceof Requests_RequestModel) { + $requestsToConsider[$request->getId()] = $result; + } foreach ($collegeMajors[$college] as $majorId => $major) { $requests = Bulletin_SectionModel::findActiveRequestByCollegeAndMajorId($college, $majorId); @@ -688,12 +693,17 @@ EOF; $section->setMajorId($majorId); } - self::_updateSubjectCode($oldCode, $newCode, $request, $section); + $result = self::_updateCourseCode($oldCode, $newCode, $request, $section); + if ($result instanceof Requests_RequestModel) { + $requestsToConsider[$request->getId()] = $result; + } } } + + Requests_ApprovalChainModel::consider($requestsToConsider); } - static protected function _updateSubjectCode($oldCode, $newCode, Requests_RequestModel $request, Bulletin_SectionModel $section) + static protected function _updateCourseCode($oldCode, $newCode, Requests_RequestModel $request, Bulletin_SectionModel $section) { $path = Bulletin_RepositoryModel::getInstance()->getFilePathForCollegeMajorYear( $section->getCollegeLong(), @@ -760,8 +770,6 @@ EOF; Requests_RequestModel::save($request); $section->setRequest($request); Bulletin_SectionModel::save($section); - } else { - echo $request->getId() . PHP_EOL; } Bulletin_RepositoryModel::getInstance()->saveFileContents( @@ -778,6 +786,8 @@ EOF; $diffHtml ); - Requests_ApprovalChainModel::consider($request); + if ($request->getType() == 'BulletinAdminEdit') { + return $request; + } } } \ No newline at end of file diff --git a/application/modules/courses/models/ApprovalActionMakeOfficialModel.php b/application/modules/courses/models/ApprovalActionMakeOfficialModel.php index a2a50516..b5e5278f 100644 --- a/application/modules/courses/models/ApprovalActionMakeOfficialModel.php +++ b/application/modules/courses/models/ApprovalActionMakeOfficialModel.php @@ -126,6 +126,16 @@ class Courses_ApprovalActionMakeOfficialModel extends Requests_ApprovalActionMod $change['to']['courseNumber'], $change['to']['courseLetter'] ); + + $cronJob = Cron_JobsModel::fetchNew(); + $cronJob->setDate(new Zend_Date()); + $cronJob->setClass('Bulletin_SectionModel'); + $cronJob->setMethod('updateCourseCode'); + $cronJob->setArguments($change['from'], $change['to']); + + $collection = new Unl_Model_Collection('Cron_JobsModel'); + $collection[] = $cronJob; + Cron_JobsModel::save($collection); } } diff --git a/application/modules/cron/models/JobsModel.php b/application/modules/cron/models/JobsModel.php index 8667d7b4..036cc9ed 100644 --- a/application/modules/cron/models/JobsModel.php +++ b/application/modules/cron/models/JobsModel.php @@ -234,20 +234,16 @@ class Cron_JobsModel extends Unl_Model public function setClass($class) { - $this->_data['class'] = $class; + $this->_data['class'] = $class; } public function setMethod($method) { - $this->_data['method'] = $method; + $this->_data['method'] = $method; } - public function setArguments($arguments) + public function setArguments() { - if (!is_array($arguments)) { - throw new Zend_Exception('$arguments must be an array.'); - } - - $this->_data['arguments'] = serialize($arguments); + $this->_data['arguments'] = serialize(func_get_args()); } } \ No newline at end of file -- GitLab