Adding new configuration value to block the elimination of users by the admin

skala
Julio Montoya 15 years ago
parent 7367cac7ac
commit a9b134d29e
  1. 39
      main/admin/user_list.php
  2. 4
      main/inc/lib/usermanager.lib.php
  3. 3
      main/install/configuration.dist.php

@ -15,6 +15,13 @@ require_once api_get_path(LIBRARY_PATH).'security.lib.php';
require_once api_get_path(LIBRARY_PATH).'xajax/xajax.inc.php';
require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php';
global $_configuration;
// Blocks the possibility to delete a user
$delete_user_available = true;
if (isset($_configuration['deny_delete_users']) && $_configuration['deny_delete_users']) {
$delete_user_available = false;
}
$htmlHeadXtra[] = '<script src="../inc/lib/javascript/jquery.js" type="text/javascript" language="javascript"></script>';
$htmlHeadXtra[] = '<script type="text/javascript">
function load_course_list (div_course,my_user_id) {
@ -550,11 +557,8 @@ function user_filter($name, $params, $row) {
* @param array Row of elements to alter
* @return string Some HTML-code with modify-buttons
*/
function modify_filter($user_id,$url_params,$row)
{
global $charset;
global $_user;
global $_admins_list;
function modify_filter($user_id,$url_params,$row) {
global $charset, $_user, $_admins_list, $delete_user_available;
$is_admin = in_array($user_id,$_admins_list);
$statusname = api_get_status_langvars();
$user_is_anonymous = false;
@ -600,14 +604,13 @@ function modify_filter($user_id,$url_params,$row)
} else {
$result .= Display::return_icon('edit_na.gif', get_lang('Edit')).'</a>&nbsp;&nbsp;';
}
if ($row[0] != $_user['user_id'] && !$user_is_anonymous) {
// you cannot lock yourself out otherwise you could disable all the accounts including your own => everybody is locked out and nobody can change it anymore.
$result .= '<a href="user_list.php?action=delete_user&amp;user_id='.$user_id.'&amp;'.$url_params.'&amp;sec_token='.$_SESSION['sec_token'].'" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES,$charset))."'".')) return false;">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>';
} else {
$result .= Display::return_icon('delete_na.gif', get_lang('Delete'));
if ($delete_user_available) {
if ($row[0] != $_user['user_id'] && !$user_is_anonymous) {
// you cannot lock yourself out otherwise you could disable all the accounts including your own => everybody is locked out and nobody can change it anymore.
$result .= '<a href="user_list.php?action=delete_user&amp;user_id='.$user_id.'&amp;'.$url_params.'&amp;sec_token='.$_SESSION['sec_token'].'" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES,$charset))."'".')) return false;">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>';
} else {
$result .= Display::return_icon('delete_na.gif', get_lang('Delete'));
}
}
}
if ($is_admin) {
@ -772,10 +775,14 @@ if ($_GET['action'] == "login_as" && isset ($login_as_user_id))
break;
case 'delete_user' :
if (api_is_platform_admin()) {
if ($user_id != $_user['user_id'] && UserManager :: delete_user($_GET['user_id'])) {
Display :: display_confirmation_message(get_lang('UserDeleted'));
if ($delete_user_available) {
if ($user_id != $_user['user_id'] && UserManager :: delete_user($_GET['user_id'])) {
Display :: display_confirmation_message(get_lang('UserDeleted'));
} else {
Display :: display_error_message(get_lang('CannotDeleteUserBecauseOwnsCourse'));
}
} else {
Display :: display_error_message(get_lang('CannotDeleteUserBecauseOwnsCourse'));
Display :: display_error_message(get_lang('CannotDeleteUser'));
}
}
break;

@ -173,6 +173,10 @@ class UserManager
* @return boolean true if user can be deleted
*/
public static function can_delete_user($user_id) {
global $_configuration;
if (isset($_configuration['delete_users']) && $_configuration['delete_users'] == false) {
return false;
}
$table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
if ($user_id != strval(intval($user_id))) return false;
if ($user_id === false) return false;

@ -124,6 +124,9 @@ $_configuration['session_lifetime'] = SESSION_LIFETIME;
$_configuration['software_name'] = 'Chamilo';
$_configuration['software_url'] = 'http://www.chamilo.org/';
//Deny the elimination of users
$_configuration['deny_delete_users'] = false;
// Version settings
$_configuration['system_version'] = '{NEW_VERSION}';
$_configuration['system_stable'] = NEW_VERSION_STABLE;

Loading…
Cancel
Save