Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-34837

Restoring course throws an exception

    Details

    • Testing Instructions:
      Hide

      Test pre-requisites

      • Create 2 courses with the exact same name (not short name)
      • Backup one of them

      Test steps

      1. Go to the restore page of the backed up course.
      2. Restore it as a new course
      3. Make sure no errors or exceptions occur
      Show
      Test pre-requisites Create 2 courses with the exact same name (not short name) Backup one of them Test steps Go to the restore page of the backed up course. Restore it as a new course Make sure no errors or exceptions occur
    • Difficulty:
      Easy
    • Affected Branches:
      MOODLE_21_STABLE, MOODLE_22_STABLE, MOODLE_23_STABLE
    • Fixed Branches:
      MOODLE_22_STABLE, MOODLE_23_STABLE
    • Pull from Repository:
    • Pull Master Branch:
      MDL-34837-master

      Description

      There is an error in method for generating new temporary name for a restored course. Method is located in
      <moodle>/backup/util/dbops/restore_dbops.class.php

      restore_dbops::calculate_course_names

      That method uses

      $DB->get_record_select

      Which throws exception if query returns more than one record and debugging is turned on. It does not break anything but it annoys suspicious users(clients).

      Quick fix would be to change these lines:

      $coursefull  = $DB->get_record_select('course', 'fullname = ? AND id != ?', array($currentfullname, $courseid));
      $courseshort = $DB->get_record_select('course', 'shortname = ? AND id != ?', array($currentshortname, $courseid));

      To:

      $coursefull  = $DB->get_record_select('course', 'fullname = ? AND id != ?', array($currentfullname, $courseid), IGNORE_MULTIPLE);
      $courseshort = $DB->get_record_select('course', 'shortname = ? AND id != ?', array($currentshortname, $courseid), IGNORE_MULTIPLE);

        Gliffy Diagrams

          Activity

          Hide
          agm1960 A G Morris added a comment -

          Is this related to: Default exception handler: A required parameter (id) was missing Debug: \n* line 435 of /lib/setuplib.php: moodle_exception thrown\n* line 504 of /lib/moodlelib.php: call to print_error()\n* line 30 of /mod/quiz/index.php: call to required_param()\n

          Show
          agm1960 A G Morris added a comment - Is this related to: Default exception handler: A required parameter (id) was missing Debug: \n* line 435 of /lib/setuplib.php: moodle_exception thrown\n* line 504 of /lib/moodlelib.php: call to print_error()\n* line 30 of /mod/quiz/index.php: call to required_param()\n
          Hide
          darko.miletic Darko Miletic added a comment -

          No. The error you are mentioning occurs when somebody call's a quiz index.php without passing a required parameter id.

          Show
          darko.miletic Darko Miletic added a comment - No. The error you are mentioning occurs when somebody call's a quiz index.php without passing a required parameter id.
          Hide
          bushido Mark Nielsen added a comment -

          Attaching a patch with a proposed solution. Darko, changing the DB call on courseshort shouldn't be necessary since it should be unique for all courses. Please correct me if you found that not to be the case.

          Show
          bushido Mark Nielsen added a comment - Attaching a patch with a proposed solution. Darko, changing the DB call on courseshort shouldn't be necessary since it should be unique for all courses. Please correct me if you found that not to be the case.
          Hide
          darko.miletic Darko Miletic added a comment -

          Although Moodle enforces uniquenes of course short name in the code in the database there is no such constraint, hence duplicates are possible. I even asked about that in Moodle dev. forum
          http://moodle.org/mod/forum/discuss.php?d=208684

          Show
          darko.miletic Darko Miletic added a comment - Although Moodle enforces uniquenes of course short name in the code in the database there is no such constraint, hence duplicates are possible. I even asked about that in Moodle dev. forum http://moodle.org/mod/forum/discuss.php?d=208684
          Hide
          salvetore Michael de Raadt added a comment -

          Thanks for reporting this, guys. There has been some recent work in the area. Hopefully we can get this sorted out soon.

          Show
          salvetore Michael de Raadt added a comment - Thanks for reporting this, guys. There has been some recent work in the area. Hopefully we can get this sorted out soon.
          Hide
          fred Frédéric Massart added a comment -

          Thanks for providing a patch for this. I have given credit as author to you Mark. Cheers!

          Show
          fred Frédéric Massart added a comment - Thanks for providing a patch for this. I have given credit as author to you Mark. Cheers!
          Hide
          ankit_frenz Ankit Agarwal added a comment -

          Hi Fred,
          This looks good +1 for integration
          Reviewed list:
          [y] Syntax
          [na] Output
          [y] Whitespace
          [na] Language
          [y] Databases
          [y] Testing
          [na] Security
          [na] Documentation
          [y] Git
          [y] Sanity check
          Thanks

          Show
          ankit_frenz Ankit Agarwal added a comment - Hi Fred, This looks good +1 for integration Reviewed list: [y] Syntax [na] Output [y] Whitespace [na] Language [y] Databases [y] Testing [na] Security [na] Documentation [y] Git [y] Sanity check Thanks
          Hide
          fred Frédéric Massart added a comment -

          Thanks Ankit! Pushing for integration.

          Show
          fred Frédéric Massart added a comment - Thanks Ankit! Pushing for integration.
          Hide
          nebgor Aparup Banerjee 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
          nebgor Aparup Banerjee 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
          poltawski Dan Poltawski added a comment -

          Integrated to 22, 23 and master.

          Thanks guys!

          Show
          poltawski Dan Poltawski added a comment - Integrated to 22, 23 and master. Thanks guys!
          Hide
          abgreeve Adrian Greeve added a comment -

          Tested on master first to replicate the error and then tested on the 2.2, 2.3 and master integration branches.
          No errors are being displayed.
          Test passed.

          Show
          abgreeve Adrian Greeve added a comment - Tested on master first to replicate the error and then tested on the 2.2, 2.3 and master integration branches. No errors are being displayed. Test passed.
          Hide
          poltawski Dan Poltawski added a comment -

          Hurray!

          You did it, congratulations! You have on Mojito credit to redeem after the release of Moodle 2.4

          Show
          poltawski Dan Poltawski added a comment - Hurray! You did it, congratulations! You have on Mojito credit to redeem after the release of Moodle 2.4

            People

            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:
                Fix Release Date:
                12/Nov/12