mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 14:27:22 +01:00
53 lines
2.0 KiB
PHP
53 lines
2.0 KiB
PHP
<?php //$Id$
|
||
|
||
/*
|
||
|
||
TODO:
|
||
- exporting to server file >2GB fails in 32bit operating systems - needs warning
|
||
- we may run out of disk space exporting to srever file - we must verify the file is not truncated; read from the end of file?
|
||
- when sending file >4GB - FAT32 limit, Apache limit, browser limit - needs warning
|
||
- there must be some form of progress bar during export, transfer - new tracking class could be passed around
|
||
- command line operation - could work around some 2G/4G limits in PHP; useful for cron full backups
|
||
- by default allow exporting into empty database only (no tables with the same prefix yet)
|
||
- all dangerous operation (like deleting of all data) should be confirmed by key found in special file in dataroot
|
||
(user would need file access to dataroot which might prevent various "accidents")
|
||
- implement "Export/import running" notification in lib/setup.php (similar to new upgrade flag in config table)
|
||
- gzip compression when storing xml file - the xml is very verbose and full of repeated tags (zip is not suitable here at all)
|
||
this could help us keep the files bellow 2G (expected ratio is > 10:1)
|
||
|
||
*/
|
||
|
||
require_once($CFG->libdir.'/adminlib.php');
|
||
require_once($CFG->libdir.'/dtllib.php');
|
||
|
||
|
||
function dbtransfer_export_xml_database($description, $mdb) {
|
||
@set_time_limit(0);
|
||
|
||
session_write_close(); // release session
|
||
|
||
header('Content-Type: application/xhtml+xml');
|
||
header('Content-Disposition: attachment; filename=database.xml');
|
||
header('Expires: 0');
|
||
header('Cache-Control: must-revalidate,post-check=0,pre-check=0');
|
||
header('Pragma: public');
|
||
|
||
while(@ob_flush());
|
||
|
||
$var = new file_xml_database_exporter('php://output', $mdb);
|
||
$var->export_database($description);
|
||
|
||
// no more output
|
||
die;
|
||
}
|
||
|
||
|
||
function dbtransfer_transfer_database($sourcedb, $targetdb) {
|
||
@set_time_limit(0);
|
||
|
||
session_write_close(); // release session
|
||
|
||
$var = new database_mover($sourcedb, $targetdb);
|
||
$var->export_database(null);
|
||
}
|