Added portal users limit management - only activates when set to something different from 0 - refs #4792

skala
Yannick Warnier 13 years ago
parent 85b5f183ee
commit 14682adf1e
  1. 19
      main/admin/user_add.php
  2. 23
      main/inc/lib/usermanager.lib.php
  3. 13
      main/install/configuration.dist.php

@ -372,6 +372,17 @@ if( $form->validate()) {
}
$user_id = UserManager::create_user($firstname, $lastname, $status, $email, $username, $password, $official_code, $language, $phone, $picture_uri, $auth_source, $expiration_date, $active, $hr_dept_id);
Security::clear_token();
$tok = Security::get_token();
if ($user_id === false) {
//If any error ocurred during user creation, print it (api_failureList
// stores values as separate words, so rework it
$message = '';
$message_bits = explode(' ',array_pop($api_failureList));
foreach ($message_bits as $bit) {
$message .= ucfirst($bit);
}
} else {
if (!empty($picture['name'])) {
$picture_uri = UserManager::update_user_picture($user_id, $_FILES['picture']['name'], $_FILES['picture']['tmp_name']);
@ -408,15 +419,15 @@ if( $form->validate()) {
}
@api_mail($recipient_name, $email, $emailsubject, $emailbody, $sender_name, $email_admin);
}
Security::clear_token();
$message = get_lang('UserAdded');
}
if (isset($user['submit_plus'])) {
//we want to add more. Prepare report message and redirect to the same page (to clean the form)
$tok = Security::get_token();
header('Location: user_add.php?message='.urlencode(get_lang('UserAdded')).'&sec_token='.$tok);
header('Location: user_add.php?message='.urlencode($message).'&sec_token='.$tok);
exit ();
} else {
$tok = Security::get_token();
header('Location: user_list.php?action=show_message&message='.urlencode(get_lang('UserAdded')).'&sec_token='.$tok);
header('Location: user_list.php?action=show_message&message='.urlencode($message).'&sec_token='.$tok);
exit ();
}
}

@ -84,6 +84,23 @@ class UserManager {
// database table definition
$table_user = Database::get_main_table(TABLE_MAIN_USER);
$access_url_id = 1;
if (api_get_multiple_access_url()) {
$access_url_id = api_get_current_access_url_id();
}
if ($_configuration[$access_url_id]['hosting_limit_users'] > 0) {
$num = self::get_number_of_users();
if ($num >= $_configuration[$access_url_id]['hosting_limit_users']) {
return api_set_failure('portal users limit reached');
}
}
if ($status === 1 && $_configuration[$access_url_id]['hosting_limit_teachers'] > 0) {
$num = self::get_number_of_users(1);
if ($num >= $_configuration[$access_url_id]['hosting_limit_teachers']) {
return api_set_failure('portal teachers limit reached');
}
}
//Checking the user language
$languages = api_get_languages();
@ -2364,11 +2381,15 @@ class UserManager {
/**
* Get the total count of users
* @param int Status of users to be counted
* @return mixed Number of users or false on error
*/
public static function get_number_of_users() {
public static function get_number_of_users($status=0) {
$t_u = Database::get_main_table(TABLE_MAIN_USER);
$sql = "SELECT count(*) FROM $t_u";
if (is_int($status) && $status>0) {
$sql .= " WHERE status = $status ";
}
$res = Database::query($sql);
if (Database::num_rows($res) === 1) {
return (int) Database::result($res, 0, 0);

@ -107,18 +107,21 @@ $extAuthSource["cas"]["newUser"] = $_configuration['root_sys'].$_configuration['
* Hosting settings - Allows you to set limits to the Chamilo portal when
* hosting it for a third party. These settings can be overwritten by an
* optionally-loaded extension file with only the settings (no comments).
* The settings use an index at the first level to represent the ID of the
* URL in case you use multi-url (otherwise it will always use 1, which is
* the ID of the only URL inside the access_url table).
*/
// Set a maximum number of users. Default (0) = no limit
$_configuration['hosting_limit_users'] = 0;
$_configuration[1]['hosting_limit_users'] = 0;
// Set a maximum number of teachers. Default (0) = no limit
$_configuration['hosting_limit_teachers'] = 0;
$_configuration[1]['hosting_limit_teachers'] = 0;
// Set a maximum number of courses. Default (0) = no limit
$_configuration['hosting_limit_courses'] = 0;
$_configuration[1]['hosting_limit_courses'] = 0;
// Set a maximum number of sessions. Default (0) = no limit
$_configuration['hosting_limit_sessions'] = 0;
$_configuration[1]['hosting_limit_sessions'] = 0;
// Set a maximum disk space used, in MB (set to 1024 for 1GB, 5120 for 5GB).
// Default (0) = no limit
$_configuration['hosting_limit_disk_space'] = 0;
$_configuration[1]['hosting_limit_disk_space'] = 0;
/**
* Content Delivery Network (CDN) settings. Only use if you need a separate

Loading…
Cancel
Save