]> git.mjollnir.org Git - moodle.git/commitdiff
fixing roles support for backup/restore
authortoyomoyo <toyomoyo>
Wed, 4 Oct 2006 09:01:50 +0000 (09:01 +0000)
committertoyomoyo <toyomoyo>
Wed, 4 Oct 2006 09:01:50 +0000 (09:01 +0000)
backup/restore_form.html
backup/restorelib.php

index 8e50ac97efdf41f43cdc665dfb145175bd3b2c6f..20393f0b0d5ee5e8902353d4c537c00d0b02db88 100644 (file)
@@ -422,7 +422,7 @@ $xml_file  = $CFG->dataroot."/temp/backup/".$backup_unique_code."/moodle.xml";
 
 $info = restore_read_xml_info($xml_file);
 
-$siterolesarray = get_assignable_roles (get_context_instance(CONTEXT_COURSE, $course_header->course_id), "shortname");
+$siterolesarray = get_assignable_roles (get_context_instance(CONTEXT_COURSE, $course->id), "shortname");
 
 echo ('<table width="100%" class="restore-form-instances">');
 echo ('<tr><td align="right"><b>'.get_string('sourcerole').'</b></td><td align="left"><b>'.get_string('targetrole').'</b></td></tr>');
@@ -432,19 +432,19 @@ if ($info->backup_moodle_version < 2006092801) {
     
     /// Editting teacher
     echo ('<tr><td align="right">');
-    print_string('teacheredit');
+    print_string('defaultcourseteacher');
     echo ('</td><td algin="left">');
     
     // get the first teacheredit legacy
     $roles = get_roles_with_capability('moodle/legacy:editingteacher', CAP_ALLOW, get_context_instance(CONTEXT_SYSTEM, SITEID));
-    
+
     $editteacher = array_shift($roles);
     choose_from_menu ($siterolesarray, "defaultteacheredit", $editteacher->id);
     echo ('</td></tr>');
     
     /// Non-editting teacher
     echo ('<tr><td align="right">');
-    print_string('teacher');
+    print_string('noneditingteacher');
     echo ('</td><td algin="left">');
     
     // get the first teacheredit legacy
@@ -457,7 +457,7 @@ if ($info->backup_moodle_version < 2006092801) {
     
     /// Student
     echo ('<tr><td align="right">');
-    print_string('student');
+    print_string('defaultcoursestudent');
     echo ('</td><td algin="left">');
     
     // get the first teacheredit legacy
@@ -469,25 +469,26 @@ if ($info->backup_moodle_version < 2006092801) {
   
 } else {
     // 1.7 and above backup
-    
     $roles = restore_read_xml_roles($xml_file);
+    if (is_array($roles)) { // possible to have course with no roles
 
-    foreach ($roles->roles as $roleid=>$role) {
-        echo ('<tr><td align="right">');
-        echo $role->shortname;
-        echo ('</td><td align="left">');
+        foreach ($roles->roles as $roleid=>$role) {
+            echo ('<tr><td align="right">');
+            echo $role->shortname;
+            echo ('</td><td align="left">');
     
-        // see if any short name match
-        $matchrole = 0;
-        foreach ($siterolesarray as $siteroleid=>$siteroleshortname) {
-            if ($siteroleshortname == $role->shortname) {
-                $matchrole = $siteroleid;
-                break;  
-            }  
-        }
+            // see if any short name match
+            $matchrole = 0;
+            foreach ($siterolesarray as $siteroleid=>$siteroleshortname) {
+                if ($siteroleshortname == $role->shortname) {
+                    $matchrole = $siteroleid;
+                    break;  
+                }  
+            }
     
-        choose_from_menu ($siterolesarray, "roles_".$roleid, $matchrole, 'new role', '', '0');
-        echo ('</td></tr>'); 
+            choose_from_menu ($siterolesarray, "roles_".$roleid, $matchrole, 'new role', '', '0');
+            echo ('</td></tr>'); 
+        }
     }
     
 } // end else
index 42f65cf777e97ca05ed963db9b70728f9a35671f..dbea6d03beb5444f398a6df6bc894e5e5701c41e 100644 (file)
                     //Add this instance
                     $instance->blockid = $blocks[$instance->name]->id;
                     
-                    if($newid = insert_record('block_instance', $instance)) {
-                        backup_putid ($restore->backup_unique_code,"block_instance",$instance->id,$newid);
+                    if ($newid = insert_record('block_instance', $instance)) {
+                        if (!empty($instance->id)) { // this will only be set if we come from 1.7 and above backups
+                            backup_putid ($restore->backup_unique_code,"block_instance",$instance->id,$newid);
+                        }
                     } else {
                         $status = false;
                         break;                      
                                     $restore->mods[$mod->type]->granular = true;
                                 }
                                 
-                                if (!$restore->mods[$mod->type]->granular  // we don't care about per instance
+                                if (empty($restore->mods[$mod->type]->granular)  // we don't care about per instance
                                     || (array_key_exists($mod->instance,$restore->mods[$mod->type]->instances) 
                                         && !empty($restore->mods[$mod->type]->instances[$mod->instance]->restore))) {
                                     
                                         //      final step of the restore. We don't know it yet.
                                         //print_object($course_module);                    //Debug
                                         //Save it to db
+
                                         $newidmod = insert_record("course_modules",$course_module); 
                                         if ($newidmod) {
                                             //save old and new module id
                                         $user->roles['teacher']->timeend, 
                                         0, 
                                         $user->roles['teacher']->enrol);
+                            
                             // editting teacher  
                         } else {
                             // non editting teacher
                 }
                 //Iterate over each module
                 foreach ($info as $mod) {
-                    if (!(isset($restore->mods[$mod->modtype]->granular) && $restore->mods[$mod->modtype]->granular)  // We don't care about per instance, i.e. restore all instances.
+                    if (empty($restore->mods[$mod->modtype]->granular)  // We don't care about per instance, i.e. restore all instances.
                         || (array_key_exists($mod->id,$restore->mods[$mod->modtype]->instances) 
                             && !empty($restore->mods[$mod->modtype]->instances[$mod->id]->restore))) {
                         $modrestore = $mod->modtype."_restore_mods";
-                        if (function_exists($modrestore)) {
-                            //print_object ($mod);                                                //Debug
+                        if (function_exists($modrestore)) {                                               //Debug
                             $status = $status and $modrestore($mod,$restore); //bit operator & not reliable here!
                         } else {
                             //Something was wrong. Function should exist.
                     }
                 }
                 
-                if ($this->tree[7] == "ROLES_ASSIGNMENTS") {
+                if (isset($this->tree[7]) && $this->tree[7] == "ROLES_ASSIGNMENTS") {
                     
                     if ($this->level == 9) {
                         switch ($tagName) {
                     }
                 } /// ends role_assignments
                 
-                if ($this->tree[7] == "ROLES_OVERRIDES") {
+                if (isset($this->tree[7]) && $this->tree[7] == "ROLES_OVERRIDES") {
                     if ($this->level == 9) {
                         switch ($tagName) {
                             case "NAME":
          * Restoring from course level overrides *
          *****************************************************/     
         
-        if (!empty($course->$course->roleoverrides)) {
+        if (!empty($course->roleoverrides)) {
             $courseoverrides = $course->roleoverrides;
             $rolemappings = $restore->rolesmapping;
             foreach ($courseoverrides as $oldroleid => $courseoverride) {