Translation update done using Pootle.
[phpmyadmin/crack.git] / tbl_tracking.php
blob698076a14853b8d786f9d085660101935c05a944
1 <?php
2 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 /**
5 * @package phpMyAdmin
6 */
8 // Run common work
9 require_once './libraries/common.inc.php';
10 require_once './libraries/Table.class.php';
12 define('TABLE_MAY_BE_ABSENT', true);
13 require './libraries/tbl_common.php';
14 $url_query .= '&amp;goto=tbl_tracking.php&amp;back=tbl_tracking.php';
15 $url_params['goto'] = 'tbl_tracking.php';;
16 $url_params['back'] = 'tbl_tracking.php';
18 // Get relation settings
19 require_once './libraries/relation.lib.php';
21 // Init vars for tracking report
22 if (isset($_REQUEST['report']) || isset($_REQUEST['report_export'])) {
23 $data = PMA_Tracker::getTrackedData($_REQUEST['db'], $_REQUEST['table'], $_REQUEST['version']);
25 $selection_schema = false;
26 $selection_data = false;
27 $selection_both = false;
29 if (! isset($_REQUEST['logtype'])) {
30 $_REQUEST['logtype'] = 'schema_and_data';
32 if ($_REQUEST['logtype'] == 'schema') {
33 $selection_schema = true;
34 } elseif($_REQUEST['logtype'] == 'data') {
35 $selection_data = true;
36 } else {
37 $selection_both = true;
39 if (! isset($_REQUEST['date_from'])) {
40 $_REQUEST['date_from'] = $data['date_from'];
42 if (! isset($_REQUEST['date_to'])) {
43 $_REQUEST['date_to'] = $data['date_to'];
45 if (! isset($_REQUEST['users'])) {
46 $_REQUEST['users'] = '*';
48 $filter_ts_from = strtotime($_REQUEST['date_from']);
49 $filter_ts_to = strtotime($_REQUEST['date_to']);
50 $filter_users = array_map('trim', explode(',', $_REQUEST['users']));
53 // Prepare export
54 if (isset($_REQUEST['report_export'])) {
56 /**
57 * Filters tracking entries
59 * @param array the entries to filter
60 * @param string "from" date
61 * @param string "to" date
62 * @param string users
64 * @return array filtered entries
67 function PMA_filter_tracking($data, $filter_ts_from, $filter_ts_to, $filter_users) {
68 $tmp_entries = array();
69 $id = 0;
70 foreach( $data as $entry ) {
71 $timestamp = strtotime($entry['date']);
73 if ($timestamp >= $filter_ts_from && $timestamp <= $filter_ts_to &&
74 ( in_array('*', $filter_users) || in_array($entry['username'], $filter_users) ) ) {
75 $tmp_entries[] = array( 'id' => $id,
76 'timestamp' => $timestamp,
77 'username' => $entry['username'],
78 'statement' => $entry['statement']
81 $id++;
83 return($tmp_entries);
86 $entries = array();
87 // Filtering data definition statements
88 if ($_REQUEST['logtype'] == 'schema' || $_REQUEST['logtype'] == 'schema_and_data') {
89 $entries = array_merge($entries, PMA_filter_tracking($data['ddlog'], $filter_ts_from, $filter_ts_to, $filter_users));
92 // Filtering data manipulation statements
93 if ($_REQUEST['logtype'] == 'data' || $_REQUEST['logtype'] == 'schema_and_data') {
94 $entries = array_merge($entries, PMA_filter_tracking($data['dmlog'], $filter_ts_from, $filter_ts_to, $filter_users));
97 // Sort it
98 foreach ($entries as $key => $row) {
99 $ids[$key] = $row['id'];
100 $timestamps[$key] = $row['timestamp'];
101 $usernames[$key] = $row['username'];
102 $statements[$key] = $row['statement'];
105 array_multisort($timestamps, SORT_ASC, $ids, SORT_ASC, $usernames, SORT_ASC, $statements, SORT_ASC, $entries);
109 // Export as file download
110 if (isset($_REQUEST['report_export']) && $_REQUEST['export_type'] == 'sqldumpfile') {
111 @ini_set('url_rewriter.tags','');
113 $dump = "# " . sprintf(__('Tracking report for table `%s`'), htmlspecialchars($_REQUEST['table'])) . "\n" .
114 "# " . date('Y-m-d H:i:s') . "\n";
115 foreach($entries as $entry) {
116 $dump .= $entry['statement'];
118 $filename = 'log_' . htmlspecialchars($_REQUEST['table']) . '.sql';
119 header('Content-Type: text/x-sql');
120 header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
121 header('Content-Disposition: attachment; filename="' . $filename . '"');
122 if (PMA_USR_BROWSER_AGENT == 'IE') {
123 header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
124 header('Pragma: public');
125 } else {
126 header('Pragma: no-cache');
127 header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
130 echo $dump;
131 exit();
136 * Gets tables informations
140 * Displays top menu links
142 require_once './libraries/tbl_links.inc.php';
143 echo '<br />';
146 * Actions
149 // Create tracking version
150 if (isset($_REQUEST['submit_create_version'])) {
151 $tracking_set = '';
153 if ($_REQUEST['alter_table'] == true) {
154 $tracking_set .= 'ALTER TABLE,';
156 if ($_REQUEST['rename_table'] == true) {
157 $tracking_set .= 'RENAME TABLE,';
159 if ($_REQUEST['create_table'] == true) {
160 $tracking_set .= 'CREATE TABLE,';
162 if ($_REQUEST['drop_table'] == true) {
163 $tracking_set .= 'DROP TABLE,';
165 if ($_REQUEST['create_index'] == true) {
166 $tracking_set .= 'CREATE INDEX,';
168 if ($_REQUEST['drop_index'] == true) {
169 $tracking_set .= 'DROP INDEX,';
171 if ($_REQUEST['insert'] == true) {
172 $tracking_set .= 'INSERT,';
174 if ($_REQUEST['update'] == true) {
175 $tracking_set .= 'UPDATE,';
177 if ($_REQUEST['delete'] == true) {
178 $tracking_set .= 'DELETE,';
180 if ($_REQUEST['truncate'] == true) {
181 $tracking_set .= 'TRUNCATE,';
183 $tracking_set = rtrim($tracking_set, ',');
185 if (PMA_Tracker::createVersion($GLOBALS['db'], $GLOBALS['table'], $_REQUEST['version'], $tracking_set )) {
186 $msg = PMA_Message::success(sprintf(__('Version %s is created, tracking for %s.%s is activated.'), $_REQUEST['version'], $GLOBALS['db'], $GLOBALS['table']));
187 $msg->display();
191 // Deactivate tracking
192 if (isset($_REQUEST['submit_deactivate_now'])) {
193 if (PMA_Tracker::deactivateTracking($GLOBALS['db'], $GLOBALS['table'], $_REQUEST['version'])) {
194 $msg = PMA_Message::success(sprintf(__('Tracking for %s.%s , version %s is deactivated.'), $GLOBALS['db'], $GLOBALS['table'], $_REQUEST['version']));
195 $msg->display();
199 // Activate tracking
200 if (isset($_REQUEST['submit_activate_now'])) {
201 if (PMA_Tracker::activateTracking($GLOBALS['db'], $GLOBALS['table'], $_REQUEST['version'])) {
202 $msg = PMA_Message::success(sprintf(__('Tracking for %s.%s , version %s is activated.'), $GLOBALS['db'], $GLOBALS['table'], $_REQUEST['version']));
203 $msg->display();
207 // Export as SQL execution
208 if (isset($_REQUEST['report_export']) && $_REQUEST['export_type'] == 'execution') {
209 foreach($entries as $entry) {
210 $sql_result = PMA_DBI_query( "/*NOTRACK*/\n" . $entry['statement'] );
212 $msg = PMA_Message::success(__('SQL statements executed.'));
213 $msg->display();
216 // Export as SQL dump
217 if (isset($_REQUEST['report_export']) && $_REQUEST['export_type'] == 'sqldump')
219 $new_query = "# " . __('You can execute the dump by creating and using a temporary database. Please ensure that you have the privileges to do so.') . "\n" .
220 "# " . __('Comment out these two lines if you do not need them.') . "\n" .
221 "\n" .
222 "CREATE database IF NOT EXISTS pma_temp_db; \n" .
223 "USE pma_temp_db; \n" .
224 "\n";
226 foreach($entries as $entry) {
227 $new_query .= $entry['statement'];
229 $msg = PMA_Message::success(__('SQL statements exported. Please copy the dump or execute it.'));
230 $msg->display();
232 $db_temp = $db;
233 $table_temp = $table;
235 $db = $table = '';
236 $GLOBALS['js_include'][] = 'functions.js';
237 require_once './libraries/sql_query_form.lib.php';
239 PMA_sqlQueryForm($new_query, 'sql');
241 $db = $db_temp;
242 $table = $table_temp;
246 * Schema snapshot
248 if (isset($_REQUEST['snapshot'])) {
250 <h3><?php echo __('Structure snapshot');?> [<a href="tbl_tracking.php?<?php echo $url_query;?>"><?php echo __('Close');?></a>]</h3>
251 <?php
252 $data = PMA_Tracker::getTrackedData($_REQUEST['db'], $_REQUEST['table'], $_REQUEST['version']);
254 // Get first DROP TABLE and CREATE TABLE statements
255 $drop_create_statements = $data['ddlog'][0]['statement'];
257 if (strstr($data['ddlog'][0]['statement'], 'DROP TABLE')) {
258 $drop_create_statements .= $data['ddlog'][1]['statement'];
260 // Print SQL code
261 PMA_showMessage(sprintf(__('Version %s snapshot (SQL code)'), $_REQUEST['version']), $drop_create_statements);
263 // Unserialize snapshot
264 $temp = unserialize($data['schema_snapshot']);
265 $columns = $temp['COLUMNS'];
266 $indexes = $temp['INDEXES'];
268 <h3><?php echo __('Structure');?></h3>
269 <table id="tablestructure" class="data">
270 <thead>
271 <tr>
272 <th><?php echo __('Column'); ?></th>
273 <th><?php echo __('Type'); ?></th>
274 <th><?php echo __('Collation'); ?></th>
275 <th><?php echo __('Null'); ?></th>
276 <th><?php echo __('Default'); ?></th>
277 <th><?php echo __('Extra'); ?></th>
278 <th><?php echo __('Comment'); ?></th>
279 </tr>
280 </thead>
281 <tbody>
282 <?php
283 $style = 'odd';
284 foreach($columns as $field_index => $field) {
286 <tr class="<?php echo $style; ?>">
287 <?php
288 if ($field['Key'] == 'PRI') {
289 echo '<td><b><u>' . $field['Field'] . '</u></b></td>' . "\n";
290 } else {
291 echo '<td><b>' . $field['Field'] . '</b></td>' . "\n";
294 <td><?php echo $field['Type'];?></td>
295 <td><?php echo $field['Collation'];?></td>
296 <td><?php echo $field['Null'];?></td>
297 <td><?php echo $field['Default'];?></td>
298 <td><?php echo $field['Extra'];?></td>
299 <td><?php echo $field['Comment'];?></td>
300 </tr>
301 <?php
302 if ($style == 'even') {
303 $style = 'odd';
304 } else {
305 $style = 'even';
309 </tbody>
310 </table>
312 <?php
313 if (count($indexes) > 0) {
315 <h3><?php echo __('Indexes');?></h3>
316 <table id="tablestructure_indexes" class="data">
317 <thead>
318 <tr>
319 <th><?php echo __('Keyname');?></th>
320 <th><?php echo __('Type');?></th>
321 <th><?php echo __('Unique');?></th>
322 <th><?php echo __('Packed');?></th>
323 <th><?php echo __('Column');?></th>
324 <th><?php echo __('Cardinality');?></th>
325 <th><?php echo __('Collation');?></th>
326 <th><?php echo __('Null');?></th>
327 <th><?php echo __('Comment');?></th>
328 </tr>
329 <tbody>
330 <?php
331 $style = 'odd';
332 foreach ($indexes as $indexes_index => $index) {
333 if ($index['Non_unique'] == 0) {
334 $str_unique = __('Yes');
335 } else {
336 $str_unique = __('No');
338 if ($index['Packed'] != '') {
339 $str_packed = __('Yes');
340 } else {
341 $str_packed = __('No');
344 <tr class="<?php echo $style; ?>">
345 <td><b><?php echo $index['Key_name'];?></b></td>
346 <td><?php echo $index['Index_type'];?></td>
347 <td><?php echo $str_unique;?></td>
348 <td><?php echo $str_packed;?></td>
349 <td><?php echo $index['Column_name'];?></td>
350 <td><?php echo $index['Cardinality'];?></td>
351 <td><?php echo $index['Collation'];?></td>
352 <td><?php echo $index['Null'];?></td>
353 <td><?php echo $index['Comment'];?></td>
354 </tr>
355 <?php
356 if ($style == 'even') {
357 $style = 'odd';
358 } else {
359 $style = 'even';
363 </tbody>
364 </table>
365 <?php
366 } // endif
368 <br /><hr /><br />
369 <?php
371 // end of snapshot report
374 * Tracking report
376 if (isset($_REQUEST['report']) || isset($_REQUEST['report_export'])) {
378 <h3><?php echo __('Tracking report');?> [<a href="tbl_tracking.php?<?php echo $url_query;?>"><?php echo __('Close');?></a>]</h3>
380 <small><?php echo __('Tracking statements') . ' ' . $data['tracking']; ?></small><br/>
381 <br/>
383 <form method="post" action="tbl_tracking.php?<?php echo $url_query; ?>&amp;report=true&amp;version=<?php echo $_REQUEST['version'];?>">
384 <?php
386 $str1 = '<select name="logtype">' .
387 '<option value="schema"' . ($selection_schema ? ' selected="selected"' : '') . '>' . __('Structure only') . '</option>' .
388 '<option value="data"' . ($selection_data ? ' selected="selected"' : ''). '>' . __('Data only') . '</option>' .
389 '<option value="schema_and_data"' . ($selection_both ? ' selected="selected"' : '') . '>' . __('Structure and data') . '</option>' .
390 '</select>';
391 $str2 = '<input type="text" name="date_from" value="' . $_REQUEST['date_from'] . '" size="19" />';
392 $str3 = '<input type="text" name="date_to" value="' . $_REQUEST['date_to'] . '" size="19" />';
393 $str4 = '<input type="text" name="users" value="' . $_REQUEST['users'] . '" />';
394 $str5 = '<input type="submit" name="list_report" value="' . __('Go') . '" />';
396 printf(__('Show %s with dates from %s to %s by user %s %s'), $str1, $str2, $str3, $str4, $str5);
400 * First, list tracked data definition statements
402 $i = 1;
403 if ($selection_schema || $selection_both ) {
405 <table id="ddl_versions" class="data" width="100%">
406 <thead>
407 <tr>
408 <th width="18">#</th>
409 <th width="100"><?php echo __('Date');?></th>
410 <th width="60"><?php echo __('Username');?></th>
411 <th><?php echo __('Data definition statement');?></th>
412 </tr>
413 </thead>
414 <tbody>
415 <?php
416 $style = 'odd';
417 foreach ($data['ddlog'] as $entry) {
418 if (strlen($entry['statement']) > $GLOBALS['cfg']['MaxCharactersInDisplayedSQL']) {
419 $statement = substr($entry['statement'], 0, $GLOBALS['cfg']['MaxCharactersInDisplayedSQL']) . '[...]';
420 } else {
421 $statement = PMA_formatSql(PMA_SQP_parse($entry['statement']));
423 $timestamp = strtotime($entry['date']);
425 if ($timestamp >= $filter_ts_from && $timestamp <= $filter_ts_to &&
426 ( in_array('*', $filter_users) || in_array($entry['username'], $filter_users) ) ) {
428 <tr class="<?php echo $style; ?>">
429 <td><small><?php echo $i;?></small></td>
430 <td><small><?php echo $entry['date'];?></small></td>
431 <td><small><?php echo $entry['username']; ?></small></td>
432 <td><?php echo $statement; ?></td>
433 </tr>
434 <?php
435 if ($style == 'even') {
436 $style = 'odd';
437 } else {
438 $style = 'even';
440 $i++;
444 </tbody>
445 </table>
446 <?php
448 } //endif
451 * Secondly, list tracked data manipulation statements
454 if (($selection_data || $selection_both) && count($data['dmlog']) > 0) {
456 <table id="dml_versions" class="data" width="100%">
457 <thead>
458 <tr>
459 <th width="18">#</th>
460 <th width="100"><?php echo __('Date');?></th>
461 <th width="60"><?php echo __('Username');?></th>
462 <th><?php echo __('Data manipulation statement');?></th>
463 </tr>
464 </thead>
465 <tbody>
466 <?php
467 $style = 'odd';
468 foreach ($data['dmlog'] as $entry) {
469 if (strlen($entry['statement']) > $GLOBALS['cfg']['MaxCharactersInDisplayedSQL']) {
470 $statement = substr($entry['statement'], 0, $GLOBALS['cfg']['MaxCharactersInDisplayedSQL']) . '[...]';
471 } else {
472 $statement = PMA_formatSql(PMA_SQP_parse($entry['statement']));
474 $timestamp = strtotime($entry['date']);
476 if ($timestamp >= $filter_ts_from && $timestamp <= $filter_ts_to &&
477 ( in_array('*', $filter_users) || in_array($entry['username'], $filter_users) ) ) {
479 <tr class="<?php echo $style; ?>">
480 <td><small><?php echo $i; ?></small></td>
481 <td><small><?php echo $entry['date']; ?></small></td>
482 <td><small><?php echo $entry['username']; ?></small></td>
483 <td><?php echo $statement; ?></td>
484 </tr>
485 <?php
486 if ($style == 'even') {
487 $style = 'odd';
488 } else {
489 $style = 'even';
491 $i++;
495 </tbody>
496 </table>
497 <?php
500 </form>
501 <form method="post" action="tbl_tracking.php?<?php echo $url_query; ?>&amp;report=true&amp;version=<?php echo $_REQUEST['version'];?>">
502 <?php
503 printf(__('Show %s with dates from %s to %s by user %s %s'), $str1, $str2, $str3, $str4, $str5);
505 $str_export1 = '<select name="export_type">' .
506 '<option value="sqldumpfile">' . __('SQL dump (file download)') . '</option>' .
507 '<option value="sqldump">' . __('SQL dump') . '</option>' .
508 '<option value="execution" onclick="alert(\'' . PMA_escapeJsString(__('This option will replace your table and contained data.')) .'\')">' . __('SQL execution') . '</option>' .
509 '</select>';
511 $str_export2 = '<input type="submit" name="report_export" value="' . __('Go') .'" />';
513 </form>
514 <form method="post" action="tbl_tracking.php?<?php echo $url_query; ?>&amp;report=true&amp;version=<?php echo $_REQUEST['version'];?>">
515 <input type="hidden" name="logtype" value="<?php echo $_REQUEST['logtype'];?>" />
516 <input type="hidden" name="date_from" value="<?php echo $_REQUEST['date_from'];?>" />
517 <input type="hidden" name="date_to" value="<?php echo $_REQUEST['date_to'];?>" />
518 <input type="hidden" name="users" value="<?php echo $_REQUEST['users'];?>" />
519 <?php
520 echo "<br/>" . sprintf(__('Export as %s'), $str_export1) . $str_export2 . "<br/>";
522 </form>
523 <?php
524 echo "<br/><br/><hr/><br/>\n";
525 } // end of report
529 * List selectable tables
532 $sql_query = " SELECT DISTINCT db_name, table_name FROM " .
533 PMA_backquote($GLOBALS['cfg']['Server']['pmadb']) . "." .
534 PMA_backquote($GLOBALS['cfg']['Server']['tracking']) .
535 " WHERE " . PMA_backquote('db_name') . " = '" . PMA_sqlAddslashes($GLOBALS['db']) . "' " .
536 " ORDER BY ". PMA_backquote('db_name') . ", " . PMA_backquote('table_name');
538 $sql_result = PMA_query_as_controluser($sql_query);
540 if (PMA_DBI_num_rows($sql_result) > 0) {
542 <form method="post" action="tbl_tracking.php?<?php echo $url_query;?>">
543 <select name="table">
544 <?php
545 while ($entries = PMA_DBI_fetch_array($sql_result)) {
546 if (PMA_Tracker::isTracked($entries['db_name'], $entries['table_name'])) {
547 $status = ' (' . __('active') . ')';
548 } else {
549 $status = ' (' . __('not active') . ')';
551 if ($entries['table_name'] == $_REQUEST['table']) {
552 $s = ' selected="selected"';
553 } else {
554 $s = '';
556 echo '<option value="' . htmlspecialchars($entries['table_name']) . '"' . $s . '>' . htmlspecialchars($entries['db_name']) . ' . ' . htmlspecialchars($entries['table_name']) . $status . '</option>' . "\n";
559 </select>
560 <input type="submit" name="show_versions_submit" value="<?php echo __('Show versions');?>" />
561 </form>
562 <?php
565 <br />
566 <?php
569 * List versions of current table
572 $sql_query = " SELECT * FROM " .
573 PMA_backquote($GLOBALS['cfg']['Server']['pmadb']) . "." .
574 PMA_backquote($GLOBALS['cfg']['Server']['tracking']) .
575 " WHERE " . PMA_backquote('db_name') . " = '" . PMA_sqlAddslashes($_REQUEST['db']) . "' ".
576 " AND " . PMA_backquote('table_name') . " = '" . PMA_sqlAddslashes($_REQUEST['table']) ."' ".
577 " ORDER BY ". PMA_backquote('version') . " DESC ";
579 $sql_result = PMA_query_as_controluser($sql_query);
581 $last_version = 0;
582 $maxversion = PMA_DBI_fetch_array($sql_result);
583 $last_version = $maxversion['version'];
585 if ($last_version > 0) {
587 <table id="versions" class="data">
588 <thead>
589 <tr>
590 <th><?php echo __('Database');?></th>
591 <th><?php echo __('Table');?></th>
592 <th><?php echo __('Version');?></th>
593 <th><?php echo __('Created');?></th>
594 <th><?php echo __('Updated');?></th>
595 <th><?php echo __('Status');?></th>
596 <th><?php echo __('Show');?></th>
597 </tr>
598 </thead>
599 <tbody>
600 <?php
601 $style = 'odd';
602 PMA_DBI_data_seek($sql_result, 0);
603 while($version = PMA_DBI_fetch_array($sql_result)) {
604 if ($version['tracking_active'] == 1) {
605 $version_status = __('active');
606 } else {
607 $version_status = __('not active');
609 if (($version['version'] == $last_version) && ($version_status == __('not active'))) {
610 $tracking_active = false;
612 if (($version['version'] == $last_version) && ($version_status == __('active'))) {
613 $tracking_active = true;
616 <tr class="<?php echo $style;?>">
617 <td><?php echo htmlspecialchars($version['db_name']);?></td>
618 <td><?php echo htmlspecialchars($version['table_name']);?></td>
619 <td><?php echo $version['version'];?></td>
620 <td><?php echo $version['date_created'];?></td>
621 <td><?php echo $version['date_updated'];?></td>
622 <td><?php echo $version_status;?></td>
623 <td> <a href="tbl_tracking.php?<?php echo $url_query;?>&amp;report=true&amp;version=<?php echo $version['version'];?>"><?php echo __('Tracking report');?></a> | <a href="tbl_tracking.php?<?php echo $url_query;?>&amp;snapshot=true&amp;version=<?php echo $version['version'];?>"><?php echo __('Structure snapshot');?></a></td>
624 </tr>
625 <?php
626 if ($style == 'even') {
627 $style = 'odd';
628 } else {
629 $style = 'even';
633 </tbody>
634 </table>
635 <?php if ($tracking_active == true) {?>
636 <div id="div_deactivate_tracking">
637 <form method="post" action="tbl_tracking.php?<?php echo $url_query; ?>">
638 <fieldset>
639 <legend><?php printf(__('Deactivate tracking for %s.%s'), $GLOBALS['db'], $GLOBALS['table']); ?></legend>
640 <input type="hidden" name="version" value="<?php echo $last_version; ?>" />
641 <input type="submit" name="submit_deactivate_now" value="<?php echo __('Deactivate now'); ?>" />
642 </fieldset>
643 </form>
644 </div>
645 <?php
648 <?php if ($tracking_active == false) {?>
649 <div id="div_activate_tracking">
650 <form method="post" action="tbl_tracking.php?<?php echo $url_query; ?>">
651 <fieldset>
652 <legend><?php printf(__('Activate tracking for %s.%s'), $GLOBALS['db'], $GLOBALS['table']); ?></legend>
653 <input type="hidden" name="version" value="<?php echo $last_version; ?>" />
654 <input type="submit" name="submit_activate_now" value="<?php echo __('Activate now'); ?>" />
655 </fieldset>
656 </form>
657 </div>
658 <?php
663 <div id="div_create_version">
664 <form method="post" action="tbl_tracking.php?<?php echo $url_query; ?>">
665 <?php echo PMA_generate_common_hidden_inputs($GLOBALS['db'], $GLOBALS['table']); ?>
666 <fieldset>
667 <legend><?php printf(__('Create version %s of %s.%s'), ($last_version + 1), $GLOBALS['db'], $GLOBALS['table']); ?></legend>
669 <input type="hidden" name="version" value="<?php echo ($last_version + 1); ?>" />
671 <p><?php echo __('Track these data definition statements:');?></p>
672 <input type="checkbox" name="alter_table" value="true" checked="checked" /> ALTER TABLE<br/>
673 <input type="checkbox" name="rename_table" value="true" checked="checked" /> RENAME TABLE<br/>
674 <input type="checkbox" name="create_table" value="true" checked="checked" /> CREATE TABLE<br/>
675 <input type="checkbox" name="drop_table" value="true" checked="checked" /> DROP TABLE<br/>
676 <br/>
677 <input type="checkbox" name="create_index" value="true" checked="checked" /> CREATE INDEX<br/>
678 <input type="checkbox" name="drop_index" value="true" checked="checked" /> DROP INDEX<br/>
679 <p><?php echo __('Track these data manipulation statements:');?></p>
680 <input type="checkbox" name="insert" value="true" checked="checked" /> INSERT<br/>
681 <input type="checkbox" name="update" value="true" checked="checked" /> UPDATE<br/>
682 <input type="checkbox" name="delete" value="true" checked="checked" /> DELETE<br/>
683 <input type="checkbox" name="truncate" value="true" checked="checked" /> TRUNCATE<br/>
685 </fieldset>
686 <fieldset class="tblFooters">
687 <input type="submit" name="submit_create_version" value="<?php echo __('Create version'); ?>" />
688 </fieldset>
689 </form>
690 </div>
692 <br class="clearfloat"/>
694 <?php
696 * Displays the footer
698 require_once './libraries/footer.inc.php';