Skip to content
Snippets Groups Projects
Select Git revision
  • ed81b1ca9b68af66eb8edff91e98a0ab2ee185a3
  • master default
  • disable-new-requests
  • fix-bulletin-view-missing-notes-error
  • add-missing-queue-managers
  • projects-task-53
  • projects-task-51
  • projects-task-43
  • projects-task-24
  • projects-task-31
  • projects-task-32
  • projects-task-8
  • project-setup-docs
  • projects-task-28
  • projects-task-27
  • projects-task-9
  • projects-task-7
  • mass-update-course-codes-in-sections
  • wdn-four
  • learning-outcomes
  • additional-bulletin-pages
  • svn-redesign
  • svn-popups
  • svn-trunk
  • svn-performance
  • svn-tim
26 results

ViewController.php

Blame
  • user avatar
    Tim Steiner authored
    On the view request screen, when a user can make a decision, show the role(s) that is making the decision.
    ed81b1ca
    History
    ViewController.php 6.40 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) {
    	        	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;
    	        	    foreach ($allowedRoles as $allowedRole) {
    	        	    	$actionRoleNames[] = $userRoles[$allowedRole]->getName();
    	        	    }
    	        	}
    	        	$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;
        	$this->view->actionRoleNames = $actionRoleNames;
    
            $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;
        }
    }