From 7c94fa061bc6b569e5869a42593c1a8d34453a18 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Wed, 30 Sep 2020 11:13:14 +0200 Subject: [PATCH] Admin: Add config "setting exercise_finished_email_settings" BT#17786 Send emails to some users when a student finishes an exercise. --- main/exercise/exercise_result.php | 41 +++++++++++++++++++++++++++++ main/install/configuration.dist.php | 20 ++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/main/exercise/exercise_result.php b/main/exercise/exercise_result.php index 0c58865bb8..5e5dfbb040 100755 --- a/main/exercise/exercise_result.php +++ b/main/exercise/exercise_result.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(); diff --git a/main/install/configuration.dist.php b/main/install/configuration.dist.php index 7fd60783cf..fa634e2616 100755 --- a/main/install/configuration.dist.php +++ b/main/install/configuration.dist.php @@ -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