From e08fc01af521334465e4cd356e8a55c8386960f7 Mon Sep 17 00:00:00 2001 From: Damien Regad Date: Fri, 1 Nov 2013 08:50:27 +0100 Subject: [PATCH] Add user to project when locking themselves out Automatically add the current user with their access level to the project's user list if after updating it they can no longer access it (i.e. by making it private). Fixes #16554 --- manage_proj_update.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/manage_proj_update.php b/manage_proj_update.php index 4f608c9251..b7fc3752d1 100644 --- a/manage_proj_update.php +++ b/manage_proj_update.php @@ -56,9 +56,21 @@ $f_enabled = gpc_get_bool( 'enabled' ); $f_inherit_global = gpc_get_bool( 'inherit_global', 0 ); -access_ensure_project_level( config_get( 'manage_project_threshold' ), $f_project_id ); +$t_manage_project_threshold = config_get( 'manage_project_threshold' ); +access_ensure_project_level( $t_manage_project_threshold, $f_project_id ); + +# Save current access level to that project, so we can restore it if needed +$t_user_id = auth_get_current_user_id(); +$t_access_level = user_get_access_level( $t_user_id, $f_project_id ); project_update( $f_project_id, $f_name, $f_description, $f_status, $f_view_state, $f_file_path, $f_enabled, $f_inherit_global ); + +# User just locked themselves out of the project by making it private, +# so we add them to the project with their previous access level +if( VS_PRIVATE == $f_view_state && !access_has_project_level( $t_manage_project_threshold, $f_project_id ) ) { + project_add_user( $f_project_id, $t_user_id, $t_access_level ); +} + event_signal( 'EVENT_MANAGE_PROJECT_UPDATE', array( $f_project_id ) ); form_security_purge( 'manage_proj_update' );