source: trunk/administration/db.php

Last change on this file was 2, checked in by george, 14 years ago
  • Přidáno: Trunk revize 13719.
File size: 13.7 KB
Line 
1<?php
2
3/***************************************************************************
4* Dolphin Smart Community Builder
5* -----------------
6* begin : Mon Mar 23 2006
7* copyright : (C) 2006 BoonEx Group
8* website : http://www.boonex.com/
9* This file is part of Dolphin - Smart Community Builder
10*
11* Dolphin is free software. This work is licensed under a Creative Commons Attribution 3.0 License.
12* http://creativecommons.org/licenses/by/3.0/
13*
14* Dolphin is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
15* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16* See the Creative Commons Attribution 3.0 License for more details.
17* You should have received a copy of the Creative Commons Attribution 3.0 License along with Dolphin,
18* see license.txt file; if not, write to marketing@boonex.com
19***************************************************************************/
20
21require_once( '../inc/header.inc.php' );
22require_once( BX_DIRECTORY_PATH_INC . 'design.inc.php' );
23require_once( BX_DIRECTORY_PATH_INC . 'admin_design.inc.php' );
24bx_import('BxDolDatabaseBackup');
25bx_import('BxTemplFormView');
26
27$logged['admin'] = member_auth(1, true, true);
28set_time_limit(36000);
29
30list($sStatusText, $sStatusTextRestore) = getActionResultBlock();
31
32$sTablesC = _t('_adm_dbtools_Tables_backup_tools');
33$sDatabaseC = _t('_adm_dbtools_Database_backup_tools');
34$sRestoreC = _t('_adm_dbtools_Database_restore');
35
36$sTablesBackupToolsBlock = getTablesBackupTools($status_text);
37$sDatabaseBackupToolsBlock = DatabaseBackupTools($status_text);
38$sDatabaseRestoreBlock = getDatabaseRestoreBlock($status_text);
39
40$sBoxContent = <<<EOF
41<style>
42 div.hidden {
43 display:none;
44 }
45</style>
46<script type="text/javascript">
47 <!--
48 function switchAdmPage(iPageID) {
49 //make all tabs - inactive
50 //mace selected tab - active
51 //hide all pages
52 //show selected page
53
54 $(".dbTopMenu").children().removeClass().toggleClass("notActive");
55 $("#main_menu" + iPageID).removeClass().toggleClass("active");
56
57 $("#adm_pages").children().removeClass().toggleClass("hidden");
58 $("#adm_pages #page" + iPageID).removeClass().toggleClass("visible");
59
60 return false;
61 }
62 -->
63</script>
64
65<div class="boxContent" id="adm_pages">
66 <div id="page1" class="visible">{$sTablesBackupToolsBlock}</div>
67 <div id="page2" class="hidden">{$sDatabaseBackupToolsBlock}</div>
68</div>
69EOF;
70
71$sActions = <<<EOF
72<div class="dbTopMenu">
73 <div class="active" id="main_menu1"><span><a href="#" class="top_members_menu" onclick="switchAdmPage(1); return false;">{$sTablesC}</a></span></div>
74 <div class="notActive" id="main_menu2"><span><a href="#" class="top_members_menu" onclick="switchAdmPage(2); return false;">{$sDatabaseC}</a></span></div>
75</div>
76EOF;
77
78$sResult = DesignBoxContent(_t('_adm_dbtools_title'), $sStatusText . $sBoxContent, 1, $sActions);
79$sResult .= DesignBoxContent(_t('_adm_dbtools_Database_restore'), $sStatusTextRestore . $sDatabaseRestoreBlock, 1);
80$sResult .= adm_hosting_promo();
81
82
83$iNameIndex = 15;
84$_page = array(
85 'name_index' => $iNameIndex,
86 'css_name' => array('forms_adv.css'),
87 'header' => _t('_adm_dbtools_title'),
88);
89
90$_page_cont[$iNameIndex]['page_main_code'] = $sResult;
91
92PageCodeAdmin();
93
94// Functions
95function getActionResultBlock() {
96 $sSuccDumpedIntoFileC = _t('_adm_dbtools_succ_dumped_into_file');
97 $sDumpFileSuccDeletedC = _t('_adm_dbtools_Dump_file_succefully_deleted');
98 $sPleaseSelectDumpFileC = _t('_adm_dbtools_Please_select_dump_file');
99 $sDateRestoredFromDumpC = _t('_adm_dbtools_Data_succefully_restored_from_dump');
100 $sPleaseSelectCorrectDumpFileC = _t('_adm_dbtools_Please_select_correct_dump_file');
101 $sDateRestoredFromPcC = _t('_adm_dbtools_Data_succefully_restored_from_PC');
102
103 $status_text = $status_text_restore = '';
104
105 if (isset($_POST['TablesBackup'])) { ##Block of table backup create
106 //echo "For: Tables Tools". $_POST['tbl_op'] . ' Table - ' . $_POST['tbl'] . ' Show param - ' . $_POST['savetype'] ;
107
108 $OutPutType = preg_replace("/[^0-9]/", '', $_POST['tbl_op']);
109 $oNewBackup = new BxDolDatabaseBackup();
110 $oNewBackup -> _getTableStruct($_POST['tbl'], $OutPutType);
111
112 if ($_POST['savetype'] == 'client') {
113 $sqlfile = date("Y-m-d_H:i:s").'_'.$_POST['tbl'].'.sql';
114 header("Content-Type: text/plain");
115 header("Content-Disposition: attachment;filename=\"".$sqlfile."\"");
116 echo $oNewBackup -> sInputs;
117 exit();
118 }
119 if ($_POST['savetype'] == 'server') {
120 $sqlfile = BX_DIRECTORY_PATH_ROOT . 'backup/'.date("Y-m-d_H-i-s").'_'.$_POST['tbl'].'.sql';
121 $file = fopen($sqlfile, 'w');
122 fputs($file, $oNewBackup -> sInputs);
123 $status_text .= "<hr size=1 /><font color='green'><center>{$sSuccDumpedIntoFileC} <b>{$sqlfile}</b></center></font>\n";
124 fclose($file);
125 }
126 if ($_POST['savetype'] == 'show') {
127 $status_text = "<center><textarea cols='100' rows='30' name='content' style='font-family: Arial; font-size: 11px' readonly='readonly'>" . $oNewBackup -> sInputs ."</textarea></center>";
128 }
129 }
130
131 if (isset($_POST['DatabasesBackup'])) {
132 $OutPutType = preg_replace("/[^0-9]/", '', $_POST['db_op']);
133 $oNewBackup = new BxDolDatabaseBackup();
134 $oNewBackup -> _getAllTables($OutPutType);
135
136 if ($_POST['savetype'] == 'show') {
137 $status_text = "<center><textarea cols='100' rows='30' name='content' style='font-family: Arial; font-size: 11px' readonly='readonly'>" . $oNewBackup -> sInputs ."</textarea></center>";
138 }
139 if ($_POST['savetype'] == 'server') {
140 $sqlfile = BX_DIRECTORY_PATH_ROOT . 'backup/'.date("Y-m-d_H-i-s").'_all.sql';
141 $file = fopen($sqlfile, 'w');
142 fputs($file, $oNewBackup -> sInputs);
143 $status_text .= "<hr size=1 /><font color='green'><center>{$sSuccDumpedIntoFileC} <b>{$sqlfile}</b></center></font>\n";
144 fclose($file);
145 }
146 if ($_POST['savetype'] == 'client') {
147 $sqlfile = date("Y-m-d_H:i:s").'_all.sql';
148 header("Content-Type: text/plain");
149 header("Content-Disposition: attachment;filename=\"".$sqlfile."\"");
150 echo $oNewBackup -> sInputs;
151 exit();
152 }
153 }
154
155 if (isset($_POST['DatabasesRestore'])) {
156 if ($_POST['savetype'] == 'delete') {
157 if(is_file(BX_DIRECTORY_PATH_ROOT.'backup/'.$_POST['dump_file'])) {
158 @unlink(BX_DIRECTORY_PATH_ROOT.'backup/'.$_POST['dump_file']);
159 $status_text_restore .= "<hr size=1 /><font color='green'><center>{$sDumpFileSuccDeletedC} <b>{$sqlfile}</b></center></font>\n";
160 } else
161 $status_text_restore .= "<hr size=1 /><font color='red'><center>{$sPleaseSelectDumpFileC} <b>{$sqlfile}</b></center></font>\n";
162 }
163 if ($_POST['savetype'] == 'restore') {
164 if(is_file(BX_DIRECTORY_PATH_ROOT.'backup/'.$_POST['dump_file'])) {
165 $oNewBackup = new BxDolDatabaseBackup();
166 $oNewBackup -> _restoreFromDumpFile(BX_DIRECTORY_PATH_ROOT.'backup/'.$_POST['dump_file']);
167 $status_text_restore .= "<hr size=1 /><font color='green'><center>{$sDateRestoredFromDumpC}</center></font>\n";
168 } else
169 $status_text_restore .= "<hr size=1 /><font color='red'><center>{$sPleaseSelectDumpFileC} <b>{$sqlfile}</b></center></font>\n";
170 }
171 }
172
173 if (isset($_FILES['sqlfile'])) {
174 if (preg_match("/.sql/", $_FILES['sqlfile']['name'])) { #it is correct
175 $oNewBackup = new BxDolDatabaseBackup();
176 $oNewBackup -> _restoreFromDumpFile($_FILES['sqlfile']['tmp_name'] );
177 @unlink($_FILES['sqlfile']['tmp_name']);
178 $status_text_restore .= "<hr size=1 /><font color='green'><center>{$sDateRestoredFromPcC} </center></font>\n";
179 } else
180 $status_text_restore .= "<hr size=1 /><font color='red'><center>{$sPleaseSelectCorrectDumpFileC}</center></font>\n";
181 }
182
183 return array($status_text, $status_text_restore);
184}
185
186function getTablesBackupTools($status_text) {
187 $sChooseOperationC = _t('_adm_dbtools_Choose_operation_and_table');
188 $sBackup1C = _t('_adm_dbtools_Backup_structure_content');
189 $sBackup2C = _t('_adm_dbtools_Backup_structure');
190 $sBackup3C = _t('_adm_dbtools_Backup_content');
191 $sSaveOption1C = _t('_adm_dbtools_Save_to_server');
192 $sSaveOption2C = _t('_adm_dbtools_Save_to_your_PC');
193 $sSaveOption3C = _t('_adm_dbtools_Show_on_the_screen');
194 $sBackupTableC = _t('_adm_dbtools_Backup_table');
195 $sActionC = _t('_Action');
196
197 // All tables of Database
198 $aTablesOptions = array();
199 $tbls = db_list_tables();
200 while ($tbl = mysql_fetch_array($tbls)) {
201 $aTablesOptions[$tbl['0']] = $tbl['0'];
202 }
203
204 $sStatusText = ($status_text and isset($_POST['TablesBackup'])) ? $status_text : '';
205
206 $aForm = array(
207 'form_attrs' => array(
208 'name' => 'TablesBackupTools_form',
209 'action' => $_SERVER['PHP_SELF'],
210 'method' => 'post',
211 ),
212 'inputs' => array(
213 'TablesBackup' => array(
214 'type' => 'hidden',
215 'name' => 'TablesBackup',
216 'value' => 'YES',
217 ),
218 'tbl_op' => array(
219 'type' => 'select',
220 'name' => 'tbl_op',
221 'caption' => $sChooseOperationC,
222 'values' => array (
223 2 => $sBackup1C,
224 0 => $sBackup2C,
225 1 => $sBackup3C,
226 ),
227 ),
228 'tbl' => array(
229 'type' => 'select',
230 'name' => 'tbl',
231 'caption' => '',
232 'values' => $aTablesOptions,
233 ),
234 'savetype' => array(
235 'type' => 'radio_set',
236 'name' => 'savetype',
237 'caption' => $sActionC,
238 'values' => array (
239 'server' => $sSaveOption1C,
240 'client' => $sSaveOption2C,
241 'show' => $sSaveOption3C,
242 ),
243 ),
244 'tables_backup_tool' => array(
245 'type' => 'submit',
246 'name' => 'tables_backup_tool',
247 'caption' => '',
248 'value' => $sBackupTableC,
249 ),
250 ),
251 );
252
253 $oForm = new BxTemplFormView($aForm);
254 return $GLOBALS['oAdmTemplate']->parseHtmlByName('design_box_content.html', array('content' => $oForm->getCode() . $sStatusText));
255 //return DesignBoxContent(_t('_adm_dbtools_Tables_backup_tools'), '<div style="margin:9px;">' . $oForm->getCode() . '</div>' . $sStatusText, 1);
256}
257
258function DatabaseBackupTools($status_text) {
259 $sChooseOperationC = _t('_adm_dbtools_Choose_operation');
260 $sBackup1C = _t('_adm_dbtools_Backup_structure_content');
261 $sBackup2C = _t('_adm_dbtools_Backup_structure');
262 $sSaveOption1C = _t('_adm_dbtools_Save_to_server');
263 $sSaveOption2C = _t('_adm_dbtools_Save_to_your_PC');
264 $sSaveOption3C = _t('_adm_dbtools_Show_on_the_screen');
265 $sBackupDatabaseC = _t('_adm_dbtools_Backup_database');
266 $sActionC = _t('_Action');
267
268 $sStatusText = ($status_text and isset($_POST['DatabasesBackup'])) ? $status_text : '';
269
270 $aForm = array(
271 'form_attrs' => array(
272 'name' => 'DatabaseBackupTools_form',
273 'action' => $_SERVER['PHP_SELF'],
274 'method' => 'post',
275 ),
276 'inputs' => array(
277 'DatabasesBackup' => array(
278 'type' => 'hidden',
279 'name' => 'DatabasesBackup',
280 'value' => 'YES',
281 ),
282 'db_op' => array(
283 'type' => 'select',
284 'name' => 'db_op',
285 'caption' => $sChooseOperationC,
286 'values' => array (
287 2 => $sBackup1C,
288 0 => $sBackup2C,
289 ),
290 ),
291 'savetype' => array(
292 'type' => 'radio_set',
293 'name' => 'savetype',
294 'caption' => $sActionC,
295 'values' => array (
296 'server' => $sSaveOption1C,
297 'client' => $sSaveOption2C,
298 'show' => $sSaveOption3C,
299 ),
300 ),
301 'database_backup_tool' => array(
302 'type' => 'submit',
303 'name' => 'database_backup_tool',
304 'caption' => '',
305 'value' => $sBackupDatabaseC,
306 ),
307 ),
308 );
309
310 $oForm = new BxTemplFormView($aForm);
311 return $GLOBALS['oAdmTemplate']->parseHtmlByName('design_box_content.html', array('content' => $oForm->getCode() . $sStatusText));
312 //return DesignBoxContent(_t('_adm_dbtools_Database_backup_tools'), '<div style="margin:9px;">' . $oForm->getCode() . '</div>' . $sStatusText, 1);
313}
314
315function getDatabaseRestoreBlock($status_text) {
316 $sPleaseSelectDumpFileC = _t('_adm_dbtools_Please_select_dump_file');
317 $sRestoreDataFromDumpC = _t('_adm_dbtools_Restore_data_from_dump');
318 $sDeleteDumpFromServerC = _t('_adm_dbtools_Delete_dump_from_server');
319 $sDatabaseRestoreFromPCC = _t('_adm_dbtools_Database_restore_from_your_PC');
320 $sSendC = _t('_Send');
321 $sSubmitC = _t('_Submit');
322 $sActionC = _t('_Action');
323
324 $aExistedFilesOptions = array();
325 if ( $handle = @opendir(BX_DIRECTORY_PATH_ROOT.'backup/') ) {
326 while ( $file = readdir($handle) ) {
327 if ( preg_match("/.sql/", $file) )
328 $aExistedFilesOptions[$file] = $file;
329 }
330 }
331
332 $sStatusText = ($status_text and isset($_POST['DatabasesRestore']) or isset($_FILES['sqlfile']) ) ? $status_text : '';
333
334 $aForm = array(
335 'form_attrs' => array(
336 'name' => 'DatabaseRestore1_form',
337 'action' => $_SERVER['PHP_SELF'],
338 'method' => 'post',
339 ),
340 'inputs' => array(
341 'DatabasesRestore' => array(
342 'type' => 'hidden',
343 'name' => 'DatabasesRestore',
344 'value' => 'YES',
345 ),
346 'dump_file' => array(
347 'type' => 'select',
348 'name' => 'dump_file',
349 'caption' => $sPleaseSelectDumpFileC,
350 'values' => $aExistedFilesOptions,
351 ),
352 'savetype' => array(
353 'type' => 'radio_set',
354 'name' => 'savetype',
355 'caption' => $sActionC,
356 'values' => array (
357 'restore' => $sRestoreDataFromDumpC,
358 'delete' => $sDeleteDumpFromServerC,
359 ),
360 'value' => 'restore',
361 ),
362 'DatabaseRestore1' => array(
363 'type' => 'submit',
364 'name' => 'DatabaseRestore1',
365 'caption' => '',
366 'value' => $sSubmitC,
367 ),
368 ),
369 );
370 $oForm = new BxTemplFormView($aForm);
371
372 $aForm2 = array(
373 'form_attrs' => array(
374 'name' => 'DatabaseRestore1_form',
375 'action' => $_SERVER['PHP_SELF'],
376 'method' => 'post',
377 'enctype' => 'multipart/form-data',
378 ),
379 'inputs' => array(
380 'header1' => array(
381 'type' => 'block_header',
382 'caption' => $sDatabaseRestoreFromPCC,
383 ),
384 'sqlfile' => array(
385 'type' => 'file',
386 'name' => 'sqlfile',
387 'caption' => $sPleaseSelectDumpFileC,
388 'required' => true,
389 ),
390 'DatabaseRestore2' => array(
391 'type' => 'submit',
392 'name' => 'DatabaseRestore2',
393 'caption' => '',
394 'value' => $sSendC,
395 ),
396 ),
397 );
398 $oForm2 = new BxTemplFormView($aForm2);
399
400 return $GLOBALS['oAdmTemplate']->parseHtmlByName('design_box_content.html', array('content' => $oForm->getCode() . '<br />' . $oForm2->getCode() . $sStatusText));
401}
402
403?>
Note: See TracBrowser for help on using the repository browser.