Moodle plugins directory: Restore courses from remote Moodles | Moodle.org
Restore courses from remote Moodles
block my_external_backup_courses : Restore courses from remote moodle platforms
my_external_backup_restore_courses is a Moodle block that enable a user to restore courses from external moodles this block must be installed in each moodle course clients and course servers involved
Features
- enable a user to program course restoration, where courses comes from external moodles
- depending of his role capabilities he can restore courses with user datas
- possibility to find the original category based on unique category identifier threw plugin settings on database relation (user must hace moodle/course:create in the category context)
- restore cours in a default category (user must hace moodle/course:create in that context)
- a scheduled task will launch remote backups and restorations of these courses
- Log and messaging include to notify of success or failure
- possibilily to restrict to only one restoration by course
- admin tool to see list of backup/restore tasks
- admin tool to restore a course for a user
Security warning
- This plugin use a capability block/my_external_backup_restore_courses:can_retrieve_courses that enable webservice account to donload backup files of other users
- To improve security it is strongly recommended to generate token with IPrestriction on server side IPs
mnet warning usage
this plugin may not work in MNet environments fully because the username in that conditions username is not unique
Download
from moodle plugin repository
Installation
Block installation
Install block on blocks directory in course clients moodles and in each course servers moodle you need to connect to
webservice settings
On moodles that serves courses
install by cli or manually
install with cli command
- execute cli, that will install webservice, rôle and user
- you will only need to generate token (see after)
generate token
- Under Site administration -> Plugins -> Web Services -> Manage Tokens
- create a new token, restricted on your php server(s) for the custom external sservice previously created
- by cli user is named block_my_external_backup_restore_courses_user
- This token will be one to be entered in the block parameters of block_my_external_backup_restore_courses on client moodles.
- for more security restrict webservice usage on IP
- create a new token, restricted on your php server(s) for the custom external sservice previously created
Block setting
Essential settings
On moodles that serve courses (moodle servers) and client moodles
- Under Plugins -> Blocks -> Restore courses from remote Moodles For each moodles you need to fill the following setting parameters
- in my_external_backup_course | search_roles enter roles to include in course search simple quote delimited text shortname separated by commas
- in my_external_backup_course | restorecourseinoriginalcategory activate the mode that enable to try to search the original category of a remote course
- in my_external_backup_course | categorytable the database table name where to find unique identifier information in order to search/find category, common for both client and server moodles
- in my_external_backup_course | categorytable_foreignkey the database foreign key for categorytable
- in my_external_backup_course | categorytable_categoryfield the database field in categorytable unique for a category and common for both client and server moodles
Cli install version for moodle version 4.0 and above
- the following commands are the ones for traditional moodles
php /var/www/moodle_path/admin/cli/cfg.php --component='block_my_external_backup_restore_courses' --name=restorecourseinoriginalcategory --set=1
php /var/www/moodle_path/admin/cli/cfg.php --component='block_my_external_backup_restore_courses' --name=search_roles --set=editingteacher
php /var/www/moodle_path/admin/cli/cfg.php --component='block_my_external_backup_restore_courses' --name=categorytable --set=course_categories
php /var/www/moodle_path/admin/cli/cfg.php --component='block_my_external_backup_restore_courses' --name=categorytable_foreignkey --set=id
php /var/www/moodle_path/admin/cli/cfg.php --component='block_my_external_backup_restore_courses' --name=categorytable_categoryfield --set=idnumber
On course clients moodles
- in my_external_backup_course | defaultcategory the categoryid where the course will be restored by default, users that restore must have capability to moodle/course:create
- in my_external_backup_course | externalmoodles formatted list of course servers moodles formatted as moodle_url1,token_compte_webservice_moodle_externe1;moodle_url2,token_compte_webservice_moodle_externe2;…
Cli install version
- for moodle version 4.0 and above
php /var/www/moodle_path/admin/cli/cfg.php --component='block_my_external_backup_restore_courses' --name=defaultcategory --set=<idnumber>
php /var/www/moodle_path/admin/cli/cfg.php --component='block_my_external_backup_restore_courses' --name=externalmoodles --set=<moodles separated by ;>
Cron setting
On Site administration -> Server -> Scheduled tasks * Edit “Restore course from remote Moodles” task to determine when restore process is launched
capability
- in order to use this block in dashboard a capability block/my_external_backup_restore_courses:view is provided and by default allowed for coursecreator and manager profile
- This enable to control block visibility in dashboard
- course restore and backup is virtually proceed with an admin account so the resquester user does not need special capabilities anymore
- except course:create in category if checkrequestercapascoursecreate setting is checked
Optional interesting settings
Messaging
- Site administration / ► Plugins / ► Message outputs / ► Default message outputs
- 2 message outputs :
- Notify that an external course as failed to restore
- Notify that an external course is successfully restored
- by default allowed and permitted for mails
role
- In Site administration -> Plugins -> Blocks -> Restore courses from remote Moodles
- block_my_external_backup_restore_courses | search_roles : enable to change/add moodle role used to search remote courses to restore
Restriction
- In Site administration -> Plugins -> Blocks -> Restore courses from remote Moodles
- block_my_external_backup_restore_courses | onlyoneremoteinstance : Only one restoration is authorized by course
- block_my_external_backup_restore_courses | enrollrole :
- define the role that the requester will have in the restored course
- define the role in which the user will be re enrolled to course through the given button in the backup external course button
Contributions
Contributions of any form are welcome. Github pull requests are preferred. Fill any bugs, improvements, or feature requiests in our [issue tracker][issues].
License
- http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later [my_external_backup_restore_courses_github]: [issues]:
Thanks for your reply.
The two Moodles' version is 3.0.10 (Build : 20170508).
For the token : the toked created on server is set in client in "external moodle list to connect to" with the server's URL.
In the notification the error is "file retrieve : no files in zip".
For the parameters, you can see sreanshoots here : https://de2729.ispfr.net/download/remote_restore_course_test.pdf
Thanks for your help.
Jacques.
Execute scheduled task: tâche du plugin restaurer vos cours depuis des Moodle distants (block_my_external_backup_restore_courses\task\backup_restore_task)
... started 15:56:39. Current memory use 9.9Mo.
... used 37 dbqueries
... used 3.9998121261597 seconds
Scheduled task failed: tâche du plugin restaurer vos cours depuis des Moodle distants (block_my_external_backup_restore_courses\task\backup_restore_task),error/setting_by_name_not_found
Backtrace:
* line 97 of /backup/util/plan/base_task.class.php: call to base_plan->get_setting()
* line 439 of /blocks/my_external_backup_restore_courses/locallib.php: call to base_task->get_setting()
* line 322 of /blocks/my_external_backup_restore_courses/locallib.php: call to block_my_external_backup_restore_courses_task->restore_course_from_backup_file()
* line 25 of /blocks/my_external_backup_restore_courses/classes/task/backup_restore_task.php: call to block_my_external_backup_restore_courses_task_helper::run_automated_backup_restore()
* line 104 of /lib/cronlib.php: call to block_my_external_backup_restore_courses\task\backup_restore_task->execute()
* line 292 of /lib/cronlib.php: call to cron_run_inner_scheduled_task()
* line 91 of /admin/tool/task/schedule_task.php: call to cron_run_single_task()
I'm also facing same problem as Jacques mentioned above.
I'm using Moodle3.5.2 as client and Moodle3.6 as server.
Thanks,
Azmat
But you mus'nt use this plugin with 2 different version of moodle
In the current context I have mission to finish before doing it
I'm going to contact you directly
I don't kwow if it works with 3.8 version
I, at the moment, working in our moodle migration to 3.9 and will then publish a 3.9 version of the plugin
For the moment you can try the plugin with your 3.8, in case of trouble contact me through github repo and i'll correct all the necessary things