Added API function set delete_user_profile_info

This commit is contained in:
fermin831 2018-10-29 13:34:30 +01:00
parent bf7cdcc7ff
commit c7a624000e
3 changed files with 60 additions and 34 deletions

View File

@ -66,40 +66,19 @@ $id_profile = (int) get_parameter ('id');
// Profile deletion
if ($delete_profile) {
$count_users_admin_in_profile = db_get_value_sql("
SELECT COUNT(*)
FROM tusuario
WHERE is_admin = 1 AND id_user IN (
SELECT id_usuario
FROM tusuario_perfil
WHERE id_perfil = " . $id_profile . ")");
if ($count_users_admin_in_profile >= 1) {
ui_print_error_message(
__('Unsucessful delete profile. Because the profile is used by some admin users.'));
// Delete profile
$profile = db_get_row('tperfil', 'id_perfil', $id_profile);
$ret = profile_delete_profile_and_clean_users ($id_profile);
if ($ret === false) {
ui_print_error_message(__('There was a problem deleting the profile'));
}
else {
// Delete profile
$profile = db_get_row('tperfil', 'id_perfil', $id_profile);
$sql = sprintf ('DELETE FROM tperfil WHERE id_perfil = %d', $id_profile);
$ret = db_process_sql ($sql);
if ($ret === false) {
ui_print_error_message(__('There was a problem deleting the profile'));
}
else {
db_pandora_audit("Profile management",
"Delete profile ". $profile['name']);
ui_print_success_message(__('Successfully deleted'));
}
//Delete profile from user data
$sql = sprintf ('DELETE FROM tusuario_perfil WHERE id_perfil = %d', $id_profile);
db_process_sql ($sql);
$id_profile = 0;
db_pandora_audit("Profile management",
"Delete profile ". $profile['name']);
ui_print_success_message(__('Successfully deleted'));
}
$id_profile = 0;
}
// Store the variables when create or update

View File

@ -8835,13 +8835,13 @@ function api_set_create_user_profile_info ($thrash1, $thrash2, $other, $returnTy
* Update an user profile.
*
* @param int Profile id
* @param Reserved $thrash2
* @param Reserved $thrash1
* @param array parameters in array: name|IR|IW|IM|AR|AW|AD|LW|LM|UM|DM|ER|EW|EM|RR|RW|RM|MR|MW|MM|VR|VW|VM|PM
* @param string Return type (csv, json, string...)
*
* api.php?op=set&op2=create_user_profile_info&return_type=json&other=API_profile%7C1%7C0%7C0%7C1%7C0%7C0%7C0%7C0%7C0%7C0%7C1%7C0%7C0%7C1%7C0%7C0%7C1%7C0%7C0%7C1%7C0%7C0%7C0&other_mode=url_encode_separator_%7C&apipass=1234&user=admin&pass=pandora
* api.php?op=set&op2=update_user_profile_info&return_type=json&id=6&other=API_profile_updated%7C%7C%7C%7C1%7C1%7C1%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C&other_mode=url_encode_separator_%7C&apipass=1234&user=admin&pass=pandora
*/
function api_set_update_user_profile_info ($id_profile, $thrash2, $other, $returnType) {
function api_set_update_user_profile_info ($id_profile, $thrash1, $other, $returnType) {
global $config;
if (!check_acl($config['id_user'], 0, "PM")){
@ -8891,6 +8891,39 @@ function api_set_update_user_profile_info ($id_profile, $thrash2, $other, $retur
}
}
/**
* Delete an user profile.
*
* @param int Profile id
* @param Reserved $thrash1
* @param Reserved $thrash2
* @param string Return type (csv, json, string...)
*
* api.php?op=set&op2=delete_user_profile_info&return_type=json&id=7&other_mode=url_encode_separator_%7C&apipass=1234&user=admin&pass=pandora
*/
function api_set_delete_user_profile_info ($id_profile, $thrash1, $thrash2, $returnType) {
global $config;
if (!check_acl($config['id_user'], 0, "PM")){
returnError('forbidden', 'string');
return;
}
$profile = db_get_value ('id_perfil', 'tperfil', 'id_perfil', $id_profile);
if ($profile === false) {
returnError('id_not_found', 'string');
return;
}
$return = profile_delete_profile_and_clean_users($id_profile);
if ($return === false) {
returnError('error_delete_user_profile_info', __('Error deleting user profile'));
} else {
returnData($returnType, array('type' => 'array', 'data' => 1));
}
}
/**
* Create new incident in Pandora.
*

View File

@ -144,6 +144,20 @@ function profile_delete_profile ($id_profile) {
return (bool)db_process_sql_delete('tperfil', array('id_perfil' => $id_profile));
}
/**
* Delete profile from database and remove from the assigned users (tusuario_perfil)
*
* @param int Profile ID
*
* @return bool Whether or not it's deleted in both tables
*/
function profile_delete_profile_and_clean_users ($id_profile) {
return
(bool)db_process_sql_delete('tperfil', array('id_perfil' => $id_profile)) &&
(bool)db_process_sql_delete('tusuario_perfil', array('id_perfil' => $id_profile))
;
}
/**
* Print the table to display, create and delete profiles
*