From: stronk7 Date: Sun, 8 Feb 2004 19:27:23 +0000 (+0000) Subject: Now user_preferences are fully supported in backup & restore. X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=41fd7fe497fbd5adc837ca1bd800603326485359;p=moodle.git Now user_preferences are fully supported in backup & restore. --- diff --git a/backup/backuplib.php b/backup/backuplib.php index 2a73219a22..d53c15a75b 100644 --- a/backup/backuplib.php +++ b/backup/backuplib.php @@ -811,6 +811,22 @@ //End ROLES tag fwrite ($bf,end_tag("ROLES",4,true)); + + //Check if we have user_preferences to backup + if ($preferences_data = get_records("user_preferences","userid",$user->old_id)) { + //Start USER_PREFERENCES tag + fwrite ($bf,start_tag("USER_PREFERENCES",4,true)); + //Write each user_preference + foreach ($preferences_data as $user_preference) { + fwrite ($bf,start_tag("USER_PREFERENCE",5,true)); + fwrite ($bf,full_tag("NAME",6,false,$user_preference->name)); + fwrite ($bf,full_tag("VALUE",6,false,$user_preference->value)); + fwrite ($bf,end_tag("USER_PREFERENCE",5,true)); + } + //End USER_PREFERENCES tag + fwrite ($bf,end_tag("USER_PREFERENCES",4,true)); + } + } //End User tag fwrite ($bf,end_tag("USER",3,true)); diff --git a/backup/restorelib.php b/backup/restorelib.php index d39202543b..80ee91027b 100644 --- a/backup/restorelib.php +++ b/backup/restorelib.php @@ -532,9 +532,10 @@ } else { $newid = $user_data->id; } - //Flags to see if we have to create the user and roles + //Flags to see if we have to create the user, roles and preferences $create_user = true; $create_roles = true; + $create_preferences = true; //If we are restoring course users and it isn't a course user if ($restore->users == 1 and !$is_course_user) { @@ -542,6 +543,7 @@ $status = backup_putid($restore->backup_unique_code,"user",$userid,null,'notincourse'); $create_user = false; $create_roles = false; + $create_preferences = false; } if ($user_exists and $create_user) { @@ -638,6 +640,27 @@ } } } + + //Here, if create_preferences, do it as necessary + if ($create_preferences) { + //echo "Checking for preferences of user ".$user->username."
"; //Debug + //Get user new id from backup_ids + $data = backup_getid($restore->backup_unique_code,"user",$userid); + $newid = $data->new_id; + if (isset($user->user_preferences)) { + //echo "Preferences exist in backup file
"; //Debug + foreach($user->user_preferences as $user_preference) { + //echo $user_preference->name." = ".$user_preference->value."
"; //Debug + //We check if that user_preference exists in DB + if (!record_exists("user_preferences","userid",$newid,"name",$user_preference->name)) { + //echo "Creating it
"; //Debug + //Prepare the record and insert it + $user_preference->userid = $newid; + $status = insert_record("user_preferences",$user_preference); + } + } + } + } } } @@ -1724,6 +1747,11 @@ $this->info->tempuser->roles[$this->info->temprole->type] = $this->info->temprole; unset($this->info->temprole); break; + case "USER_PREFERENCE": + //We've finalized a user_preference, get it + $this->info->tempuser->user_preferences[$this->info->tempuserpreference->name] = $this->info->tempuserpreference; + unset($this->info->tempuserpreference); + break; } } if ($this->level == 7) { @@ -1755,6 +1783,12 @@ case "TIMEACCESS": $this->info->temprole->timeaccess = $this->getContents(); break; + case "NAME": + $this->info->tempuserpreference->name = $this->getContents(); + break; + case "VALUE": + $this->info->tempuserpreference->value = $this->getContents(); + break; } } }