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

Check for "stale" saved requests before allowing a user to edit them.

parent dfe06dfb
No related branches found
No related tags found
No related merge requests found
...@@ -194,6 +194,12 @@ class Courses_EditController extends App_Controller_Action ...@@ -194,6 +194,12 @@ class Courses_EditController extends App_Controller_Action
$savedRequests = RegistryModel::findByNamespaceAndKey($user->getId(), 'savedRequests')->getData(); $savedRequests = RegistryModel::findByNamespaceAndKey($user->getId(), 'savedRequests')->getData();
$request = $savedRequests[$id]['request']; $request = $savedRequests[$id]['request'];
$course = $savedRequests[$id]['course']; $course = $savedRequests[$id]['course'];
if ($this->_isSavedRequestStale($request, $course)) {
$controllerSession = new Zend_Session_Namespace(__CLASS__);
$controllerSession->errorMessage = 'Unfortunately another request modifying this course has been submitted since you saved your request. You will need to create a new request to continue.';
$this->_redirect('/courses/edit/error');
exit;
}
$parentCourse = $savedRequests[$id]['parentCourse']; $parentCourse = $savedRequests[$id]['parentCourse'];
$session->currentSavedRequestId = $id; $session->currentSavedRequestId = $id;
} else { } else {
...@@ -252,6 +258,12 @@ class Courses_EditController extends App_Controller_Action ...@@ -252,6 +258,12 @@ class Courses_EditController extends App_Controller_Action
} }
public function errorAction()
{
$session = new Zend_Session_Namespace(__CLASS__);
$this->view->message = $session->errorMessage;
}
protected function _saveForLater() protected function _saveForLater()
{ {
$in = $this->_getAllParams(); $in = $this->_getAllParams();
...@@ -319,7 +331,7 @@ class Courses_EditController extends App_Controller_Action ...@@ -319,7 +331,7 @@ class Courses_EditController extends App_Controller_Action
if ($crosslisting['subject'] == $subject && if ($crosslisting['subject'] == $subject &&
$crosslisting['courseNumber'] == $courseNumber && $crosslisting['courseNumber'] == $courseNumber &&
$crosslisting['courseLetter'] == $courseLetter) { $crosslisting['courseLetter'] == $courseLetter) {
return true; return true;
} }
} }
...@@ -336,6 +348,23 @@ class Courses_EditController extends App_Controller_Action ...@@ -336,6 +348,23 @@ class Courses_EditController extends App_Controller_Action
return true; return true;
} }
protected function _isSavedRequestStale(Requests_RequestModel $request, Courses_CourseModel $course)
{
$parentCourse = Courses_CourseModel::findByCourseId($course->getCourseId());
if ($parentCourse->getId() != $course->getParentId()) {
return true;
}
$otherRequests = Courses_CourseModel::findActiveRequestByCourseCode($parentCourse->getSubject(),
$parentCourse->getCourseNumber(),
$parentCourse->getCourseLetter());
if (count($otherRequests) > 0) {
return true;
}
return false;
}
public function isCourseCodeAvailableAction() public function isCourseCodeAvailableAction()
{ {
$in = $this->_getAllParams(); $in = $this->_getAllParams();
......
...@@ -2587,6 +2587,11 @@ class Courses_CourseModel extends Unl_Model ...@@ -2587,6 +2587,11 @@ class Courses_CourseModel extends Unl_Model
{ {
return $this->_data['course']; return $this->_data['course'];
} }
public function getParentId()
{
return $this->_data['parent'];
}
public function isValid() public function isValid()
{ {
......
<div style="color: #f00; font-weight: bold; font-size: 24px; line-height: normal; padding-bottom: 1em;">
<?php echo $this->message; ?>
</div>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment