Moodle
  1. Moodle
  2. MDL-31405

Problem and Solution of Course Reset - Assignment Dates

    Details

    • Database:
      Any
    • Testing Instructions:
      Hide
      1. Create a course starting on 1/jan/2014
      2. Add one online assignment, one offline assignment, and three new assignment (assign) with "Allow submission from" 2/jan/2014
      3. Reset course with course start date as 2/jan/2014
      4. Make sure all all assignments have proper start date 3/jan/2014
      5. Rerun above test with assignment starting on 5/jan/2014 and reset course with course starting 10/jan/2014 and make sure dates for assignment is 13/jan/2014
      Show
      Create a course starting on 1/jan/2014 Add one online assignment, one offline assignment, and three new assignment (assign) with "Allow submission from" 2/jan/2014 Reset course with course start date as 2/jan/2014 Make sure all all assignments have proper start date 3/jan/2014 Rerun above test with assignment starting on 5/jan/2014 and reset course with course starting 10/jan/2014 and make sure dates for assignment is 13/jan/2014
    • Workaround:
      Hide

      Move 5 lines from reset_userdata to assignment_reset_userdata after its main loop is finished and will look like this (moodle 2.1.4):
      function assignment_reset_userdata($data) {
      global $CFG;

      $status = array();
      foreach (get_plugin_list('assignment') as $type=>$dir)

      { require_once("$dir/assignment.class.php"); $assignmentclass = "assignment_$type"; $ass = new $assignmentclass(); $status = array_merge($status, $ass->reset_userdata($data)); }

      /// moved code start
      /// updating dates - shift may be negative too
      if ($data->timeshift)

      { shift_course_mod_dates('assignment', array('timedue', 'timeavailable'), $data->timeshift, $data->courseid); $status[] = array('component'=>$componentstr, 'item'=>get_string('datechanged').': '.$typestr, 'error'=>false); }

      /// moved code end

      return $status;
      }

      Show
      Move 5 lines from reset_userdata to assignment_reset_userdata after its main loop is finished and will look like this (moodle 2.1.4): function assignment_reset_userdata($data) { global $CFG; $status = array(); foreach (get_plugin_list('assignment') as $type=>$dir) { require_once("$dir/assignment.class.php"); $assignmentclass = "assignment_$type"; $ass = new $assignmentclass(); $status = array_merge($status, $ass->reset_userdata($data)); } /// moved code start /// updating dates - shift may be negative too if ($data->timeshift) { shift_course_mod_dates('assignment', array('timedue', 'timeavailable'), $data->timeshift, $data->courseid); $status[] = array('component'=>$componentstr, 'item'=>get_string('datechanged').': '.$typestr, 'error'=>false); } /// moved code end return $status; }
    • Difficulty:
      Easy
    • Affected Branches:
      MOODLE_19_STABLE, MOODLE_20_STABLE, MOODLE_21_STABLE, MOODLE_22_STABLE, MOODLE_23_STABLE, MOODLE_24_STABLE, MOODLE_25_STABLE
    • Fixed Branches:
      MOODLE_24_STABLE, MOODLE_25_STABLE
    • Pull Master Branch:
      wip-mdl-31405-new
    • Sprint:
      BACKEND Sprint 6

      Description

      Course reset does not work correctly if activity dates are to be updated and course contains more than one type of assignment. This is due to fact that function assignment/lib.php: assignment_reset_userdata contains a loop for all assignment types. This calls the function reset_userdata and repetitively calls moodlelib.php::shift_course_mod_data. The last one should be called only once for all assignments.

        Gliffy Diagrams

        1. lib.patch
          0.8 kB
          Miroslav Fikar
        2. locallib.patch
          0.8 kB
          Miroslav Fikar

          Activity

          Hide
          Miroslav Fikar added a comment -

          Time passes and no action here. Is there anybody at moodle.com who takes care of this issue?

          Show
          Miroslav Fikar added a comment - Time passes and no action here. Is there anybody at moodle.com who takes care of this issue?
          Hide
          Miroslav Fikar added a comment -

          bump!

          Show
          Miroslav Fikar added a comment - bump!
          Hide
          Damyon Wiese added a comment -

          Thanks for reporting this.

          I've confirmed that this bug still exists in 2.4 and the patch still makes sense.

          Show
          Damyon Wiese added a comment - Thanks for reporting this. I've confirmed that this bug still exists in 2.4 and the patch still makes sense.
          Hide
          Miroslav Fikar added a comment -

          Perfect!

          Show
          Miroslav Fikar added a comment - Perfect!
          Hide
          Chris Follin added a comment -

          I think this same problem is also affecting the new Assignment. If there is one Assignment in a course and the course is reset to start one month later, the assignment due date shifts one month. If I reset the course to start a year later, the due date shifts one year. However, if the course contains three Assignments and the course is reset to start one month later, the assignment due dates shift three months. Likewise, if it's reset to start a year later, the due dates shift three years.

          Show
          Chris Follin added a comment - I think this same problem is also affecting the new Assignment. If there is one Assignment in a course and the course is reset to start one month later, the assignment due date shifts one month. If I reset the course to start a year later, the due date shifts one year. However, if the course contains three Assignments and the course is reset to start one month later, the assignment due dates shift three months. Likewise, if it's reset to start a year later, the due dates shift three years.
          Hide
          Miroslav Fikar added a comment -

          I do not understand this. One year has almost passed and nothing happens. And the bug still sits there, across all Moodle versions. I have found the bug, explained why it happens and proposed a simple solution that has no side effects. And at every update of our Moodle installations, I have to take care when assignment/lib.php changes.

          Course reset is the fastest method to prepare a course for its new run. And it is unusable without the patch.

          Show
          Miroslav Fikar added a comment - I do not understand this. One year has almost passed and nothing happens. And the bug still sits there, across all Moodle versions. I have found the bug, explained why it happens and proposed a simple solution that has no side effects. And at every update of our Moodle installations, I have to take care when assignment/lib.php changes. Course reset is the fastest method to prepare a course for its new run. And it is unusable without the patch.
          Hide
          Mike Wilday added a comment - - edited

          Is this being worked on? Manually resetting every assignment in a course is so slow and tedious. It would seem like this would be a bigger priority.

          Show
          Mike Wilday added a comment - - edited Is this being worked on? Manually resetting every assignment in a course is so slow and tedious. It would seem like this would be a bigger priority.
          Hide
          Jayesh Anandani added a comment -

          The above mentioned workout doesn't works! There is to be an alternative.I worked on it but same thing happening in 2.4 again and again.Value of timeshift is creating problem else code seems to be fine!

          Show
          Jayesh Anandani added a comment - The above mentioned workout doesn't works! There is to be an alternative.I worked on it but same thing happening in 2.4 again and again.Value of timeshift is creating problem else code seems to be fine!
          Hide
          Miroslav Fikar added a comment -

          I have tested the workaround in the actual 2.4.3+ today. It still works and it is as follows:
          Move lines from locallib.php (public function reset_userdata) to lib.php (function assign_reset_userdata).

          — locallib.old.php 2013-03-31 21:18:14.250981153 +0200
          +++ locallib.php 2013-03-31 21:43:46.883004151 +0200
          @@ -618,16 +618,6 @@
          assign_reset_gradebook($data->courseid);
          }
          }

          • // Updating dates - shift may be negative too.
          • if ($data->timeshift) { - shift_course_mod_dates('assign', - array('duedate', 'allowsubmissionsfromdate','cutoffdate'), - $data->timeshift, - $data->courseid); - $status[] = array('component'=>$componentstr, - 'item'=>get_string('datechanged'), - 'error'=>false); - }

          return $status;
          }

          Note, that one variable from locallib.php has to be copied as well.
          It is this added line:
          + $componentstr = get_string('modulenameplural', 'assign');

          — lib.old.php 2013-03-31 21:18:10.146981093 +0200
          +++ lib.php 2013-03-31 21:45:01.427005271 +0200
          @@ -77,6 +77,19 @@
          $status = array_merge($status, $assignment->reset_userdata($data));
          }
          }
          + // Updating dates - shift may be negative too.
          + $componentstr = get_string('modulenameplural', 'assign');
          +
          + if ($data->timeshift)

          { + shift_course_mod_dates('assign', + array('duedate', 'allowsubmissionsfromdate','cutoffdate'), + $data->timeshift, + $data->courseid); + $status[] = array('component'=>$componentstr, + 'item'=>get_string('datechanged'), + 'error'=>false); + }

          +
          return $status;
          }

          Show
          Miroslav Fikar added a comment - I have tested the workaround in the actual 2.4.3+ today. It still works and it is as follows: Move lines from locallib.php (public function reset_userdata) to lib.php (function assign_reset_userdata). — locallib.old.php 2013-03-31 21:18:14.250981153 +0200 +++ locallib.php 2013-03-31 21:43:46.883004151 +0200 @@ -618,16 +618,6 @@ assign_reset_gradebook($data->courseid); } } // Updating dates - shift may be negative too. if ($data->timeshift) { - shift_course_mod_dates('assign', - array('duedate', 'allowsubmissionsfromdate','cutoffdate'), - $data->timeshift, - $data->courseid); - $status[] = array('component'=>$componentstr, - 'item'=>get_string('datechanged'), - 'error'=>false); - } return $status; } Note, that one variable from locallib.php has to be copied as well. It is this added line: + $componentstr = get_string('modulenameplural', 'assign'); — lib.old.php 2013-03-31 21:18:10.146981093 +0200 +++ lib.php 2013-03-31 21:45:01.427005271 +0200 @@ -77,6 +77,19 @@ $status = array_merge($status, $assignment->reset_userdata($data)); } } + // Updating dates - shift may be negative too. + $componentstr = get_string('modulenameplural', 'assign'); + + if ($data->timeshift) { + shift_course_mod_dates('assign', + array('duedate', 'allowsubmissionsfromdate','cutoffdate'), + $data->timeshift, + $data->courseid); + $status[] = array('component'=>$componentstr, + 'item'=>get_string('datechanged'), + 'error'=>false); + } + return $status; }
          Hide
          Miroslav Fikar added a comment -

          lib.patch

          Show
          Miroslav Fikar added a comment - lib.patch
          Hide
          Miroslav Fikar added a comment -

          locallib.patch

          Show
          Miroslav Fikar added a comment - locallib.patch
          Hide
          Jayesh Anandani added a comment -

          Is the issue resolved?

          Show
          Jayesh Anandani added a comment - Is the issue resolved?
          Hide
          Jayesh Anandani added a comment -

          I modified moodlelib.php file.The allow date is working fine for me, i am stuck at due date.Due date is increased by twice and looking for an alternative to it!

          Show
          Jayesh Anandani added a comment - I modified moodlelib.php file.The allow date is working fine for me, i am stuck at due date.Due date is increased by twice and looking for an alternative to it!
          Hide
          Jayesh Anandani added a comment -

          Is it done?

          Show
          Jayesh Anandani added a comment - Is it done?
          Hide
          Damyon Wiese added a comment -

          Just noting that this issue is important - but there quite a few high priority issues that need looking at before I get to this one. It will probably be about 1-2 weeks.

          Thanks in advance for the report and solution.

          Show
          Damyon Wiese added a comment - Just noting that this issue is important - but there quite a few high priority issues that need looking at before I get to this one. It will probably be about 1-2 weeks. Thanks in advance for the report and solution.
          Hide
          Jayesh Anandani added a comment -

          yeah fine

          Show
          Jayesh Anandani added a comment - yeah fine
          Hide
          Michael de Raadt added a comment -

          Thanks for your input into this issue, Miroslav and Jayesh.

          I've noted a quirk that was allowing Jayesh to be able to assign issues to himself, when this normally would not be the case.

          I've assigned this issue back to Damyon to continue working on.

          Show
          Michael de Raadt added a comment - Thanks for your input into this issue, Miroslav and Jayesh. I've noted a quirk that was allowing Jayesh to be able to assign issues to himself, when this normally would not be the case. I've assigned this issue back to Damyon to continue working on.
          Hide
          Michael de Raadt added a comment -

          Hi, Damyon.

          This was left in a state of "Waiting for Peer Review". It would be good if you could finish off the work that Jayesh started and possibly credit him with the fix in Git.

          Show
          Michael de Raadt added a comment - Hi, Damyon. This was left in a state of "Waiting for Peer Review". It would be good if you could finish off the work that Jayesh started and possibly credit him with the fix in Git.
          Hide
          Kris Stokking added a comment -

          I'm escalating this to Critical. The longer we wait, the more courses that will get created for upcoming semesters with the incorrect dates, and there is no way to cleanup the affected data.

          Show
          Kris Stokking added a comment - I'm escalating this to Critical. The longer we wait, the more courses that will get created for upcoming semesters with the incorrect dates, and there is no way to cleanup the affected data.
          Hide
          Rajesh Taneja added a comment -

          Thanks for the patch, it looks good.

          It will be nice if you can please apply similar patch for old Assignment plugin as well.

          Also, fix few minor indentation issues in your patch

          1. https://github.com/jacks92/moodle/compare/master...MDL-31405#L0R86 spaces before comment
          2. https://github.com/jacks92/moodle/compare/master...MDL-31405#L0R91 - Space before cutoffdate
          3. https://github.com/jacks92/moodle/compare/master...MDL-31405#L0R94 - Space before and after =>
          Show
          Rajesh Taneja added a comment - Thanks for the patch, it looks good. It will be nice if you can please apply similar patch for old Assignment plugin as well. Also, fix few minor indentation issues in your patch https://github.com/jacks92/moodle/compare/master...MDL-31405#L0R86 spaces before comment https://github.com/jacks92/moodle/compare/master...MDL-31405#L0R91 - Space before cutoffdate https://github.com/jacks92/moodle/compare/master...MDL-31405#L0R94 - Space before and after =>
          Hide
          Miroslav Fikar added a comment -

          I have added patches for Moodle 1.9, 2.2, 2.3, 2.4, 2.5 - latest versions downloaded today from Moodle.org. In addition to my previous patches, the changes for versions 2.3-2.x include both assign and assignment (if somebody is still using old assignment). Also, $componentstring has to be added.

          Note, I have not tested it, I have not access to all these versions.

          Show
          Miroslav Fikar added a comment - I have added patches for Moodle 1.9, 2.2, 2.3, 2.4, 2.5 - latest versions downloaded today from Moodle.org. In addition to my previous patches, the changes for versions 2.3-2.x include both assign and assignment (if somebody is still using old assignment). Also, $componentstring has to be added. Note, I have not tested it, I have not access to all these versions.
          Hide
          Rajesh Taneja added a comment -

          Thanks for providing the patches, Miroslav,

          Can you please create github branches for the same.
          Please refer http://docs.moodle.org/dev/Git_for_developers for more details.

          Show
          Rajesh Taneja added a comment - Thanks for providing the patches, Miroslav, Can you please create github branches for the same. Please refer http://docs.moodle.org/dev/Git_for_developers for more details.
          Hide
          Miroslav Fikar added a comment -

          Rajesh,
          I am sorry, I do not have time/resources for that.

          Show
          Miroslav Fikar added a comment - Rajesh, I am sorry, I do not have time/resources for that.
          Hide
          Rajesh Taneja added a comment -

          No problem Miroslav,

          Will create branches.

          Show
          Rajesh Taneja added a comment - No problem Miroslav, Will create branches.
          Hide
          Mike Wilday added a comment -

          Could we get an update on this issue? We rely heavily on course resets in certain situations and would love to see this resolved. Thanks!

          Show
          Mike Wilday added a comment - Could we get an update on this issue? We rely heavily on course resets in certain situations and would love to see this resolved. Thanks!
          Hide
          Rajesh Taneja added a comment -

          I have created a master branch and after review will backport this.

          original branch:
          https://github.com/jacks92/moodle
          https://github.com/jacks92/moodle/compare/master...MDL-31405

          Show
          Rajesh Taneja added a comment - I have created a master branch and after review will backport this. original branch: https://github.com/jacks92/moodle https://github.com/jacks92/moodle/compare/master...MDL-31405
          Hide
          Petr Skoda added a comment -

          hi, following code has incorrect whitespace and it should use string_manager to find out if string exists instead of the deprecated [[ test. The rest looks ok.

          if($typestr === '[[type'.$this->type.']]'){
          

          Show
          Petr Skoda added a comment - hi, following code has incorrect whitespace and it should use string_manager to find out if string exists instead of the deprecated [[ test. The rest looks ok. if($typestr === '[[type'.$this->type.']]'){
          Hide
          Rajesh Taneja added a comment -

          grrr.. copy/paste.
          Thanks Petr, fixed it. Pushing for integration.

          Show
          Rajesh Taneja added a comment - grrr.. copy/paste. Thanks Petr, fixed it. Pushing for integration.
          Hide
          Damyon Wiese added a comment -

          Looks fine. +1 from me.

          Show
          Damyon Wiese added a comment - Looks fine. +1 from me.
          Hide
          Rajesh Taneja added a comment -

          Thanks Petr and Damyon,

          Pushing it for integration.

          Show
          Rajesh Taneja added a comment - Thanks Petr and Damyon, Pushing it for integration.
          Hide
          Eloy Lafuente (stronk7) added a comment -

          The main moodle.git repository has just been updated with latest weekly modifications. You may wish to rebase your PULL branches to simplify history and avoid any possible merge conflicts. This would also make integrator's life easier next week.

          TIA and ciao

          Show
          Eloy Lafuente (stronk7) added a comment - The main moodle.git repository has just been updated with latest weekly modifications. You may wish to rebase your PULL branches to simplify history and avoid any possible merge conflicts. This would also make integrator's life easier next week. TIA and ciao
          Hide
          Eloy Lafuente (stronk7) added a comment -

          Hi, I've to reopen this, sorry:

          1) Can you please, amend the testing instructions to both include the assign and assignment activities. And also to state clearly which is the expected (CORRECT) result.

          2) This is causing unit tests to fail (test_reset_userdata). I've not looked who is the responsible (the fix leading to borked results or the test expecting borked results, now fixed) but for sure it needs review and… why not, complete a bit more the cases if needed.

          Ciao

          Show
          Eloy Lafuente (stronk7) added a comment - Hi, I've to reopen this, sorry: 1) Can you please, amend the testing instructions to both include the assign and assignment activities. And also to state clearly which is the expected (CORRECT) result. 2) This is causing unit tests to fail (test_reset_userdata). I've not looked who is the responsible (the fix leading to borked results or the test expecting borked results, now fixed) but for sure it needs review and… why not, complete a bit more the cases if needed. Ciao
          Hide
          CiBoT added a comment -

          Moving this reopened issue out from current integration. Please, re-submit it for integration once ready.

          Show
          CiBoT added a comment - Moving this reopened issue out from current integration. Please, re-submit it for integration once ready.
          Hide
          Rajesh Taneja added a comment -

          Thanks for pointing that Eloy.

          Looking at the patch again, it seems we should not move reset out of this function.
          Putting up a different patch to solve this problem. I have added unit-test for assign, but not for assignment 2.2, not sure if it's worth creating new unit-test for old assignment as there is none at the moment.

          Will backport this after review.

          Show
          Rajesh Taneja added a comment - Thanks for pointing that Eloy. Looking at the patch again, it seems we should not move reset out of this function. Putting up a different patch to solve this problem. I have added unit-test for assign, but not for assignment 2.2, not sure if it's worth creating new unit-test for old assignment as there is none at the moment. Will backport this after review.
          Hide
          Damyon Wiese added a comment -

          Looks good to me - but the change to shift_course_mod_dates needs documenting in upgrade.txt.

          I like this solution because $assign->reset_userdata operates only on a single instance of mod_assign at a time which matches the rest of the functions in the class. The other alternative would be do some refactoring and add some separate manager class in mod_assign that can e.g do bulk operations and other static type functions on multiple assignments at once.

          Show
          Damyon Wiese added a comment - Looks good to me - but the change to shift_course_mod_dates needs documenting in upgrade.txt. I like this solution because $assign->reset_userdata operates only on a single instance of mod_assign at a time which matches the rest of the functions in the class. The other alternative would be do some refactoring and add some separate manager class in mod_assign that can e.g do bulk operations and other static type functions on multiple assignments at once.
          Hide
          Rajesh Taneja added a comment -

          Thanks Damyon,

          As discussed, alternative way is not BC. So probably an enhancement and will open another issue once this gets in.

          Updated upgrade.txt and using simple solution for old assignment as that makes more sense.

          Sending it back for another round of review.

          Show
          Rajesh Taneja added a comment - Thanks Damyon, As discussed, alternative way is not BC. So probably an enhancement and will open another issue once this gets in. Updated upgrade.txt and using simple solution for old assignment as that makes more sense. Sending it back for another round of review.
          Hide
          Damyon Wiese added a comment -

          Thanks Raj, the upgrade text looks fine - no other complaints from me.

          +1 for integration.

          Show
          Damyon Wiese added a comment - Thanks Raj, the upgrade text looks fine - no other complaints from me. +1 for integration.
          Hide
          Rajesh Taneja added a comment -

          Thanks Damyon,

          Pushing for integration...

          Show
          Rajesh Taneja added a comment - Thanks Damyon, Pushing for integration...
          Hide
          Dan Poltawski added a comment -

          Hi Raj,

          I'm not too keen on this solution for the stables, its an API change and we don't allow really allow them on the stables, and again in this scenario it is justified:

          • Non-core module sees they can add the module specific argument to shift_course_mod_dates()
          • Updates their 2.5/2.4 version and tests it on current stable versions
          • Breaks on <2.5.3 (and 2.4)
          Show
          Dan Poltawski added a comment - Hi Raj, I'm not too keen on this solution for the stables, its an API change and we don't allow really allow them on the stables, and again in this scenario it is justified: Non-core module sees they can add the module specific argument to shift_course_mod_dates() Updates their 2.5/2.4 version and tests it on current stable versions Breaks on <2.5.3 (and 2.4)
          Hide
          CiBoT added a comment -

          Moving this reopened issue out from current integration. Please, re-submit it for integration once ready.

          Show
          CiBoT added a comment - Moving this reopened issue out from current integration. Please, re-submit it for integration once ready.
          Hide
          Rajesh Taneja added a comment -

          Thanks Dan,

          I am putting old patch for stable, hope this is fine.

          Show
          Rajesh Taneja added a comment - Thanks Dan, I am putting old patch for stable, hope this is fine.
          Hide
          Dan Poltawski added a comment -

          The main moodle.git repository has just been updated with latest weekly modifications. You may wish to rebase your PULL branches to simplify history and avoid any possible merge conflicts. This would also make integrator's life easier next week.

          TIA and ciao

          Show
          Dan Poltawski added a comment - The main moodle.git repository has just been updated with latest weekly modifications. You may wish to rebase your PULL branches to simplify history and avoid any possible merge conflicts. This would also make integrator's life easier next week. TIA and ciao
          Hide
          Dan Poltawski added a comment -

          Integrated to master, 25 and 24.

          As I mentioned to Raj - I moved the upgrade.txt notice to mod/upgrade.txt, because it seems the one more relevant for users of the api.

          I also added a commit on 2.5/2.4 to avoid an unnecessary get_string call (I couldn't ignore it).

          Show
          Dan Poltawski added a comment - Integrated to master, 25 and 24. As I mentioned to Raj - I moved the upgrade.txt notice to mod/upgrade.txt, because it seems the one more relevant for users of the api. I also added a commit on 2.5/2.4 to avoid an unnecessary get_string call (I couldn't ignore it).
          Hide
          David Monllaó added a comment -

          sorry, just start in 2.4 and I see the following error when I reset the course after selecting the course new start date

          Fatal error: Using $this when not in object context in /home/davidm/Desktop/moodlecode/INTEGRATION/MOODLE_24_STABLE/mod/assignment/lib.php on line 3886
          

          Show
          David Monllaó added a comment - sorry, just start in 2.4 and I see the following error when I reset the course after selecting the course new start date Fatal error: Using $this when not in object context in /home/davidm/Desktop/moodlecode/INTEGRATION/MOODLE_24_STABLE/mod/assignment/lib.php on line 3886
          Hide
          Rajesh Taneja added a comment -

          Aha.. Sorry about that...
          I have added another commit to fix this. Typestr in old assignment should not be added in status, as time shift happens once for all assignment instances.
          Seems, I missed something in my commit previously.

          Dan - can you please pick the last commit...

          Show
          Rajesh Taneja added a comment - Aha.. Sorry about that... I have added another commit to fix this. Typestr in old assignment should not be added in status, as time shift happens once for all assignment instances. Seems, I missed something in my commit previously. Dan - can you please pick the last commit...
          Hide
          Dan Poltawski added a comment -

          Thanks Raj - seemed you were missing it on 2.4, so I cherry-picked.

          Show
          Dan Poltawski added a comment - Thanks Raj - seemed you were missing it on 2.4, so I cherry-picked.
          Hide
          Rajesh Taneja added a comment -

          Thanks Dan,

          Seems something wrong with my scripts... Will make sure this doesn't happen again...

          Show
          Rajesh Taneja added a comment - Thanks Dan, Seems something wrong with my scripts... Will make sure this doesn't happen again...
          Hide
          David Monllaó added a comment -

          It passes. Tested in 24, 25 and master

          Show
          David Monllaó added a comment - It passes. Tested in 24, 25 and master
          Hide
          Eloy Lafuente (stronk7) added a comment -

          "Aequam memento rebus in arduis servare mentem"

          Many thanks for your hard work, this is now part of "Moodle, the LMS". Closing!

          Ciao

          Show
          Eloy Lafuente (stronk7) added a comment - "Aequam memento rebus in arduis servare mentem" Many thanks for your hard work, this is now part of "Moodle, the LMS". Closing! Ciao

            People

            • Votes:
              6 Vote for this issue
              Watchers:
              12 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Agile