Select Git revision
NewController.php
NewController.php 3.73 KiB
<?php
class Courses_NewController extends App_Controller_Action
{
public function indexAction()
{
$redirectUrl = Zend_Controller_Front::getInstance()->getBaseUrl()
. '/courses/new/search';
$this->getResponse()->setRedirect($redirectUrl);
}
public function searchAction()
{
$filter = array(
'subject' => array('Alpha', 'StringToUpper'),
'courseNumber' => array('Digits'),
'courseLetter' => array('Alpha', 'StringToUpper')
);
$in = new Zend_Filter_Input($filter, array(), $this->getRequest()->getParams());
if (!$in->subject || !$in->courseNumber) {
return;
}
$course = Courses_CourseModel::findByCourseCode($in->subject, $in->courseNumber, $in->courseLetter);
$activeRequests = Courses_CourseModel::findActiveRequestByCourseCode($in->subject, $in->courseNumber, $in->courseLetter);
if (count($activeRequests) > 0) {
$render = 'conflict';
} else if ($course) {
$render = 'found';
if ($in->subject != $course->getSubject()) {
$this->view->crosslisting = true;
} else {
$this->view->crosslisting = false;
}
$this->view->course = $course;
} else {
$render = 'create';
}
$this->view->subject = $in->subject;
$this->view->courseLetter = $in->courseLetter;
$this->view->courseNumber = $in->courseNumber;
$this->view->activeRequests = $activeRequests;
$this->view->isAce = $course->isAce();
$this->render($render);
}
public function searchPostAction()
{
$filter = array(
'subject' => array('Alpha', 'StringToUpper'),
'courseNumber' => array('Digits'),
'courseLetter' => array('Alpha', 'StringToUpper')
);
$in = new Zend_Filter_Input($filter, array(), $this->getRequest()->getParams());
$redirectUrl = Zend_Controller_Front::getInstance()->getBaseUrl()
. '/courses/new/search';
if ($in->subject) {
$redirectUrl .= '/subject/' . $in->subject;
}
if ($in->courseNumber) {
$redirectUrl .= '/courseNumber/' . $in->courseNumber;
}
if ($in->courseLetter) {
$redirectUrl .= '/courseLetter/' . $in->courseLetter;
}
$this->getResponse()->setRedirect($redirectUrl);
}
public function createAction()
{
$filter = array(
'type' => array('StringTrim'),
'subject' => array('Alpha', 'StringToUpper'),
'courseNumber' => array('Digits'),
'courseLetter' => array('Alpha', 'StringToUpper')
);
$in = new Zend_Filter_Input($filter, array(), $this->getRequest()->getParams());
$request = Requests_RequestModel::fetchNew();
$request->setType($in->type);
$request->setModule('courses');
$user = Auth_UserModel::findCurrentUser();
$request->setOwner($user);
$parentCourse = Courses_CourseModel::findByCourseCode($in->subject, $in->courseNumber, $in->courseLetter);
if ($parentCourse) {
$course = clone $parentCourse;
} else {
$course = Courses_CourseModel::fetchNew();
$course->setCourseCode($in->subject, $in->courseNumber, $in->courseLetter);
}
if (in_array($request->getType(), array('RemoveCourse'))) {
$course->setRemoved();
}
$session = new Zend_Session_Namespace('Edit Request');
$session->parentCourse = $parentCourse;
$session->course = $course;
$session->request = $request;
unset($session->currentSavedRequestId);
$this->_redirect('/courses/edit');
}
}