From 1debe567f5f9fdeff5a2afbaa4619992da67f437 Mon Sep 17 00:00:00 2001 From: msquare Date: Fri, 30 Sep 2016 16:55:47 +0200 Subject: simplify user_angeltype_add_controller --- includes/controller/user_angeltypes_controller.php | 155 ++++++++++----------- 1 file changed, 71 insertions(+), 84 deletions(-) (limited to 'includes/controller/user_angeltypes_controller.php') diff --git a/includes/controller/user_angeltypes_controller.php b/includes/controller/user_angeltypes_controller.php index cdd6f951..418f21f9 100644 --- a/includes/controller/user_angeltypes_controller.php +++ b/includes/controller/user_angeltypes_controller.php @@ -310,107 +310,94 @@ function user_angeltype_update_controller() { * User joining an Angeltype (Or Coordinator doing this for him). */ function user_angeltype_add_controller() { - global $user, $privileges; + global $user; - if (! isset($_REQUEST['angeltype_id'])) { - error(_("Angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } + $angeltype = load_angeltype(); - $angeltype = AngelType($_REQUEST['angeltype_id']); - if ($angeltype === false) { - engelsystem_error("Unable to load angeltype."); + // User is joining by itself + if (! User_is_AngelType_coordinator($user, $angeltype)) { + return user_angeltype_join_controller($angeltype); } - if ($angeltype == null) { - error(_("Angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); + + // Allow to add any user + + // Default selection + $user_source = $user; + + // Load possible users, that are not in the angeltype already + $users_source = Users_by_angeltype_inverted($angeltype); + if ($users_source === false) { + engelsystem_error("Unable to load users."); } - if (User_is_AngelType_coordinator($user, $angeltype)) { - // Allow to add any user - $user_id = $user['UID']; - - $users_source = Users_by_angeltype_inverted($angeltype); - if ($users_source === false) { - engelsystem_error("Unable to load users."); - } - - if (isset($_REQUEST['submit'])) { - $valid = true; - - if (isset($_REQUEST['user_id']) && in_array($_REQUEST['user_id'], array_map(function ($user) { - return $user['UID']; - }, $users_source))) { - $user_id = $_REQUEST['user_id']; - } else { - $valid = false; - error(_("Please select a user.")); - } - - if ($valid) { - foreach ($users_source as $user_source) { - if ($user_source['UID'] == $user_id) { - $user_angeltype_id = UserAngelType_create($user_source, $angeltype); - if ($user_angeltype_id === false) { - engelsystem_error("Unable to create user angeltype."); - } - - engelsystem_log(sprintf("User %s added to %s.", User_Nick_render($user_source), AngelType_name_render($angeltype))); - success(sprintf(_("User %s added to %s."), User_Nick_render($user_source), AngelType_name_render($angeltype))); - - $result = UserAngelType_confirm($user_angeltype_id, $user_source); - if ($result === false) { - engelsystem_error("Unable to confirm user angeltype."); - } - engelsystem_log(sprintf("User %s confirmed as %s.", User_Nick_render($user), AngelType_name_render($angeltype))); - - redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); - } - } - } - } - - return [ - _("Add user to angeltype"), - UserAngelType_add_view($angeltype, $users_source, $user_id) - ]; - } else { - // Allow only me - $user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype); - if ($user_angeltype === false) { - engelsystem_error("Unable to load user angeltype."); - } - if ($user_angeltype != null) { - error(sprintf(_("You are already a %s."), $angeltype['name'])); - redirect(page_link_to('angeltypes')); - } + if (isset($_REQUEST['submit'])) { + $user_source = load_user(); - if (isset($_REQUEST['confirmed'])) { - $user_angeltype_id = UserAngelType_create($user, $angeltype); + if (! UserAngelType_exists($user_source, $angeltype)) { + $user_angeltype_id = UserAngelType_create($user_source, $angeltype); if ($user_angeltype_id === false) { engelsystem_error("Unable to create user angeltype."); } - $success_message = sprintf(_("You joined %s."), $angeltype['name']); - engelsystem_log(sprintf("User %s joined %s.", User_Nick_render($user), AngelType_name_render($angeltype))); - success($success_message); + engelsystem_log(sprintf("User %s added to %s.", User_Nick_render($user_source), AngelType_name_render($angeltype))); + success(sprintf(_("User %s added to %s."), User_Nick_render($user_source), AngelType_name_render($angeltype))); - if (in_array('admin_user_angeltypes', $privileges)) { - $result = UserAngelType_confirm($user_angeltype_id, $user); - if ($result === false) { - engelsystem_error("Unable to confirm user angeltype."); - } - engelsystem_log(sprintf("User %s confirmed as %s.", User_Nick_render($user), AngelType_name_render($angeltype))); + $result = UserAngelType_confirm($user_angeltype_id, $user_source); + if ($result === false) { + engelsystem_error("Unable to confirm user angeltype."); } + engelsystem_log(sprintf("User %s confirmed as %s.", User_Nick_render($user), AngelType_name_render($angeltype))); redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); } + } + + return [ + _("Add user to angeltype"), + UserAngelType_add_view($angeltype, $users_source, $user_source['UID']) + ]; +} + +/** + * A user joins an angeltype. + */ +function user_angeltype_join_controller($angeltype) { + global $user, $privileges; + + $user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype); + if ($user_angeltype === false) { + engelsystem_error("Unable to load user angeltype."); + } + if ($user_angeltype != null) { + error(sprintf(_("You are already a %s."), $angeltype['name'])); + redirect(page_link_to('angeltypes')); + } + + if (isset($_REQUEST['confirmed'])) { + $user_angeltype_id = UserAngelType_create($user, $angeltype); + if ($user_angeltype_id === false) { + engelsystem_error("Unable to create user angeltype."); + } + + $success_message = sprintf(_("You joined %s."), $angeltype['name']); + engelsystem_log(sprintf("User %s joined %s.", User_Nick_render($user), AngelType_name_render($angeltype))); + success($success_message); - return [ - sprintf(_("Become a %s"), $angeltype['name']), - UserAngelType_join_view($user, $angeltype) - ]; + if (in_array('admin_user_angeltypes', $privileges)) { + $result = UserAngelType_confirm($user_angeltype_id, $user); + if ($result === false) { + engelsystem_error("Unable to confirm user angeltype."); + } + engelsystem_log(sprintf("User %s confirmed as %s.", User_Nick_render($user), AngelType_name_render($angeltype))); + } + + redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); } + + return [ + sprintf(_("Become a %s"), $angeltype['name']), + UserAngelType_join_view($user, $angeltype) + ]; } /** -- cgit v1.2.3-54-g00ecf