Merge branch '1.11.x' into MJTecnoid-19632

pull/4148/head
Nicolas Ducoulombier 4 years ago committed by GitHub
commit 3279c89f99
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 32
      main/inc/lib/usermanager.lib.php
  2. 15
      main/inc/local.inc.php
  3. 25
      main/install/configuration.dist.php

@ -156,6 +156,23 @@ class UserManager
Event::addEvent(LOG_USER_PASSWORD_UPDATE, LOG_USER_ID, $userId);
}
/**
* Updates user expiration date.
*
* @param int $userId
* @param string $expirationDate
*/
public static function updateExpirationDate($userId, $expirationDate)
{
$repository = self::getRepository();
/** @var User $user */
$user = $repository->find($userId);
$userManager = self::getManager();
$expirationDate = api_get_utc_datetime($expirationDate, false, true);
$user->setExpirationDate($expirationDate);
$userManager->updateUser($user, true);
}
/**
* Creates a new user for the platform.
*
@ -7257,15 +7274,24 @@ SQL;
}
/**
* It returns the list of user status available
* It returns the list of user status available.
*
* @return array
*/
public static function getUserStatusList()
{
$userStatusConfig = [];
// it gets the roles to show in creation/edition user
if (true === api_get_configuration_value('user_status_show_options_enabled')) {
$userStatusConfig = api_get_configuration_value('user_status_show_option');
}
// it gets the roles to show in creation/edition user (only for admins)
if (true === api_get_configuration_value('user_status_option_only_for_admin_enabled') && api_is_platform_admin()) {
$userStatusConfig = api_get_configuration_value('user_status_option_show_only_for_admin');
}
$status = [];
if (true === api_get_configuration_value('hide_user_status_options_enabled')) {
$userStatusConfig = api_get_configuration_value('user_status_hide_option');
if (!empty($userStatusConfig)) {
$statusLang = api_get_status_langvars();
foreach ($userStatusConfig as $role => $enabled) {
if ($enabled) {

@ -714,6 +714,21 @@ if (!empty($_SESSION['_user']['user_id']) && !($login || $logout)) {
exit;
}
// update user expiration date when the login is the first time
if (isset($_user['status']) && STUDENT == $_user['status']) {
$userExpirationXDate = api_get_configuration_value('update_student_expiration_x_date');
$userSpentTime = Tracking::get_time_spent_on_the_platform($_user['user_id']);
if (false !== $userExpirationXDate && empty($userSpentTime)) {
$expDays = (int) $userExpirationXDate['days'];
$expMonths = (int) $userExpirationXDate['months'];
$date = new DateTime();
$duration = "P{$expMonths}M{$expDays}D";
$date->add(new DateInterval($duration));
$newExpirationDate = $date->format('Y-m-d H:i:s');
UserManager::updateExpirationDate($_user['user_id'], $newExpirationDate);
}
}
if (isset($uData['creator_id']) && $_user['user_id'] != $uData['creator_id']) {
//first login for a not self registred
//e.g. registered by a teacher

@ -2084,10 +2084,16 @@ INSERT INTO `extra_field` (`extra_field_type`, `field_type`, `variable`, `displa
*/
//$_configuration['allow_course_multiple_languages'] = false;
// Enables to hide user status when option is true from $_configuration['user_status_hide_opcion']
//$_configuration['hide_user_status_options_enabled'] = false;
// The user status is hidden when is false, it requires $_configuration['hide_user_status_options_enabled'] = true
/*$_configuration['user_status_hide_option'] = [
// Update user expiration in x days or months when login the first time
/*$_configuration['update_student_expiration_x_date'] = [
'days' => 0,
'months' => 0,
];*/
// Enables to define which user status to show when option is true from $_configuration['user_status_show_option']
//$_configuration['user_status_show_options_enabled'] = false;
// The user status is hidden when is false, it requires $_configuration['user_status_show_options_enabled'] = true
/*$_configuration['user_status_show_option'] = [
'COURSEMANAGER' => true,
'STUDENT' => true,
'DRH' => false,
@ -2096,6 +2102,17 @@ INSERT INTO `extra_field` (`extra_field_type`, `field_type`, `variable`, `displa
'INVITEE' => false
];*/
// Enables to hide user status when option is true visible only for admins from $_configuration['user_status_option_show_only_for_admin']
//$_configuration['user_status_option_only_for_admin_enabled'] = false;
// The user status is hidden when is false, it requires $_configuration['user_status_option_only_for_admin_enabled'] = true
/*$_configuration['user_status_option_show_only_for_admin'] = [
'COURSEMANAGER' => false,
'STUDENT' => false,
'DRH' => false,
'SESSIONADMIN' => true,
'STUDENT_BOSS' => false,
'INVITEE' => false
// Set the default expiration date when a user is created by role and days
/*$_configuration['user_number_of_days_for_default_expiration_date_per_role'] = [
'COURSEMANAGER' => 365,

Loading…
Cancel
Save