public function execute() { // Get data from request $internshipId = $_REQUEST['internshipId']; $name = $_REQUEST['emergency_contact_name']; $relation = $_REQUEST['emergency_contact_relation']; $phone = $_REQUEST['emergency_contact_phone']; // Sanity checking if (is_null($internshipId) || !isset($internshipId)) { throw new InvalidArgumentException('Missing internship ID.'); } if (is_null($name) || !isset($name)) { throw new InvalidArgumentException('Missing contact name.'); } if (is_null($relation) || !isset($relation)) { throw new InvalidArgumentException('Missing contact relationship.'); } if (is_null($phone) || !isset($phone)) { throw new InvalidArgumentException('Missing contact phone number.'); } PHPWS_Core::initModClass('intern', 'EmergencyContact.php'); PHPWS_Core::initModClass('intern', 'InternshipFactory.php'); // Get an Internship object based on the ID $internship = InternshipFactory::getInternshipById($internshipId); // Create the emergency contact $contact = new EmergencyContact($internship, $name, $relation, $phone); // Save the emergency contact object PHPWS_Core::initModClass('intern', 'DatabaseStorage.php'); DatabaseStorage::save($contact); echo json_encode($contact); // Exit, since this is called by JSON //TODO exit; }
public function execute() { PHPWS_Core::initModClass('intern', 'Internship.php'); PHPWS_Core::initModClass('intern', 'Agency.php'); PHPWS_Core::initModClass('intern', 'Department.php'); PHPWS_Core::initModClass('intern', 'Faculty.php'); /************** * Sanity Checks */ // Required fields check $missing = self::checkRequest(); if (!is_null($missing) && !empty($missing)) { // checkRequest returned some missing fields. $url = 'index.php?module=intern&action=edit_internship'; $url .= '&missing=' . implode('+', $missing); // Restore the values in the fields the user already entered foreach ($_POST as $key => $val) { $url .= "&{$key}={$val}"; } NQ::simple('intern', INTERN_ERROR, 'Please fill in the highlighted fields.'); NQ::close(); return PHPWS_Core::reroute($url); } // Sanity check the Banner ID if (!preg_match('/^\\d{9}$/', $_REQUEST['banner'])) { $url = 'index.php?module=intern&action=edit_internship&missing=banner'; // Restore the values in the fields the user already entered foreach ($_POST as $key => $val) { $url .= "&{$key}={$val}"; } NQ::simple('intern', INTERN_ERROR, "The Banner ID you entered is not valid. No changes were saved. The student's Banner ID should be nine digits only (no letters, spaces, or punctuation)."); NQ::close(); return PHPWS_Core::reroute($url); } // Sanity check student email if (isset($_REQUEST['student_email']) && preg_match("/@/", $_REQUEST['student_email'])) { $url = 'index.php?module=intern&action=edit_internship&missing=student_email'; // Restore the values in the fields the user already entered foreach ($_POST as $key => $val) { $url .= "&{$key}={$val}"; } NQ::simple('intern', INTERN_ERROR, "The student's email address is invalid. No changes were saved. Enter only the username portion of the student's email address. The '@appstate.edu' portion is not necessary."); NQ::close(); return PHPWS_Core::reroute($url); } // Sanity check student zip if (isset($_REQUEST['student_zip']) && $_REQUEST['student_zip'] != "" && (strlen($_REQUEST['student_zip']) != 5 || !is_numeric($_REQUEST['student_zip']))) { $url = 'index.php?module=intern&action=edit_internship&missing=student_zip'; // Restore the values in the fields the user already entered foreach ($_POST as $key => $val) { $url .= "&{$key}={$val}"; } NQ::simple('intern', INTERN_ERROR, "The student's zip code is invalid. No changes were saved. Zip codes should be 5 digits only (no letters, spaces, or punctuation)."); NQ::close(); return PHPWS_Core::reroute($url); } // Course start date must be before end date if (!empty($_REQUEST['start_date']) && !empty($_REQUEST['end_date'])) { $start = strtotime($_REQUEST['start_date']); $end = strtotime($_REQUEST['end_date']); if ($start > $end) { $url = 'index.php?module=intern&action=edit_internship&missing=start_date+end_date'; // Restore the values in the fields the user already entered unset($_POST['start_date']); unset($_POST['end_date']); foreach ($_POST as $key => $val) { $url .= "&{$key}={$val}"; } NQ::simple('intern', INTERN_WARNING, 'The internship start date must be before the end date.'); NQ::close(); return PHPWS_Core::reroute($url); } } // Sanity check internship location zip if (isset($_REQUEST['loc_zip']) && $_REQUEST['loc_zip'] != "" && (strlen($_REQUEST['loc_zip']) != 5 || !is_numeric($_REQUEST['loc_zip']))) { $url = 'index.php?module=intern&action=edit_internship&missing=loc_zip'; // Restore the values in the fields the user already entered foreach ($_POST as $key => $val) { $url .= "&{$key}={$val}"; } NQ::simple('intern', INTERN_ERROR, "The internship location's zip code is invalid. No changes were saved. Zip codes should be 5 digits only (no letters, spaces, or punctuation)."); NQ::close(); return PHPWS_Core::reroute($url); } // Sanity check agency zip if (isset($_REQUEST['agency_zip']) && $_REQUEST['agency_zip'] != "" && (strlen($_REQUEST['agency_zip']) != 5 || !is_numeric($_REQUEST['agency_zip']))) { $url = 'index.php?module=intern&action=edit_internship&missing=agency_zip'; // Restore the values in the fields the user already entered foreach ($_POST as $key => $val) { $url .= "&{$key}={$val}"; } NQ::simple('intern', INTERN_ERROR, "The agency's zip code is invalid. No changes were saved. Zip codes should be 5 digits only (no letters, spaces, or punctuation)."); NQ::close(); return PHPWS_Core::reroute($url); } // Sanity check supervisor's zip if (isset($_REQUEST['agency_sup_zip']) && $_REQUEST['agency_sup_zip'] != "" && (strlen($_REQUEST['agency_sup_zip']) != 5 || !is_numeric($_REQUEST['agency_sup_zip']))) { $url = 'index.php?module=intern&action=edit_internship&missing=agency_sup_zip'; // Restore the values in the fields the user already entered foreach ($_POST as $key => $val) { $url .= "&{$key}={$val}"; } NQ::simple('intern', INTERN_ERROR, "The agency supervisor's zip code is invalid. No changes were saved. Zip codes should be 5 digits only (no letters, spaces, or punctuation)."); NQ::close(); return PHPWS_Core::reroute($url); } // Sanity check course number if (isset($_REQUEST['course_no']) && $_REQUEST['course_no'] != '' && (strlen($_REQUEST['course_no']) > 20 || !is_numeric($_REQUEST['course_no']))) { $url = 'index.php?module=intern&action=edit_internship&missing=course_no'; // Restore the values in the fields the user already entered foreach ($_POST as $key => $val) { $url .= "&{$key}={$val}"; } NQ::simple('intern', INTERN_ERROR, "The course number provided is invalid. No changes were saved. Course numbers should be less than 20 digits (no letters, spaces, or punctuation)."); NQ::close(); return PHPWS_Core::reroute($url); } PHPWS_DB::begin(); // Create/Save agency $agency = new Agency(); if (isset($_REQUEST['agency_id'])) { // User is editing internship try { $agency = new Agency($_REQUEST['agency_id']); } catch (Exception $e) { // Rollback and re-throw the exception so that admins gets an email PHPWS_DB::rollback(); throw $e; } } $agency->name = $_REQUEST['agency_name']; $agency->address = $_REQUEST['agency_address']; $agency->city = $_REQUEST['agency_city']; $agency->zip = $_REQUEST['agency_zip']; $agency->phone = $_REQUEST['agency_phone']; if ($_REQUEST['location'] == 'internat') { /* Location is INTERNATIONAL. Country is required. Province was typed in. */ $agency->state = $_REQUEST['agency_state']; $agency->province = $_REQUEST['agency_province']; $agency->country = $_REQUEST['agency_country']; $agency->supervisor_state = $_REQUEST['agency_sup_state']; $agency->supervisor_province = $_REQUEST['agency_sup_province']; $agency->supervisor_country = $_REQUEST['agency_sup_country']; } else { /* Location is DOMESTIC. Country is U.S. State was chosen from drop down */ $agency->state = $_REQUEST['agency_state'] == -1 ? null : $_REQUEST['agency_state']; $agency->country = 'United States'; $agency->supervisor_state = $_REQUEST['agency_sup_state'] == -1 ? null : $_REQUEST['agency_sup_state']; $agency->supervisor_country = 'United States'; } $agency->supervisor_first_name = $_REQUEST['agency_sup_first_name']; $agency->supervisor_last_name = $_REQUEST['agency_sup_last_name']; $agency->supervisor_title = $_REQUEST['agency_sup_title']; $agency->supervisor_phone = $_REQUEST['agency_sup_phone']; $agency->supervisor_email = $_REQUEST['agency_sup_email']; $agency->supervisor_fax = $_REQUEST['agency_sup_fax']; $agency->supervisor_address = $_REQUEST['agency_sup_address']; $agency->supervisor_city = $_REQUEST['agency_sup_city']; $agency->supervisor_zip = $_REQUEST['agency_sup_zip']; $agency->address_same_flag = isset($_REQUEST['copy_address']) ? 't' : 'f'; try { $agencyId = $agency->save(); } catch (Exception $e) { // Rollback and re-throw the exception so that admins gets an email PHPWS_DB::rollback(); throw $e; } /********************************** * Create and/or save the Internship */ if (isset($_REQUEST['internship_id']) && $_REQUEST['internship_id'] != '') { // User is editing internship try { PHPWS_Core::initModClass('intern', 'InternshipFactory.php'); $i = InternshipFactory::getInternshipById($_REQUEST['internship_id']); } catch (Exception $e) { // Rollback and re-throw the exception so that admins gets an email PHPWS_DB::rollback(); throw $e; } } else { $i = new Internship(); } $i->term = $_REQUEST['term']; $i->agency_id = $agencyId; $i->faculty_id = $_REQUEST['faculty_id'] > 0 ? $_REQUEST['faculty_id'] : null; $i->department_id = $_REQUEST['department']; $i->start_date = !empty($_REQUEST['start_date']) ? strtotime($_REQUEST['start_date']) : 0; $i->end_date = !empty($_REQUEST['end_date']) ? strtotime($_REQUEST['end_date']) : 0; // Credit hours must be an integer (because of database column type), // so round the credit hours to nearest int if (isset($_REQUEST['credits'])) { $i->credits = round($_REQUEST['credits']); } $avg_hours_week = (int) $_REQUEST['avg_hours_week']; $i->avg_hours_week = $avg_hours_week ? $avg_hours_week : null; $i->paid = $_REQUEST['payment'] == 'paid'; $i->stipend = isset($_REQUEST['stipend']) && $i->paid; $i->unpaid = $_REQUEST['payment'] == 'unpaid'; $i->pay_rate = $_REQUEST['pay_rate']; // Internship experience type if (isset($_REQUEST['experience_type'])) { $i->setExperienceType($_REQUEST['experience_type']); } // Set fields depending on domestic/international if ($_REQUEST['location'] == 'domestic') { // Set Flags $i->domestic = 1; $i->international = 0; // Set state if ($_POST['loc_state'] != '-1') { $i->loc_state = strip_tags($_POST['loc_state']); } else { $i->loc_state = null; } // Clear province, country $i->loc_province = ''; $i->loc_country = ''; } else { if ($_REQUEST['location'] == 'internat') { // Set flags $i->domestic = 0; $i->international = 1; // Set province, country $i->loc_province = $_POST['loc_province']; $i->loc_country = strip_tags($_POST['loc_country']); // Clear state $i->loc_state = null; } } // Address, city, zip are always set (no matter domestic or international) $i->loc_address = strip_tags($_POST['loc_address']); $i->loc_city = strip_tags($_POST['loc_city']); $i->loc_zip = strip_tags($_POST['loc_zip']); if (isset($_POST['course_subj']) && $_POST['course_subj'] != '-1') { $i->course_subj = strip_tags($_POST['course_subj']); } else { $i->course_subj = null; } // Course info $i->course_no = strip_tags($_POST['course_no']); $i->course_sect = strip_tags($_POST['course_sect']); $i->course_title = strip_tags($_POST['course_title']); // Multipart course if (isset($_POST['multipart'])) { $i->multi_part = 1; } else { $i->multi_part = 0; } if (isset($_POST['multipart']) && isset($_POST['secondary_part'])) { $i->secondary_part = 1; } else { $i->secondary_part = 0; } // Corequisite Course Info if (isset($_POST['corequisite_course_num'])) { $i->corequisite_number = $_POST['corequisite_course_num']; } if (isset($_POST['corequisite_course_sect'])) { $i->corequisite_section = $_POST['corequisite_course_sect']; } // Student Information $i->first_name = $_REQUEST['student_first_name']; $i->middle_name = $_REQUEST['student_middle_name']; $i->last_name = $_REQUEST['student_last_name']; $i->setFirstNameMetaphone($_REQUEST['student_first_name']); $i->setLastNameMetaphone($_REQUEST['student_last_name']); $i->banner = $_REQUEST['banner']; $i->phone = $_REQUEST['student_phone']; $i->email = $_REQUEST['student_email']; $i->level = $_REQUEST['student_level']; // Check the level and record the major/program for this level. // Be sure to set/clear the other leve's major/program to null // in case the user is switching levels. if ($i->getLevel() == 'ugrad') { $i->ugrad_major = $_REQUEST['ugrad_major']; $i->grad_prog = null; } else { if ($i->getLevel() == 'grad') { $i->grad_prog = $_REQUEST['grad_prog']; $i->ugrad_major = null; } } $i->gpa = $_REQUEST['student_gpa']; $i->campus = $_REQUEST['campus']; $i->student_address = $_REQUEST['student_address']; $i->student_city = $_REQUEST['student_city']; if ($_REQUEST['student_state'] != '-1') { $i->student_state = $_REQUEST['student_state']; } else { $i->student_state = ""; } $i->student_zip = $_REQUEST['student_zip']; /* $i->emergency_contact_name = $_REQUEST['emergency_contact_name']; $i->emergency_contact_relation = $_REQUEST['emergency_contact_relation']; $i->emergency_contact_phone = $_REQUEST['emergency_contact_phone']; */ /************ * OIED Certification */ // If OIED certification has changed, then double check permissions $cert = $i->oied_certified == 1 ? true : false; $certSubmitted = $_POST['oied_certified_hidden'] == 'true' ? true : false; $certChanged = $cert != $certSubmitted; if ($certChanged && !Current_User::allow('intern', 'oied_certify')) { $url = "index.php?module=intern&action=edit_internship&internship_id={$i->getId()}"; NQ::simple('intern', INTERN_ERROR, "You do not have permission to change the OIED certification checkbox. No changes were saved."); NQ::close(); return PHPWS_Core::reroute($url); } // Check if this has changed from non-certified->certified so we can log it later if ($i->oied_certified == 0 && $_POST['oied_certified_hidden'] == 'true') { // note the change for later $oiedCertified = true; } else { $oiedCertified = false; } if ($_POST['oied_certified_hidden'] == 'true') { $i->oied_certified = 1; } else { if ($_POST['oied_certified_hidden'] == 'false') { $i->oied_certified = 0; } else { $i->oied_certified = 0; } } // If we don't have a state and this is a new internship, // the set an initial state if ($i->id == 0 && is_null($i->state)) { PHPWS_Core::initModClass('intern', 'WorkflowStateFactory.php'); $state = WorkflowStateFactory::getState('CreationState'); $i->setState($state); // Set this initial value } try { $i->save(); } catch (Exception $e) { // Rollback and re-throw the exception so that admins gets an email PHPWS_DB::rollback(); throw $e; } PHPWS_DB::commit(); /*************************** * State/Workflow Handling * ***************************/ PHPWS_Core::initModClass('intern', 'WorkflowController.php'); PHPWS_Core::initModClass('intern', 'WorkflowTransitionFactory.php'); $t = WorkflowTransitionFactory::getTransitionByName($_POST['workflow_action']); $workflow = new WorkflowController($i, $t); try { $workflow->doTransition(isset($_POST['notes']) ? $_POST['notes'] : null); } catch (MissingDataException $e) { NQ::simple('intern', INTERN_ERROR, $e->getMessage()); NQ::close(); return PHPWS_Core::reroute('index.php?module=intern&action=edit_internship&internship_id=' . $i->id); } // Create a ChangeHisotry for the OIED certification. if ($oiedCertified) { $currState = WorkflowStateFactory::getState($i->getStateName()); $ch = new ChangeHistory($i, Current_User::getUserObj(), time(), $currState, $currState, 'Certified by OIED'); $ch->save(); } $workflow->doNotification(isset($_POST['notes']) ? $_POST['notes'] : null); if (isset($_REQUEST['internship_id'])) { // Show message if user edited internship NQ::simple('intern', INTERN_SUCCESS, 'Saved internship for ' . $i->getFullName()); NQ::close(); return PHPWS_Core::reroute('index.php?module=intern&action=edit_internship&internship_id=' . $i->id); } else { NQ::simple('intern', INTERN_SUCCESS, 'Added internship for ' . $i->getFullName()); NQ::close(); return PHPWS_Core::reroute('index.php?module=intern&action=edit_internship&internship_id=' . $i->id); } }
public function handleRequest() { /* Check if it is time to insert more terms into DB */ if (Term::isTimeToUpdate()) { Term::doTermUpdate(); } // Fetch the action from the REQUEST. if (!isset($_REQUEST['action'])) { $req = ""; } else { $req = $_REQUEST['action']; } // Show requested page. switch ($req) { case 'example_form': header('Content-type: application/pdf'); readfile(PHPWS_SOURCE_DIR . 'mod/intern/pdf/Internship_Example.pdf'); exit; break; case 'edit_internship': PHPWS_Core::initModClass('intern', 'UI/InternshipUI.php'); $view = new InternshipUI(); $this->content = $view->display(); break; case 'add_internship': PHPWS_Core::initModClass('intern', 'command/SaveInternship.php'); $ctrl = new SaveInternship(); $ctrl->execute(); test('finished execute', 1); break; case 'search': PHPWS_Core::initModClass('intern', 'UI/SearchUI.php'); $view = new SearchUI(); $this->content = $view->display(); break; case 'results': PHPWS_Core::initModClass('intern', 'UI/ResultsUI.php'); $view = new ResultsUI(); $this->content = $view->display(); break; case DEPT_EDIT: PHPWS_Core::initModClass('intern', 'UI/DepartmentUI.php'); PHPWS_Core::initModClass('intern', 'Department.php'); if (isset($_REQUEST['add'])) { /* Add department with the name in REQUEST */ if (isset($_REQUEST['name'])) { Department::add($_REQUEST['name']); } else { NQ::simple('intern', INTERN_ERROR, "Department must have name."); } } else { if (isset($_REQUEST['rename'])) { /* Rename dept with ID to new name that was passed in REQUEST */ if (isset($_REQUEST['id'])) { $d = new Department($_REQUEST['id']); $d->rename($_REQUEST['rename']); } else { NQ::simple('intern', INTERN_ERROR, "No ID given. Cannot rename department."); } } else { if (isset($_REQUEST['hide'])) { /* Hide/Show department with ID passed in REQUEST. */ if (isset($_REQUEST['id'])) { $d = new Department($_REQUEST['id']); $d->hide($_REQUEST['hide'] == 1); } else { NQ::simple('intern', INTERN_ERROR, "No ID given. Cannot hide department."); } } else { if (isset($_REQUEST['del'])) { /* Delete department with same ID passed in REQUEST. */ if (isset($_REQUEST['id'])) { $d = new Department($_REQUEST['id']); $d->del(); } else { NQ::simple('intern', INTERN_ERROR, "No ID given. Cannot delete department."); } } else { if (isset($_REQUEST['fDel'])) { /** for now... */ NQ::simple('intern', INTERN_WARNING, 'Sorry, cannot forcefully delete a department.'); } } } } } $view = new DepartmentUI(); $this->content = $view->display(); break; case GRAD_PROG_EDIT: PHPWS_Core::initModClass('intern', 'GradProgram.php'); PHPWS_Core::initModClass('intern', 'UI/GradProgramUI.php'); if (isset($_REQUEST['add'])) { /* Add grad program with the name in REQUEST */ if (isset($_REQUEST['name'])) { GradProgram::add($_REQUEST['name']); } else { NQ::simple('intern', INTERN_ERROR, "Grad Program must have name."); } } else { if (isset($_REQUEST['rename'])) { /* Rename program with ID to new name that was passed in REQUEST */ if (isset($_REQUEST['id'])) { $g = new GradProgram($_REQUEST['id']); $g->rename($_REQUEST['rename']); } else { NQ::simple('intern', INTERN_ERROR, "No ID given. Cannot rename graduate program."); } } else { if (isset($_REQUEST['hide'])) { /* Hide/Show program with ID passed in REQUEST. */ if (isset($_REQUEST['id'])) { $g = new GradProgram($_REQUEST['id']); $g->hide($_REQUEST['hide'] == 1); } else { NQ::simple('intern', INTERN_ERROR, "No ID given. Cannot hide graduate program."); } } else { if (isset($_REQUEST['del'])) { /* Delete program with same ID passed in REQUEST. */ if (isset($_REQUEST['id'])) { $g = new GradProgram($_REQUEST['id']); $g->del(); } else { NQ::simple('intern', INTERN_ERROR, "No ID given. Cannot delete graduate program."); } } } } } $view = new GradProgramUI(); $this->content = $view->display(); break; case MAJOR_EDIT: PHPWS_Core::initModClass('intern', 'UI/MajorUI.php'); if (isset($_REQUEST['add'])) { /* Add major with the name passed in REQUEST. */ if (isset($_REQUEST['name'])) { Major::add($_REQUEST['name']); } else { NQ::simple('intern', INTERN_ERROR, "Major must have name."); } } else { if (isset($_REQUEST['rename'])) { /* Rename major with ID to new name that was passed in REQUEST */ if (isset($_REQUEST['id'])) { $m = new Major($_REQUEST['id']); $m->rename($_REQUEST['rename']); } else { NQ::simple('intern', INTERN_ERROR, "No ID given. Cannot rename major."); } } else { if (isset($_REQUEST['hide'])) { /* Hide major with ID passed in REQUEST. */ if (isset($_REQUEST['id'])) { $m = new Major($_REQUEST['id']); $m->hide($_REQUEST['hide'] == 1); } else { NQ::simple('intern', INTERN_ERROR, "No ID given. Cannot hide major."); } } else { if (isset($_REQUEST['del'])) { /* Delete major with same ID passed in REQUEST. */ if (isset($_REQUEST['id'])) { $m = new Major($_REQUEST['id']); $m->del(); } else { NQ::simple('intern', INTERN_ERROR, "No ID given. Cannot delete major."); } } } } } $view = new MajorUI(); $this->content = $view->display(); break; /** * Matt additions! */ /** * Matt additions! */ case 'add_state': if (!Current_User::allow('intern', 'edit_state')) { disallow(); } PHPWS_Core::initModClass('intern', 'State.php'); $state = new State($_GET['abbr']); $state->setActive(true); $state->save(); exit; break; case 'remove_state': if (!Current_User::allow('intern', 'edit_state')) { disallow(); } PHPWS_Core::initModClass('intern', 'State.php'); $state = new State($_GET['abbr']); $state->setActive(false); $state->save(); exit; break; case STATE_EDIT: if (!Current_User::allow('intern', 'edit_state')) { disallow(); } PHPWS_Core::initModClass('intern', 'UI/StateUI.php'); $view = new StateUI(); $this->content = $view->display(); break; case 'edit_admins': PHPWS_Core::initModClass('intern', 'UI/AdminUI.php'); PHPWS_Core::initModClass('intern', 'Admin.php'); PHPWS_Core::initModClass('intern', 'Department.php'); if (isset($_REQUEST['add'])) { // Add user in REQUEST to administrator list for the department in REQUEST. Admin::add($_REQUEST['username'], $_REQUEST['department_id']); } else { if (isset($_REQUEST['del'])) { // Delete the user in REQUEST from department in REQUEST. Admin::del($_REQUEST['username'], $_REQUEST['department_id']); } else { if (isset($_REQUEST['user_complete'])) { $users = Admin::searchUsers($_REQUEST['term']); echo json_encode($users); exit; } } } $view = new AdminUI(); $this->content = $view->display(); break; case 'pdf': PHPWS_Core::initModClass('intern', 'InternshipFactory.php'); PHPWS_Core::initModClass('intern', 'InternshipContractPdfView.php'); PHPWS_Core::initModClass('intern', 'EmergencyContactFactory.php'); $i = InternshipFactory::getInternshipById($_REQUEST['id']); $emgContacts = EmergencyContactFactory::getContactsForInternship($i); $pdfView = new InternshipContractPdfView($i, $emgContacts); $pdf = $pdfView->getPdf(); $pdf->output(); exit; case 'upload_document_form': PHPWS_Core::initModClass('intern', 'Intern_Document_Manager.php'); $docManager = new Intern_Document_Manager(); echo $docManager->edit(); exit; break; case 'post_document_upload': PHPWS_Core::initModClass('intern', 'Intern_Document_Manager.php'); $docManager = new Intern_Document_Manager(); $docManager->postDocumentUpload(); break; case 'delete_document': PHPWS_Core::initModClass('intern', 'Intern_Document.php'); $doc = new Intern_Document($_REQUEST['doc_id']); $doc->delete(); NQ::simple('intern', INTERN_SUCCESS, 'Document deleted.'); NQ::close(); PHPWS_Core::goBack(); break; case 'addEmergencyContact': PHPWS_Core::initModClass('intern', 'command/AddEmergencyContact.php'); $ctrl = new AddEmergencyContact(); $ctrl->execute(); break; case 'removeEmergencyContact': PHPWS_Core::initModClass('intern', 'command/RemoveEmergencyContact.php'); $ctrl = new RemoveEmergencyContact(); $ctrl->execute(); break; case 'edit_faculty': PHPWS_Core::initModClass('intern', 'FacultyUI.php'); $facultyUI = new FacultyUI(); $this->content = $facultyUI->display(); break; case 'getFacultyListForDept': PHPWS_Core::initModClass('intern', 'command/GetFacultyListForDept.php'); $ctrl = new GetFacultyListForDept(); $ctrl->execute(); break; case 'restFacultyById': PHPWS_Core::initModClass('intern', 'command/RestFacultyById.php'); $ctrl = new RestFacultyById(); $ctrl->execute(); break; case 'facultyDeptRest': PHPWS_Core::initModClass('intern', 'command/FacultyDeptRest.php'); $ctrl = new FacultyDeptRest(); $ctrl->execute(); break; default: PHPWS_Core::initModClass('intern', 'UI/InternMenu.php'); $menu = new InternMenu(); $this->content = $menu->display(); break; } }
public static function display() { PHPWS_Core::initModClass('intern', 'Internship.php'); PHPWS_Core::initModClass('intern', 'InternshipFactory.php'); PHPWS_Core::initModClass('intern', 'Intern_Document.php'); PHPWS_Core::initModClass('intern', 'Intern_Folder.php'); PHPWS_Core::initModClass('intern', 'Agency.php'); PHPWS_Core::initModClass('intern', 'InternshipFormView.php'); PHPWS_Core::initModClass('intern', 'EditInternshipFormView.php'); PHPWS_Core::initModClass('intern', 'Term.php'); PHPWS_Core::initModClass('intern', 'Department.php'); PHPWS_Core::initModClass('intern', 'Major.php'); PHPWS_Core::initModClass('intern', 'GradProgram.php'); PHPWS_Core::initModClass('intern', 'Subject.php'); $tpl = array(); if (isset($_REQUEST['internship_id'])) { /* Attempting to edit internship */ try { $i = InternshipFactory::getInternshipById($_REQUEST['internship_id']); } catch (InternshipNotFoundException $e) { NQ::simple('intern', INTERN_ERROR, 'Could not locate an internship with the given ID.'); return; } $internshipForm = new EditInternshipFormView('Edit Internship', $i); $internshipForm->buildInternshipForm(); $internshipForm->plugInternship(); $tpl['TITLE'] = 'Edit Internship'; $form = $internshipForm->getForm(); /*** 'Generate Contract' Button ***/ $tpl['PDF'] = PHPWS_Text::linkAddress('intern', array('action' => 'pdf', 'id' => $i->id)); /*** Document List ***/ $docs = $i->getDocuments(); if (!is_null($docs)) { foreach ($docs as $doc) { $tpl['docs'][] = array('DOWNLOAD' => $doc->getDownloadLink('blah'), 'DELETE' => $doc->getDeleteLink()); } } $folder = new Intern_Folder(Intern_Document::getFolderId()); $tpl['UPLOAD_DOC'] = $folder->documentUpload($i->id); $wfState = $i->getWorkflowState(); if (($wfState instanceof SigAuthReadyState || $wfState instanceof SigAuthApprovedState || $wfState instanceof DeanApprovedState || $wfState instanceof RegisteredState) && $docs < 1) { NQ::simple('intern', INTERN_WARNING, "No documents have been uploaded yet. Usually a copy of the signed contract document should be uploaded."); } /****************** * Change History * */ if (!is_null($i->id)) { PHPWS_Core::initModClass('intern', 'ChangeHistoryView.php'); $historyView = new ChangeHistoryView($i); $tpl['CHANGE_LOG'] = $historyView->show(); } // Show a warning if in SigAuthReadyState, is international, and not OIED approved if ($i->getWorkflowState() instanceof SigAuthReadyState && $i->isInternational() && !$i->isOiedCertified()) { NQ::simple('intern', INTERN_WARNING, 'This internship can not be approved by the Signature Authority bearer until the internship is certified by the Office of International Education and Development.'); } // Show a warning if in DeanApproved state and is distance_ed campus if ($i->getWorkflowState() == 'DeanApprovedState' && $i->isDistanceEd()) { NQ::simple('intern', INTERN_WARNING, 'This internship must be registered by Distance Education.'); } // Sanity check cource section # if ($i->isDistanceEd() && ($i->getCourseSection() < 300 || $i->getCourseSection() > 399)) { NQ::simple('intern', INTERN_WARNING, "This is a distance ed internship, so the course section number should be between 300 and 399."); } // Sanity check distance ed radio if (!$i->isDistanceEd() && ($i->getCourseSection() > 300 && $i->getCourseSection() < 400)) { NQ::simple('intern', INTERN_WARNING, "The course section number you entered looks like a distance ed course. Be sure to check the Distance Ed option, or double check the section number."); } PHPWS_Core::initModClass('intern', 'EmergencyContactFormView.php'); $emgContactDialog = new EmergencyContactFormView($i); $tpl['ADD_EMERGENCY_CONTACT'] = '<button type="button" class="btn btn-default btn-sm" id="add-ec-button"><i class="fa fa-plus"></i> Add Contact</button>'; $tpl['EMERGENCY_CONTACT_DIALOG'] = $emgContactDialog->getHtml(); } else { // Attempting to create a new internship // Check permissions if (!Current_User::allow('intern', 'create_internship')) { NQ::simple('intern', INTERN_ERROR, 'You do not have permission to create new internships.'); NQ::close(); PHPWS_Core::home(); } $tpl['TITLE'] = 'Add Internship'; $internshipForm = new InternshipFormView('Add Internship'); $internshipForm->buildInternshipForm(); $tpl['AUTOFOCUS'] = 'autofocus'; /* Show form with empty fields. */ $form = $internshipForm->getForm(); // Show a disabled button in document list if we are adding an internship. $tpl['UPLOAD_DOC'] = '<div title="Please save this internship first."><button id="doc-upload-btn" class="btn btn-default btn-sm" title="Please save this internship first." disabled="disabled"><i class="fa fa-upload"></i> Add document</button></div>'; // Show a disabled emergency contact button $tpl['ADD_EMERGENCY_CONTACT'] = '<div title="Please save this internship first."><button class="btn btn-default btn-sm" id="add-ec-button" disabled="disabled" data-toggle="tooltip" title="first tooltip"><i class="fa fa-plus"></i> Add Contact</button></div>'; } /* * If 'missing' is set then we have been redirected * back to the form because the user didn't type in something and * somehow got past the javascript. */ if (isset($_REQUEST['missing'])) { $missing = explode(' ', $_REQUEST['missing']); //javascriptMod('intern', 'missing'); /* * Set classes on field we are missing. */ foreach ($missing as $m) { //$form->addCssClass($m, 'has-error'); $form->addExtraTag($m, 'data-has-error="true"'); } /* Plug old values back into form fields. */ $form->plugIn($_GET); // If internship is being edited... if (isset($_REQUEST['internship_id'])) { /* Re-add hidden fields with object ID's */ $i = InternshipFactory::getInternshipById($_GET['internship_id']); $a = $i->getAgency(); //$f = $i->getFacultySupervisor(); $form->addHidden('agency_id', $a->id); //$form->addHidden('supervisor_id', $f->id); $form->addHidden('id', $i->id); } } $form->mergeTemplate($tpl); //test($form->getTemplate(),1); return PHPWS_Template::process($form->getTemplate(), 'intern', 'add_internship.tpl'); }
public function handleRequest() { /* Check if it is time to insert more terms into DB */ if (Term::isTimeToUpdate()) { Term::doTermUpdate(); } // Fetch the action from the REQUEST. if (!isset($_REQUEST['action'])) { $req = ""; } else { $req = $_REQUEST['action']; } // Show requested page. switch ($req) { case 'example_form': header('Content-type: application/pdf'); readfile(\PHPWS_SOURCE_DIR . 'mod/intern/pdf/Internship_Example.pdf'); exit; break; case 'ShowInternship': $ctrl = new Command\ShowInternship(); $this->content = $ctrl->execute(); break; case 'ShowAddInternship': $ctrl = new Command\ShowAddInternship(); $this->content = $ctrl->execute()->getView()->render(); break; case 'AddInternship': $ctrl = new Command\AddInternship(); $ctrl->execute(); break; case 'SaveInternship': $ctrl = new Command\SaveInternship(); $ctrl->execute(); break; case 'search': $view = new UI\SearchUI(); $this->content = $view->display(); break; case 'results': $view = new UI\ResultsUI(); $this->content = $view->display(); break; case 'showEditDept': $view = new UI\DepartmentUI(); $this->content = $view->display(); break; case 'edit_dept': if (isset($_REQUEST['add'])) { /* Add department with the name in REQUEST */ if (isset($_REQUEST['name'])) { Department::add($_REQUEST['name']); } else { \NQ::simple('intern', \Intern\UI\NotifyUI::ERROR, "Department must have name."); } } else { if (isset($_REQUEST['rename'])) { /* Rename dept with ID to new name that was passed in REQUEST */ if (isset($_REQUEST['id'])) { $d = new Department($_REQUEST['id']); $d->rename($_REQUEST['rename']); } else { \NQ::simple('intern', \Intern\UI\NotifyUI::ERROR, "No ID given. Cannot rename department."); } } else { if (isset($_REQUEST['hide'])) { /* Hide/Show department with ID passed in REQUEST. */ if (isset($_REQUEST['id'])) { $d = new Department($_REQUEST['id']); $d->hide($_REQUEST['hide'] == 1); } else { \NQ::simple('intern', \Intern\UI\NotifyUI::ERROR, "No ID given. Cannot hide department."); } } else { if (isset($_REQUEST['del'])) { /* Delete department with same ID passed in REQUEST. */ if (isset($_REQUEST['id'])) { $d = new Department($_REQUEST['id']); $d->del(); } else { \NQ::simple('intern', \Intern\UI\NotifyUI::ERROR, "No ID given. Cannot delete department."); } } } } } \PHPWS_Core::reroute('index.php?module=intern&action=showEditDept'); break; case 'showEditGradProgs': $view = new UI\GradProgramUI(); $this->content = $view->display(); break; case 'edit_grad': //TODO Separate these into their own controllers if (isset($_REQUEST['add'])) { /* Add grad program with the name in REQUEST */ if (isset($_REQUEST['name'])) { GradProgram::add($_REQUEST['name']); } else { \NQ::simple('intern', \Intern\UI\NotifyUI::ERROR, "Grad Program must have name."); } } else { if (isset($_REQUEST['rename'])) { /* Rename program with ID to new name that was passed in REQUEST */ if (isset($_REQUEST['id'])) { $g = new GradProgram($_REQUEST['id']); $g->rename($_REQUEST['rename']); } else { \NQ::simple('intern', \Intern\UI\NotifyUI::ERROR, "No ID given. Cannot rename graduate program."); } } else { if (isset($_REQUEST['hide'])) { /* Hide/Show program with ID passed in REQUEST. */ if (isset($_REQUEST['id'])) { $g = new GradProgram($_REQUEST['id']); $g->hide($_REQUEST['hide'] == 1); } else { \NQ::simple('intern', \Intern\UI\NotifyUI::ERROR, "No ID given. Cannot hide graduate program."); } } else { if (isset($_REQUEST['del'])) { /* Delete program with same ID passed in REQUEST. */ if (isset($_REQUEST['id'])) { $g = new GradProgram($_REQUEST['id']); $g->del(); } else { \NQ::simple('intern', \Intern\UI\NotifyUI::ERROR, "No ID given. Cannot delete graduate program."); } } } } } \PHPWS_Core::reroute('index.php?module=intern&action=showEditGradProgs'); break; case 'showEditMajors': $view = new UI\MajorUI(); $this->content = $view->display(); break; case 'edit_major': // TODO: Break these into their own commands if (isset($_REQUEST['add'])) { /* Add major with the name passed in REQUEST. */ if (isset($_REQUEST['name'])) { Major::add($_REQUEST['name']); } else { \NQ::simple('intern', \Intern\UI\NotifyUI::ERROR, "Major must have name."); } } else { if (isset($_REQUEST['rename'])) { /* Rename major with ID to new name that was passed in REQUEST */ if (isset($_REQUEST['id'])) { $m = new Major($_REQUEST['id']); $m->rename($_REQUEST['rename']); } else { \NQ::simple('intern', \Intern\UI\NotifyUI::ERROR, "No ID given. Cannot rename major."); } } else { if (isset($_REQUEST['hide'])) { /* Hide major with ID passed in REQUEST. */ if (isset($_REQUEST['id'])) { $m = new Major($_REQUEST['id']); $m->hide($_REQUEST['hide'] == 1); } else { \NQ::simple('intern', \Intern\UI\NotifyUI::ERROR, "No ID given. Cannot hide major."); } } else { if (isset($_REQUEST['del'])) { /* Delete major with same ID passed in REQUEST. */ if (isset($_REQUEST['id'])) { $m = new Major($_REQUEST['id']); $m->del(); } else { \NQ::simple('intern', \Intern\UI\NotifyUI::ERROR, "No ID given. Cannot delete major."); } } } } } \PHPWS_Core::reroute('index.php?module=intern&action=showEditMajors'); break; /** * Matt additions! */ /** * Matt additions! */ case 'add_state': if (!Current_User::allow('intern', 'edit_state')) { disallow(); } $state = new State($_GET['abbr']); $state->setActive(true); $state->save(); exit; break; case 'remove_state': if (!Current_User::allow('intern', 'edit_state')) { disallow(); } $state = new State($_GET['abbr']); $state->setActive(false); $state->save(); exit; break; case 'edit_states': if (!Current_User::allow('intern', 'edit_state')) { disallow(); } $view = new StateUI(); $this->content = $view->display(); break; case 'showEditAdmins': $view = new UI\AdminUI(); $this->content = $view->display(); break; case 'edit_admins': if (isset($_REQUEST['add'])) { // Add user in REQUEST to administrator list for the department in REQUEST. Admin::add($_REQUEST['username'], $_REQUEST['department_id']); } else { if (isset($_REQUEST['del'])) { // Delete the user in REQUEST from department in REQUEST. Admin::del($_REQUEST['username'], $_REQUEST['department_id']); } else { if (isset($_REQUEST['user_complete'])) { $users = Admin::searchUsers($_REQUEST['term']); echo json_encode($users); exit; } } } $view = new UI\AdminUI(); $this->content = $view->display(); break; case 'pdf': $i = InternshipFactory::getInternshipById($_REQUEST['internship_id']); $emgContacts = EmergencyContactFactory::getContactsForInternship($i); $pdfView = new InternshipContractPdfView($i, $emgContacts); $pdf = $pdfView->getPdf(); $pdf->output(); exit; case 'upload_document_form': $docManager = new DocumentManager(); echo $docManager->edit(); exit; break; case 'post_document_upload': $docManager = new DocumentManager(); $docManager->postDocumentUpload(); break; case 'delete_document': $doc = new InternDocument($_REQUEST['doc_id']); $doc->delete(); \NQ::simple('intern', \Intern\UI\NotifyUI::SUCCESS, 'Document deleted.'); \NQ::close(); \PHPWS_Core::goBack(); break; case 'addEmergencyContact': $ctrl = new Command\AddEmergencyContact(); $ctrl->execute(); break; case 'removeEmergencyContact': $ctrl = new Command\RemoveEmergencyContact(); $ctrl->execute(); break; case 'edit_faculty': $facultyUI = new UI\FacultyUI(); $this->content = $facultyUI->display(); break; case 'getFacultyListForDept': $ctrl = new Command\GetFacultyListForDept(); $ctrl->execute(); break; case 'restFacultyById': $ctrl = new Command\RestFacultyById(); $ctrl->execute(); break; case 'facultyDeptRest': $ctrl = new Command\FacultyDeptRest(); $ctrl->execute(); break; case 'GetSearchSuggestions': $ctrl = new Command\GetSearchSuggestions(); $ctrl->execute(); break; case 'GetAvailableStates': $ctrl = new Command\GetAvailableStates(); $ctrl->execute(); break; case 'GetAvailableCountries': $ctrl = new Command\GetAvailableCountries(); $ctrl->execute(); break; case 'GetDepartments': $ctrl = new Command\GetDepartments(); $ctrl->execute(); break; case 'GetAvailableTerms': $ctrl = new Command\GetAvailableTerms(); $ctrl->execute(); break; default: $menu = new UI\InternMenu(); $this->content = $menu->display(); break; } }