Skip to content
Snippets Groups Projects
Select Git revision
  • 6ff5f30c1a45e342c911abe33f1cc301391f88e6
  • 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

ApprovalBodyAdminController.php

Blame
  • ApprovalBodyAdminController.php 4.73 KiB
    <?php
    
    class Requests_ApprovalBodyAdminController extends App_Controller_Action
    {
        public function preDispatch()
        {
            $user = Auth_UserModel::findCurrentUser();
            $roles = Auth_GroupModel::findByUser($user);
            if (!in_array(1, $roles->getId())) {
                throw new Exception('You must be logged in to view this page.');
            }
        }
    	
    	public function indexAction()
    	{
    		$approvalBodies = Requests_ApprovalBodyModel::findAll();
    		$approvalBodyRoles = Requests_ApprovalRoleModel::findByParentBody($approvalBodies);
    		
    		$this->view->approvalBodies = $approvalBodies;
    		$this->view->approvalBodyRoles = $approvalBodyRoles;
    	}
    	
    	public function editBodyAction()
    	{
    		$approvalBodyId = $this->_getParam('id');
    		$approvalBody = Requests_ApprovalBodyModel::find($approvalBodyId);
    		if (!$approvalBody) {
    			$approvalBody = Requests_ApprovalBodyModel::fetchNew();
    		}
    		
    		$groups = Auth_GroupModel::findAll(true);
    		$groupsArray = array();
    		foreach ($groups as $group) {
    			$groupsArray[$group->getId()] = $group->getName();
    		}
    		
    		$defaultChains = Requests_DefaultApprovalChainsModel::findForApprovalBody($approvalBody);
    		$approvalChains = Requests_ApprovalChainModel::findForApprovalBody($approvalBody);
    		
    		$this->view->approvalBody = $approvalBody;
    		$this->view->groups = $groupsArray;
    		$this->view->approvalChains = $approvalChains->arrayFromMethod('getName');
    		$this->view->defaultChains = $defaultChains;
    	}
    	
    	public function editBodyPostAction()
    	{
    		$in = $this->_getAllParams();
    		
    	    $approvalBody = Requests_ApprovalBodyModel::find($in['id']);
    		if (!$approvalBody) {
    			$approvalBody = Requests_ApprovalBodyModel::fetchNew();
    		}
    		$approvalBody->setName($in['name']);
    		$approvalBody->setDescription($in['description']);
    		$adminGroup = Auth_GroupModel::find($in['admin']);
    		if ($adminGroup) {
                $approvalBody->setAdminGroup($adminGroup);
    		}
    		
    		Requests_ApprovalBodyModel::save($approvalBody);
    		
    		
    		$approvalChainIds = array_unique($in['defaultChains']);
            $approvalChains = Requests_ApprovalChainModel::find($approvalChainIds);
            
            $defaultApprovalChains = Requests_DefaultApprovalChainsModel::findForApprovalBody($approvalBody);
            $requestTypes = Requests_RequestModel::getTypes();
            
            foreach ($requestTypes as $typeId => $typeName) {
                $defaultChain = $approvalChains[$in['defaultChains'][$typeId]];
                if (!$defaultChain) { 
                    continue;
                }
                if (!$defaultApprovalChains[$typeId]) {
                    $defaultApprovalChains[$typeId] = Requests_DefaultApprovalChainsModel::fetchNew();
                }
                $defaultApprovalChains[$typeId]->setApprovalBody($approvalBody);
                $defaultApprovalChains[$typeId]->setRequestType($typeId);
                $defaultApprovalChains[$typeId]->setApprovalChain($defaultChain);
            }
            
            Requests_DefaultApprovalChainsModel::save($defaultApprovalChains);
    		
    		
    		$this->_redirect('/requests/approval-body-admin/edit-body/id/' . $approvalBody->getId());
    	}
    	
    	public function editRoleAction()
    	{
            $approvalRoleId = $this->_getParam('id');
            $approvalBodyId = $this->_getParam('approvalBody');
            
            $approvalRole = Requests_ApprovalRoleModel::find($approvalRoleId);
            if (!$approvalRole) {
                $approvalRole = Requests_ApprovalRoleModel::fetchNew();
            }
            
            $approvalBody = Requests_ApprovalBodyModel::find($approvalBodyId);
            if (!$approvalBody) {
            	$approvalBody = Requests_ApprovalBodyModel::fetchNew();
            }
            
            $groups = Auth_GroupModel::findAll(true);
            $groupsArray = array();
            foreach ($groups as $group) {
                $groupsArray[$group->getId()] = $group->getName();
            }
            
            $this->view->approvalRole = $approvalRole;
            $this->view->approvalBody = $approvalBody;
            $this->view->groups = $groupsArray;
    	}
    	
    	public function editRolePostAction()
    	{
    		$in = $this->_getAllParams();
            
            $approvalRole = Requests_ApprovalRoleModel::find($in['id']);
            if (!$approvalRole) {
            	$approvalRole = Requests_ApprovalRoleModel::fetchNew();
            }
            $approvalBody = Requests_ApprovalBodyModel::find($in['approvalBody']);
             
            $approvalRole->setName($in['name']);
            $approvalRole->setNotice($in['notice']);
            $group = Auth_GroupModel::find($in['group']);
            if ($group) {
                $approvalRole->setGroup($group);
            }
            if ($approvalBody && !$approvalRole->getId()) {
            	$approvalRole->setApprovalBody($approvalBody);
            }
            
            Requests_ApprovalRoleModel::save($approvalRole);
            
            $this->_redirect('/requests/approval-body-admin/edit-role/id/' . $approvalRole->getId());
    	}
    	
    }