X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=group_delete.php;h=2865351a48940c31157510982b6ea427b4edef82;hb=HEAD;hp=65875fad1f0726306ac711ca5fcac062beb3df15;hpb=83987222fbafb8d6dbbbd9578ed2f949f65004d3;p=timetracker.git diff --git a/group_delete.php b/group_delete.php index 65875fad..2865351a 100644 --- a/group_delete.php +++ b/group_delete.php @@ -28,20 +28,25 @@ require_once('initialize.php'); import('form.Form'); +import('ttGroupHelper'); // Access checks. -if (!ttAccessAllowed('delete_group')) { - header('Location: access_denied.php'); +if (!(ttAccessAllowed('delete_group') || ttAccessAllowed('manage_subgroups'))) { + header('Location: access_denied.php'); // No rights. exit(); } -// End of access checks. - -// TODO: refactor this... and the template. $group_id = (int)$request->getParameter('id'); +if (!$user->isGroupValid($group_id)) { + header('Location: access_denied.php'); // Wrong group id. + exit(); +} +if ($group_id == $user->group_id && !$user->can('delete_group')) { + header('Location: access_denied.php'); // Trying to delete home group without right. + exit(); +} +// End of access checks. -$admin = new ttAdmin(); -$group_details = $admin->getGroupDetails($group_id); -$group_name = $group_details['group_name']; +$group_name = ttGroupHelper::getGroupName($group_id); $form = new Form('groupForm'); $form->addInput(array('type'=>'hidden','name'=>'id','value'=>$group_id)); @@ -50,22 +55,38 @@ $form->addInput(array('type'=>'submit','name'=>'btn_cancel','value'=>$i18n->get( if ($request->isPost()) { if ($request->getParameter('btn_delete')) { - $result = $admin->markGroupDeleted($group_id); - if ($result) { - header('Location: admin_groups.php'); - exit(); + $markedDeleted = ttGroupHelper::markGroupDeleted($group_id); + if ($markedDeleted) { + if ($group_id == $user->group_id) { + // We marked deleted our own group. Logout and redirect to login page. + $auth->doLogout(); + session_unset(); + header('Location: login.php'); + exit(); + } else { + // We marked deleted a subgroup. + if ($user->behalfGroup && $user->behalfGroup->id == $group_id) + $user->setOnBehalfGroup($user->group_id); // Remove on behalf group from session. + header('Location: success.php'); + exit(); + } } else $err->add($i18n->get('error.db')); } if ($request->getParameter('btn_cancel')) { - header('Location: admin_groups.php'); - exit(); + if ($group_id == $user->group_id) { + header('Location: group_edit.php'); + exit(); + } else { + header('Location: groups.php'); + exit(); + } } } // isPost $smarty->assign('group_to_delete', $group_name); $smarty->assign('forms', array($form->getName()=>$form->toArray())); $smarty->assign('title', $i18n->get('title.delete_group')); -$smarty->assign('content_page_name', 'admin_group_delete.tpl'); +$smarty->assign('content_page_name', 'group_delete.tpl'); $smarty->display('index.tpl');