Select Git revision
ApprovalBodyAdminController.php
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());
}
}