Feature #7350

Skills are only assigned when user checks the gradebook tool

Added by Yannick Warnier over 6 years ago. Updated over 4 years ago.

Gradebook / Evaluaciones
Target version:
Start date:
Due date:
% Done:


Estimated time:
6.00 h
SCRUM pts - complexity:


There is a usability issue at the moment, whereby a user cannot get a skill (although he passed the corresponding objectives) until he enters the gradebook tool.

This is already an issue for courses, but it is even worst for sessions, as a user might simply not enter the course before the session ends, so later on he cannot get the skill he qualified for.

One possible solution, in my view, would be:
  • each time the user logs in, the system checks in all the courses the student is subscribed to
  • if the gradebook (or a gradebook category) is linked to a skill (through the skill_rel_gradebook table)
  • then check if the student already has the skill
  • if the student does not have the skill but there is an active gradebook associated with the skill
  • and if the results of the student in this gradebook are over the "pass percentage"
  • then show a message to the user saying something like: "Some of your latest results indicate that you have achieved a new skill. Check the following link(s) to officialize it
  • then the user clicks the link and the skill_rel_user table is filled

However, this technique is still an issue, because a student might get the sufficient results to get the skill, but the system might not know it, which will prevent the HR manager to detect people with the required skills.

As such, there should, in fact, be a trigger whenever a result is changed that relates to the gradebook. This is also an issue that relates to the gradebook itself (forgetting about the skills) as a student cannot get a certificate until he comes back to the gradebook tool.

The issue with that is that, unless we develop a new mechanism to register each of these changes in a special table (that gets cleaned up each time it is treated), it is going to be a huge resources consumer.

One of the ways I see it is that we should, indeed, keep track of score and progress changes for all resources in Chamilo. When something (anything within the tracked resources) is changed, a record is added to a track_gradebook_queue table or something like that.

To be continued...



Updated by Yannick Warnier over 6 years ago

  • Assignee deleted (Julio Montoya)

Updated by Yannick Warnier over 6 years ago

  • Target version set to 1.10.0

Updated by Yannick Warnier over 6 years ago

  • Priority changed from Normal to High

Updated by Yannick Warnier over 6 years ago

  • Tracker changed from Bug to Feature

There should also be a mechanism to update the certificates each time a student finishes some step that exists in gradebook_link (or gradebook_evaluation) (or the student adds results).
Watch the way it is done to avoid excessive regeneration of certificates (only regenerate until he gets sufficient score and if session is not read-only, etc).


Updated by Yannick Warnier over 6 years ago

  • Assignee set to Julio Montoya
  • Estimated time set to 6.00 h
  • Complexity changed from Normal to Wizard-level
  • SCRUM pts - complexity changed from ? to 20

The problem is that running a cron will always be heavier than just checking when a student finishes one of the element that can be used in a gradebook.
A global method should be available to call whenever one of these items is finished by a student.
The method should check if the item finished is part of any gradebook evaluation.
If it is, then check what other elements are part of the evaluation.
If there are other elements, then make sure the user did not get that certificate already (if he did, we have a special case).
If the total score is enough to get the certificate, then generate the certificate and send an e-mail to the student:

$EmailAlertNewCertificateAvailable = "Dear %s,\n\nOur reports tell us that you have completed the necessary items with the required level of mastery to be awarded a learning certificate. Please go to %s (link) to download it.\n\nFaithfully,\n\n%s{campus name}";

This should be bound to a configuration option certificates_send_alert (that can now go into the settings_current table):

$SendAlertOnNewCertificateTitle = "Send mail on new certificates";
$SendAlertOnNewCertificateComment = "Send an e-mail to the student when a new certificate was obtained through passing tests, answering surveys, handling assignments, etc.";


Updated by Yannick Warnier over 6 years ago

I believe there is already a global method available, that is triggered when the student enters the gradebook page, but I think it might be inefficient (just check).


Updated by Julio Montoya over 6 years ago

  • Status changed from Assigned to Needs more info
  • Assignee changed from Julio Montoya to Yannick Warnier

I think this is related to the "hook" PR here:
We could add hooks when any gradebook evaluation or link (exercise, work, etc) was marked as "completed" by the teacher that corrects it.

The problem here is to identify when the tool (exercise, work) was reviewed and marked as "completed", and this depends in the tool.

It doesn't depends of the student action, but in the teacher actions that corrects the gradebooks items.


Updated by Yannick Warnier over 6 years ago

  • Status changed from Needs more info to Assigned
  • Assignee changed from Yannick Warnier to Julio Montoya

Sometimes it depends on the user action (in exercises without open/oral question or in LP progress), but you're right that we could use the hook system for that, as soon as it's ready! That would really save us from a lot of ugly code. Great idea!


Updated by Yannick Warnier about 6 years ago

Julio, could you take over here and implement a mechanism using the hooks system?


Updated by Yannick Warnier almost 6 years ago

  • Target version changed from 1.10.0 to 2.0

Updated by Yannick Warnier over 4 years ago

  • Assignee changed from Julio Montoya to Angel Quiroz

I'll reassign this to Angel who worked on hooks and the gradebook before!

Also available in: Atom PDF