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

Initial (and overdue) checkin of rewrite code.

parent a9ba7483
No related branches found
No related tags found
No related merge requests found
Showing
with 4520 additions and 0 deletions
RewriteEngine on
RewriteBase /base/url
RewriteRule ^document_root - [L]
RewriteRule !\.(js|ico|gif|jpg|png|css)$ document_root/index.php [L]
RewriteRule (.*) document_root/$1 [L]
[database]
adapter = PDO_MYSQL
params.dbname = db_name
params.username = user
params.password = password
[session]
cookie_lifetime = 28800
gc_maxlifetime = 28800
<?php
/**
* IndexController
*
* @author
* @version
*/
require_once 'Zend/Controller/Action.php';
class Auth_IndexController extends Unl_Controller_Action {
public function indexAction()
{
$this->_redirect('/auth/index/login');
}
public function loginAction()
{
$session = new Zend_Session_Namespace(__CLASS__);
$this->view->errorMessage = $session->errorMessage;
unset($session->errorMessage);
}
public function logoutAction()
{
Zend_Auth::getInstance()->clearIdentity();
$this->_redirect('');
}
public function validateAction()
{
$username = $this->getRequest()->getParam('username');
$password = $this->getRequest()->getParam('password');
$auth = Unl_Auth::getInstance();
$ldap = new Unl_Ldap('ldap://localhost:10389');
$ldapAdapter = new Unl_Auth_Adapter_Ldap($ldap, $username, $password);
$auth->pushAdapter($ldapAdapter);
try {
$result = $auth->authenticate($ldapAdapter);
} catch (Exception $e) {
//
}
if (!$result || !$result->isValid()) {
$session = new Zend_Session_Namespace(__CLASS__);
$session->errorMessage = 'Login Failed';
$this->_redirect('/auth/index');
return;
}
$this->_redirect('');
}
}
<?php
class Auth_GroupModel extends Unl_Model
{
public static function findByUser($user)
{
$db = Zend_Registry::get('db');
$select = new Zend_Db_Select($db);
// get userId as a string or array from the user object(s)
if (Unl_Util::isArray($user)) {
$userId = array();
foreach ($user as $aUser) {
$userId[] = $aUser->getId();
}
} else {
$userId = $user->getId();
}
// find the group(s) that the user(s) is a "primary" member of
$select = new Zend_Db_Select($db);
$select->from(array('u' => 'creqUsers'), array('userId'));
$select->join(array('g' => 'creqGroups'), 'u.primaryGroup = g.groupId');
if (Unl_Util::isArray($userId)) {
$select->where('u.userId IN (?)', $userId);
} else {
$select->where('u.userId = ?', $userId);
}
$records = $select->query()->fetchAll();
$objects = $objects = new Unl_Model_Collection('Auth_GroupModel');
foreach ($records as $record) {
$recordUserId = $record['userId'];
unset($record['userId']);
$objects[$recordUserId][] = Unl_Model_Registry::getInstance()->getOrAdd(new self($record));
}
// find any groups that the user(s) is a "non-primary" member of
$select = new Zend_Db_Select($db);
$select->from(array('u' => 'creqUsers'), array('userId'));
$select->join(array('m' => 'creqGroupImpliedMemberships'), 'u.primaryGroup = m.childGroup', array());
$select->join(array('g' => 'creqGroups'), 'm.parentGroup = g.groupId');
if (Unl_Util::isArray($userId)) {
$select->where('u.userId IN (?)', $userId);
} else {
$select->where('u.userId = ?', $userId);
}
$records = $select->query()->fetchAll();
foreach ($records as $record) {
$recordUserId = $record['userId'];
unset($record['userId']);
$objects[$recordUserId][] = Unl_Model_Registry::getInstance()->getOrAdd(new self($record));
}
// if we were passed an array of users, return an array for each user
if (Unl_Util::isArray($userId)) {
return $objects;
// otherwise, return an array of groups for the single user we were passed
} else {
return $objects[$userId];
}
}
}
<?php
class Auth_UserModel extends Unl_Model {
public static function find($id)
{
$db = Zend_Registry::get('db');
$select = new Zend_Db_Select($db);
$select->from(array('u' => 'creqUsers'));
$select->join(array('p' => 'creqPeople'), 'u.userId = p.userId');
if (Unl_Util::isArray($id)) {
$select->where('u.userId IN(?)', $id);
} else {
$select->where('u.userId = ?', $id);
}
$records = $db->query($select)->fetchAll();
$objects = new Unl_Model_Collection('Auth_UserModel');
foreach ($records as $record) {
$object = Unl_Model_Registry::getInstance()->getOrAdd(new self($record));
$objectId = $object->getId();
$objects[$objectId] = $object;
}
if (Unl_Util::isArray($id)) {
return $objects;
} else {
return $objects->pop();
}
}
public static function findByUsername($username)
{
$db = Zend_Registry::get('db');
$select = new Zend_Db_Select($db);
$select->from(array('u' => 'creqUsers'));
$select->join(array('p' => 'creqPeople'), 'u.userId = p.userId');
if (Unl_Util::isArray($username)) {
$select->where('u.username IN(?)', $username);
} else {
$select->where('u.username = ?', $username);
}
$records = $db->query($select)->fetchAll();
$objects = new Unl_Model_Collection('Auth_UserModel');
foreach ($records as $record) {
$object = Unl_Model_Registry::getInstance()->getOrAdd(new self($record));
$objectId = $object->getId();
$objects[$objectId] = $object;
}
if (Unl_Util::isArray($username)) {
return $objects;
} else {
return $objects->pop();
}
}
public static function findCurrentUser()
{
$username = Zend_Auth::getInstance()->getIdentity();
if (!$username) {
return null;
}
return self::findByUsername($username);
}
public function getId()
{
return $this->_data['userId'];
}
public function getUsername()
{
return $this->_data['userName'];
}
public function getFirstName()
{
return $this->_data['firstName'];
}
public function getLastName()
{
return $this->_data['lastName'];
}
public function getEmail()
{
return $this->_data['email'];
}
public function getPrimaryGroup()
{
return $this->_data['primaryGroup'];
}
}
<?php $this->headLink()->appendStylesheet($this->baseUrl() . '/css/auth/index.css'); ?>
<?php if ($this->errorMessage) { ?>
<div class="warning"><?php echo $this->errorMessage; ?></div>
<?php } ?>
<form action="<?php echo $this->url(array('action' => 'validate')); ?>" method="post">
<dl>
<dt>Username</dt>
<dd><?php echo $this->formText('username'); ?></dd>
<dt>Password</dt>
<dd><?php echo $this->formPassword('password'); ?></dd>
</dl>
<?php echo $this->formSubmit('login', 'Login'); ?>
</form>
\ No newline at end of file
<?php
class Courses_EditController extends App_Controller_Action
{
public function indexAction()
{
$session = new Zend_Session_Namespace('Edit Request');
$course = $session->course;
$request = $session->request;
$this->view->course = $course;
$this->view->request = $request;
}
public function editPostAction()
{
$in = $this->getRequest()->getParams();
//print_r($_FILES); exit;
$session = new Zend_Session_Namespace('Edit Request');
$course = $session->course;
$request = $session->request;
//print_r($course); exit;
if (!in_array($request->getType(), array('RemoveCourse', 'AddACEToCourse', 'RemoveACEFromCourse'))) {
$course->setCourseCode($in['subject'], $in['courseNumber'], $in['courseLetter']);
$course->setTitle($in['title']);
if (Unl_Util::isArray($in['crosslistings'])) {
foreach ($in['crosslistings'] as $id => $crosslisting) {
if ($crosslisting['delete'] == 'yes') {
$course->removeCrosslisting($id);
} else if ($crosslisting['action'] == 'edit') {
$course->editCrosslisting($id, $crosslisting['type'], $crosslisting['subject'], $crosslisting['courseNumber'], $crosslisting['courseLetter']);
} else {
$course->addCrosslisting($crosslisting['type'], $crosslisting['subject'], $crosslisting['courseNumber'], $crosslisting['courseLetter']);
}
}
}
foreach ($in['credits'] as $type => $credit) {
if ($type == Courses_CourseModel::CREDIT_TYPE_SINGLE) {
$credit = explode(',', $credit);
foreach($credit as $key => $hours) {
$credit[$key] = trim($hours);
}
}
$course->setCredit($type, $credit);
}
$course->setTermsOffered($in['termsOffered']);
if (Unl_Util::isArray($in['activities'])) {
foreach ($in['activities'] as $activity) {
if ($activity['delete'] == 'yes') {
$course->removeActivity($activity['type']);
} else {
$course->setActivity($activity['type'], $activity['hours']);
}
}
}
$course->setPrerequisite($in['prerequisite']);
$course->setGradingType($in['gradingType']);
$course->setDfRemoval($in['dfRemoval']);
$course->setDeliveryMethods($in['deliveryMethods']);
$course->setCampuses($in['campuses']);
$course->setNotes($in['notes']);
$course->setDescription($in['description']);
if ($in['gradTieIn']['credits'] || $in['gradTieIn']['prerequisites'] || $in['gradTieIn']['notes']) {
$course->setGradTieIn($in['gradTieIn']['credits'], $in['gradTieIn']['prerequisites'], $in['gradTieIn']['notes']);
} else {
$course->removeGradTieIn();
}
}
if (in_array($request->getType(), array('NewCourseWithACE', 'AddACEToCourse', 'AddACEAndChangeCourse'))) {
foreach ($in['ace']['outcomes'] as $name => $aceOutcome) {
if ($aceOutcome['enabled']) {
$course->setAceOutcome($name, $aceOutcome['justification'], $aceOutcome['studentWork'], $aceOutcome['assesmentPlan']);
} else {
$course->removeAceOutcome($name);
}
}
foreach ($in['ace']['reinforcements'] as $name => $aceReinforcement) {
if ($aceReinforcement['enabled']) {
$course->setAceReinforcement($name, $aceReinforcement['description']);
} else {
$course->removeAceReinforcement($name);
}
}
}
$request->setJustification($in['request']['justification']);
$fileTypes = array(
Requests_RequestModel::FILE_TYPE_SYLLABUS,
Requests_RequestModel::FILE_TYPE_CROSSLIST_MEMO,
Requests_RequestModel::FILE_TYPE_OTHER,
Requests_RequestModel::FILE_TYPE_IS_NARRATIVE
);
foreach ($fileTypes as $fileType) {
if ($in['removeFiles'][$fileType] == 'yes') {
$request->removeFile($fileType);
}
if ($_FILES['request']['error'][$fileType] === 0) {
$title = $_FILES['request']['name'][$fileType];
$mimeType = $_FILES['request']['type'][$fileType];
$content = file_get_contents($_FILES['request']['tmp_name'][$fileType]);
$request->setFile($fileType, $title, $mimeType, $content);
}
}
$session->course = $course;
$session->request = $request;
$this->_redirect('/courses/view/index/id/session');
}
public function loadAction()
{
$in = $this->getRequest()->getParams();
$session = new Zend_Session_Namespace('Edit Request');
if ($in['sessionId'] !== null) {
$id = $in['sessionId'];
$request = $session->savedRequests[$id]['request'];
$course = $session->savedRequests[$id]['course'];
$parentCourse = $session->savedRequests[$id]['parentCourse'];
$session->currentSavedRequestId = $id;
} else {
$id = $in['id'];
$request = Requests_RequestModel::find($id);
$course = Courses_CourseModel::findLatestOfRequest($request);
$course = clone $course;
$parentCourse = Courses_CourseModel::findParentOfRequest($request);
unset($session->currentSavedRequestId);
}
$session->request = $request;
$session->course = $course;
$session->parentCourse = $parentCourse;
$this->_redirect('/courses/edit');
}
public function submitPostAction()
{
$in = $this->getRequest()->getParams();
$session = new Zend_Session_Namespace('Edit Request');
if ($in['effectiveSemester']) {
$session->course->setEffectiveSemester($in['effectiveSemester']);
}
if ($in['submitType'] == 'Save for Later Submission') {
$this->_saveForLater();
$this->_redirect('/requests');
}
if ($in['submitType'] == 'Return to Edit') {
$this->_redirect('/courses/edit');
}
if ($in['submitType'] == 'Abandon Changes') {
$this->_redirect('/requests');
}
if ($in['submitType'] == 'Save Changes') {
$this->_saveRequest();
$this->_redirect('/requests');
}
if ($in['submitType'] == 'Submit') {
set_time_limit(5);
$this->_saveRequest();
$this->_startApproval();
$this->_redirect('/requests');
}
}
protected function _saveForLater()
{
$session = new Zend_Session_Namespace('Edit Request');
$savedRequests = $session->savedRequests;
if (!Unl_Util::isArray($savedRequests)) {
$savedRequests = array();
}
$newSavedRequest = array(
'request' => $session->request,
'course' => $session->course,
'parentCourse' => $session->parentCourse
);
if ($session->currentSavedRequestId !== null) {
$id = $session->currentSavedRequestId;
$savedRequests[$id] = $newSavedRequest;
} else {
$savedRequests[] = $newSavedRequest;
}
$session->savedRequests = $savedRequests;
}
protected function _saveRequest()
{
$session = new Zend_Session_Namespace('Edit Request');
Requests_RequestModel::save($session->request);
$session->course->setRequest($session->request);
Courses_CourseModel::save($session->course);
}
protected function _startApproval()
{
$session = new Zend_Session_Namespace('Edit Request');
Requests_ApprovalChainModel::consider($session->request);
}
}
<?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()
{
$subject = $this->getRequest()->getParam('subject');
$courseNumber = $this->getRequest()->getParam('courseNumber');
$courseLetter = $this->getRequest()->getParam('courseLetter');
if (!$subject || !$courseNumber) {
return;
}
$course = Courses_CourseModel::findByCourseCode($subject, $courseNumber, $courseLetter);
$activeRequests = Courses_CourseModel::findActiveRequestByCourseCode($subject, $courseNumber, $courseLetter);
if ($course) {
$render = 'found';
if ($subject != $course->getSubject()) {
$this->view->crosslisting = true;
} else {
$this->view->crosslisting = false;
}
$this->view->course = $course;
} else {
$render = 'create';
}
$this->view->subject = $subject;
$this->view->courseLetter = $courseLetter;
$this->view->courseNumber = $courseNumber;
$this->view->activeRequest = (count($activeRequests) > 0);
$this->render($render);
}
public function searchPostAction()
{
$subject = $this->getRequest()->getParam('subject');
$courseNumber = $this->getRequest()->getParam('courseNumber');
$courseLetter = $this->getRequest()->getParam('courseLetter');
$redirectUrl = Zend_Controller_Front::getInstance()->getBaseUrl()
. '/courses/new/search';
if ($subject) {
$redirectUrl .= '/subject/' . $subject;
}
if ($courseNumber) {
$redirectUrl .= '/courseNumber/' . $courseNumber;
}
if ($courseLetter) {
$redirectUrl .= '/courseLetter/' . $courseLetter;
}
$this->getResponse()->setRedirect($redirectUrl);
}
public function createAction()
{
$type = $this->getRequest()->getParam('type');
$subject = $this->getRequest()->getParam('subject');
$courseNumber = $this->getRequest()->getParam('courseNumber');
$courseLetter = $this->getRequest()->getParam('courseLetter');
$request = Requests_RequestModel::fetchNew();
$request->setType($type);
$request->setModule('courses');
$request->setOwner(Auth_UserModel::findCurrentUser());
$parentCourse = Courses_CourseModel::findByCourseCode($subject, $courseNumber, $courseLetter);
if ($parentCourse) {
$course = clone $parentCourse;
} else {
$course = Courses_CourseModel::fetchNew();
$course->setCourseCode($subject, $courseNumber, $courseLetter);
}
$session = new Zend_Session_Namespace('Edit Request');
$session->parentCourse = $parentCourse;
$session->course = $course;
$session->request = $request;
unset($session->currentSavedRequestId);
$this->_redirect('/courses/edit');
}
}
<?php
/**
* PublicViewController
*
* @author
* @version
*/
class Courses_PublicViewController extends App_Controller_Action {
/**
* The default action - show the home page
*/
public function allCoursesAction()
{
$layout = Zend_Layout::getMvcInstance();
$layout->disableLayout();
$this->getFrontController()->setParam('noViewRenderer', true);
}
/**
* This action syncronizes the qreqCourses.currentGeneration field with data from creqCourseGenerations
*
*/
public function testAction()
{
$layout = Zend_Layout::getMvcInstance();
$layout->disableLayout();
$this->getFrontController()->setParam('noViewRenderer', true);
header('Content-type: text/plain');
$db = Zend_Registry::get('db');
$sql = 'SELECT * FROM creqCourseGenerations';
$data = $db->query($sql)->fetchAll();
$courses = array();
foreach ($data as $row) {
$courseId = $row['course'];
$generationId = $row['courseGenerationId'];
$courses[$courseId][$generationId] = $row;
}
$courseLatest = array();
foreach ($courses as $courseId => $course) {
$parent = null;
$parentIds = array();
foreach ($course as $generation) {
if ($generation['parent']) {
$parentIds[] = $generation['parent'];
}
}
foreach ($course as $generation) {
if (!in_array($generation['courseGenerationIds'], $parentIds)) {
$latest = $generation;
}
}
while ($latest['parent'] && $latest['type'] != 'official') {
$latest = $course[$latest['parent']];
}
if ($latest['type'] != 'official') {
$latestId = null;
} else {
$latestId = $latest['courseGenerationId'];
}
$courseLatest[$courseId] = $latestId;
}
foreach ($courseLatest as $courseId => $latestId) {
$data = array('currentGeneration' => $latestId);
$where = 'courseId = ' . $courseId;
$db->update('creqCourses', $data, $where);
}
}
}
<?php
class Courses_ViewController extends App_Controller_Action
{
public function indexAction()
{
$requestId = $this->getRequest()->getParam('id');
if ($requestId == 'session') {
$session = new Zend_Session_Namespace('Edit Request');
$request = $session->request;
$course = $session->course;
$parentCourse = $session->parentCourse;
if ($request->getId()) {
$initialRequest = false;
} else {
$initialRequest = true;
}
$preview = true;
} else {
$request = Requests_RequestModel::find($requestId);
$course = Courses_CourseModel::findLatestOfRequest($request);
$parentCourse = null;
if (in_array($request->getType(), array('ChangeCourse', 'AddACEAndChangeCourse'))) {
$parentCourse = Courses_CourseModel::findParentOfRequest($request);
}
$initialRequest = false;
$preview = false;
}
$comments = Requests_CommentsModel::findByRequest($request);
$user = Auth_UserModel::findCurrentUser();
$this->view->request = $request;
$this->view->course = $course;
$this->view->parentCourse = $parentCourse;
$this->view->comments = $comments;
$this->view->user = $user;
$this->view->initialRequest = $initialRequest;
$this->view->preview = $preview;
$this->view->terms = $this->_getFutureTerms();
$this->view->isRequestValid = $course->isValid() && $request->isValid();
$session = new Zend_Session_Namespace(__CLASS__);
if ($session->tabName) {
$this->view->selectedCommentTab = $session->tabName;
} else {
$this->view->selectedCommentTab = 'commentsTab';
}
}
public function setCommentTabAction()
{
$tabName = $this->getRequest()->getParam('tabName');
$session = new Zend_Session_Namespace(__CLASS__);
$session->tabName = $tabName;
exit;
}
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;
}
}
<?php
class Courses_ApprovalActionCollegeRouterModel extends Requests_ApprovalActionModel
{
public static function find($id)
{
$db = Zend_Registry::get('db');
$select = new Zend_Db_Select($db);
$select->from(array('a' => 'creqApprovalActions'));
$select->join(array('d' => 'creqApprovalActionsCollegeRouter'), 'a.approvalActionId = d.approvalActionId');
if (Unl_Util::isArray($id)) {
$select->where('a.approvalActionId IN(?)', $id);
} else {
$select->where('a.approvalActionId = ?', $id);
}
$records = $db->query($select)->fetchAll();
$objects = new Unl_Model_Collection(__CLASS__);
foreach ($records as $record) {
$object = Unl_Model_Registry::getInstance()->getOrAdd(new self($record));
$objectId = $object->getId();
$objects[$objectId] = $object;
}
if (Unl_Util::isArray($objects)) {
return $objects;
} else {
return array_pop($objects);
}
}
public function consider($requests)
{
$requestParentCourses = Courses_CourseModel::findParentOfRequest($requests);
$requestCurrentCourses = Courses_CourseModel::findLatestOfRequest($requests);
foreach ($requests as $request) {
$course = $requestParentCourses[$request->getId()];
if (!$course) {
$course = $requestCurrentCourses[$request->getId()];
}
$college = $course->getCollege();
$request->setState($college);
}
Requests_RequestModel::save($requests);
Requests_ApprovalChainModel::advance($requests);
return $requests;
}
public function userMadeDecisions($requests, $requestDecisions)
{
// Don't do anything here, this is an automated action.
}
}
<?php
class Courses_ApprovalActionDepartmentRouterModel extends Requests_ApprovalActionModel
{
public static function find($id)
{
$db = Zend_Registry::get('db');
$select = new Zend_Db_Select($db);
$select->from(array('a' => 'creqApprovalActions'));
$select->join(array('d' => 'creqApprovalActionsDepartmentRouter'), 'a.approvalActionId = d.approvalActionId');
if (Unl_Util::isArray($id)) {
$select->where('a.approvalActionId IN(?)', $id);
} else {
$select->where('a.approvalActionId = ?', $id);
}
$records = $db->query($select)->fetchAll();
$objects = new Unl_Model_Collection(__CLASS__);
foreach ($records as $record) {
$object = Unl_Model_Registry::getInstance()->getOrAdd(new self($record));
$objectId = $object->getId();
$objects[$objectId] = $object;
}
if (Unl_Util::isArray($objects)) {
return $objects;
} else {
return array_pop($objects);
}
}
public function consider($requests)
{
$requestParentCourses = Courses_CourseModel::findParentOfRequest($requests);
$requestCurrentCourses = Courses_CourseModel::findLatestOfRequest($requests);
foreach ($requests as $request) {
$course = $requestParentCourses[$request->getId()];
if (!$course) {
$course = $requestCurrentCourses[$request->getId()];
}
$department = $course->getDepartment();
$request->setState($department);
}
Requests_RequestModel::save($requests);
Requests_ApprovalChainModel::advance($requests);
return $requests;
}
public function userMadeDecisions($requests, $requestDecisions)
{
// Don't do anything here, this is an automated action.
}
}
<?php
class Courses_ApprovalActionMakeOfficialModel extends Requests_ApprovalActionModel
{
static public function find($id)
{
$db = Zend_Registry::get('db');
$select = new Zend_Db_Select($db);
$select->from(array('a' => 'creqApprovalActions'));
$select->join(array('d' => 'creqApprovalActionsMakeOfficial'), 'a.approvalActionId = d.approvalActionId');
if (Unl_Util::isArray($id)) {
$select->where('a.approvalActionId IN(?)', $id);
} else {
$select->where('a.approvalActionId = ?', $id);
}
$records = $db->query($select)->fetchAll();
$objects = new Unl_Model_Collection(__CLASS__);
foreach ($records as $record) {
$object = Unl_Model_Registry::getInstance()->getOrAdd(new self($record));
$objectId = $object->getId();
$objects[$objectId] = $object;
}
if (Unl_Util::isArray($objects)) {
return $objects;
} else {
return array_pop($objects);
}
}
public function consider($requests)
{
$courses = Courses_CourseModel::findLatestOfRequest($requests);
foreach ($courses as $courses) {
$courses->setType('official');
}
Courses_CourseModel::save($courses);
Requests_ApprovalChainModel::advance($requests);
return $requests;
}
public function userMadeDecisions($requests, $requestDecisions)
{
// Don't do anything here, this is an automated action.
}
}
<?php
class Courses_ApprovalActionsSubjectRouterModel extends Requests_ApprovalActionModel
{
public static function find($id)
{
$db = Zend_Registry::get('db');
$select = new Zend_Db_Select($db);
$select->from(array('a' => 'creqApprovalActions'));
$select->join(array('d' => 'creqApprovalActionsSubjectRouter'), 'a.approvalActionId = d.approvalActionId');
if (Unl_Util::isArray($id)) {
$select->where('a.approvalActionId IN(?)', $id);
} else {
$select->where('a.approvalActionId = ?', $id);
}
$records = $db->query($select)->fetchAll();
$objects = new Unl_Model_Collection(__CLASS__);
foreach ($records as $record) {
$object = Unl_Model_Registry::getInstance()->getOrAdd(new self($record));
$objectId = $object->getId();
$objects[$objectId] = $object;
}
if (Unl_Util::isArray($objects)) {
return $objects;
} else {
return array_pop($objects);
}
}
public function consider($requests)
{
$requestParentCourses = Courses_CourseModel::findParentOfRequest($requests);
$requestCurrentCourses = Courses_CourseModel::findLatestOfRequest($requests);
foreach ($requests as $request) {
$course = $requestParentCourses[$request->getId()];
if (!$course) {
$course = $requestCurrentCourses[$request->getId()];
}
$subject = $course->getSubject();
$request->setState($subject);
}
Requests_RequestModel::save($requests);
Requests_ApprovalChainModel::advance($requests);
return $requests;
}
public function userMadeDecisions($requests, $requestDecisions)
{
// Don't do anything here, this is an automated action.
}
}
This diff is collapsed.
This diff is collapsed.
<?php $this->headLink()->appendStylesheet($this->baseUrl() . '/css/courses/new.css'); ?>
<div class="content">
<?php if ($this->activeRequest) { ?>
<h2 class="warning">
Warning! This course is currently awaiting approval in an active request!<br />
You probably do not want to submit another request for this course!
</h2>
<?php } ?>
<h2>
The course <?php echo $this->subject , ' '
, $this->courseNumber
, $this->courseLetter; ?>
does not yet exist.
You may:
</h2>
<ul>
<li>
<a href="<?php echo $this->url(array('action' => 'create',
'type' => 'NewCourse',
'subject' => $this->subject,
'courseNumber' => $this->courseNumber,
'courseLetter' => $this->courseLetter)); ?>">
Request a <b>new course</b>
</a>
</li>
<?php /* li>
<a href="/Request/Create/NewCourseWithIS/<?php echo $this->subject
. '/' . $this->courseNumber
. '/' . $this->courseLetter; ?>">
Request a <b>new course</b> with <b>Integrated Studies</b> status
</a>
</li */ ?>
<li>
<a href="<?php echo $this->url(array('action' => 'create',
'type' => 'NewCourseWithACE',
'subject' => $this->subject,
'courseNumber' => $this->courseNumber,
'courseLetter' => $this->courseLetter)); ?>">
Request a <b>new course</b> with <b>ACE certification</b> (UCC Action won't be taken until Sept. 10, 2008)
</a>
</li>
<li>
<a href="/Request/Search">
Return to Search
</a>
</li>
</ul>
</div>
<?php $this->headLink()->appendStylesheet($this->baseUrl() . '/css/courses/new.css'); ?>
<?php if($this->crosslisting) { ?>
<h2>
The course <?php echo $this->subject , ' '
, $this->courseNumber
, $this->courseLetter; ?>
currently exists as a crosslisting of
<?php echo $this->course->getCourseCode(); ?>
<br />
Please contact the home department for requesting action on this course.
</h2>
<?php } else { ?>
<?php if ($this->activeRequest) { ?>
<h2 class="warning">
Warning! This course is currently awaiting approval in an active request!<br />
You probably do not want to submit another request for this course!
</h2>
<?php } ?>
<h2>
The course <?php echo $this->subject , ' '
, $this->courseNumber
, $this->courseLetter; ?>
currently exists.<br />
You may:
</h2>
<ul>
<li>
<a href="<?php echo $this->url(array('action' => 'create',
'type' => 'ChangeCourse',
'subject' => $this->subject,
'courseNumber' => $this->courseNumber,
'courseLetter' => $this->courseLetter)); ?>">
Request <b>change</b> to an existing course
</a>
</li>
<?php /*li>
<a href="/Request/Create/AddISToCourse/<?php echo $this->subject
. '/' . $this->courseNumber
. '/' . $this->courseLetter; ?>">
Request <b>Integrated Studies</b> status for this course
</a>
</li */ ?>
<?php if (!$this->isAce) { ?>
<li>
<a href="<?php echo $this->url(array('action' => 'create',
'type' => 'AddACEAndChangeCourse',
'subject' => $this->subject,
'courseNumber' => $this->courseNumber,
'courseLetter' => $this->courseLetter)); ?>">
Request <b>change</b> to an existing course and <b>ACE Certification</b> (UCC Action won't be taken until Sept. 10, 2008)
</a>
</li>
<li>
<a href="<?php echo $this->url(array('action' => 'create',
'type' => 'AddACEToCourse',
'subject' => $this->subject,
'courseNumber' => $this->courseNumber,
'courseLetter' => $this->courseLetter)); ?>">
Request <b>ACE Certification</b> <em>only</em> for this course
</a>
</li>
<?php } else if (!$this->isAce) { ?>
<li>
<a href="<?php echo $this->url(array('action' => 'create',
'type' => 'RemoveACEFromCourse',
'subject' => $this->subject,
'courseNumber' => $this->courseNumber,
'courseLetter' => $this->courseLetter)); ?>">
Request <b>removal</b> of <b>ACE Certification</b> for this course
</a>
</li>
<li>
<a href="<?php echo $this->url(array('action' => 'create',
'type' => 'RemoveACEAndChangeCourse',
'subject' => $this->subject,
'courseNumber' => $this->courseNumber,
'courseLetter' => $this->courseLetter)); ?>">
Request both a <b>change</b> and <b>removal</b> of <b>ACE Certification</b> for this course
</a>
</li>
<?php } ?>
<li>
<a href="<?php echo $this->url(array('action' => 'create',
'type' => 'RemoveCourse',
'subject' => $this->subject,
'courseNumber' => $this->courseNumber,
'courseLetter' => $this->courseLetter)); ?>">
Request that this course be <b>removed</b>
</a>
</li>
<li>
<a href="<?php echo $this->baseUrl(); ?>/courses/new/search">
Return to Search
</a>
</li>
</ul>
<?php }
\ No newline at end of file
<?php $this->headLink()->appendStylesheet($this->baseUrl() . '/css/courses/new.css'); ?>
<div id="announcements" class="titled_box">
<div class="box_shadow_2">
<div class="tr"></div>
<div class="tl">
<h2>Course Request Process:</h2>
<h3>Search for course</h3>
</div>
<div class="bl"></div>
</div>
<div class="content">
<form id="search_form" action="<?php echo $this->baseUrl(); ?>/courses/new/search.post" method="post">
<fieldset>
<label>Subject Area</label>
<input type="text" id="subject" name="subject" />
</fieldset>
<fieldset>
<label>Course Number (UG level only)</label>
<input type="text" id="course_number" name="courseNumber" />
</fieldset>
<fieldset>
<label>Alpha Suffix (optional)</label>
<input type="text" id="course_letter" name="courseLetter" />
</fieldset>
<input type="submit" class="submit_button" value="Submit" />
</form>
</div>
</div>
<?php $this->headLink()->appendStylesheet($this->baseUrl() . '/css/courses/view.css'); ?>
<?php $this->headScript()->appendFile($this->baseUrl() . '/javascript/courses/view.js'); ?>
<div id="viewRequest">
<h2><?php echo $this->request->getType(); ?></h2>
<?php
$course = $this->course;
if ($this->parentCourse) {
$parentCourse = $this->parentCourse;
/****************************CHANGE COURSE*************************************/
?>
<div class="current">
<h2>Current</h2>
<div class="bulletinEntry">
<?php echo $this->bulletinEntryDiff($parentCourse, $course, $this->request); ?>
</div>
</div>
<div class="proposed">
<h2>Proposed</h2>
<div class="bulletinEntry">
<?php echo $this->bulletinEntryDiff($parentCourse, $course, $this->request); ?>
</div>
</div>
<div class="clear"></div>
<?php
} else if ($this->request->getType() == 'RemoveCourse') {
/*****************************REMOVE COURSE************************************/
?>
<div class="removed">
<?php echo $this->bulletinEntry($course, $this->request); ?>
</div>
<?php } else {
/*****************************NEW COURSE***************************************/
echo $this->bulletinEntry($course, $this->request);
}
/*****************************ACE COURSE***************************************/
if (in_array($this->request->getType(), array('NewCourseWithACE', 'AddACEToCourse', 'AddACEAndChangeCourse', 'RemoveACEFromCourse', 'RemoveACEAndChangeCourse'))) {
?>
<div>
<h2>Ace Certification</h2>
<h3>Outcomes</h3>
<?php foreach ($course->getAceOutcomes() as $aceOutcome) { ?>
<div>
<?php echo $aceOutcome['slo']; ?>:
<?php echo $aceOutcome['description']; ?>
</div>
<ol>
<li><?php echo $aceOutcome['justification']; ?></li>
<li><?php echo $aceOutcome['studentWork']; ?></li>
<li><?php echo $aceOutcome['assesmentPlan']; ?></li>
</ol>
<?php } ?>
<h3>Reinforcements</h3>
<dl>
<?php foreach ($course->getAceReinforcements() as $aceReinforcement) { ?>
<dt><?php echo $aceReinforcement['longName']; ?></dt>
<dd><?php echo $aceReinforcement['description']; ?></dd>
<?php } ?>
</dl>
</div>
<?php
}
/*****************************COMMON STUFF*************************************/
?>
<?php if (!in_array($this->request->getType(), array('AddACEToCourse', 'RemoveACEFromCourse'))) { ?>
<div id="justification">
<h2>Justification:</h2>
<?php echo $this->request->getJustification(); ?>
</div>
<?php } ?>
<?php
$syllabus = $this->request->getFile(Requests_RequestModel::FILE_TYPE_SYLLABUS);
if ($syllabus) {
?>
<div id="syllabus">
<h2>Syllabus:</h2>
<?php if ($syllabus['file']) { ?>
<a href="<?php echo $this->baseUrl(); ?>/requests/view/get-file/fileId/<?php echo $syllabus['file']; ?>">
<?php } else { ?>
<a href="<?php echo $this->baseUrl(); ?>/requests/view/get-file/fileId/session/type/<?php echo Requests_RequestModel::FILE_TYPE_SYLLABUS; ?>">
<?php } ?>
<?php echo $syllabus['title']; ?>
</a>
</div>
<?php } ?>
<?php
$crosslistMemo = $this->request->getFile(Requests_RequestModel::FILE_TYPE_CROSSLIST_MEMO);
if ($crosslistMemo) {
?>
<div id="crosslistMemo">
<h2>Crosslist Memo</h2>
<?php if ($crosslistMemo['file']) { ?>
<a href="<?php echo $this->baseUrl(); ?>/requests/view/get-file/fileId/<?php echo $crosslistMemo['file']; ?>">
<?php } else { ?>
<a href="<?php echo $this->baseUrl(); ?>/requests/view/get-file/fileId/session/type/<?php echo Requests_RequestModel::FILE_TYPE_CROSSLIST_MEMO; ?>">
<?php } ?>
<?php echo $crosslistMemo['title']; ?>
</a>
</div>
<?php } ?>
<?php
$ISNarrative = $this->request->getFile(Requests_RequestModel::FILE_TYPE_IS_NARRATIVE);
if ($ISNarrative) {
?>
<div id="isNarrative">
<h2>IS Narrative</h2>
<?php if ($ISNarrative['file']) { ?>
<a href="<?php echo $this->baseUrl(); ?>/requests/view/get-file/fileId/<?php echo $ISNarrative['file']; ?>">
<?php } else { ?>
<a href="<?php echo $this->baseUrl(); ?>/requests/view/get-file/fileId/session/type/<?php echo Requests_RequestModel::FILE_TYPE_IS_NARRATIVE; ?>">
<?php } ?>
<?php echo $ISNarrative['title']; ?>
</a>
</div>
<?php } ?>
<?php
$additionalDocumentation = $this->request->getFile(Requests_RequestModel::FILE_TYPE_OTHER);
if ($additionalDocumentation) {
?>
<div id="additionalDocumentation">
<h2>Additional Documentation</h2>
<?php if ($additionalDocumentation['file']) { ?>
<a href="<?php echo $this->baseUrl(); ?>/requests/view/get-file/fileId/<?php echo $additionalDocumentation['file']; ?>">
<?php } else { ?>
<a href="<?php echo $this->baseUrl(); ?>/requests/view/get-file/fileId/session/type/<?php echo Requests_RequestModel::FILE_TYPE_OTHER; ?>">
<?php } ?>
<?php echo $additionalDocumentation['title']; ?>
</a>
</div>
<?php } ?>
<?php if ($this->preview) { ?>
<form method="post" action="<?php echo $this->baseUrl(); ?>/courses/edit/submit.post">
<?php if ($this->initialRequest) { ?>
<fieldset>
<label>
Effective no sooner than:
<?php
echo $this->formSelect(
'effectiveSemester',
$this->course->effectiveSemester,
array('id' => 'effectiveSemester'),
$this->terms
);
?>
</label>
</fieldset>
<?php if ($this->isRequestValid) { ?>
<input id="submit_request" type="submit" name="submitType" value="Submit" />
<?php } else { ?>
<div id="requestNotReadyMessage">
This request may not be submitted yet, required information is missing.
</div>
<input id="submit_request" type="submit" name="submitType" value="Return to Edit" />
<?php } ?>
<input id="save_request" type="submit" name="submitType" value="Save for Later Submission" />
<input id="cancel_request" type="submit" name="submitType" value="Cancel Request" />
<?php } else { ?>
<?php if ($this->isRequestValid) { ?>
<input id="submit_request" type="submit" name="submitType" value="Save Changes" />
<?php } else { ?>
<div id="requestNotReadyMessage">
This request may not be saved yet, required information is missing.
</div>
<?php } ?>
<input id="submit_request" type="submit" name="submitType" value="Return to Edit" />
<input id="cancel_request" type="submit" name="submitType" value="Abandon Changes" />
<?php } ?>
</form>
<?php } else { ?>
<?php
if (!in_array($this->selectedCommentTab, array('commentsTab', 'editorCommentsTab', 'privateCommentsTab'))) {
$this->selectedCommentTab = 'commentsTab';
}
?>
<div id="comments">
<div class="tabBar">
<a href="#" id="commentsTab"<?php if ($this->selectedCommentTab == 'commentsTab') { ?> class="selected"<?php } ?>>Comments</a>
<a href="#" id="editorCommentsTab"<?php if ($this->selectedCommentTab == 'editorCommentsTab') { ?> class="selected"<?php } ?>>Editor Comments</a>
<a href="#" id="privateCommentsTab"<?php if ($this->selectedCommentTab == 'privateCommentsTab') { ?> class="selected"<?php } ?>>Private Comments</a>
</div>
<div class="tabContent<?php if ($this->selectedCommentTab == 'commentsTab') { ?> selected<?php } ?>" id="commentsContent">
<table class="comments">
<tr>
<th class="who">Who</th>
<th class="when">When</th>
<th class="what">What</th>
</tr>
<?php $row = 0; foreach ($this->comments as $key => $comment) {
if ($comment->getVisibility() == 'global') { ?>
<tr class="<?php echo ($row++ % 2) ? 'evenRow' : 'oddRow'; ?>">
<td class="who"><?php echo $comment->getUser()->getUsername(); ?></td>
<td class="when"><?php echo $comment->getTime(); ?></td>
<td class="what"><?php echo $comment->getText(); ?></td>
</tr>
<?php }} ?>
</table>
<form method="post" action="<?php echo $this->baseUrl(); ?>/requests/view/add-comment/requestId/<?php echo $this->request->getId(); ?>">
<div>
<textarea name="comment"></textarea>
</div>
<?php echo $this->formHidden('visibility', 'global'); ?>
<?php echo $this->formSubmit('submit', 'Add Comment'); ?>
</form>
</div>
<div class="tabContent<?php if ($this->selectedCommentTab == 'editorCommentsTab') { ?> selected<?php } ?>" id="editorCommentsContent">
<table class="comments">
<tr>
<th class="who">Who</th>
<th class="when">When</th>
<th class="what">What</th>
</tr>
<?php $row = 0; foreach ($this->comments as $key => $comment) {
if ($comment->getVisibility() == 'editorial') { ?>
<tr class="<?php echo ($row++ % 2) ? 'evenRow' : 'oddRow'; ?>">
<td class="who"><?php echo $comment->getUser()->getUsername(); ?></td>
<td class="when"><?php echo $comment->getTime(); ?></td>
<td class="what"><?php echo $comment->getText(); ?></td>
</tr>
<?php }} ?>
</table>
<form method="post" action="<?php echo $this->baseUrl(); ?>/requests/view/add-comment/requestId/<?php echo $this->request->getId(); ?>">
<div>
<textarea name="comment"></textarea>
</div>
<?php echo $this->formHidden('visibility', 'editorial'); ?>
<?php echo $this->formSubmit('submit', 'Add Comment'); ?>
</form>
</div>
<div class="tabContent<?php if ($this->selectedCommentTab == 'privateCommentsTab') { ?> selected<?php } ?>" id="privateCommentsContent">
<table class="comments">
<tr>
<th class="who">Who</th>
<th class="when">When</th>
<th class="what">What</th>
</tr>
<?php $row = 0; foreach ($this->comments as $key => $comment) {
if ($comment->getVisibility() == 'self' &&
$comment->getUser() == $this->user) { ?>
<tr class="<?php echo ($row++ % 2) ? 'evenRow' : 'oddRow'; ?>">
<td class="who"><?php echo $comment->getUser()->getUsername(); ?></td>
<td class="when"><?php echo $comment->getTime(); ?></td>
<td class="what"><?php echo $comment->getText(); ?></td>
</tr>
<?php }} ?>
</table>
<form method="post" action="<?php echo $this->baseUrl(); ?>/requests/view/add-comment/requestId/<?php echo $this->request->getId(); ?>">
<div>
<textarea name="comment"></textarea>
</div>
<?php echo $this->formHidden('visibility', 'self'); ?>
<?php echo $this->formSubmit('submit', 'Add Comment'); ?>
</form>
</div>
</div>
<?php if ($this->prevRequestId > 0) { ?>
<a id="prevRequestLink" href="/Request/View/<?php echo $this->prevRequestId; ?>">&lt;--Prev</a>
<?php } ?>
<?php if ($this->nextRequestId > 0) { ?>
<a id="nextRequestLink" href="/Request/View/<?php echo $this->nextRequestId; ?>">Next--&gt;</a>
<?php } ?>
<?php } ?>
<?php if($this->canEdit) { ?>
<div id="editLink">
<a href="/Request/Load/<?php echo $this->request->getId(); ?>">-Edit-</a>
</div>
<?php } ?>
<div class="clear"></div>
</div>
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