Skip to content

Commit

Permalink
MDL-29029 move dbtransfer to admin tools
Browse files Browse the repository at this point in the history
AMOS BEGIN
 CPY [dbexport,core_dbtransfer],[pluginname,tool_dbtransfer]
 MOV [dbexport,core_dbtransfer],[dbexport,tool_dbtransfer]
 MOV [dbtransfer,core_dbtransfer],[dbtransfer,tool_dbtransfer]
 MOV [exportdata,core_dbtransfer],[exportdata,tool_dbtransfer]
 MOV [notargetconectexception,core_dbtransfer],[notargetconectexception,tool_dbtransfer]
 MOV [pluginname,core_dbtransfer],[pluginname,tool_dbtransfer]
 MOV [transferdata,core_dbtransfer],[transferdata,tool_dbtransfer]
 MOV [transferdbintro,core_dbtransfer],[transferdbintro,tool_dbtransfer]
 MOV [transferdbtoserver,core_dbtransfer],[transferdbtoserver,tool_dbtransfer]
 MOV [transferringdbto,core_dbtransfer],[transferringdbto,tool_dbtransfer]
AMOS END
  • Loading branch information
skodak committed Sep 17, 2011
1 parent 72941d5 commit cfe070b
Show file tree
Hide file tree
Showing 16 changed files with 314 additions and 111 deletions.
19 changes: 0 additions & 19 deletions admin/dbtransfer/database_export_form.php

This file was deleted.

21 changes: 0 additions & 21 deletions admin/dbtransfer/dbexport.php

This file was deleted.

47 changes: 0 additions & 47 deletions admin/dbtransfer/index.php

This file was deleted.

4 changes: 0 additions & 4 deletions admin/settings/development.php
Expand Up @@ -19,10 +19,6 @@

$ADMIN->add('experimental', $temp);

// DB transfer related pages
$ADMIN->add('experimental', new admin_externalpage('dbtransfer', get_string('dbtransfer', 'dbtransfer'), $CFG->wwwroot.'/'.$CFG->admin.'/dbtransfer/index.php', 'moodle/site:config', true));
$ADMIN->add('experimental', new admin_externalpage('dbexport', get_string('dbexport', 'dbtransfer'), $CFG->wwwroot.'/'.$CFG->admin.'/dbtransfer/dbexport.php', 'moodle/site:config', true));

// "debugging" settingpage
$temp = new admin_settingpage('debugging', get_string('debugging', 'admin'));
$temp->add(new admin_setting_special_debug());
Expand Down
40 changes: 40 additions & 0 deletions admin/tool/dbtransfer/database_export_form.php
@@ -0,0 +1,40 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* Transfer form
*
* @package tool
* @subpackage dbtransfer
* @copyright 2008 Petr Skoda
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

defined('MOODLE_INTERNAL') || die;

require_once $CFG->libdir.'/formslib.php';

class database_export_form extends moodleform {

function definition() {
$mform = $this->_form;

$mform->addElement('header', 'database', get_string('dbexport', 'tool_dbtransfer'));
$mform->addElement('textarea', 'description', get_string('description'), array('rows'=>5, 'cols'=>60));

$this->add_action_buttons(false, get_string('exportdata', 'tool_dbtransfer'));
}
}
@@ -1,8 +1,29 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

