Select Git revision
PgsqlTest.php
NewrequestController.php 17.92 KiB
<?php
class NewRequestController extends Nmc_Controller_Action
{
public function __construct()
{
parent::__construct();
$this->_registerPlugin(new Nmc_Controller_Action_Plugin_Authorize());
}
public function __destruct()
{
}
public function indexAction()
{
return $this->SearchAction();
}
public function searchAction()
{
$in = $this->_action->getParams();
if($in[0] != '' && $in[1] != '') {
return $this->searchResultsAction();
}
$out = new Nmc_View();
$out->page = 'request/search';
$out->css_files[] = '/css/request/edit_wrapper.css';
echo $out->render();
}
public function searchResultsAction()
{
$in = $this->_action->getParams();
$subject = Zend_Filter::getAlpha($in[0]);
$courseNumber = Zend_Filter::getDigits($in[1]);
$courseLetter = Zend_Filter::getAlpha($in[2]);
$course = CourseCrosslistings::fetchBySubjectNumberLetter($subject,
$courseNumber,
$courseLetter);
$out = new Nmc_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;
Nmc_Registry_Session::getInstance()->course = $course;
}
echo $out->render();
}
public function createAction()
{
$in = $this->_action->getParams();
$type = Zend_Filter::getAlnum($in[0]);
$subject = Zend_Filter::getAlpha($in[1]);
$courseNumber = Zend_Filter::getDigits($in[2]);
$courseLetter = Zend_Filter::getAlpha($in[3]);
$request = Requests::getInstance()->fetchNew();
$request->owner = Nmc_User::getInstance()->getUser()->getId();
$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 Nmc_View();
$out->location = '/newrequest/CourseID';
echo $out->render();
}
public function loadAction()
{
$in = $this->_action->getParams();
$requestId = Zend_Filter::getInt($in[0]);
$request = Requests::getInstance()->find($requestId);
$course = $request->getCourseGeneration();
Nmc_Registry_Session::getInstance()->course = $course;
Nmc_Registry_Session::getInstance()->request = $request;
$out = new Nmc_View();
$out->location = '/NewRequest/CourseID';
$out->render();
}
public function updateAction() {
$errors = array();
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
$submit = Zend_Filter::getAlpha($_POST['submit']);
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;
}
} }
unset($_POST['request']);
unset($_POST['submit']);
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::getDigits($hours) != '') {
$newAttribute = CourseCredits::getInstance()->fetchNew();
$newAttribute->type = $type;
$newAttribute->hours = $singeValue;
$course->credits[] = $newAttribute;
}
}
continue;
}
if(Zend_Filter::getDigits($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::getDigits($hours) != '') {
$newAttribute = CourseCredits::getInstance()->fetchNew();
$newAttribute->type = $type;
$newAttribute->hours = $singeValue;
$credits[] = $newAttribute;
}
}
continue;
}
if(Zend_Filter::getDigits($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);
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($submit == 'Submit') {
return $this->_submitRequestAction();
}
$out = new Nmc_View();
$requestFormOrder = array('CourseID',
'CreditHours',
'TimeLocation',
'GraduateTieIn',
'SupportiveMaterial',
//'AdditionalInformation',
'SubmitRequest');
$currentForm = $_SERVER['HTTP_REFERER'];
$currentForm = explode('/', $currentForm);
while($currentForm[count($currentForm) - 1] == '') {
array_pop($currentForm);
}
$currentForm = array_pop($currentForm);
$currentForm = array_search(strtolower($currentForm),
array_map("strtolower", $requestFormOrder));
if($currentForm < count($requestFormOrder) - 1) {
$nextForm = $requestFormOrder[$currentForm + 1];
} else {
$nextForm = $requestFormOrder[$currentForm];
}
if($currentForm > 0) {
$prevForm = $requestFormOrder[$currentForm - 1];
} else {
$prevForm = $requestFormOrder[$currentForm];
}
if($submit == 'Prev') {
$targetForm = $prevForm;
} else {
$targetForm = $nextForm;
}
$out->assign('refresh', '/NewRequest/' . $targetForm . '/');
if(true || $_SERVER['REMOTE_ADDR'] != '129.93.39.17') {
echo $out->render();
} else {
//print_r($course);
}
}
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;
$out = new Nmc_View();
$out->page = 'request/edit_wrapper';
$out->requestPage = 'course_id';
$out->css_files[] = '/css/request/course_id.css';
$out->js_files[] = '/tinymce/jscripts/tiny_mce/tiny_mce.js';
$out->js_files[] = '/javascript/mce.js';
$out->course = $course;
echo $out->render();
}
public function creditHoursAction()
{
$out = new Nmc_View();
$out->page = 'request/edit_wrapper';
$out->requestPage = 'credit_hours';
$out->css_files[] = '/css/request/credit_hours.css';
$course = Nmc_Registry_Session::getInstance()->course;
$out->course = $course;
$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();
}
public function timeLocationAction()
{
$out = new Nmc_View();
$out->page = 'request/edit_wrapper';
$out->requestPage = 'time_location';
$out->css_files[] = '/css/request/time_location.css';
$course = Nmc_Registry_Session::getInstance()->course;
$out->course = $course;
echo $out->render();
}
public function graduateTieInAction()
{
$out = new Nmc_View();
$out->page = 'request/edit_wrapper';
$out->requestPage = 'graduate_tie_in';
$out->css_files[] = '/css/request/graduate_tie_in.css';
$out->js_files[] = '/tinymce/jscripts/tiny_mce/tiny_mce.js';
$out->js_files[] = '/javascript/mce.js';
$course = Nmc_Registry_Session::getInstance()->course;
$hasGradTieIn = false;
foreach($course->crosslistings as $crosslisting) {
if($crosslisting->type == 'grad tie-in') {
$hasGradTieIn = true;
}
}
$out->hasGradTieIn = $hasGradTieIn;
$out->course = $course;
echo $out->render();
}
public function supportiveMaterialAction()
{
$out = new Nmc_View();
$out->page = 'request/edit_wrapper';
$out->requestPage = 'supportive_material';
$out->css_files[] = '/css/request/supportave_material.css';
$out->js_files[] = '/tinymce/jscripts/tiny_mce/tiny_mce.js';
$out->js_files[] = '/javascript/mce.js';
$course = Nmc_Registry_Session::getInstance()->course;
$out->course = $course;
$request = Nmc_Registry_Session::getInstance()->request;
$out->request = $request;
echo $out->render();
}
public function additionalInformationAction()
{
$out = new Nmc_View();
$out->page = 'request/edit_wrapper';
$out->requestPage = 'additional_information';
$out->css_files[] = '/css/request/additional_information.css';
$course = Nmc_Registry_Session::getInstance()->course;
$out->course = $course;
echo $out->render();
}
public function submitRequestAction()
{
$course = Nmc_Registry_Session::getInstance()->course;
$request = Nmc_Registry_Session::getInstance()->request;
$out = new Nmc_View();
$out->course = $course;
$out->request = $request;
$out->page = 'request/edit_wrapper';
$out->requestPage = 'submit';
$out->css_files[] = '/css/request/submit.css';
echo $out->render();
}
protected function _submitRequestAction()
{
try {
$course = Nmc_Registry_Session::getInstance()->course;
$course->save();
Nmc_Registry_Session::getInstance()->erase('course');
Nmc_Registry_Session::getInstance()->erase('request');
$out = new Nmc_View();
$out->refresh = '/home';
echo $out->render();
} catch(Exception $e) {
throw $e;
}
}
}
?>