Admin: Add config "setting exercise_finished_email_settings" BT#17786

Send emails to some users when a student finishes an exercise.
pull/3547/head
Julio Montoya 5 years ago
parent 6a12ea9562
commit 7c94fa061b
  1. 41
      main/exercise/exercise_result.php
  2. 20
      main/install/configuration.dist.php

@ -228,6 +228,47 @@ if (!empty($learnpath_id) && $saveResults) {
Exercise::saveExerciseInLp($learnpath_item_id, $exe_id);
}
$emailSettings = api_get_configuration_value('exercise_finished_email_settings');
if (!empty($emailSettings)) {
$subject = get_lang('ExerciseFinished');
$totalScore = ExerciseLib::show_score($total_score, $max_score, false, true);
if (isset($emailSettings['send_by_status']) && !empty($emailSettings['send_by_status'])) {
foreach ($emailSettings['send_by_status'] as $item) {
$type = $item['type'];
switch ($item['type']) {
case 'only_score':
$content = get_lang('YourScore')." $totalScore ";
break;
case 'complete':
$content = $pageContent;
break;
}
switch ($item['status']) {
case STUDENT:
MessageManager::send_message(api_get_user_id(), $subject, $content);
break;
}
}
}
if (isset($emailSettings['send_by_email']) && !empty($emailSettings['send_by_email'])) {
foreach ($emailSettings['send_by_email'] as $item) {
$type = $item['type'];
switch ($item['type']) {
case 'only_score':
$content = get_lang('YourScore')." $totalScore ";
break;
case 'complete':
$content = $pageContent;
break;
}
api_mail_html('', $item['email'], $subject, $content);
}
}
}
$hookQuizEnd = HookQuizEnd::create();
$hookQuizEnd->setEventData(['exe_id' => $exe_id]);
$hookQuizEnd->notifyQuizEnd();

@ -1615,6 +1615,26 @@ $_configuration['auth_password_links'] = [
// It also enables the main/lp/my_list.php page.
//$_configuration['show_my_lps_page'] = false;
// When exercise is finished send results by email to users, depending the settings below:
$_configuration['exercise_finished_email_settings'] = [
'send_by_status' => [
[
'status' => 5, // 5 = student that is doing the exercise send to the Chamilo inbox + email
'type' => 'only_score', // Shows only the score result.
],
],
'send_by_email' => [
[
'email' => 'example@example.com', // Only by email
'type' => 'complete', // Shows all the results page (feedback/comments/etc)
],
[
'email' => 'example@example.com',
'type' => 'only_score',
],
],
];
// KEEP THIS AT THE END
// -------- Custom DB changes
// Add user activation by confirmation email

Loading…
Cancel
Save