Exercises: Add skip_notification_if_user_in_extra_field option in the

exercise_finished_notification_settings configuration

Add signature mandatory option

BT#17787
pull/3651/head^2
Julio Montoya 6 years ago
parent c7a50210a3
commit bb8b075abe
  1. 49
      main/inc/lib/exercise.lib.php
  2. 3
      main/install/configuration.dist.php
  3. 1
      plugin/exercise_signature/lang/english.php
  4. 1
      plugin/exercise_signature/lang/french.php
  5. 18
      plugin/exercise_signature/lib/ExerciseSignature.php

@ -5890,8 +5890,14 @@ EOT;
return $content;
}
public static function sendNotification($currentUserId, $objExercise, $exercise_stat_info, $courseInfo, $attemptCountToSend, $stats)
{
public static function sendNotification(
$currentUserId,
$objExercise,
$exercise_stat_info,
$courseInfo,
$attemptCountToSend,
$stats
) {
$notifications = api_get_configuration_value('exercise_finished_notification_settings');
if (empty($notifications)) {
return false;
@ -5905,6 +5911,20 @@ EOT;
// If there are no pending questions (Open questions).
if (0 === $countPendingQuestions) {
$extraFieldData = $exerciseExtraFieldValue->get_values_by_handler_and_field_variable(
$objExercise->iId,
'signature_mandatory'
);
if ($extraFieldData && isset($extraFieldData['value']) && 1 === (int) $extraFieldData['value']) {
if (ExerciseSignaturePlugin::exerciseHasSignatureActivated($objExercise)) {
$signature = ExerciseSignaturePlugin::getSignature($studentId, $exercise_stat_info);
if (false !== $signature) {
//return false;
}
}
}
$subject = sprintf(get_lang('WrongAttemptXInCourseX'), $attemptCountToSend, $courseInfo['title']);
if ($exercisePassed) {
$subject = sprintf(get_lang('ExerciseValidationInCourseX'), $courseInfo['title']);
@ -5931,7 +5951,7 @@ EOT;
}
}
// Send to student
// Send to student.
MessageManager::send_message($currentUserId, $subject, $content);
}
@ -5945,12 +5965,35 @@ EOT;
$exerciseNotification = $extraFieldData['value'];
}
$extraFieldValueUser = new ExtraFieldValue('user');
if (!empty($exerciseNotification) && !empty($notifications)) {
foreach ($notifications as $name => $notificationList) {
if ($exerciseNotification !== $name) {
continue;
}
foreach ($notificationList as $attemptData) {
$skipNotification = false;
$skipNotificationList = isset($attemptData['skip_notification_if_user_in_extra_field']) ? $attemptData['skip_notification_if_user_in_extra_field'] : [];
if (!empty($skipNotificationList)) {
foreach ($skipNotificationList as $skipVariable => $skipValues) {
$userExtraFieldValue = $extraFieldValueUser->get_values_by_handler_and_field_variable(
$studentId,
$skipVariable
);
if (!empty($userExtraFieldValue) && isset($userExtraFieldValue['value'])) {
if (in_array($userExtraFieldValue['value'], $skipValues)) {
$skipNotification = true;
break;
}
}
}
}
if ($skipNotification) {
continue;
}
$email = isset($attemptData['email']) ? $attemptData['email'] : '';
$emailList = explode(',', $email);
if (empty($emailList)) {

@ -1644,6 +1644,9 @@ $_configuration['auth_password_links'] = [
/*$_configuration['exercise_finished_notification_settings'] = [
'notification_teacher' => [ // Notification label
'for teacher' => [ // for teacher
'skip_notification_if_user_in_extra_field' => [
'company_variable' => ['Company A', 'Company B'],
],
'email' => 'teacher1@example.com,teacher2@example.com', // multiple emails allowed
'attempts' => [
[

@ -9,3 +9,4 @@ $strings['tool_enable'] = 'Tool enabled';
$strings['ProvideASignatureFirst'] = 'Please provide a signature first';
$strings['Sign'] = 'Sign';
$strings['SignatureActivated'] = 'Signature activated';
$strings['SignatureMandatory'] = 'Signature mandatory';

@ -9,3 +9,4 @@ $strings['tool_enable'] = 'Activer le plugin';
$strings['Sign'] = 'Signer';
$strings['ProvideASignatureFirst'] = "Veuillez d'abord fournir une signature";
$strings['SignatureActivated'] = 'Signature activée';
$strings['SignatureMandatory'] = 'Signature obligatoire';

@ -142,6 +142,24 @@ class ExerciseSignaturePlugin extends Plugin
);
}
$extraFieldHandler = $extraField->get_handler_field_info_by_field_variable('signature_mandatory');
$exists = $extraFieldHandler !== false;
if (!$exists) {
$extraField->save(
[
'field_type' => 13, // checkbox yes/no
'variable' => 'signature_mandatory',
'display_text' => get_plugin_lang('SignatureMandatory', 'ExerciseSignaturePlugin'),
'default_value' => null,
'field_order' => null,
'visible_to_self' => 1,
'changeable' => 1,
'filter' => null,
]
);
}
$extraField = new ExtraField('track_exercise');
$extraFieldHandler = $extraField->get_handler_field_info_by_field_variable('signature');
$exists = $extraFieldHandler !== false;

Loading…
Cancel
Save