Moodle
  1. Moodle
  2. MDL-29072

Importing into a course requires incorrect capability on the source course

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 2.0.4, 2.1.1, 2.2
    • Fix Version/s: 2.0.5, 2.1.2
    • Component/s: Backup
    • Labels:
    • Testing Instructions:
      Hide

      On a Moodle installation (21_STABLE) in standard setup:

      • Create two courses, called "source" and "target". Create some labels in "source" (as example content).
      • On "source", allow the following capabilities for the non-editing teacher role:
        o moodle/backup:backupcourse
        o moodle/backup:configure
        o moodle/backup:backuptargetimport
      • Create a user "U" and enrol the user as follows:
        o into "source" as non-editing teacher,
        o into "target" as editing teacher.
      • Log in as "U".
      • Go to "target" and click on "Import".

      Verify that the course "source" appears in the list. Select "source" and proceed with the import.

      Show
      On a Moodle installation (21_STABLE) in standard setup: Create two courses, called "source" and "target". Create some labels in "source" (as example content). On "source", allow the following capabilities for the non-editing teacher role: o moodle/backup:backupcourse o moodle/backup:configure o moodle/backup:backuptargetimport Create a user "U" and enrol the user as follows: o into "source" as non-editing teacher, o into "target" as editing teacher. Log in as "U". Go to "target" and click on "Import". Verify that the course "source" appears in the list. Select "source" and proceed with the import.
    • Workaround:
      Hide

      Give the capability moodle/restore:restorecourse globally to any user who needs to import course material.

      Show
      Give the capability moodle/restore:restorecourse globally to any user who needs to import course material.
    • Affected Branches:
      MOODLE_20_STABLE, MOODLE_21_STABLE, MOODLE_22_STABLE
    • Fixed Branches:
      MOODLE_20_STABLE, MOODLE_21_STABLE
    • Pull from Repository:
    • Pull Master Branch:
    • Rank:
      18761

      Description

      At the moment, a user cannot import course contents from course A into course B unless he has the capability moodle/restore:restorecourse in the context of the source course.

      However, according to MDL-24518, this should be controlled by the capability moodle/backup:backuptargetimport .

      To reproduce, on a Moodle installation in standard setup:

      • Create two courses, called "source" and "target". Create some labels in "source" (as example content).
      • On "source", allow the following capabilities for the non-editing teacher role:
        • moodle/backup:backupcourse
        • moodle/backup:configure
        • moodle/backup:backuptargetimport
      • Create a user "U" and enrol the user as follows:
        • into "source" as non-editing teacher,
        • into "target" as editing teacher.
      • Log in as "U".
      • Go to "target" and click on "Import".

      EXPECTED: The list of courses displayed contains the course "source".
      ACTUAL: The list of courses displayed contains only the course "target".

      The underlying problem is that the list is filtered by courses on which the user "U" has the capability moodle/restore:restorecourse . This is done in the constructor of class import_course_search, which is inherited without modification from class restore_course_search.

      Patch will follow.

        Issue Links

          Activity

          Hide
          Henning Bostelmann added a comment -

          MDL-24518 not fixed in Moodle 2.x

          Show
          Henning Bostelmann added a comment - MDL-24518 not fixed in Moodle 2.x
          Hide
          Henning Bostelmann added a comment -

          This fix filters the list by moodle/backup:backuptargetimport . I'm not sure whether the other two capabilities (moodle/backup:backupcourse, moodle/backup:configure) are actually needed - and should be included in the filter - or whether the fact that they are needed is a different aspect of the bug. (If you remove them, the import seems to fail at a later stage.)

          I'm providing the fix for the master branch only, will backport it once it's agreed.

          Show
          Henning Bostelmann added a comment - This fix filters the list by moodle/backup:backuptargetimport . I'm not sure whether the other two capabilities (moodle/backup:backupcourse, moodle/backup:configure) are actually needed - and should be included in the filter - or whether the fact that they are needed is a different aspect of the bug. (If you remove them, the import seems to fail at a later stage.) I'm providing the fix for the master branch only, will backport it once it's agreed.
          Hide
          Henning Bostelmann added a comment -

          sorry, must have pushed the wrong button

          Show
          Henning Bostelmann added a comment - sorry, must have pushed the wrong button
          Hide
          Henning Bostelmann added a comment -

          now requesting peer review!

          Show
          Henning Bostelmann added a comment - now requesting peer review!
          Hide
          Eloy Lafuente (stronk7) added a comment -

          Nice one Henning, this does not fix the use case commented in MDL-28488, but is 100x100 correct IMO. The list of courses FROM which content can be imported is 'moodle/backup:backuptargetimport'.

          And the fix seems pretty correct, so sending to integration.

          NOTE for integrators: This should be backported to 20 and 21 stable, hopefully it applies ok.

          Show
          Eloy Lafuente (stronk7) added a comment - Nice one Henning, this does not fix the use case commented in MDL-28488 , but is 100x100 correct IMO. The list of courses FROM which content can be imported is 'moodle/backup:backuptargetimport'. And the fix seems pretty correct, so sending to integration. NOTE for integrators: This should be backported to 20 and 21 stable, hopefully it applies ok.
          Hide
          Sam Hemelryk added a comment -

          Thanks guys, this has been integrated now

          Show
          Sam Hemelryk added a comment - Thanks guys, this has been integrated now
          Hide
          Eloy Lafuente (stronk7) added a comment -

          Side note: I've added extra commit fixing invalid whitespace occurrences.

          Show
          Eloy Lafuente (stronk7) added a comment - Side note: I've added extra commit fixing invalid whitespace occurrences.
          Hide
          Andrew Davis added a comment -

          Works as expected. Thankyou for the detailed testing instructions

          Show
          Andrew Davis added a comment - Works as expected. Thankyou for the detailed testing instructions
          Hide
          Eloy Lafuente (stronk7) added a comment -

          git & cvs repositories updated with your gorgeous code. Many thanks!

          Closing and ciao

          Show
          Eloy Lafuente (stronk7) added a comment - git & cvs repositories updated with your gorgeous code. Many thanks! Closing and ciao
          Hide
          Gisele Brugger added a comment -

          Can see this.. the problem is in moodle 2.2.1

          http://moodle.org/mod/forum/discuss.php?d=167476#p860668

          Show
          Gisele Brugger added a comment - Can see this.. the problem is in moodle 2.2.1 http://moodle.org/mod/forum/discuss.php?d=167476#p860668
          Hide
          Sam Hemelryk added a comment -

          Hi Gisele,

          Looks like Eloy has replied on the forum and pointed you towards MDL-26037 about resolving this.

          Cheers
          Sam

          Show
          Sam Hemelryk added a comment - Hi Gisele, Looks like Eloy has replied on the forum and pointed you towards MDL-26037 about resolving this. Cheers Sam

            People

            • Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: