| [ PHPXref.com ] | [ Generated: Sun Jul 20 19:46:00 2008 ] | [ phpMyAdmin 2.9.0.3 ] |
| [ Index ] [ Variables ] [ Functions ] [ Classes ] [ Constants ] [ Statistics ] | ||
[Summary view] [Print] [Text view]
1 <?php 2 /* $Id: db_details_importdocsql.php 8796 2006-03-19 13:15:56Z lem9 $ */ 3 // vim: expandtab sw=4 ts=4 sts=4: 4 5 require_once ('./libraries/common.lib.php'); 6 7 /** 8 * This script imports relation infos from docSQL (www.databay.de) 9 */ 10 11 12 /** 13 * Get the values of the variables posted or sent to this script and display 14 * the headers 15 */ 16 require_once ('./libraries/read_dump.lib.php'); 17 require_once ('./libraries/header.inc.php'); 18 19 // Check parameters 20 PMA_checkParameters(array('db')); 21 22 // We do any work, only if docSQL import was enabled in config 23 if (isset($cfg['docSQLDir']) && !empty($cfg['docSQLDir'])) { 24 25 if (substr($cfg['docSQLDir'], -1) != '/') { 26 $cfg['docSQLDir'] .= '/'; 27 } 28 29 /** 30 * Imports docSQL files 31 * 32 * @param string the basepath 33 * @param string the filename 34 * @param string the complete filename 35 * @param string the content of a file 36 37 * 38 * @return boolean always true 39 * 40 * @global array GLOBAL variables 41 */ 42 function docsql_check($docpath = '', $file = '', $filename = '', $content = 'none') { 43 global $GLOBALS; 44 45 if (preg_match('@^(.*)_field_comment\.(txt|zip|bz2|bzip).*$@i', $filename)) { 46 $tab = preg_replace('@^(.*)_field_comment\.(txt|zip|bz2|bzip).*@si', '\1', $filename); 47 //echo '<h1>Working on Table ' . $_tab . '</h1>'; 48 if ($content == 'none') { 49 $lines = array(); 50 $fd = fopen($docpath . $file, 'r'); 51 if ($fd) { 52 while (!feof($fd)) { 53 $lines[] = fgets($fd, 4096); 54 } 55 } 56 } else { 57 $content = str_replace("\r\n", "\n", $content); 58 $content = str_replace("\r", "\n", $content); 59 $lines = explode("\n", $content); 60 } 61 62 if (isset($lines) && is_array($lines) && count($lines) > 0) { 63 foreach ($lines AS $lkey => $line) { 64 //echo '<p>' . $line . '</p>'; 65 $inf = explode('|', $line); 66 if (!empty($inf[1]) && strlen(trim($inf[1])) > 0) { 67 $qry = ' 68 INSERT INTO 69 ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($GLOBALS['cfgRelation']['column_info']) . ' 70 ( db_name, table_name, column_name, ' . PMA_backquote('comment') . ' ) 71 VALUES ( 72 \'' . PMA_sqlAddslashes($GLOBALS['db']) . '\', 73 \'' . PMA_sqlAddslashes(trim($tab)) . '\', 74 \'' . PMA_sqlAddslashes(trim($inf[0])) . '\', 75 \'' . PMA_sqlAddslashes(trim($inf[1])) . '\')'; 76 if (PMA_query_as_cu($qry)) { 77 echo '<p>' . $GLOBALS['strAddedColumnComment'] . ' ' . htmlspecialchars($tab) . '.' . htmlspecialchars($inf[0]) . '</p>'; 78 } else { 79 echo '<p>' . $GLOBALS['strWritingCommentNotPossible'] . '</p>'; 80 } 81 echo "\n"; 82 } // end inf[1] exists 83 if (!empty($inf[2]) && strlen(trim($inf[2])) > 0) { 84 $for = explode('->', $inf[2]); 85 $qry = ' 86 INSERT INTO 87 ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($GLOBALS['cfgRelation']['relation']) . ' 88 ( master_db, master_table, master_field, foreign_db, foreign_table, foreign_field) 89 VALUES ( 90 \'' . PMA_sqlAddslashes($GLOBALS['db']) . '\', 91 \'' . PMA_sqlAddslashes(trim($tab)) . '\', 92 \'' . PMA_sqlAddslashes(trim($inf[0])) . '\', 93 \'' . PMA_sqlAddslashes($GLOBALS['db']) . '\', 94 \'' . PMA_sqlAddslashes(trim($for[0])) . '\', 95 \'' . PMA_sqlAddslashes(trim($for[1])) . '\')'; 96 if (PMA_query_as_cu($qry)) { 97 echo '<p>' . $GLOBALS['strAddedColumnRelation'] . ' ' . htmlspecialchars($tab) . '.' . htmlspecialchars($inf[0]) . ' to ' . htmlspecialchars($inf[2]) . '</p>'; 98 } else { 99 echo '<p>' . $GLOBALS['strWritingRelationNotPossible'] . '</p>'; 100 } 101 echo "\n"; 102 } // end inf[2] exists 103 } 104 echo '<p><font color="green">' . sprintf($GLOBALS['strImportSuccessfullyFinished'], count($lines)) . '</font></p>' . "\n"; 105 } else { 106 echo '<p><font color="red">' . $GLOBALS['strFileCouldNotBeRead'] . '</font></p>' . "\n"; 107 } 108 109 return 1; 110 } else { 111 if ($content != 'none') { 112 echo '<p><font color="orange">' . sprintf($GLOBALS['strIgnoringFile'], ' ' . htmlspecialchars($file)) . '</font></p>' . "\n"; 113 } else { 114 // garvin: disabled. Shouldn't impose ANY non-submitted files ever. 115 echo '<p><font color="orange">' . sprintf($GLOBALS['strIgnoringFile'], ' ' . '...') . '</font></p>' . "\n"; 116 } 117 return 0; 118 } // end working on table 119 } 120 121 /** 122 * Executes import if required 123 */ 124 if (isset($do) && $do == 'import') { 125 $orig_docpath = $docpath; 126 127 if (empty($sql_file)) { 128 $sql_file = 'none'; 129 } 130 131 // Get relation settings 132 require_once ('./libraries/relation.lib.php'); 133 $cfgRelation = PMA_getRelationsParam(); 134 135 // Gets the query from a file if required 136 if ($sql_file != 'none') { 137 if (file_exists($sql_file) 138 && is_uploaded_file($sql_file)) { 139 140 $open_basedir = @ini_get('open_basedir'); 141 142 // If we are on a server with open_basedir, we must move the file 143 // before opening it. The doc explains how to create the "./tmp" 144 // directory 145 146 if (!empty($open_basedir)) { 147 148 $tmp_subdir = (PMA_IS_WINDOWS ? '.\\tmp\\' : './tmp/'); 149 150 // function is_writeable() is valid on PHP3 and 4 151 if (!is_writeable($tmp_subdir)) { 152 $docsql_text = PMA_readFile($sql_file, $sql_file_compression); 153 if ($docsql_text == FALSE) { 154 echo $strFileCouldNotBeRead; 155 exit(); 156 } 157 } else { 158 $sql_file_new = $tmp_subdir . basename($sql_file); 159 move_uploaded_file($sql_file, $sql_file_new); 160 $docsql_text = PMA_readFile($sql_file_new, $sql_file_compression); 161 unlink($sql_file_new); 162 } 163 } else { 164 // read from the normal upload dir 165 $docsql_text = PMA_readFile($sql_file, $sql_file_compression); 166 } 167 168 // Convert the file's charset if necessary 169 if ($cfg['AllowAnywhereRecoding'] && $allow_recoding 170 && isset($charset_of_file) && $charset_of_file != $charset) { 171 $docsql_text = PMA_convert_string($charset_of_file, $charset, $docsql_text); 172 } 173 174 if (!isset($docsql_text) || $docsql_text == FALSE || $docsql_text == '') { 175 echo '<p><font color="red">' . $GLOBALS['strFileCouldNotBeRead'] . '</font></p>' . "\n"; 176 } else { 177 docsql_check('', $sql_file_name, $sql_file_name, $docsql_text); 178 } 179 } // end uploaded file stuff 180 } else { 181 182 // echo '<h1>Starting Import</h1>'; 183 $docpath = $cfg['docSQLDir'] . PMA_securePath($docpath); 184 if (substr($docpath, -1) != '/') { 185 $docpath .= '/'; 186 } 187 188 $matched_files = 0; 189 190 if (is_dir($docpath)) { 191 // Do the work 192 $handle = opendir($docpath); 193 while ($file = @readdir($handle)) { 194 $filename = basename($file); 195 // echo '<p>Working on file ' . $filename . '</p>'; 196 $matched_files += docsql_check($docpath, $file, $filename); 197 } // end while 198 } else { 199 echo '<p><font color="red">' .$docpath . ': ' . $strThisNotDirectory . "</font></p>\n"; 200 } 201 } 202 } 203 204 205 /** 206 * Displays the form 207 */ 208 ?> 209 210 <form method="post" action="db_details_importdocsql.php" <?php if ($is_upload) { echo ' enctype="multipart/form-data"'; } ?>> 211 <?php echo PMA_generate_common_hidden_inputs($db); ?> 212 <input type="hidden" name="submit_show" value="true" /> 213 <input type="hidden" name="do" value="import" /> 214 <b><?php echo $strAbsolutePathToDocSqlDir; ?>:</b> 215 <br /><br /> 216 <?php echo $cfg['docSQLDir']; ?>/<input class="textfield" type="text" name="docpath" size="15" value="<?php echo (isset($orig_docpath) ? $orig_docpath : ''); ?>" /> 217 <?php 218 // garvin: displays import dump feature only if file upload available 219 if ($is_upload) { 220 echo '<br /><br />'; 221 echo ' <i>' . $strOr . '</i> ' . $strLocationTextfile . ':<br />' . "\n"; 222 ?> 223 <div style="margin-bottom: 5px"> 224 <input type="file" name="sql_file" class="textfield" /><br /> 225 <?php 226 if ($cfg['AllowAnywhereRecoding'] && $allow_recoding) { 227 $temp_charset = reset($cfg['AvailableCharsets']); 228 echo $strCharsetOfFile . "\n" 229 . ' <select name="charset_of_file" size="1">' . "\n" 230 . ' <option value="' . $temp_charset . '"'; 231 if ($temp_charset == $charset) { 232 echo ' selected="selected"'; 233 } 234 echo '>' . $temp_charset . '</option>' . "\n"; 235 while ($temp_charset = next($cfg['AvailableCharsets'])) { 236 echo ' <option value="' . $temp_charset . '"'; 237 if ($temp_charset == $charset) { 238 echo ' selected="selected"'; 239 } 240 echo '>' . $temp_charset . '</option>' . "\n"; 241 } // end while 242 echo ' </select><br />' . "\n" . ' '; 243 } // end if 244 $is_gzip = ($cfg['GZipDump'] && @function_exists('gzopen')); 245 $is_bzip = ($cfg['BZipDump'] && @function_exists('bzdecompress')); 246 if ($is_bzip || $is_gzip) { 247 echo ' ' . $strCompression . ':' . "\n" 248 . ' <input type="radio" id="radio_sql_file_compression_auto" name="sql_file_compression" value="" checked="checked" /><label for="radio_sql_file_compression_auto">' . $strAutodetect . '</label> ' . "\n" 249 . ' <input type="radio" id="radio_sql_file_compression_plain" name="sql_file_compression" value="text/plain" /><label for="radio_sql_file_compression_plain">' . $strNone . '</label> ' . "\n"; 250 if ($is_gzip) { 251 echo ' <input type="radio" id="radio_sql_file_compression_gzip" name="sql_file_compression" value="application/x-gzip" /><label for="radio_sql_file_compression_gzip">' . $strGzip . '</label> ' . "\n"; 252 } 253 if ($is_bzip) { 254 echo ' <input type="radio" id="radio_sql_file_compression_bzip" name="sql_file_compression" value="application/x-bzip" /><label for="radio_sql_file_compression_bzip">' . $strBzip . '</label> ' . "\n"; 255 } 256 } else { 257 echo ' <input type="hidden" name="sql_file_compression" value="text/plain" />' . "\n"; 258 } 259 ?> 260 </div> 261 <?php 262 } // end if 263 echo "\n"; 264 ?> 265 <br /> 266 <input type="submit" value="<?php echo $strImportFiles; ?>" /> 267 </form> 268 269 <?php 270 271 } // End if use docSQL 272 273 /** 274 * Displays the footer 275 */ 276 echo "\n"; 277 require_once ('./libraries/footer.inc.php'); 278 279 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| [ Powered by PHPXref - Served by Debian GNU/Linux ] |