if (!defined('MOODLE_INTERNAL')) {
die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page
}
/**
* Transfer form
*
* @package tool
* @subpackage dbtransfer
* @copyright 2008 Petr Skoda
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

defined('MOODLE_INTERNAL') || die;

require_once $CFG->libdir.'/formslib.php';

Expand All @@ -11,7 +32,7 @@ class database_transfer_form extends moodleform {
function definition() {
$mform = $this->_form;

$mform->addElement('header', 'database', get_string('dbtransfer', 'dbtransfer'));
$mform->addElement('header', 'database', get_string('dbtransfer', 'tool_dbtransfer'));

$supported = array (
'mysqli/native',
Expand Down Expand Up @@ -43,6 +64,6 @@ function definition() {
$mform->addRule('dbpass', get_string('required'), 'required', null);
$mform->addRule('prefix', get_string('required'), 'required', null);

$this->add_action_buttons(false, get_string('transferdata', 'dbtransfer'));
$this->add_action_buttons(false, get_string('transferdata', 'tool_dbtransfer'));
}
}
46 changes: 46 additions & 0 deletions admin/tool/dbtransfer/dbexport.php
@@ -0,0 +1,46 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* Export
*
* @package tool
* @subpackage dbtransfer
* @copyright 2008 Petr Skoda
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

define('NO_OUTPUT_BUFFERING', true);

require('../../../config.php');
require_once('locallib.php');
require_once('database_export_form.php');

require_login();
admin_externalpage_setup('tooldbexport');

//create form
$form = new database_export_form();

if ($data = $form->get_data()) {
dbtransfer_export_xml_database($data->description, $DB);
die;
}

echo $OUTPUT->header();
// TODO: add some more info here
$form->display();
echo $OUTPUT->footer();
72 changes: 72 additions & 0 deletions admin/tool/dbtransfer/index.php
@@ -0,0 +1,72 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* Transfer tool
*
* @package tool
* @subpackage dbtransfer
* @copyright 2008 Petr Skoda
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

define('NO_OUTPUT_BUFFERING', true);

require('../../../config.php');
require_once('locallib.php');
require_once('database_transfer_form.php');

require_login();
admin_externalpage_setup('tooldbtransfer');

// Create the form
$form = new database_transfer_form();

// If we have valid input.
if ($data = $form->get_data()) {
// Connect to the other database.
list($dbtype, $dblibrary) = explode('/', $data->driver);
$targetdb = moodle_database::get_driver_instance($dbtype, $dblibrary);
if (!$targetdb->connect($data->dbhost, $data->dbuser, $data->dbpass, $data->dbname, $data->prefix, null)) {
throw new dbtransfer_exception('notargetconectexception', null, "$CFG->wwwroot/$CFG->admin/tool/dbtransfer/");
}
if ($targetdb->get_tables()) {
throw new dbtransfer_exception('targetdatabasenotempty', null, "$CFG->wwwroot/$CFG->admin/tool/dbtransfer/");
}

// Start output.
echo $OUTPUT->header();
$data->dbtype = $dbtype;
echo $OUTPUT->heading(get_string('transferringdbto', 'tool_dbtransfer', $data));

// Do the transfer.
$feedback = new html_list_progress_trace();
dbtransfer_transfer_database($DB, $targetdb, $feedback);
$feedback->finished();

// Finish up.
echo $OUTPUT->notification(get_string('success'), 'notifysuccess');
echo $OUTPUT->continue_button("$CFG->wwwroot/$CFG->admin/");
echo $OUTPUT->footer();
die;
}

// Otherwise display the settings form.
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('transferdbtoserver', 'tool_dbtransfer'));
echo '<p>', get_string('transferdbintro', 'tool_dbtransfer'), "</p>\n\n";
$form->display();
echo $OUTPUT->footer();
35 changes: 35 additions & 0 deletions admin/tool/dbtransfer/lang/en/tool_dbtransfer.php
@@ -0,0 +1,35 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* Strings for component 'tool_generator', language 'en', branch 'MOODLE_22_STABLE'
*
* @package tool
* @subpackage dbtransfer
* @copyright 2011 petr Skoda
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

$string['dbexport'] = 'Database transfer';
$string['dbtransfer'] = 'Database export';
$string['exportdata'] = 'Export data';
$string['notargetconectexception'] = 'Can not connect target database, sorry.';
$string['pluginname'] = 'Database transfer';
$string['transferdata'] = 'Transfer data';
$string['transferdbintro'] = 'This script will transfer the entire contents of this database to another database server.';
$string['transferdbtoserver'] = 'Transfer this Moodle database to another server';
$string['transferringdbto'] = 'Transferring this database to {$a->dbtype} database {$a->dbname} on {$a->dbhost}';

26 changes: 25 additions & 1 deletion admin/dbtransfer/lib.php → admin/tool/dbtransfer/locallib.php
@@ -1,10 +1,34 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* Export db content to file.
*
* @package tool
* @subpackage dbtransfer
* @copyright 2008 Petr Skoda {@link http://skodak.org}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

defined('MOODLE_INTERNAL') || die;
/*
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?
- we may run out of disk space exporting to server 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
Expand Down

0 comments on commit cfe070b

Please sign in to comment.