Select Git revision
lib_head.js
-
Laurent Destailleur authoredLaurent Destailleur authored
ViewController.php 6.14 KiB
<?php
class Courses_ViewController extends App_Controller_Action
{
public function indexAction()
{
$requestId = $this->getRequest()->getParam('id');
$myRequestSession = new Zend_Session_Namespace('My Requests');
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', 'AddISToCourse', 'AddACEAndChangeCourse'))) {
$parentCourse = Courses_CourseModel::findParentOfRequest($request);
}
$initialRequest = false;
$preview = false;
// if we can know our role, we can create next and prev links.
$roleId = $myRequestSession->lastRoleId;
$list = $myRequestSession->lastList;
if ($roleId) {
$requestOrder = $myRequestSession->requestOrder[$roleId][$list];
$listPosition = array_search($request->getId(), $requestOrder);
if ($listPosition == 0) {
$prevRequestId = $requestOrder[count($requestOrder) - 1];
} else {
$prevRequestId = $requestOrder[$listPosition - 1];
}
if ($listPosition == count($requestOrder) - 1) {
$nextRequestId = $requestOrder[0];
} else {
$nextRequestId = $requestOrder[$listPosition + 1];
}
}
}
$comments = Requests_CommentsModel::findByRequest($request);
$user = Auth_UserModel::findCurrentUser();
$action = null;
$canEdit = false;
if ($request->getId()) {
$possibleAction = Requests_ApprovalActionModel::findByRequest($request);
if ($possibleAction instanceof Requests_ApprovalActionSubmitterApprovalModel && $request->getOwner() == $user->getId()) {
$action = $possibleAction;
}
$userRoles = Requests_ApprovalRoleModel::findByUser($user);
$allowedRoles = array_intersect(array(1) + $possibleAction->getParticipatingRoleIds(), $userRoles->getId());
if (count($allowedRoles) > 0) {
$action = $possibleAction;
}
$editAllowedRoles = array_intersect(array(1) + $possibleAction->getEditingRoleIds(), $userRoles->getId());
if (count($editAllowedRoles) > 0) {
$canEdit = true;
}
if ($action) {
$selectedDecision = '_null';
$defaultDecision = '--Decision--';
$votes = Requests_ApproverVoteModel::findUsersVotesForRequests($user, $request);
$vote = $votes[$request->getId()];
if ($vote) {
if ($vote->getApprovalAction() == $action->getId() && $request->getLastApprovalTime()->isEarlier($vote->getTime())) {
$selectedDecision = $vote->getVote();
} else {
$defaultDecision = 'PREVOTE: ' . $vote->getVote();
}
}
$this->view->selectedDecision = $selectedDecision;
$this->view->defaultDecision = $defaultDecision;
}
}
$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();
$this->view->prevRequestId = $prevRequestId;
$this->view->nextRequestId = $nextRequestId;
$this->view->canEdit = $canEdit;
$this->view->lastList = $list;
$this->view->lastRoleId = $roleId;
$this->view->action = $action;
$decisionSession = new Zend_Session_Namespace('decidePostAction');
$this->view->decisionMessage = $decisionSession->message;
unset ($decisionSession->message);
$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;
}
public function printAction()
{
$requestId = $this->getRequest()->getParam('id');
$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);
}
$this->view->request = $request;
$this->view->course = $course;
$this->view->parentCourse = $parentCourse;
$this->_helper->layout->setLayout('naked-layout');
}
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;
}
return $terms;
}
}