3.3.9.1 release
[phpmyadmin/madhuracj.git] / tbl_tracking.php
blob224ed8789002283b672b442e40c560e5e7b9836c
1 <?php
2 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 /**
5 * @author Alexander Rutkowski
6 * @version $Id$
7 * @package phpMyAdmin
8 */
10 // Run common work
11 require_once './libraries/common.inc.php';
12 require_once './libraries/Table.class.php';
14 define('TABLE_MAY_BE_ABSENT', true);
15 require './libraries/tbl_common.php';
16 $url_query .= '&amp;goto=tbl_tracking.php&amp;back=tbl_tracking.php';
17 $url_params['goto'] = 'tbl_tracking.php';;
18 $url_params['back'] = 'tbl_tracking.php';
20 // Get relation settings
21 require_once './libraries/relation.lib.php';
23 // Init vars for tracking report
24 if (isset($_REQUEST['report']) || isset($_REQUEST['report_export'])) {
25 $data = PMA_Tracker::getTrackedData($_REQUEST['db'], $_REQUEST['table'], $_REQUEST['version']);
27 $selection_schema = false;
28 $selection_data = false;
29 $selection_both = false;
31 if (! isset($_REQUEST['logtype'])) {
32 $_REQUEST['logtype'] = 'schema_and_data';
34 if ($_REQUEST['logtype'] == 'schema') {
35 $selection_schema = true;
36 } elseif($_REQUEST['logtype'] == 'data') {
37 $selection_data = true;
38 } else {
39 $selection_both = true;
41 if (! isset($_REQUEST['date_from'])) {
42 $_REQUEST['date_from'] = $data['date_from'];
44 if (! isset($_REQUEST['date_to'])) {
45 $_REQUEST['date_to'] = $data['date_to'];
47 if (! isset($_REQUEST['users'])) {
48 $_REQUEST['users'] = '*';
50 $filter_ts_from = strtotime($_REQUEST['date_from']);
51 $filter_ts_to = strtotime($_REQUEST['date_to']);
52 $filter_users = array_map('trim', explode(',', $_REQUEST['users']));
55 // Prepare export
56 if (isset($_REQUEST['report_export'])) {
58 /**
59 * Filters tracking entries
61 * @param array the entries to filter
62 * @param string "from" date
63 * @param string "to" date
64 * @param string users
66 * @return array filtered entries
69 function PMA_filter_tracking($data, $filter_ts_from, $filter_ts_to, $filter_users) {
70 $tmp_entries = array();
71 $id = 0;
72 foreach( $data as $entry ) {
73 $timestamp = strtotime($entry['date']);
75 if ($timestamp >= $filter_ts_from && $timestamp <= $filter_ts_to &&
76 ( in_array('*', $filter_users) || in_array($entry['username'], $filter_users) ) ) {
77 $tmp_entries[] = array( 'id' => $id,
78 'timestamp' => $timestamp,
79 'username' => $entry['username'],
80 'statement' => $entry['statement']
83 $id++;
85 return($tmp_entries);
88 $entries = array();
89 // Filtering data definition statements
90 if ($_REQUEST['logtype'] == 'schema' || $_REQUEST['logtype'] == 'schema_and_data') {
91 $entries = array_merge($entries, PMA_filter_tracking($data['ddlog'], $filter_ts_from, $filter_ts_to, $filter_users));
94 // Filtering data manipulation statements
95 if ($_REQUEST['logtype'] == 'data' || $_REQUEST['logtype'] == 'schema_and_data') {
96 $entries = array_merge($entries, PMA_filter_tracking($data['dmlog'], $filter_ts_from, $filter_ts_to, $filter_users));
99 // Sort it
100 foreach ($entries as $key => $row) {
101 $ids[$key] = $row['id'];
102 $timestamps[$key] = $row['timestamp'];
103 $usernames[$key] = $row['username'];
104 $statements[$key] = $row['statement'];
107 array_multisort($timestamps, SORT_ASC, $ids, SORT_ASC, $usernames, SORT_ASC, $statements, SORT_ASC, $entries);
111 // Export as file download
112 if (isset($_REQUEST['report_export']) && $_REQUEST['export_type'] == 'sqldumpfile') {
113 @ini_set('url_rewriter.tags','');
115 $dump = "# " . sprintf($strTrackingReportForTable, htmlspecialchars($_REQUEST['table'])) . "\n" .
116 "# " . date('Y-m-d H:i:s') . "\n";
117 foreach($entries as $entry) {
118 $dump .= $entry['statement'];
120 $filename = 'log_' . htmlspecialchars($_REQUEST['table']) . '.sql';
121 header('Content-Type: text/x-sql');
122 header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
123 header('Content-Disposition: attachment; filename="' . $filename . '"');
124 if (PMA_USR_BROWSER_AGENT == 'IE') {
125 header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
126 header('Pragma: public');
127 } else {
128 header('Pragma: no-cache');
129 header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
132 echo $dump;
133 exit();
138 * Gets tables informations
142 * Displays top menu links
144 require_once './libraries/tbl_links.inc.php';
145 echo '<br />';
148 * Actions
151 // Create tracking version
152 if (isset($_REQUEST['submit_create_version'])) {
153 $tracking_set = '';
155 if ($_REQUEST['alter_table'] == true) {
156 $tracking_set .= 'ALTER TABLE,';
158 if ($_REQUEST['rename_table'] == true) {
159 $tracking_set .= 'RENAME TABLE,';
161 if ($_REQUEST['create_table'] == true) {
162 $tracking_set .= 'CREATE TABLE,';
164 if ($_REQUEST['drop_table'] == true) {
165 $tracking_set .= 'DROP TABLE,';
167 if ($_REQUEST['create_index'] == true) {
168 $tracking_set .= 'CREATE INDEX,';
170 if ($_REQUEST['drop_index'] == true) {
171 $tracking_set .= 'DROP INDEX,';
173 if ($_REQUEST['insert'] == true) {
174 $tracking_set .= 'INSERT,';
176 if ($_REQUEST['update'] == true) {
177 $tracking_set .= 'UPDATE,';
179 if ($_REQUEST['delete'] == true) {
180 $tracking_set .= 'DELETE,';
182 if ($_REQUEST['truncate'] == true) {
183 $tracking_set .= 'TRUNCATE,';
185 $tracking_set = rtrim($tracking_set, ',');
187 if (PMA_Tracker::createVersion($GLOBALS['db'], $GLOBALS['table'], $_REQUEST['version'], $tracking_set )) {
188 $msg = PMA_Message::success(sprintf($strTrackingVersionCreated, $_REQUEST['version'], $GLOBALS['db'], $GLOBALS['table']));
189 $msg->display();
193 // Deactivate tracking
194 if (isset($_REQUEST['submit_deactivate_now'])) {
195 if (PMA_Tracker::deactivateTracking($GLOBALS['db'], $GLOBALS['table'], $_REQUEST['version'])) {
196 $msg = PMA_Message::success(sprintf($strTrackingVersionDeactivated, $GLOBALS['db'], $GLOBALS['table'], $_REQUEST['version']));
197 $msg->display();
201 // Activate tracking
202 if (isset($_REQUEST['submit_activate_now'])) {
203 if (PMA_Tracker::activateTracking($GLOBALS['db'], $GLOBALS['table'], $_REQUEST['version'])) {
204 $msg = PMA_Message::success(sprintf($strTrackingVersionActivated, $GLOBALS['db'], $GLOBALS['table'], $_REQUEST['version']));
205 $msg->display();
209 // Export as SQL execution
210 if (isset($_REQUEST['report_export']) && $_REQUEST['export_type'] == 'execution') {
211 foreach($entries as $entry) {
212 $sql_result = PMA_DBI_query( "/*NOTRACK*/\n" . $entry['statement'] );
214 $msg = PMA_Message::success($strTrackingSQLExecuted);
215 $msg->display();
218 // Export as SQL dump
219 if (isset($_REQUEST['report_export']) && $_REQUEST['export_type'] == 'sqldump')
221 $new_query = "# " . $strTrackingYouCanExecute . "\n" .
222 "# " . $strTrackingCommentOut . "\n" .
223 "\n" .
224 "CREATE database IF NOT EXISTS pma_temp_db; \n" .
225 "USE pma_temp_db; \n" .
226 "\n";
228 foreach($entries as $entry) {
229 $new_query .= $entry['statement'];
231 $msg = PMA_Message::success($strTrackingSQLExported);
232 $msg->display();
234 $db_temp = $db;
235 $table_temp = $table;
237 $db = $table = '';
238 $GLOBALS['js_include'][] = 'functions.js';
239 require_once './libraries/sql_query_form.lib.php';
241 PMA_sqlQueryForm($new_query, 'sql');
243 $db = $db_temp;
244 $table = $table_temp;
248 * Schema snapshot
250 if (isset($_REQUEST['snapshot'])) {
252 <h3><?php echo $strTrackingStructureSnapshot;?> [<a href="tbl_tracking.php?<?php echo $url_query;?>"><?php echo $strTrackingReportClose;?></a>]</h3>
253 <?php
254 $data = PMA_Tracker::getTrackedData($_REQUEST['db'], $_REQUEST['table'], $_REQUEST['version']);
256 // Get first DROP TABLE and CREATE TABLE statements
257 $drop_create_statements = $data['ddlog'][0]['statement'];
259 if (strstr($data['ddlog'][0]['statement'], 'DROP TABLE')) {
260 $drop_create_statements .= $data['ddlog'][1]['statement'];
262 // Print SQL code
263 PMA_showMessage(sprintf($strTrackingVersionSnapshotSQL, $_REQUEST['version']), $drop_create_statements);
265 // Unserialize snapshot
266 $temp = unserialize($data['schema_snapshot']);
267 $columns = $temp['COLUMNS'];
268 $indexes = $temp['INDEXES'];
270 <h3><?php echo $strStructure;?></h3>
271 <table id="tablestructure" class="data">
272 <thead>
273 <tr>
274 <th><?php echo $strField; ?></th>
275 <th><?php echo $strType; ?></th>
276 <th><?php echo $strCollation; ?></th>
277 <th><?php echo $strNull; ?></th>
278 <th><?php echo $strDefault; ?></th>
279 <th><?php echo $strExtra; ?></th>
280 <th><?php echo $strComment; ?></th>
281 </tr>
282 </thead>
283 <tbody>
284 <?php
285 $style = 'odd';
286 foreach($columns as $field_index => $field) {
288 <tr class="<?php echo $style; ?>">
289 <?php
290 if ($field['Key'] == 'PRI') {
291 echo '<td><b><u>' . $field['Field'] . '</u></b></td>' . "\n";
292 } else {
293 echo '<td><b>' . $field['Field'] . '</b></td>' . "\n";
296 <td><?php echo $field['Type'];?></td>
297 <td><?php echo $field['Collation'];?></td>
298 <td><?php echo $field['Null'];?></td>
299 <td><?php echo $field['Default'];?></td>
300 <td><?php echo $field['Extra'];?></td>
301 <td><?php echo $field['Comment'];?></td>
302 </tr>
303 <?php
304 if ($style == 'even') {
305 $style = 'odd';
306 } else {
307 $style = 'even';
311 </tbody>
312 </table>
314 <?php
315 if (count($indexes) > 0) {
317 <h3><?php echo $strIndexes;?></h3>
318 <table id="tablestructure_indexes" class="data">
319 <thead>
320 <tr>
321 <th><?php echo $strKeyname;?></th>
322 <th><?php echo $strType;?></th>
323 <th><?php echo $strUnique;?></th>
324 <th><?php echo $strPacked;?></th>
325 <th><?php echo $strField;?></th>
326 <th><?php echo $strCardinality;?></th>
327 <th><?php echo $strCollation;?></th>
328 <th><?php echo $strNull;?></th>
329 <th><?php echo $strComment;?></th>
330 </tr>
331 <tbody>
332 <?php
333 $style = 'odd';
334 foreach ($indexes as $indexes_index => $index) {
335 if ($index['Non_unique'] == 0) {
336 $str_unique = $strYes;
337 } else {
338 $str_unique = $strNo;
340 if ($index['Packed'] != '') {
341 $str_packed = $strYes;
342 } else {
343 $str_packed = $strNo;
346 <tr class="<?php echo $style; ?>">
347 <td><b><?php echo $index['Key_name'];?></b></td>
348 <td><?php echo $index['Index_type'];?></td>
349 <td><?php echo $str_unique;?></td>
350 <td><?php echo $str_packed;?></td>
351 <td><?php echo $index['Column_name'];?></td>
352 <td><?php echo $index['Cardinality'];?></td>
353 <td><?php echo $index['Collation'];?></td>
354 <td><?php echo $index['Null'];?></td>
355 <td><?php echo $index['Comment'];?></td>
356 </tr>
357 <?php
358 if ($style == 'even') {
359 $style = 'odd';
360 } else {
361 $style = 'even';
365 </tbody>
366 </table>
367 <?php
368 } // endif
370 <br /><hr /><br />
371 <?php
373 // end of snapshot report
376 * Tracking report
378 if (isset($_REQUEST['report']) || isset($_REQUEST['report_export'])) {
380 <h3><?php echo $strTrackingReport;?> [<a href="tbl_tracking.php?<?php echo $url_query;?>"><?php echo $strTrackingReportClose;?></a>]</h3>
382 <small><?php echo $strTrackingStatements . ' ' . $data['tracking']; ?></small><br/>
383 <br/>
385 <form method="post" action="tbl_tracking.php?<?php echo $url_query; ?>&amp;report=true&amp;version=<?php echo $_REQUEST['version'];?>">
386 <?php
388 $str1 = '<select name="logtype">' .
389 '<option value="schema"' . ($selection_schema ? ' selected="selected"' : '') . '>' . $strStrucOnly . '</option>' .
390 '<option value="data"' . ($selection_data ? ' selected="selected"' : ''). '>' . $strDataOnly . '</option>' .
391 '<option value="schema_and_data"' . ($selection_both ? ' selected="selected"' : '') . '>' . $strStrucData . '</option>' .
392 '</select>';
393 $str2 = '<input type="text" name="date_from" value="' . $_REQUEST['date_from'] . '" size="19" />';
394 $str3 = '<input type="text" name="date_to" value="' . $_REQUEST['date_to'] . '" size="19" />';
395 $str4 = '<input type="text" name="users" value="' . $_REQUEST['users'] . '" />';
396 $str5 = '<input type="submit" name="list_report" value="' . $strGo . '" />';
398 printf($strTrackingShowLogDateUsers, $str1, $str2, $str3, $str4, $str5);
402 * First, list tracked data definition statements
404 $i = 1;
405 if ($selection_schema || $selection_both ) {
407 <table id="ddl_versions" class="data" width="100%">
408 <thead>
409 <tr>
410 <th width="18">#</th>
411 <th width="100"><?php echo $strTrackingDate;?></th>
412 <th width="60"><?php echo $strTrackingUsername;?></th>
413 <th><?php echo $strTrackingDataDefinitionStatement;?></th>
414 </tr>
415 </thead>
416 <tbody>
417 <?php
418 $style = 'odd';
419 foreach ($data['ddlog'] as $entry) {
420 if (strlen($entry['statement']) > $GLOBALS['cfg']['MaxCharactersInDisplayedSQL']) {
421 $statement = substr($entry['statement'], 0, $GLOBALS['cfg']['MaxCharactersInDisplayedSQL']) . '[...]';
422 } else {
423 $statement = PMA_formatSql(PMA_SQP_parse($entry['statement']));
425 $timestamp = strtotime($entry['date']);
427 if ($timestamp >= $filter_ts_from && $timestamp <= $filter_ts_to &&
428 ( in_array('*', $filter_users) || in_array($entry['username'], $filter_users) ) ) {
430 <tr class="<?php echo $style; ?>">
431 <td><small><?php echo $i;?></small></td>
432 <td><small><?php echo $entry['date'];?></small></td>
433 <td><small><?php echo $entry['username']; ?></small></td>
434 <td><?php echo $statement; ?></td>
435 </tr>
436 <?php
437 if ($style == 'even') {
438 $style = 'odd';
439 } else {
440 $style = 'even';
442 $i++;
446 </tbody>
447 </table>
448 <?php
450 } //endif
453 * Secondly, list tracked data manipulation statements
456 if (($selection_data || $selection_both) && count($data['dmlog']) > 0) {
458 <table id="dml_versions" class="data" width="100%">
459 <thead>
460 <tr>
461 <th width="18">#</th>
462 <th width="100"><?php echo $strTrackingDate;?></th>
463 <th width="60"><?php echo $strTrackingUsername;?></th>
464 <th><?php echo $strTrackingDataManipulationStatement;?></th>
465 </tr>
466 </thead>
467 <tbody>
468 <?php
469 $style = 'odd';
470 foreach ($data['dmlog'] as $entry) {
471 if (strlen($entry['statement']) > $GLOBALS['cfg']['MaxCharactersInDisplayedSQL']) {
472 $statement = substr($entry['statement'], 0, $GLOBALS['cfg']['MaxCharactersInDisplayedSQL']) . '[...]';
473 } else {
474 $statement = PMA_formatSql(PMA_SQP_parse($entry['statement']));
476 $timestamp = strtotime($entry['date']);
478 if ($timestamp >= $filter_ts_from && $timestamp <= $filter_ts_to &&
479 ( in_array('*', $filter_users) || in_array($entry['username'], $filter_users) ) ) {
481 <tr class="<?php echo $style; ?>">
482 <td><small><?php echo $i; ?></small></td>
483 <td><small><?php echo $entry['date']; ?></small></td>
484 <td><small><?php echo $entry['username']; ?></small></td>
485 <td><?php echo $statement; ?></td>
486 </tr>
487 <?php
488 if ($style == 'even') {
489 $style = 'odd';
490 } else {
491 $style = 'even';
493 $i++;
497 </tbody>
498 </table>
499 <?php
502 </form>
503 <form method="post" action="tbl_tracking.php?<?php echo $url_query; ?>&amp;report=true&amp;version=<?php echo $_REQUEST['version'];?>">
504 <?php
505 printf($strTrackingShowLogDateUsers, $str1, $str2, $str3, $str4, $str5);
507 $str_export1 = '<select name="export_type">' .
508 '<option value="sqldumpfile">' . $strTrackingSQLDumpFile . '</option>' .
509 '<option value="sqldump">' . $strTrackingSQLDump . '</option>' .
510 '<option value="execution" onclick="alert(\'' . $strTrackingSQLExecutionAlert .'\')">' . $strTrackingSQLExecution . '</option>' .
511 '</select>';
513 $str_export2 = '<input type="submit" name="report_export" value="' . $strGo .'" />';
515 </form>
516 <form method="post" action="tbl_tracking.php?<?php echo $url_query; ?>&amp;report=true&amp;version=<?php echo $_REQUEST['version'];?>">
517 <input type="hidden" name="logtype" value="<?php echo $_REQUEST['logtype'];?>" />
518 <input type="hidden" name="date_from" value="<?php echo $_REQUEST['date_from'];?>" />
519 <input type="hidden" name="date_to" value="<?php echo $_REQUEST['date_to'];?>" />
520 <input type="hidden" name="users" value="<?php echo $_REQUEST['users'];?>" />
521 <?php
522 echo "<br/>" . sprintf($strTrackingExportAs, $str_export1) . $str_export2 . "<br/>";
524 </form>
525 <?php
526 echo "<br/><br/><hr/><br/>\n";
527 } // end of report
531 * List selectable tables
534 $sql_query = " SELECT DISTINCT db_name, table_name FROM " .
535 PMA_backquote($GLOBALS['cfg']['Server']['pmadb']) . "." .
536 PMA_backquote($GLOBALS['cfg']['Server']['tracking']) .
537 " WHERE " . PMA_backquote('db_name') . " = '" . PMA_sqlAddslashes($GLOBALS['db']) . "' " .
538 " ORDER BY ". PMA_backquote('db_name') . ", " . PMA_backquote('table_name');
540 $sql_result = PMA_query_as_controluser($sql_query);
542 if (PMA_DBI_num_rows($sql_result) > 0) {
544 <form method="post" action="tbl_tracking.php?<?php echo $url_query;?>">
545 <select name="table">
546 <?php
547 while ($entries = PMA_DBI_fetch_array($sql_result)) {
548 if (PMA_Tracker::isTracked($entries['db_name'], $entries['table_name'])) {
549 $status = ' (' . $strTrackingStatusActive . ')';
550 } else {
551 $status = ' (' . $strTrackingStatusNotActive . ')';
553 if ($entries['table_name'] == $_REQUEST['table']) {
554 $s = ' selected="selected"';
555 } else {
556 $s = '';
558 echo '<option value="' . htmlspecialchars($entries['table_name']) . '"' . $s . '>' . htmlspecialchars($entries['db_name']) . ' . ' . htmlspecialchars($entries['table_name']) . $status . '</option>' . "\n";
561 </select>
562 <input type="submit" name="show_versions_submit" value="<?php echo $strTrackingShowVersions;?>" />
563 </form>
564 <?php
567 <br />
568 <?php
571 * List versions of current table
574 $sql_query = " SELECT * FROM " .
575 PMA_backquote($GLOBALS['cfg']['Server']['pmadb']) . "." .
576 PMA_backquote($GLOBALS['cfg']['Server']['tracking']) .
577 " WHERE " . PMA_backquote('db_name') . " = '" . PMA_sqlAddslashes($_REQUEST['db']) . "' ".
578 " AND " . PMA_backquote('table_name') . " = '" . PMA_sqlAddslashes($_REQUEST['table']) ."' ".
579 " ORDER BY ". PMA_backquote('version') . " DESC ";
581 $sql_result = PMA_query_as_controluser($sql_query);
583 $last_version = 0;
584 $maxversion = PMA_DBI_fetch_array($sql_result);
585 $last_version = $maxversion['version'];
587 if ($last_version > 0) {
589 <table id="versions" class="data">
590 <thead>
591 <tr>
592 <th><?php echo $strDatabase;?></th>
593 <th><?php echo $strTable;?></th>
594 <th><?php echo $strTrackingThVersion;?></th>
595 <th><?php echo $strTrackingThCreated;?></th>
596 <th><?php echo $strTrackingThUpdated;?></th>
597 <th><?php echo $strStatus;?></th>
598 <th><?php echo $strShow;?></th>
599 </tr>
600 </thead>
601 <tbody>
602 <?php
603 $style = 'odd';
604 PMA_DBI_data_seek($sql_result, 0);
605 while($version = PMA_DBI_fetch_array($sql_result)) {
606 if ($version['tracking_active'] == 1) {
607 $version_status = $strTrackingStatusActive;
608 } else {
609 $version_status = $strTrackingStatusNotActive;
611 if (($version['version'] == $last_version) && ($version_status == $strTrackingStatusNotActive)) {
612 $tracking_active = false;
614 if (($version['version'] == $last_version) && ($version_status == $strTrackingStatusActive)) {
615 $tracking_active = true;
618 <tr class="<?php echo $style;?>">
619 <td><?php echo htmlspecialchars($version['db_name']);?></td>
620 <td><?php echo htmlspecialchars($version['table_name']);?></td>
621 <td><?php echo $version['version'];?></td>
622 <td><?php echo $version['date_created'];?></td>
623 <td><?php echo $version['date_updated'];?></td>
624 <td><?php echo $version_status;?></td>
625 <td> <a href="tbl_tracking.php?<?php echo $url_query;?>&amp;report=true&amp;version=<?php echo $version['version'];?>"><?php echo $strTrackingReport;?></a> | <a href="tbl_tracking.php?<?php echo $url_query;?>&amp;snapshot=true&amp;version=<?php echo $version['version'];?>"><?php echo $strTrackingStructureSnapshot;?></a></td>
626 </tr>
627 <?php
628 if ($style == 'even') {
629 $style = 'odd';
630 } else {
631 $style = 'even';
635 </tbody>
636 </table>
637 <?php if ($tracking_active == true) {?>
638 <div id="div_deactivate_tracking">
639 <form method="post" action="tbl_tracking.php?<?php echo $url_query; ?>">
640 <fieldset>
641 <legend><?php printf($strTrackingDeactivateTrackingFor, $GLOBALS['db'], $GLOBALS['table']); ?></legend>
642 <input type="hidden" name="version" value="<?php echo $last_version; ?>" />
643 <input type="submit" name="submit_deactivate_now" value="<?php echo $strTrackingDeactivateNow; ?>" />
644 </fieldset>
645 </form>
646 </div>
647 <?php
650 <?php if ($tracking_active == false) {?>
651 <div id="div_activate_tracking">
652 <form method="post" action="tbl_tracking.php?<?php echo $url_query; ?>">
653 <fieldset>
654 <legend><?php printf($strTrackingActivateTrackingFor, $GLOBALS['db'], $GLOBALS['table']); ?></legend>
655 <input type="hidden" name="version" value="<?php echo $last_version; ?>" />
656 <input type="submit" name="submit_activate_now" value="<?php echo $strTrackingActivateNow; ?>" />
657 </fieldset>
658 </form>
659 </div>
660 <?php
665 <div id="div_create_version">
666 <form method="post" action="tbl_tracking.php?<?php echo $url_query; ?>">
667 <?php echo PMA_generate_common_hidden_inputs($GLOBALS['db'], $GLOBALS['table']); ?>
668 <fieldset>
669 <legend><?php printf($strTrackingCreateVersionOf, ($last_version + 1), $GLOBALS['db'], $GLOBALS['table']); ?></legend>
671 <input type="hidden" name="version" value="<?php echo ($last_version + 1); ?>" />
673 <p><?php echo $strTrackingTrackDDStatements;?></p>
674 <input type="checkbox" name="alter_table" value="true" checked="checked" /> ALTER TABLE<br/>
675 <input type="checkbox" name="rename_table" value="true" checked="checked" /> RENAME TABLE<br/>
676 <input type="checkbox" name="create_table" value="true" checked="checked" /> CREATE TABLE<br/>
677 <input type="checkbox" name="drop_table" value="true" checked="checked" /> DROP TABLE<br/>
678 <br/>
679 <input type="checkbox" name="create_index" value="true" checked="checked" /> CREATE INDEX<br/>
680 <input type="checkbox" name="drop_index" value="true" checked="checked" /> DROP INDEX<br/>
681 <p><?php echo $strTrackingTrackDMStatements;?></p>
682 <input type="checkbox" name="insert" value="true" checked="checked" /> INSERT<br/>
683 <input type="checkbox" name="update" value="true" checked="checked" /> UPDATE<br/>
684 <input type="checkbox" name="delete" value="true" checked="checked" /> DELETE<br/>
685 <input type="checkbox" name="truncate" value="true" checked="checked" /> TRUNCATE<br/>
687 </fieldset>
688 <fieldset class="tblFooters">
689 <input type="submit" name="submit_create_version" value="<?php echo $strTrackingCreateVersion; ?>" />
690 </fieldset>
691 </form>
692 </div>
694 <br class="clearfloat"/>
696 <?php
698 * Displays the footer
700 require_once './libraries/footer.inc.php';