Select Git revision
ModulesTest.php
-
Laurent Destailleur authoredLaurent Destailleur authored
RequestController.php 35.67 KiB
<?php
class RequestController extends Nmc_Controller_Action
{
public function init()
{
$this->_registerPlugin(new Application_Controller_Action_Plugin_Authorize());
}
public function indexAction()
{
return $this->SearchAction();
}
public function searchAction()
{
$in = $this->_getAllParams();
if($in[0] != '' && $in[1] != '') {
return $this->searchResultsAction();
}
$out = new Application_View();
$out->page = 'request/search';
$out->addCssFile('/ooss/request/edit_wrapper');
$out->tagline = 'Course Search';
echo $out->render('unlModernWrapper.xhtml');
}
public function searchResultsAction()
{
$in = $this->_getAllParams();
$subject = Zend_Filter_Alpha::filter($in[0]);
$courseNumber = Zend_Filter_Digits::filter($in[1]);
$courseLetter = Zend_Filter_Alpha::filter($in[2]);
$subject = strtoupper($subject);
$courseNumber = strtoupper($courseNumber);
$courseLetter = strtoupper($courseLetter);
$course = CourseCrosslistings::fetchBySubjectNumberLetter(
$subject, $courseNumber, $courseLetter
);
$requestedCourse = CourseCrosslistings::fetchBySubjectNumberLetter(
$subject, $courseNumber, $courseLetter, false
);
$out = new Application_View();
$out->subject = $subject;
$out->courseNumber = $courseNumber;
$out->courseLetter = $courseLetter;
if(!$course) {
// course not found
$out->page = 'request/create_new_course_ask';
Nmc_Registry_Session::getInstance()->erase('course');
} else {
// course found
Nmc_Registry_Session::getInstance()->erase('course');
$out->page = 'request/course_found';
$parentCourse = $course->getParentCourse();
$course = clone $parentCourse;
if ($course->subject != $subject ||
$course->courseNumber != $courseNumber ||
$course->courseLetter != $courseLetter)
{
$out->crosslisting = true;
$out->homeSubject = $course->subject;
$out->homeCourseLetter = $course->courseLetter;
$out->homeCourseNumber = $course->courseNumber;
} else {
$out->crosslisting = false;
}
Nmc_Registry_Session::getInstance()->course = $course;
}
if ($requestedCourse) {
$out->currentPendingRequest = true;
} else {
$out->currentPendingRequest = false;
}
$out->tagline = 'Course Search Results';
echo $out->render('unlModernWrapper.xhtml');
}
public function createAction()
{
$in = $this->_getAllParams();
$type = Zend_Filter_Alnum::filter($in[0]);
$subject = Zend_Filter_Alpha::filter($in[1]);
$courseNumber = Zend_Filter_Digits::filter($in[2]);
$courseLetter = Zend_Filter_Alpha::filter($in[3]);
$request = Requests::getInstance()->fetchNew();
$request->owner = Nmc_User::getInstance()->getUser();
$request->type = RequestTypes::getInstance()->stringToType($type);
$course = Nmc_Registry_Session::getInstance()->course;
if(!$course) {
$course = CourseGenerations::getInstance()->fetchNew();
$course->subject = $subject;
$course->courseNumber = $courseNumber;
$course->courseLetter = $courseLetter;
}
$course->request = $request;
$course->type = 'proposed';
//print_r($course);
Nmc_Registry_Session::getInstance()->request = $request;
Nmc_Registry_Session::getInstance()->course = $course;
$out = new Application_View();
if ($request->type->name == 'RemoveCourse') {
$out->location = '/Request/SupportiveMaterial';
} else {
$out->location = '/Request/CourseID';
}
echo $out->render('unlModernWrapper.xhtml');
}
public function loadAction()
{
$in = $this->getRequest();
$requestId = $in->getParam(0);
$user = Nmc_User::getInstance()->getUser();
Nmc_Registry_Session::getInstance()->savedRequestIndex = -1;
if (strtolower($requestId) == 'saved') {
$requestId = $in->getParam(1);
$requestId = Zend_Filter_Int::filter($requestId);
Nmc_Registry_Session::getInstance()->savedRequestIndex = $requestId;
$savedCourses = Registry::getInstance()->getValue($user->getId(), 'savedCourses');
$savedCourses = unserialize($savedCourses);
$course = $savedCourses[$requestId];
$savedRequests = Registry::getInstance()->getValue($user->getId(), 'savedRequests');
$savedRequests = unserialize($savedRequests);
$request = $savedRequests[$requestId];
$course->request = $request;
} else {
$requestId = Zend_Filter_Int::filter($requestId);
$request = Requests::getInstance()->findOne($requestId);
$course = $request->getCourseGeneration();
$course = clone $course;
}
Nmc_Registry_Session::getInstance()->course = $course;
Nmc_Registry_Session::getInstance()->request = $request;
$out = new Application_View();
$out->location = '/Request/Edit';
$out->render('unlModernWrapper.xhtml');
}
public function deleteSavedAction()
{
$in = $this->getRequest();
$savedRequestIndex = $in->getParam(0);
$savedRequestIndex = Zend_Filter_Int::filter($savedRequestIndex);
$user = Nmc_User::getInstance()->getUser();
if (is_int($savedRequestIndex) && $savedRequestIndex >= 0) {
$savedCourses = Registry::getInstance()->getValue($user->getId(), 'savedCourses');
$savedCourses = unserialize($savedCourses);
unset($savedCourses[$savedRequestIndex]);
$savedRequests = Registry::getInstance()->getValue($user->getId(), 'savedRequests');
$savedRequests = unserialize($savedRequests);
unset($savedRequests[$savedRequestIndex]);
$savedCourses = serialize($savedCourses);
Registry::getInstance()->setValue($user->getId(), 'savedCourses', $savedCourses);
$savedRequests = serialize($savedRequests);
Registry::getInstance()->setValue($user->getId(), 'savedRequests', $savedRequests);
}
$view = new Application_View();
$view->location = '/Home';
$out = $this->getResponse();
$out->setBody($view->render('unlModernWrapper.xhtml'));
}
public function getFileAction()
{
$in = $this->getRequest();
$fileId = $in->getParam(0);
$file = Files::getInstance()->findOne($fileId);
if ($file) {
header('Content-type: ' . $file->mimeType);
header('Content-disposition: attachment; filename=' . $file->title);
echo $file->data;
}
}
public function viewAction()
{
$in = $this->getRequest();
$requestId = $in->getParam(0);
$request = Requests::getInstance()->findOne($requestId);
$proposedGeneration = $request->getCourseGeneration();
$currentGeneration = $proposedGeneration;
while ($currentGeneration && $currentGeneration->type != 'official') {
$currentGeneration = $currentGeneration->getParentGeneration();
}
if ($request->type->name != 'ChangeCourse') {
$currentGeneration = null;
}
$comments = RequestComments::getInstance()->fetchWithRequest($request);
$user = Nmc_User::getInstance()->getUser();
$time = new Zend_Date();
RequestViewTimes::getInstance()->setViewTimeForUserAndRequest($user, $request, $time);
$requestOrder = Nmc_Registry_Session::getInstance('requests')->order;
$currentRequestIndex = array_search($request->getPrimaryKey(), $requestOrder);
if ($currentRequestIndex !== false) {
$nextRequestId = $requestOrder[$currentRequestIndex+1];
$prevRequestId = $requestOrder[$currentRequestIndex-1];
if ($currentRequestIndex == 0) {
$prevRequestId = -1;
} else if ($currentRequestIndex == count($requestOrder)) {
$nextRequestId = -1;
}
} else {
$nextRequestId = -1;
$prevRequestId = -1;
}
$roles = array();
if ($request->getCurrentAction()) {
$roles = ApprovalBodyRoleQueues::getInstance()->fetchByRequestAndAction(
$request, $request->getCurrentAction()
);
}
$canEdit = false;
foreach ($roles as $role) {
if ($role->canEdit == 'yes') {
$canEdit = true;
break;
}
}
$view = new Application_View();
$view->selectedCommentTab = Nmc_Registry_Session::getInstance('comments')->selectedTab;
$view->page = 'request/view';
$view->request = $request;
$view->currentGeneration = $currentGeneration;
$view->proposedGeneration = $proposedGeneration;
$view->comments = $comments;
$view->nextRequestId = $nextRequestId;
$view->prevRequestId = $prevRequestId;
$view->tagline = 'View Request';
$view->addHelperPath(APPLICATION_PATH . '/library/View/Helper', 'Application_View_Helper');
$view->canEdit = $canEdit;
$out = $this->getResponse();
$out->setBody($view->render('unlModernWrapper.xhtml'));
}
public function setCommentTabAction()
{
$in = $this->getRequest();
$tab = $in->getParam(0);
Nmc_Registry_Session::getInstance('comments')->selectedTab = $tab;
}
public function addCommentAction()
{
$in = $this->getRequest();
$requestId = $in->getParam(0);
$request = Requests::getInstance()->findOne($requestId);
if ($request) {
$comment = RequestComments::getInstance()->fetchNew();
$comment->comment = $in->getPost('comment');
$comment->visibility = $in->getPost('visibility');
$comment->user = Nmc_User::getInstance()->getUser();
$comment->request = $request;
$comment->save();
}
$view = new Application_View();
$view->location = '/Request/View/' . $requestId;
$view->tagline = 'Processing...';
$out = $this->getResponse();
$out->setBody($view->render('unlModernWrapper.xhtml'));
}
public function updateAction() {
$errors = array();
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
$submit = Zend_Filter_Alpha::filter($_POST['submitType']);
if(is_array($_POST['request'])) {
foreach($_POST['request'] as $key => $val) {
if(!is_array($val) && $val != '') {
//echo '$request->' . $key . ' = ' . $val . "<br />\n";
$request->$key = $val;
}
} }
$filesToRemove = null;
if(array_key_exists('removeFiles', $_POST)) {
$filesToRemove = $_POST['removeFiles'];
unset($_POST['removeFiles']);
}
unset($_POST['request']);
unset($_POST['submitType']);
unset($_POST['p_subject']);
unset($_POST['p_course_number']);
/*
foreach($_POST as $key => $val) {
if(!is_array($val) && $key != 'courseId' && $val != '') {
//echo '$course->' . $key . ' = ' . $val . "<br />\n";
$course->$key = $val;
}
}
foreach($_POST as $key => $val) {
if($key == 'credits') {
foreach($course->credits as $key => $credit) {
unset($course->credits[$key]);
}
foreach($val as $type => $hours) {
if($type == 1) {
foreach(explode(' ', $hours) as $singeValue) {
if(Zend_Filter_Digits::filter($hours) != '') {
$newAttribute = CourseCredits::getInstance()->fetchNew();
$newAttribute->type = $type;
$newAttribute->hours = $singeValue;
$course->credits[] = $newAttribute;
}
}
continue;
}
if(Zend_Filter_Digits::filter($hours) != '') {
$newAttribute = CourseCredits::getInstance()->fetchNew();
$newAttribute->type = $type;
$newAttribute->hours = $hours;
$course->credits[] = $newAttribute;
}
}
} else if(in_array($key, array('termsOffered','deliveryMethods','campuses'))) {
$course->$key = $val;
} else if($key == 'gradTieIn') {
if(!$course->gradTieIn instanceof CourseGradTieIn) {
$course->gradTieIn = CourseGradTieIns::getInstance()->fetchNew();
}
foreach($val as $key2 => $val2) {
$course->gradTieIn->$key2 = $val2;
}
} else if(is_array($val)) {
$array = $course->$key;
foreach($val as $key2 => $val2) {
//either create or grab the current attribute
if($key2 < 0) {
$attributeTable = call_user_func(array('Course' . $key, 'getInstance'));
$currentAttribute = $attributeTable->fetchNew();
$array[] = $currentAttribute;
} else {
$currentAttribute = $array[$key2];
}
//delete it if marked for deletion, otherwise unset the delete field
if($val2['delete'] == 'yes') {
unset($array[$key2]);
continue;
} else {
unset($val2['delete']);
}
//loop over each attribute and set
foreach($val2 as $key3 => $val3) {
if($val3 == '') {
$val3 = null;
}
//echo '$course->' . $key . '[' . $key2 . ']->' . $key3 . ' = ' . $val3 . "<br />\n";
$currentAttribute->$key3 = $val3;
}
//save changes
}
}
}
*/
foreach($_POST as $key => $val) {
if(!is_array($val) && $key != 'courseId' /*&& $val != ''*/) {
//echo '$course->' . $key . ' = ' . $val . "<br />\n";
$course->$key = $val;
}
}
foreach($_POST as $key => $val) {
if($key == 'credits') {
$credits = $course->credits;
foreach($credits as $key => $credit) {
unset($credits[$key]);
}
foreach($val as $type => $hours) {
if($type == 1) {
foreach(explode(' ', $hours) as $singeValue) {
if(Zend_Filter_Digits::filter($hours) != '') {
$newAttribute = CourseCredits::getInstance()->fetchNew();
$newAttribute->type = $type;
$newAttribute->hours = $singeValue;
$credits[] = $newAttribute;
}
}
continue;
}
if(Zend_Filter_Digits::filter($hours) != '') {
$newAttribute = CourseCredits::getInstance()->fetchNew();
$newAttribute->type = $type;
$newAttribute->hours = $hours;
$credits[] = $newAttribute;
}
}
} else if(in_array($key, array('termsOffered','deliveryMethods','campuses'))) {
$course->$key = $val;
//echo '$course->' . $key . ' = '; print_r($val); echo "<br />\n";
} else if($key == 'gradTieIn') {
if(!$course->gradTieIn instanceof CourseGradTieIn) {
$course->gradTieIn = CourseGradTieIns::getInstance()->fetchNew();
}
foreach($val as $key2 => $val2) {
$course->gradTieIn->$key2 = $val2;
}
} else if(is_array($val)) {
$array = $course->$key;
foreach($array as $key2 => $row) {
unset($array[$key2]);
}
foreach($val as $key2 => $val2) {
if($val2['delete'] == 'yes') {
continue;
}
$attributeTable = call_user_func(array('Course' . $key, 'getInstance'));
$currentAttribute = $attributeTable->fetchNew();
unset($val2['delete']);
//loop over each attribute and set
foreach($val2 as $key3 => $val3) {
if($val3 == '') {
$val3 = null;
}
//echo '$currentAttribute->' . $key3 . ' = ' . $val3 . "<br />\n";
$currentAttribute->$key3 = $val3;
}
$array[] = $currentAttribute;
//save changes
}
//print_r($array);
}
}
if(is_array($_FILES['request'])) {
$newRequestFiles = array();
foreach($_FILES['request'] as $fieldName => $values) {
foreach($values as $key => $value) {
$newRequestFiles[$key][$fieldName] = $value;
}
}
foreach($newRequestFiles as $key => $file) {
if($file['error'] != 0) {
unset($newRequestFiles[$key]);
$errors[] = 'request[' . $key . ']';
}
}
$fileTypes = array(RequestFile::CROSSLIST_MEMO_TYPE,
RequestFile::IS_NARRATIVE_TYPE,
RequestFile::SYLLABUS_TYPE,
RequestFile::OTHER_TYPE);
foreach($fileTypes as $fileType) {
if(is_array($newRequestFiles[$fileType])) {
$inFile = $newRequestFiles[$fileType];
$file = RequestFiles::getInstance()->fetchNew();
$file->title = $inFile['name'];
$file->data = file_get_contents($inFile['tmp_name']);
$file->mimeType = $inFile['type'];
$request->setFileByType($fileType, $file);
}
}
}
if (is_array($filesToRemove)) {
foreach ($filesToRemove as $fileType => $doRemove) {
if ($doRemove == 'yes') {
$request->removeFileByType($fileType);
}
}
}
switch ($submit) {
case 'Submit':
case 'SaveChanges':
return $this->_submitRequestAction();
break;
case 'SaveforLaterSubmission':
return $this->_saveUnfinishedRequest();
break;
case 'Cancel':
case 'CancelRequest':
case 'AbandonChanges':
return $this->_cancelRequest();
break;
default:
break;
}
$out = new Application_View();
$requestFormOrder = array('CourseID',
'CreditHours',
'TimeLocation',
'NotesDescription',
'GraduateTieIn',
'SupportiveMaterial',
'Preview');
$currentForm = $_SERVER['HTTP_REFERER'];
$currentForm = explode('/', $currentForm);
while($currentForm[count($currentForm) - 1] == '') {
array_pop($currentForm);
}
$currentForm = array_pop($currentForm);
$currentFormIndex = array_search(strtolower($currentForm),
array_map("strtolower", $requestFormOrder));
if ($submit == 'ReturntoEdit') {
$nextForm = 'Edit';
} else if($currentFormIndex === false) {
// if the current form page is something unexpected
$nextForm = 'Preview';
} else if($currentFormIndex < count($requestFormOrder) - 1) {
$nextForm = $requestFormOrder[$currentFormIndex + 1];
} else {
$nextForm = $requestFormOrder[$currentFormIndex];
}
if($currentFormIndex > 0) {
$prevForm = $requestFormOrder[$currentFormIndex - 1];
} else {
$prevForm = $requestFormOrder[$currentFormIndex];
}
if (in_array($submit, $requestFormOrder)) {
$targetForm = $submit;
} else if($submit == 'Prev') {
$targetForm = $prevForm;
} else {
$targetForm = $nextForm;
}
$out->location = '/Request/' . $targetForm . '/';
echo $out->render('unlModernWrapper.xhtml');
}
public function saveAction() {
try {
$course = clone Nmc_Registry_Session::getInstance()->course;
$course->save();
} catch(Exception $e) {
print_r($e);
throw $e;
}
}
public function courseIdAction()
{
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
$view = new Application_View();
$view->addSidebarModule('requestProgress');
$view->addSidebarModule('bulletinPreview');
$view->page = 'request/edit_wrapper';
$view->requestPage = 'course_id';
$view->addCssFile('/ooss/request/course_id');
$view->addJsFile('/tinymce/jscripts/tiny_mce/tiny_mce.js');
$view->addJsFile('/javascript/mce.js');
$view->addJsFile('/javascript/request/courseId.js');
$view->course = $course;
$view->request = $request;
$view->tagline = 'Edit Request';
$out = $this->getResponse();
$out->setHeader('Content-type', 'application/xhtml+xml; charset=UTF-8');
$out->setBody($view->render('unlModernWrapper.xhtml'));
}
public function creditHoursAction()
{
$out = new Application_View();
$out->addSidebarModule('requestProgress');
$out->addSidebarModule('bulletinPreview');
$out->page = 'request/edit_wrapper';
$out->requestPage = 'credit_hours';
$out->addCssFile('/ooss/request/credit_hours');
$out->addJsFile('/tinymce/jscripts/tiny_mce/tiny_mce.js');
$out->addJsFile('/javascript/mce.js');
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
$out->course = $course;
$out->request = $request;
$out->tagline = 'Edit Request';
$creditsSingleValues = array();
foreach($course->credits as $credit) {
if($credit->type == 1) {
$creditsSingleValues[] = $credit->hours;
} else if($credit->type == 2) {
$out->creditsRangeMin = $credit->hours;
} else if($credit->type == 3) {
$out->creditsRangeMax = $credit->hours;
} else if($credit->type == 4) {
$out->creditsMaxPerSemester = $credit->hours;
} else if($credit->type == 5) {
$out->creditsMaxPerDegree = $credit->hours;
}
}
$out->creditsSingleValues = implode(' ', $creditsSingleValues);
echo $out->render('unlModernWrapper.xhtml');
}
public function timeLocationAction()
{
$out = new Application_View();
$out->addSidebarModule('requestProgress');
$out->addSidebarModule('bulletinPreview');
$out->page = 'request/edit_wrapper';
$out->requestPage = 'time_location';
$out->addCssFile('/ooss/request/time_location');
$out->addJsFile('/javascript/request/time_location.js');
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
$out->course = $course;
$out->request = $request;
$out->tagline = 'Edit Request';
echo $out->render('unlModernWrapper.xhtml');
}
public function notesDescriptionAction()
{
$out = new Application_View();
$out->addSidebarModule('requestProgress');
$out->addSidebarModule('bulletinPreview');
$out->page = 'request/edit_wrapper';
$out->requestPage = 'notes_description';
$out->addCssFile('/ooss/request/nodes_description');
$out->addJsFile('/tinymce/jscripts/tiny_mce/tiny_mce.js');
$out->addJsFile('/javascript/mce.js');
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
$out->course = $course;
$out->request = $request;
$out->tagline = 'Edit Request';
echo $out->render('unlModernWrapper.xhtml');
}
public function graduateTieInAction()
{
$out = new Application_View();
$out->addSidebarModule('requestProgress');
$out->addSidebarModule('bulletinPreview');
$out->page = 'request/edit_wrapper';
$out->requestPage = 'graduate_tie_in';
$out->addCssFile('/ooss/request/graduate_tie_in');
$out->addJsFile('/tinymce/jscripts/tiny_mce/tiny_mce.js');
$out->addJsFile('/javascript/mce.js');
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
$hasGradTieIn = false;
foreach($course->crosslistings as $crosslisting) {
if($crosslisting->type == 'grad tie-in') {
$hasGradTieIn = true;
}
}
$out->hasGradTieIn = $hasGradTieIn;
$out->course = $course;
$out->request = $request;
$out->tagline = 'Edit Request';
echo $out->render('unlModernWrapper.xhtml');
}
public function supportiveMaterialAction()
{
$out = new Application_View();
$out->addSidebarModule('requestProgress');
$out->addSidebarModule('bulletinPreview');
$out->page = 'request/edit_wrapper';
$out->requestPage = 'supportive_material';
$out->addCssFile('/ooss/request/supportave_material');
$out->addJsFile('/tinymce/jscripts/tiny_mce/tiny_mce.js');
$out->addJsFile('/javascript/mce.js');
$course = Nmc_Registry_Session::getInstance()->course;
$out->course = $course;
$request = Nmc_Registry_Session::getInstance()->request;
$out->request = $request;
$out->tagline = 'Edit Request';
echo $out->render('unlModernWrapper.xhtml');
}
public function additionalInformationAction()
{
$out = new Application_View();
$out->addSidebarModule('requestProgress');
$out->addSidebarModule('bulletinPreview');
$out->page = 'request/edit_wrapper';
$out->requestPage = 'additional_information';
$out->addCssFile('/ooss/request/additional_information');
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
$out->course = $course;
$out->request = $request;
$out->tagline = 'Edit Request';
echo $out->render('unlModernWrapper.xhtml');
}
public function submitRequestAction()
{
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
$out = new Application_View();
$out->addSidebarModule('requestProgress');
$out->addSidebarModule('bulletinPreview');
$out->course = $course;
$out->request = $request;
$out->terms = $this->_getFutureTerms();
$out->page = 'request/edit_wrapper';
$out->tagline = 'Edit Request';
$out->requestPage = 'submit';
$out->addCssFile('/ooss/request/submit');
echo $out->render('unlModernWrapper.xhtml');
}
public function editAction()
{
$in = $this->getRequest();
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
$view = new Application_View();
$view->addSidebarModule('bulletinPreview');
$view->addCssFile('/ooss/request/fullEdit');
$view->addJsFile('/javascript/request/fullEdit.js');
$view->addJsFile('/tinymce/jscripts/tiny_mce/tiny_mce.js');
$view->addJsFile('/javascript/mce.js');
$view->page = 'request/fullEdit';
$view->course = $course;
$view->request = $request;
$view->tagline = 'Edit Request';
$creditsSingleValues = array();
foreach($course->credits as $credit) {
if($credit->type == 1) {
$creditsSingleValues[] = $credit->hours;
} else if($credit->type == 2) {
$view->creditsRangeMin = $credit->hours;
} else if($credit->type == 3) {
$view->creditsRangeMax = $credit->hours;
} else if($credit->type == 4) {
$view->creditsMaxPerSemester = $credit->hours;
} else if($credit->type == 5) {
$view->creditsMaxPerDegree = $credit->hours;
}
}
$view->creditsSingleValues = implode(' ', $creditsSingleValues);
$out = $this->getResponse();
$out->setBody($view->render('unlModernWrapper.xhtml'));
}
public function previewAction()
{
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
$proposedGeneration = $course;
$currentGeneration = $proposedGeneration;
while ($currentGeneration && $currentGeneration->type != 'official') {
$currentGeneration = $currentGeneration->getParentGeneration();
}
if ($request->type->name != 'ChangeCourse') {
$currentGeneration = null;
}
$out = new Application_View();
//$out->addSidebarModule('requestProgress');
$out->addSidebarModule('bulletinPreview');
$out->course = $course;
$out->request = $request;
$out->currentGeneration = $currentGeneration;
$out->proposedGeneration = $proposedGeneration;
$out->terms = $this->_getFutureTerms();
$out->page = 'request/view';
$out->tagline = 'Preview Request';
$out->addCssFile('/ooss/request/submit');
$out->preview = true;
if ($request instanceof Request && $request->getPrimaryKey() > 0) {
$out->initialRequest = false;
} else {
$out->initialRequest = true;
}
echo $out->render('unlModernWrapper.xhtml');
}
protected function _submitRequestAction()
{
try {
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
$user = Nmc_User::getInstance()->getUser();
if (!$request->getPrimaryKey()) {
$newRequest = true;
} else {
$newRequest = false;
}
$course->save();
$request->save();
$request->consider();
Nmc_Registry_Session::getInstance()->erase('course');
Nmc_Registry_Session::getInstance()->erase('request');
$savedRequestIndex = Nmc_Registry_Session::getInstance()->savedRequestIndex;
if (is_int($savedRequestIndex) && $savedRequestIndex >= 0) {
$savedCourses = Registry::getInstance()->getValue($user->getId(), 'savedCourses');
$savedCourses = unserialize($savedCourses);
unset($savedCourses[$savedRequestIndex]);
$savedRequests = Registry::getInstance()->getValue($user->getId(), 'savedRequests');
$savedRequests = unserialize($savedRequests);
unset($savedRequests[$savedRequestIndex]);
$savedCourses = serialize($savedCourses);
Registry::getInstance()->setValue($user->getId(), 'savedCourses', $savedCourses);
$savedRequests = serialize($savedRequests);
Registry::getInstance()->setValue($user->getId(), 'savedRequests', $savedRequests);
}
$out = new Application_View();
if ($newRequest) {
$out->location = '/Home';
} else {
$out->location = '/Request/View/' . $request->getPrimaryKey();
}
echo $out->render('unlModernWrapper.xhtml');
} catch(Exception $e) {
throw $e;
}
}
protected function _cancelRequest()
{
Nmc_Registry_Session::getInstance()->erase('course');
Nmc_Registry_Session::getInstance()->erase('request');
$view = new Application_View();
$view->location = '/home';
echo $view->render('unlModernWrapper.xhtml');
}
protected function _saveUnfinishedRequest()
{
$user = Nmc_User::getInstance()->getUser();
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
$savedCourses = Registry::getInstance()->getValue($user->getId(), 'savedCourses');
$savedCourses = unserialize($savedCourses);
$savedRequests = Registry::getInstance()->getValue($user->getId(), 'savedRequests');
$savedRequests = unserialize($savedRequests);
if (!is_array($savedCourses)) {
$savedCourses = array();
}
if (!is_array($savedRequests)) {
$savedRequests = array();
}
$savedRequestIndex = Nmc_Registry_Session::getInstance()->savedRequestIndex;
if (is_int($savedRequestIndex) && $savedRequestIndex >= 0) {
$savedCourses[$savedRequestIndex] = $course;
$savedRequests[$savedRequestIndex] = $request;
} else {
$savedCourses[] = $course;
$savedRequests[] = $request;
}
$savedCourses = serialize($savedCourses);
Registry::getInstance()->setValue($user->getId(), 'savedCourses', $savedCourses);
$savedRequests = serialize($savedRequests);
Registry::getInstance()->setValue($user->getId(), 'savedRequests', $savedRequests);
Nmc_Registry_Session::getInstance()->erase('course');
Nmc_Registry_Session::getInstance()->erase('request');
$view = new Application_View();
$view->location = '/home';
echo $view->render('unlModernWrapper.xhtml');
}
protected function _getFutureTerms()
{
$now = new Zend_Date();
$month = $now->get(Zend_Date::MONTH);
$thisYear = $now->get(Zend_Date::YEAR);
$nextYear = $thisYear + 1;
$terms = array();
if ($month < 3) {
$terms[$thisYear . '3'] = 'Summer ' . $thisYear;
}
if ($month < 8) {
$terms[$nextYear . '1'] = 'Fall ' . $thisYear;
}
for ($year = $nextYear; $year < $thisYear + 5; $year++) {
$terms[$year . '2'] = 'Spring ' . $year;
$terms[$year . '3'] = 'Summer ' . $year;
$terms[($year + 1) . '1'] = 'Fall ' . ($year + 1);
}
return $terms;
}
}