home *** CD-ROM | disk | FTP | other *** search
/ Freelog 70 / Freelog070.iso / Internet / EasyPHP / easyphp1-8_setup.exe / {app} / phpmyadmin / mult_submits.inc.php < prev    next >
Encoding:
PHP Script  |  2004-12-28  |  14.3 KB  |  392 lines

  1. <?php
  2. /* $Id: mult_submits.inc.php,v 2.12 2004/12/28 13:54:35 nijel Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4.  
  5.  
  6. /**
  7.  * Prepares the work and runs some other scripts if required
  8.  */
  9. if (!empty($submit_mult)
  10.     && ($submit_mult != $strWithChecked)
  11.     && (  !empty($selected_db)
  12.        || !empty($selected_tbl)
  13.        || !empty($selected_fld)
  14.        || !empty($rows_to_delete)
  15.          )) {
  16.  
  17.     if (!empty($selected_db)) {
  18.         $selected     = $selected_db;
  19.         $what         = 'drop_db';
  20.     } else if (!empty($selected_tbl)) {
  21.         if ($submit_mult == $strPrintView) {
  22.             require('./tbl_printview.php');
  23.         } else {
  24.            $selected = $selected_tbl;
  25.            switch ($submit_mult) {
  26.                case 'drop_db':
  27.                    $what = 'drop_db';
  28.                    break;
  29.                case $strDrop:
  30.                    $what = 'drop_tbl';
  31.                    break;
  32.                case $strEmpty:
  33.                    $what = 'empty_tbl';
  34.                    break;
  35.                case $strCheckTable:
  36.                    unset($submit_mult);
  37.                    $query_type = 'check_tbl';
  38.                    $mult_btn   = $strYes;
  39.                    break;
  40.                case $strOptimizeTable:
  41.                    unset($submit_mult);
  42.                    $query_type = 'optimize_tbl';
  43.                    $mult_btn   = $strYes;
  44.                    break;
  45.                case $strRepairTable:
  46.                    unset($submit_mult);
  47.                    $query_type = 'repair_tbl';
  48.                    $mult_btn   = $strYes;
  49.                    break;
  50.                case $strAnalyzeTable:
  51.                    unset($submit_mult);
  52.                    $query_type = 'analyze_tbl';
  53.                    $mult_btn   = $strYes;
  54.                    break;
  55.            } // end switch
  56.         }
  57.     } else if (!empty($selected_fld)) {
  58.         $selected     = $selected_fld;
  59.         switch ($submit_mult) {
  60.             case $strDrop:
  61.                 $what     = 'drop_fld';
  62.                 break;
  63.             case $strPrimary:
  64.                 // Gets table primary key
  65.                 PMA_DBI_select_db($db);
  66.                 $result      = PMA_DBI_query('SHOW KEYS FROM ' . PMA_backquote($table) . ';');
  67.                 $primary     = '';
  68.                 while ($row = PMA_DBI_fetch_assoc($result)) {
  69.                     // Backups the list of primary keys
  70.                     if ($row['Key_name'] == 'PRIMARY') {
  71.                         $primary .= $row['Column_name'] . ', ';
  72.                     }
  73.                 } // end while
  74.                 PMA_DBI_free_result($result);
  75.                 if (empty($primary)) {
  76.                     // no primary key, so we can safely create new
  77.                     unset($submit_mult);
  78.                     $query_type = 'primary_fld';
  79.                     $mult_btn   = $strYes;
  80.                 } else {
  81.                     // primary key exists, so lets as user
  82.                     $what = 'primary_fld';
  83.                 }
  84.                 break;
  85.             case $strIndex:
  86.                 unset($submit_mult);
  87.                 $query_type = 'index_fld';
  88.                 $mult_btn   = $strYes;
  89.                 break;
  90.             case $strUnique:
  91.                 unset($submit_mult);
  92.                 $query_type = 'unique_fld';
  93.                 $mult_btn   = $strYes;
  94.                 break;
  95.             case $strIdxFulltext:
  96.                 unset($submit_mult);
  97.                 $query_type = 'fulltext_fld';
  98.                 $mult_btn   = $strYes;
  99.                 break;
  100.             case $strChange:
  101.                 require('./tbl_alter.php');
  102.                 break;
  103.         }
  104.     } else {
  105.         $what = 'row_delete';
  106.         $selected = $rows_to_delete;
  107.     }
  108. } // end if
  109.  
  110.  
  111. /**
  112.  * Displays the confirmation form if required
  113.  */
  114. if (!empty($submit_mult) && !empty($what)) {
  115.     $js_to_run = 'functions.js';
  116.     unset($message);
  117.     if (!empty($table)) {
  118.         require('./tbl_properties_common.php');
  119.         $url_query .= '&goto=tbl_properties.php&back=tbl_properties.php';
  120.         require('./tbl_properties_table_info.php');
  121.     }
  122.     elseif (!empty($db)) {
  123.         require('./db_details_common.php');
  124.         require('./db_details_db_info.php');
  125.     }
  126.     // Builds the query
  127.     $full_query     = '';
  128.     $selected_cnt   = count($selected);
  129.     $i = 0;
  130.     foreach ($selected AS $idx => $sval) {
  131.         switch ($what) {
  132.             case 'row_delete':
  133.                 $full_query .= htmlspecialchars(urldecode($sval))
  134.                             . ';<br />';
  135.                 break;
  136.             case 'drop_db':
  137.                 $full_query .= 'DROP DATABASE '
  138.                             . PMA_backquote(htmlspecialchars(urldecode($sval)))
  139.                             . ';<br />';
  140.                 break;
  141.  
  142.             case 'drop_tbl':
  143.                 $full_query .= (empty($full_query) ? 'DROP TABLE ' : ', ')
  144.                             . PMA_backquote(htmlspecialchars(urldecode($sval)))
  145.                             . (($i == $selected_cnt - 1) ? ';<br />' : '');
  146.                 break;
  147.  
  148.             case 'empty_tbl':
  149.                 if (PMA_MYSQL_INT_VERSION >= 40000) {
  150.                     $full_query .= 'TRUNCATE ';
  151.                 } else {
  152.                     $full_query .= 'DELETE FROM ';
  153.                 }
  154.                 $full_query .= PMA_backquote(htmlspecialchars(urldecode($sval)))
  155.                             . ';<br />';
  156.                 break;
  157.  
  158.             case 'primary_fld':
  159.                 if ($full_query == '') {
  160.                     $full_query .= 'ALTER TABLE '
  161.                                 . PMA_backquote(htmlspecialchars($table))
  162.                                 . '<br />  DROP PRIMARY KEY,'
  163.                                 . '<br />   ADD PRIMARY KEY('
  164.                                 . '<br />     '
  165.                                 . PMA_backquote(htmlspecialchars(urldecode($sval)))
  166.                                 . ',';
  167.                 } else {
  168.                     $full_query .= '<br />     '
  169.                                 . PMA_backquote(htmlspecialchars(urldecode($sval)))
  170.                                 . ',';
  171.                 }
  172.                 if ($i == $selected_cnt-1) {
  173.                     $full_query = preg_replace('@,$@', ');<br />', $full_query);
  174.                 }
  175.                 break;
  176.                 
  177.             case 'drop_fld':
  178.                 if ($full_query == '') {
  179.                     $full_query .= 'ALTER TABLE '
  180.                                 . PMA_backquote(htmlspecialchars($table))
  181.                                 . '<br />  DROP '
  182.                                 . PMA_backquote(htmlspecialchars(urldecode($sval)))
  183.                                 . ',';
  184.                 } else {
  185.                     $full_query .= '<br />  DROP '
  186.                                 . PMA_backquote(htmlspecialchars(urldecode($sval)))
  187.                                 . ',';
  188.                 }
  189.                 if ($i == $selected_cnt-1) {
  190.                     $full_query = preg_replace('@,$@', ';<br />', $full_query);
  191.                 }
  192.                 break;
  193.         } // end switch
  194.         $i++;
  195.     }
  196.  
  197.     // Displays the form
  198. ?>
  199. <!-- Do it really ? -->
  200. <table border="0" cellpadding="3" cellspacing="0">
  201.     <tr>
  202.         <th class="tblHeadError" align="left">
  203.             <?php
  204.     echo ($GLOBALS['cfg']['ErrorIconic'] ? '<img src="' . $GLOBALS['pmaThemeImage'] . 's_really.png" border="0" hspace="2" width="11" height="11" valign="middle" />' : '');
  205.     echo $strDoYouReally . ': ' . "\n";
  206.             ?>
  207.         </th>
  208.     </tr>
  209.     <tr>
  210.         <td bgcolor="<?php echo $GLOBALS['cfg']['BgcolorOne']; ?>">
  211.            <?php
  212.     echo '<tt>' . $full_query . '</tt> ?<br/>' . "\n";
  213.            ?>
  214.         </td>
  215.     </tr>
  216.     <tr>
  217.        <td align="right" nowrap="nowrap">
  218. <form action="<?php echo $action; ?>" method="post">
  219.     <?php
  220.     echo "\n";
  221.     if (strpos(' ' . $action, 'db_details') == 1) {
  222.         echo PMA_generate_common_hidden_inputs($db);
  223.     } else if (strpos(' ' . $action, 'tbl_properties') == 1
  224.               || $what == 'row_delete') {
  225.         echo PMA_generate_common_hidden_inputs($db,$table);
  226.     } else  {
  227.         echo PMA_generate_common_hidden_inputs();
  228.     }
  229.     foreach ($selected AS $idx => $sval) {
  230.         echo '    <input type="hidden" name="selected[]" value="' . htmlspecialchars($sval) . '" />' . "\n";
  231.     }
  232.     ?>
  233.     <input type="hidden" name="query_type" value="<?php echo $what; ?>" />
  234.     <?php
  235.     if ($what == 'row_delete') {
  236.         echo '<input type="hidden" name="original_sql_query" value="' . htmlspecialchars($original_sql_query) . '" />' . "\n";
  237.         echo '<input type="hidden" name="original_pos" value="' . $original_pos . '" />' . "\n";
  238.         echo '<input type="hidden" name="original_url_query" value="' . htmlspecialchars($original_url_query) . '" />' . "\n";
  239.     }
  240.     ?>
  241.     <input type="submit" name="mult_btn" value="<?php echo $strYes; ?>" id="buttonYes" />
  242.     <input type="submit" name="mult_btn" value="<?php echo $strNo; ?>" id="buttonNo" />
  243. </form>
  244.         </td>
  245.     </tr>
  246. </table>
  247.     <?php
  248.     echo"\n";
  249.  
  250.     require_once('./footer.inc.php');
  251. } // end if
  252.  
  253.  
  254. /**
  255.  * Executes the query
  256.  */
  257. else if ($mult_btn == $strYes) {
  258.  
  259.     if ($query_type == 'drop_db' || $query_type == 'drop_tbl' || $query_type == 'drop_fld') {
  260.         require_once('./libraries/relation_cleanup.lib.php');
  261.     }
  262.  
  263.     $sql_query      = '';
  264.     $selected_cnt   = count($selected);
  265.     $run_parts      = FALSE; // whether to run query after each pass
  266.     $use_sql        = FALSE; // whether to include sql.php at the end (to display results)
  267.  
  268.     if ($query_type == 'primary_fld') {
  269.         // Gets table primary key
  270.         PMA_DBI_select_db($db);
  271.         $result      = PMA_DBI_query('SHOW KEYS FROM ' . PMA_backquote($table) . ';');
  272.         $primary     = '';
  273.         while ($row = PMA_DBI_fetch_assoc($result)) {
  274.             // Backups the list of primary keys
  275.             if ($row['Key_name'] == 'PRIMARY') {
  276.                 $primary .= $row['Column_name'] . ', ';
  277.             }
  278.         } // end while
  279.         PMA_DBI_free_result($result);
  280.     }
  281.     
  282.     for ($i = 0; $i < $selected_cnt; $i++) {
  283.         switch ($query_type) {
  284.             case 'row_delete':
  285.                 $a_query = urldecode($selected[$i]);
  286.                 $run_parts = TRUE;
  287.                 break;
  288.  
  289.             case 'drop_db':
  290.                 PMA_relationsCleanupDatabase($selected[$i]);
  291.                 $a_query   = 'DROP DATABASE '
  292.                            . PMA_backquote(urldecode($selected[$i]));
  293.                 $reload    = 1;
  294.                 $run_parts = TRUE;
  295.                 break;
  296.  
  297.             case 'drop_tbl':
  298.                 PMA_relationsCleanupTable($db, $selected[$i]);
  299.                 $sql_query .= (empty($sql_query) ? 'DROP TABLE ' : ', ')
  300.                            . PMA_backquote(urldecode($selected[$i]))
  301.                            . (($i == $selected_cnt-1) ? ';' : '');
  302.                 $reload    = 1;
  303.                 break;
  304.  
  305.             case 'check_tbl':
  306.                 $sql_query .= (empty($sql_query) ? 'CHECK TABLE ' : ', ')
  307.                            . PMA_backquote(urldecode($selected[$i]));
  308.                 $use_sql    = TRUE;
  309.                 break;
  310.  
  311.             case 'optimize_tbl':
  312.                 $sql_query .= (empty($sql_query) ? 'OPTIMIZE TABLE ' : ', ')
  313.                            . PMA_backquote(urldecode($selected[$i]));
  314.                 $use_sql    = TRUE;
  315.                 break;
  316.  
  317.             case 'analyze_tbl':
  318.                 $sql_query .= (empty($sql_query) ? 'ANALYZE TABLE ' : ', ')
  319.                            . PMA_backquote(urldecode($selected[$i]));
  320.                 $use_sql    = TRUE;
  321.                 break;
  322.  
  323.             case 'repair_tbl':
  324.                 $sql_query .= (empty($sql_query) ? 'REPAIR TABLE ' : ', ')
  325.                            . PMA_backquote(urldecode($selected[$i]));
  326.                 $use_sql    = TRUE;
  327.                 break;
  328.  
  329.             case 'empty_tbl':
  330.                 if (PMA_MYSQL_INT_VERSION >= 40000) {
  331.                     $a_query = 'TRUNCATE ';
  332.                 } else {
  333.                     $a_query = 'DELETE FROM ';
  334.                 }
  335.                 $a_query .= PMA_backquote(htmlspecialchars(urldecode($selected[$i])));
  336.                 $run_parts = TRUE;
  337.                 break;
  338.  
  339.             case 'drop_fld':
  340.                 PMA_relationsCleanupColumn($db, $table, $selected[$i]);
  341.                 $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) : ',')
  342.                            . ' DROP ' . PMA_backquote(urldecode($selected[$i]))
  343.                            . (($i == $selected_cnt-1) ? ';' : '');
  344.                 break;
  345.  
  346.             case 'primary_fld':
  347.                 $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ( empty($primary) ? '' : ' DROP PRIMARY KEY,') . ' ADD PRIMARY KEY( ' : ', ')
  348.                            . PMA_backquote(urldecode($selected[$i]))
  349.                            . (($i == $selected_cnt-1) ? ');' : '');
  350.                 break;
  351.  
  352.             case 'index_fld':
  353.                 $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ' ADD INDEX( ' : ', ')
  354.                            . PMA_backquote(urldecode($selected[$i]))
  355.                            . (($i == $selected_cnt-1) ? ');' : '');
  356.                 break;
  357.  
  358.             case 'unique_fld':
  359.                 $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ' ADD UNIQUE( ' : ', ')
  360.                            . PMA_backquote(urldecode($selected[$i]))
  361.                            . (($i == $selected_cnt-1) ? ');' : '');
  362.                 break;
  363.  
  364.             case 'fulltext_fld':
  365.                 $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ' ADD FULLTEXT( ' : ', ')
  366.                            . PMA_backquote(urldecode($selected[$i]))
  367.                            . (($i == $selected_cnt-1) ? ');' : '');
  368.                 break;
  369.         } // end switch
  370.  
  371.         // All "DROP TABLE","DROP FIELD", "OPTIMIZE TABLE" and "REPAIR TABLE"
  372.         // statements will be run at once below
  373.         if ($run_parts) { 
  374.             $sql_query .= $a_query . ';' . "\n";
  375.             if ($query_type != 'drop_db') {
  376.                 PMA_DBI_select_db($db);
  377.             }
  378.             $result = @PMA_DBI_query($a_query) or PMA_mysqlDie('', $a_query, FALSE, $err_url);
  379.         } // end if
  380.     } // end for
  381.  
  382.     if ($use_sql) {
  383.         require('./sql.php');
  384.     } elseif (!$run_parts) {
  385.         PMA_DBI_select_db($db);
  386.         $result = PMA_DBI_query($sql_query);
  387.     }
  388.  
  389. }
  390.  
  391. ?>
  392.