home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 June / ENTER.ISO / files / xampp-win32-1.4.5-installer.exe / xampp / tbl_query_box.php < prev    next >
Encoding:
PHP Script  |  2003-12-12  |  20.5 KB  |  431 lines

  1. <?php
  2. /* $Id: tbl_query_box.php,v 2.4 2003/12/13 13:15:38 lem9 Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4.  
  5. // Check parameters
  6.  
  7. require_once('./libraries/common.lib.php');
  8. require_once('./libraries/bookmark.lib.php');
  9.  
  10. if (!($cfg['QueryFrame'] && $cfg['QueryFrameJS'] && isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'sql' || $querydisplay_tab == 'full'))) {
  11.     PMA_checkParameters(array('db','table','url_query'));
  12. }
  13.  
  14. /**
  15.  * Defines the query to be displayed in the query textarea
  16.  */
  17. if (isset($show_query) && $show_query == '1') {
  18.     // This script has been called by read_dump.php
  19.     if (isset($sql_query_cpy)) {
  20.         $query_to_display = $sql_query_cpy;
  21.     }
  22.     // Other cases
  23.     else {
  24.         $query_to_display = $sql_query;
  25.     }
  26. } else {
  27.     $query_to_display     = '';
  28. }
  29. unset($sql_query);
  30.  
  31. /**
  32.  * Get the list and number of fields
  33.  */
  34. $fields_cnt = 0;
  35. if (isset($db) && isset($table) && $table != '' && $db != '') {
  36.     $local_query = 'SHOW FIELDS FROM ' . PMA_backquote($table) . ' FROM ' . PMA_backquote($db);
  37.     $result      = @PMA_mysql_query($local_query);
  38.     if (!$result) {
  39.         PMA_mysqlDie('', $local_query, '', $err_url);
  40.     }
  41.     else {
  42.         $fields_cnt        = mysql_num_rows($result);
  43.         while ($row = PMA_mysql_fetch_array($result)) {
  44.             $fields_list[] = $row['Field'];
  45.         } // end while
  46.         mysql_free_result($result);
  47.     }
  48. }
  49.  
  50. /**
  51.  * Work on the table
  52.  */
  53. // loic1: defines wether file upload is available or not
  54. // ($is_upload now defined in common.lib.php)
  55.  
  56. if ($cfg['QueryFrame'] && $cfg['QueryFrameJS'] && isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'sql' || $querydisplay_tab == 'full')) {
  57.     $locking   = 'onKeyPress="document.sqlform.elements[\'LockFromUpdate\'].checked = true;"';
  58. } else {
  59.     $locking   = '';
  60. }
  61.  
  62. $auto_sel  = ($cfg['TextareaAutoSelect']
  63.                // 2003-02-05 rabus: This causes big trouble with Opera 7 for
  64.                // Windows, so let's disable it there...
  65.                && !(PMA_USR_OS == 'Win' && PMA_USR_BROWSER_AGENT == 'OPERA' && PMA_USR_BROWSER_VER >= 7))
  66.            ? "\n" . '             onfocus="if (typeof(document.layers) == \'undefined\' || typeof(textarea_selected) == \'undefined\') {textarea_selected = 1; document.sqlform.elements[\'sql_query\'].select();}"'
  67.            : '';
  68. $auto_sel .= ' ' . $locking;
  69.  
  70. // garvin: If non-JS query window is embedded, display a list of databases to choose from.
  71. //         Apart from that, a non-js query window sucks badly.
  72.  
  73. if ($cfg['QueryFrame'] && (!$cfg['QueryFrameJS'] && !$db || ($cfg['QueryFrameJS'] && !$db))) {
  74.     /**
  75.      * Get the list and number of available databases.
  76.      */
  77.     if ($server > 0) {
  78.         PMA_availableDatabases(); // this function is defined in "common.lib.php"
  79.     } else {
  80.         $num_dbs = 0;
  81.     }
  82.  
  83.     if ($num_dbs > 0) {
  84.         $queryframe_db_list = '<select size=1 name="db">';
  85.         for ($i = 0; $i < $num_dbs; $i++) {
  86.             $t_db = $dblist[$i];
  87.             $queryframe_db_list .= '<option value="' . htmlspecialchars($t_db) . '">' . htmlspecialchars($t_db) . '</option>';
  88.         }
  89.         $queryframe_db_list .= '</select>';
  90.     } else {
  91.         $queryframe_db_list = '';
  92.     }
  93. } else {
  94.     $queryframe_db_list = '';
  95. }
  96.  
  97. $form_items = 0;
  98.  
  99. if ($cfg['QueryFrame'] && $cfg['QueryFrameJS'] && isset($is_inside_querywindow) && $is_inside_querywindow) {
  100. ?>
  101.         <script type="text/javascript">
  102.         <!--
  103.         document.writeln('<form method="post" target="phpmain' +  <?php echo ((isset($is_inside_querywindow) && $is_inside_querywindow == TRUE) ? 'opener.' : '');?>parent.frames.queryframe.document.hashform.hash.value + '" action="read_dump.php"<?php if ($is_upload) echo ' enctype="multipart/form-data"'; ?> onsubmit="return checkSqlQuery(this)" name="sqlform">');
  104.         //-->
  105.         </script>
  106.         <noscript>
  107.             <form method="post" target="phpmain<?php echo md5($cfg['PmaAbsoluteUri']); ?>" action="read_dump.php"<?php if ($is_upload) echo ' enctype="multipart/form-data"'; ?> name="sqlform">
  108.         </noscript>
  109. <?php
  110. } else {
  111. ?>
  112.         <form method="post" action="read_dump.php"<?php if ($is_upload) echo ' enctype="multipart/form-data"'; ?> onsubmit="return checkSqlQuery(this)" name="sqlform">
  113. <?php
  114. }
  115. ?>
  116.             <input type="hidden" name="is_js_confirmed" value="0" />
  117.             <?php echo PMA_generate_common_hidden_inputs($db, $table); ?>
  118.             <input type="hidden" name="pos" value="0" />
  119.             <input type="hidden" name="goto" value="<?php echo $goto; ?>" />
  120.             <input type="hidden" name="zero_rows" value="<?php echo $strSuccess; ?>" />
  121.             <input type="hidden" name="prev_sql_query" value="<?php echo ((!empty($query_to_display)) ? urlencode($query_to_display) : ''); ?>" />
  122. <?php
  123. if (!isset($is_inside_querywindow) ||
  124.     (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'sql' || $querydisplay_tab == 'full'))) {
  125. ?>
  126.     <!-- Query box and bookmark support -->
  127. <?php
  128. if (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE) {
  129. ?>
  130.     <input type="hidden" name="focus_querywindow" value="true" />
  131. <?php
  132. }
  133. ?>
  134.     <a name="querybox"></a>
  135.             <table cellpadding="1" cellspacing="1">
  136.                 <tr>
  137.                     <td>
  138.                         <?php echo sprintf($strRunSQLQuery,  htmlspecialchars($db)) . $queryframe_db_list . (isset($is_inside_querywindow) ? '<br />' : ' ') . PMA_showMySQLDocu('Reference', 'SELECT'); ?>
  139.                         <br />
  140.                         <textarea name="sql_query" rows="<?php echo $cfg['TextareaRows']; ?>" cols="<?php echo (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE ? ceil($cfg['TextareaCols'] * 1.25) : $cfg['TextareaCols'] * 2); ?>" wrap="virtual" dir="<?php echo $text_dir; ?>"<?php echo $auto_sel; ?>>
  141. <?php
  142. if (!empty($query_to_display)) {
  143.     echo htmlspecialchars($query_to_display);
  144. } elseif (isset($table)) {
  145.     echo htmlspecialchars(str_replace('%d', PMA_backquote($db), str_replace('%t', PMA_backquote($table), $cfg['DefaultQueryTable'])));
  146. } else {
  147.     echo htmlspecialchars(str_replace('%d', PMA_backquote($db), $cfg['DefaultQueryDatabase']));
  148. }
  149. ?></textarea>
  150.                     </td>
  151.                         <?php if (isset($table) && $fields_cnt > 0) { ?>
  152.                     <td align="center" valign="top"><?php echo (isset($is_inside_querywindow) ? '<br />' : '') . $strFields; ?>:<br />
  153.                             <select name="dummy" size="4" multiple>
  154.                        <?php
  155.                            echo "\n";
  156.                            for ($i = 0 ; $i < $fields_cnt; $i++) {
  157.                                echo '                '
  158.                                     . '<option value="' . PMA_backquote(htmlspecialchars($fields_list[$i])) . '">' . htmlspecialchars($fields_list[$i]) . '</option>' . "\n";
  159.                            }
  160.                        ?>
  161.                             </select><br /><br />
  162.                             <input type="button" name="insert" value="<?php echo($strInsert); ?>" onclick="insertValueQuery()" />
  163.                     </td>
  164.                         <?php
  165.                         }
  166.                         ?>
  167.                 </tr>
  168.             </table>
  169.             <input type="checkbox" name="show_query" value="1" id="checkbox_show_query" checked="checked" /> 
  170.                 <label for="checkbox_show_query"><?php echo $strShowThisQuery; ?></label><br />
  171.             <?php
  172.             if (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE) {
  173.             ?>
  174.             <script type="text/javascript">
  175.                 document.writeln('<input type="checkbox" name="LockFromUpdate" value="1" id="checkbox_lock" /> ');
  176.                 document.writeln('    <label for="checkbox_lock"><?php echo $strQueryWindowLock; ?></label><br />');
  177.             </script>
  178.             <?php
  179.             }
  180.  
  181.             $form_items++;
  182.             ?>
  183.             </div>
  184. <?php
  185. } else {
  186. ?>
  187.             <input type="hidden" name="sql_query" value="" />
  188.             <input type="hidden" name="show_query" value="1" />
  189. <?php
  190. }
  191.  
  192. // loic1: displays import dump feature only if file upload available
  193. if ($is_upload && (!isset($is_inside_querywindow) ||
  194.     (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'files' || $querydisplay_tab == 'full')))) {
  195.     $form_items++;
  196.     echo '            ' . ((isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && $querydisplay_tab == 'full') || !isset($is_inside_querywindow) ? '<i>' . $strOr . '</i>' : '') . ' ' . $strLocationTextfile . ' :<br />' . "\n";
  197.     ?>
  198.             <div style="margin-bottom: 5px">
  199.             <input type="file" name="sql_file" class="textfield" /> <?php echo PMA_displayMaximumUploadSize($max_upload_size);?><br />
  200.     <?php
  201.     // some browsers should respect this :)
  202.     echo '        ' . PMA_generateHiddenMaxFileSize($max_upload_size) . "\n";
  203.  
  204.     if (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE) {
  205.     ?>
  206.             <input type="hidden" name="focus_querywindow" value="true" />
  207.     <?php
  208.     }
  209.  
  210.     $is_gzip = ($cfg['GZipDump'] && @function_exists('gzopen'));
  211.     $is_bzip = ($cfg['BZipDump'] && @function_exists('bzdecompress'));
  212.     if ($is_bzip || $is_gzip) {
  213.         echo '        ' . $strCompression . ':' . "\n"
  214.            . '            <input type="radio" id="radio_sql_file_compression_auto" name="sql_file_compression" value="" checked="checked" />' . "\n"
  215.            . '            <label for="radio_sql_file_compression_auto">' . $strAutodetect . '</label>   ' . "\n"
  216.            . '            <input type="radio" id="radio_sql_file_compression_plain" name="sql_file_compression" value="text/plain" />' . "\n"
  217.            . '            <label for="radio_sql_file_compression_plain">' . $strNone . '</label>   ' . "\n";
  218.         if ($is_gzip) {
  219.             echo '            <input type="radio" id="radio_sql_file_compression_gzip" name="sql_file_compression" value="application/x-gzip" />' . "\n"
  220.                . '            <label for="radio_sql_file_compression_gzip">' . $strGzip . '</label>   ' . "\n";
  221.         }
  222.         if ($is_bzip) {
  223.             echo '            <input type="radio" id="radio_sql_file_compression_bzip" name="sql_file_compression" value="application/x-bzip" />' . "\n"
  224.                . '            <label for="radio_sql_file_compression_bzip">' . $strBzip . '</label>   ' . "\n";
  225.         }
  226.     } else {
  227.         echo '        <input type="hidden" name="sql_file_compression" value="text/plain" />' . "\n";
  228.     }
  229.     ?>
  230.             </div>
  231.     <?php
  232. } // end if
  233. echo "\n";
  234.  
  235. // web-server upload directory
  236. $is_upload_dir = false;
  237. if (!empty($cfg['UploadDir']) && !isset($is_inside_querywindow) ||
  238.     (!empty($cfg['UploadDir']) && isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'files' || $querydisplay_tab == 'full'))) {
  239.  
  240.     if (substr($cfg['UploadDir'], -1) != '/') {
  241.         $cfg['UploadDir'] .= '/';
  242.     }
  243.     if ($handle = @opendir($cfg['UploadDir'])) {
  244.         if (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE) {
  245.         ?>
  246.             <input type="hidden" name="focus_querywindow" value="true" />
  247.         <?php
  248.         }
  249.  
  250.         $is_first = 0;
  251.         while ($file = @readdir($handle)) {
  252.             if (is_file($cfg['UploadDir'] . $file) && PMA_checkFileExtensions($file, '.sql')) {
  253.                 if ($is_first == 0) {
  254.                     $is_upload_dir = true;
  255.                     echo "\n";
  256.                     echo '    ' . ((isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && $querydisplay_tab == 'full') || !isset($is_inside_querywindow) ? '<i>' . $strOr . '</i>' : '') . ' ' . $strWebServerUploadDirectory . ' :<br />' . "\n";
  257.                     echo '    <div style="margin-bottom: 5px">' . "\n";
  258.                     echo '        <select size="1" name="sql_localfile">' . "\n";
  259.                     echo '            <option value="" selected="selected"></option>' . "\n";
  260.                     $form_items++;
  261.                 } // end if (is_first)
  262.                 echo '            <option value="' . htmlspecialchars($file) . '">' . htmlspecialchars($file) . '</option>' . "\n";
  263.                 $is_first++;
  264.             } // end if (is_file)
  265.         } // end while
  266.         if ($is_first > 0) {
  267.             echo '        </select>' . "\n"
  268.                  . '    </div>' . "\n\n";
  269.         } // end if (isfirst > 0)
  270.         @closedir($handle);
  271.     } else {
  272.         echo '    <div style="margin-bottom: 5px">' . "\n";
  273.         echo '        <font color="red">' . $strError . '</font><br />' . "\n";
  274.         echo '        ' . $strWebServerUploadDirectoryError . "\n";
  275.         echo '    </div>' . "\n";
  276.     }
  277. } // end if (web-server upload directory)
  278. echo "\n";
  279.  
  280. // Encoding setting form appended by Y.Kawada
  281. if (function_exists('PMA_set_enc_form')) {
  282.     echo PMA_set_enc_form('            ');
  283.     $form_items++;
  284. }
  285.  
  286. // Charset conversion options
  287. if (($is_upload || $is_upload_dir) &&
  288.         (!isset($is_inside_querywindow) ||
  289.          (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'files' || $querydisplay_tab == 'full')))
  290.         && isset($db) && $db != ''){
  291.     if ($cfg['AllowAnywhereRecoding'] && $allow_recoding) {
  292.         $form_items++;
  293.         echo '    <div style="margin-bottom: 5px">' . "\n";
  294.         $temp_charset = reset($cfg['AvailableCharsets']);
  295.         echo $strCharsetOfFile . "\n"
  296.              . '    <select name="charset_of_file" size="1">' . "\n"
  297.              . '            <option value="' . $temp_charset . '"';
  298.         if ($temp_charset == $charset) {
  299.             echo ' selected="selected"';
  300.         }
  301.         echo '>' . $temp_charset . '</option>' . "\n";
  302.         while ($temp_charset = next($cfg['AvailableCharsets'])) {
  303.             echo '            <option value="' . $temp_charset . '"';
  304.             if ($temp_charset == $charset) {
  305.                 echo ' selected="selected"';
  306.             }
  307.             echo '>' . $temp_charset . '</option>' . "\n";
  308.         }
  309.         echo '        </select><br />' . "\n" . '    ';
  310.         echo '    </div>' . "\n";
  311.     } // end if (recoding)
  312. }
  313.  
  314. // Bookmark Support
  315. $bookmark_go = FALSE;
  316. if (!isset($is_inside_querywindow) ||
  317.     (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'history' || $querydisplay_tab == 'full'))) {
  318.     if ($cfg['Bookmark']['db'] && $cfg['Bookmark']['table']) {
  319.         if (($bookmark_list = PMA_listBookmarks($db, $cfg['Bookmark'])) && count($bookmark_list) > 0) {
  320.             $form_items++;
  321.             echo "            " . ((isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && $querydisplay_tab == 'full') || !isset($is_inside_querywindow) ? "<i>$strOr</i>" : '') . " $strBookmarkQuery :<br />\n";
  322.  
  323.             if (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE) {
  324.             ?>
  325.                 <input type="hidden" name="focus_querywindow" value="true" />
  326.             <?php
  327.             }
  328.  
  329.             echo '            <div style="margin-bottom: 5px">' . "\n";
  330.             echo '            <select name="id_bookmark" style="vertical-align: middle">' . "\n";
  331.             echo '                <option value=""></option>' . "\n";
  332.             foreach($bookmark_list AS $key => $value) {
  333.                 echo '                <option value="' . $value . '">' . htmlspecialchars($key) . '</option>' . "\n";
  334.             }
  335.             echo '            </select>' . "<br />\n";
  336.             echo '            ' . $strVar . ' (<a href="./Documentation.html#faqbookmark" target="documentation">' . $strDocu . '</a>): <input type="text" name="bookmark_variable" class="textfield" size="10" />' . "\n";
  337.             echo '            <input type="radio" name="action_bookmark" value="0" id="radio_bookmark0" checked="checked" style="vertical-align: middle" /><label for="radio_bookmark0">' . $strSubmit . '</label>' . "\n";
  338.             echo '             <input type="radio" name="action_bookmark" value="1" id="radio_bookmark1" style="vertical-align: middle" /><label for="radio_bookmark1">' . $strBookmarkView . '</label>' . "\n";
  339.             echo '             <input type="radio" name="action_bookmark" value="2" id="radio_bookmark2" style="vertical-align: middle" /><label for="radio_bookmark2">' . $strDelete . '</label>' . "\n";
  340.             echo '            <br />' . "\n";
  341.             echo '            </div>' . "\n";
  342.             $bookmark_go = TRUE;
  343.         }
  344.     }
  345. }
  346.  
  347. if (!isset($is_inside_querywindow) || (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && (($querydisplay_tab == 'files') || $querydisplay_tab == 'sql' || $querydisplay_tab == 'full' || ($querydisplay_tab == 'history' && $bookmark_go)))) {
  348.     if ($form_items > 0) {
  349. ?>
  350.             <table border="0">
  351.                 <tr>
  352.                     <td valign="top">
  353.                         <input type="submit" name="SQL" value="<?php echo $strGo; ?>" />
  354.                     </td>
  355. <?php
  356.         if ( $cfg['Bookmark']['db']
  357.           && $cfg['Bookmark']['table']
  358.           && (!isset($is_inside_querywindow)
  359.             || (  isset($is_inside_querywindow)
  360.                && $is_inside_querywindow == TRUE
  361.                && isset($querydisplay_tab)
  362.                //&& $querydisplay_tab != 'history'))) {
  363.                && $querydisplay_tab == 'sql'))) {
  364. ?>
  365.                     <td valign="top">
  366.                         <input type="submit" name="SQLbookmark" value="<?php echo $strGo . ' & ' . $strBookmarkThis; ?>" />
  367.                     </td>
  368.  
  369.                     <td>
  370.                         <fieldset>
  371.                             <legend><?php echo $strBookmarkOptions; ?></legend>
  372.                                 <?php echo $strBookmarkLabel; ?>: <input type="text" name="bkm_label" value="" /><br />
  373.                                 <input type="checkbox" name="bkm_all_users" id="id_bkm_all_users" value="true" /><label for="id_bkm_all_users"><?php echo $strBookmarkAllUsers; ?></label>
  374.                         </fieldset>
  375.                     </td>
  376. <?php
  377.         }
  378. ?>
  379.                 </tr>
  380.             </table>
  381. <?php
  382.         } else {
  383.             // TODO: Add a more complete warning that no items (like for file import) where found.
  384.             //       (After 2.5.2 release!)
  385.             echo $strWebServerUploadDirectoryError;
  386.         }
  387. }
  388. ?>
  389. </form>
  390. <?php
  391. if (!isset($is_inside_querywindow) ||
  392.     (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE && isset($querydisplay_tab) && ($querydisplay_tab == 'files' || $querydisplay_tab == 'full')) && isset($db) && $db != '') {
  393.  
  394.     // loic1: displays import dump feature only if file upload available
  395.     $ldi_target = 'ldi_table.php?' . $url_query . (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE ? '&focus_querywindow=true' : '');
  396.  
  397.     if ($is_upload && isset($db) && isset($table)) {
  398.         ?>
  399.         <!-- Insert a text file -->
  400.         <br /><br />
  401.         <li>
  402.             <?php
  403.             if ($cfg['QueryFrame'] && $cfg['QueryFrameJS']) {
  404.             ?>
  405.  
  406.             <script type="text/javascript">
  407.                 document.writeln('<div style="margin-bottom: 10px"><a href="<?php echo (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE ? '#' : $ldi_target); ?>" <?php echo (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE ? 'onclick="opener.parent.frames.phpmain\' + opener.parent.frames.queryframe.document.hashform.hash.value + \'.location.href = \\\'' . $ldi_target . '\\\'; return false;"' : ''); ?>><?php echo addslashes($strInsertTextfiles); ?></a></div>');
  408.             </script>
  409.  
  410.             <?php
  411.             } else {
  412.             ?>
  413.  
  414.             <script type="text/javascript">
  415.                 document.writeln('<div style="margin-bottom: 10px"><a href="<?php echo (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE ? '#' : $ldi_target); ?>" <?php echo (isset($is_inside_querywindow) && $is_inside_querywindow == TRUE ? 'onclick="opener.parent.frames.phpmain' . md5($cfg['PmaAbsoluteUri']) . '.location.href = \\\'' . $ldi_target . '\\\'; return false;"' : ''); ?>><?php echo addslashes($strInsertTextfiles); ?></a></div>');
  416.             </script>
  417.  
  418.             <?php
  419.             }
  420.             ?>
  421.  
  422.             <noscript>
  423.                <div style="margin-bottom: 10px"><a href="<?php echo $ldi_target; ?>"><?php echo $strInsertTextfiles; ?></a></div>
  424.             </noscript>
  425.         </li>
  426.         <?php
  427.     }
  428. }
  429. echo "\n";
  430. ?>
  431.