MDL-29509 new admin tool manager UI
[moodle.git] / admin / tool / replace / index.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 /**
18  * Search and replace strings throughout all texts in the whole database
19  *
20  * @package    tool
21  * @subpackage replace
22  * @copyright  1999 onwards Martin Dougiamas (http://dougiamas.com)
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  */
26 define('NO_OUTPUT_BUFFERING', true);
28 require_once('../../../config.php');
29 require_once($CFG->dirroot.'/course/lib.php');
30 require_once($CFG->libdir.'/adminlib.php');
32 admin_externalpage_setup('toolreplace');
34 $search  = optional_param('search', '', PARAM_RAW);
35 $replace = optional_param('replace', '', PARAM_RAW);
36 $sure    = optional_param('sure', 0, PARAM_BOOL);
38 ###################################################################
39 echo $OUTPUT->header();
41 echo $OUTPUT->heading('Search and replace text throughout the whole database');
43 if ($DB->get_dbfamily() !== 'mysql' and $DB->get_dbfamily() !== 'postgres') {
44     //TODO: add $DB->text_replace() to DML drivers
45     echo $OUTPUT->notification('Sorry, this feature is implemented only for MySQL and PostgreSQL databases.');
46     echo $OUTPUT->footer();
47     die;
48 }
50 if (!data_submitted() or !$search or !$replace or !confirm_sesskey() or !$sure) {   /// Print a form
51     echo $OUTPUT->notification('This script is not supported, always make complete backup before proceeding!<br />This operation can not be reverted!');
53     echo $OUTPUT->box_start();
54     echo '<div class="mdl-align">';
55     echo '<form action="index.php" method="post"><div>';
56     echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
57     echo '<div><label for="search">Search whole database for: </label><input id="search" type="text" name="search" size="40" /> (usually previous server URL)</div>';
58     echo '<div><label for="replace">Replace with this string: </label><input type="text" id="replace" name="replace" size="40" /> (usually new server URL)</div>';
59     echo '<div><label for="sure">I understand the risks of this operation: </label><input type="checkbox" id="sure" name="sure" value="1" /></div>';
60     echo '<div class="buttons"><input type="submit" class="singlebutton" value="Yes, do it now" /></div>';
61     echo '</div></form>';
62     echo '</div>';
63     echo $OUTPUT->box_end();
64     echo $OUTPUT->footer();
65     die;
66 }
68 echo $OUTPUT->box_start();
69 db_replace($search, $replace);
70 echo $OUTPUT->box_end();
72 /// Rebuild course cache which might be incorrect now
73 echo $OUTPUT->notification('Rebuilding course cache...', 'notifysuccess');
74 rebuild_course_cache();
75 echo $OUTPUT->notification('...finished', 'notifysuccess');
77 echo $OUTPUT->continue_button(new moodle_url('/admin/index.php'));
79 echo $OUTPUT->footer();