6 include_once($path_to_root . "/includes/session.inc");
7 include_once($path_to_root . "/includes/ui.inc");
8 include_once($path_to_root . "/admin/db/maintenance_db.inc");
10 $valid_paths = valid_paths();
12 if ($valid_paths != "")
14 page(_("Backup and Restore Database - Error"));
15 display_error (_("Backup paths have not been set correctly.") ." " . _("Please contact System Administrator.") . "<br>" .$valid_paths);
20 $db_name = $_SESSION["wa_current_user"]->company;
21 $msg = handle_form($db_connections[$db_name]);
23 page(_("Backup and Restore Database"));
25 //-------------------------------------------------------------------------------
26 start_form(true, true);
28 $cmb = get_backup_file_combo();
29 $compr = get_compr_combo();
32 <script language='javascript'>
33 function createBackup() {
34 ext = document.forms[0].cmb_comp.options[document.forms[0].cmb_comp.selectedIndex].value
35 comm = document.forms[0].comments.value
36 document.location.replace('backups.php?c=g&comp='+ext+'&comm='+comm)
38 function restoreBackup() {
39 pFilename = document.forms[0].cmb_backups.options[document.forms[0].cmb_backups.selectedIndex].value
40 document.location.replace('backups.php?c=r&fn='+pFilename)
42 function viewBackup() {
43 pFilename = document.forms[0].cmb_backups.options[document.forms[0].cmb_backups.selectedIndex].value
44 var ext = pFilename.substr(pFilename.lastIndexOf('.') + 1)
46 alert('" . _('This extension can not be be viewed: ') . "' + ext)
49 window.open('" . BACKUP_PATH . "'+pFilename, '', 'toolbar=no,scrollbars=yes')
51 function deleteBackup() {
52 pFilename = document.forms[0].cmb_backups.options[document.forms[0].cmb_backups.selectedIndex].value
53 if (!confirm('" . _("Are you sure you want to delete the backup file - ") . "'+pFilename+'?'))
55 document.location.replace('backups.php?c=df&fn='+pFilename)
57 function downloadBackup() {
58 pFilename = document.forms[0].cmb_backups.options[document.forms[0].cmb_backups.selectedIndex].value
59 document.location.replace('backups.php?c=ds&fn='+pFilename)
61 function uploadBackup() {
62 if (document.forms[0].uploadfile.value=='') {
63 alert('" . _("Please select a file to upload.") . "')
66 document.forms[0].action='backups.php?c=u&fn=' + document.forms[0].uploadfile.value
67 document.forms[0].submit()
71 <table cellpadding=2 cellspacing=2 border=0>
72 <tr><td colspan=2 style='color:darkred'><b>$msg</b> </td></tr>
74 <td style='padding-right:30'>" . _("Backup scripts") . "</td>
77 <td style='padding-right:30'>$cmb</td>
78 <script language='javascript'>
79 if (document.forms[0].cmb_backups.options.length!=0) document.forms[0].cmb_backups.selectedIndex=0
82 <table height=160 cellpadding=0 cellspacing=0 border=0>
83 <tr><td><input onclick='javascript:createBackup()' type='button' style='width:150' value='". _("Create Backup") . "'></td><td style='padding-left:20'>" . _("Compression") . " $compr</td></tr>
84 <tr><td><input onclick='javascript:restoreBackup()' type='button' style='width:150' value='". _("Restore Backup") . "'></td><td> </td></tr>
85 <tr><td><input onclick='javascript:viewBackup()' type='button' style='width:150' value='". _("View Backup") . "'></td><td> </td></tr>
86 <tr><td><input onclick='javascript:deleteBackup()' type='button' style='width:150' value='". _("Delete Backup") . "'></td><td> </td></tr>
87 <tr><td><input onclick='javascript:downloadBackup()' type='button' style='width:150' value='". _("Download Backup") . "'></td><td> </td></tr>
88 <tr><td><input onclick='javascript:uploadBackup()' type='button' style='width:150' value='". _("Upload Backup"). "'></td>
89 <td style='padding-left:20'><input name='uploadfile' type='file'></td>
95 <td style='padding-right:30'>" . _("Comments") . " (" . _("Create Backup") . ")</td>
98 <td style='padding-right:30'><textarea rows=4 cols=30 name='comments'></textarea></td>
104 //-------------------------------------------------------------------------------------------------
109 function handle_form($conn)
111 global $path_to_root;
113 if (isset($_GET['c']))
117 $filename = generate_backup($conn, $_GET['comp'], $_GET['comm']);
118 header("Location: backups.php?c=gs&fn=" . urlencode($filename));
121 //Generate and download
122 if ($_GET['c']=='gd')
124 $filename = generate_backup($conn);
125 header("Location: backups.php?c=ds&fn=" . urlencode($filename));
131 download_file(BACKUP_PATH . $_GET['fn']);
135 if ($_GET['c']=='df')
137 $filename = $_GET['fn'];
138 @unlink(BACKUP_PATH . $filename);
139 header("Location: backups.php?c=dff&fn=" . urlencode($filename));
142 if ($_GET['c']=='dff')
144 $msg = _("File successfully deleted.")." ";
145 $msg .= _("Filename") . " = " . $_GET['fn'];
148 //Write JS script to open download window
149 if ($_GET['c']=='ds')
151 $filename = urlencode($_GET['fn']);
152 $msg = _("Backup is being downloaded...");
153 $msg .= "<script language='javascript'>";
154 $msg .= "function download_file() {location.href ='backups.php?c=d&fn=$filename'}; window.onload=download_file";
158 //Print backup success message
159 if ($_GET['c']=='gs')
161 $msg = _("Backup successfully generated.")." ";
162 $msg .= _("Filename") . " = " . $_GET['fn'];
168 $filename=$_GET['fn'];
169 restore_backup(BACKUP_PATH . $filename, $conn);
170 header("Location: backups.php?c=rs&fn=" . urlencode($filename));
173 //Print restore success message
174 if ($_GET['c']=='rs')
176 $msg = _("Restore backup completed.")." ";
182 $filename = $_FILES['uploadfile']['tmp_name'];
183 if (is_uploaded_file ($filename))
185 restore_backup($filename, $conn);
186 $msg = _("Uploaded file has been restored.");
190 $msg = _("Backup was not uploaded into the system.");
198 function generate_backup($conn, $ext='no', $comm='')
200 if ($conn['tbpref'] != "")
201 $filename = $conn['dbname'] . "_" . $conn['tbpref'] . date("Ymd_Hi") . ".sql";
203 $filename = $conn['dbname'] . "_" . date("Ymd_Hi") . ".sql";
205 $filename = db_export($conn, $filename, $ext, $comm);
210 function restore_backup($filename, $conn)
212 return db_import($filename, $conn);
215 function get_backup_file_combo()
217 global $path_to_root;
220 $dh = opendir(BACKUP_PATH);
221 while (($file = readdir($dh)) !== false)
227 foreach ($ar_files as $file)
228 if (strpos($file, ".sql") || strpos($file, ".sql"))
229 $opt_files .= "<option value='$file'>$file</option>";
231 return "<select name='cmb_backups' size=2 style='height:160;width:230'>$opt_files</select>";
234 function get_compr_combo()
238 $ar_comps[] = _("No");
239 if (function_exists("gzcompress"))
241 if (function_exists("gzopen"))
242 $ar_comps[] = "gzip";
244 foreach ($ar_comps as $file)
245 $opt_comps .= "<option value='$file'>$file</option>";
247 return "<select name='cmb_comp'>$opt_comps</select>";
250 function download_file($filename)
252 if (empty($filename) || !file_exists($filename))
256 $saveasname = basename($filename);
257 header('Content-type: application/octet-stream');
258 header('Content-Length: '.filesize($filename));
259 header('Content-Disposition: attachment; filename="'.$saveasname.'"');
264 function valid_paths()
266 global $path_to_root;
269 if (!file_exists(BACKUP_PATH))
270 $st .= " - " . _("cannot find backup directory") . " - " . BACKUP_PATH . "<br>";