| verzia 1.52, 2014/10/06 03:12:33 |
verzia 1.53, 2017/05/23 13:52:15 |
|
|
| * http://platon.sk/projects/phpMyEdit/ |
* http://platon.sk/projects/phpMyEdit/ |
| */ |
*/ |
| |
|
| /* $Platon: phpMyEdit/phpMyEditSetup.php,v 1.51 2010-09-20 01:00:49 nepto Exp $ */ |
/* $Platon: phpMyEdit/phpMyEditSetup.php,v 1.52 2014-10-06 03:12:33 nepto Exp $ */ |
| |
|
| ?> |
?> |
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
| Riadok 112 function echo_buffer($x) |
|
| Riadok 112 function echo_buffer($x) |
|
| #:# constraint is found. #:# |
#:# constraint is found. #:# |
| #:# Contributed by Wade Ryan, #:# |
#:# Contributed by Wade Ryan, #:# |
| #:# 20060906 #:# |
#:# 20060906 #:# |
| |
#:# Modified for PHP 7 by Igor Mino, #:# |
| |
#:# 20170523 #:# |
| #:#####################################:# |
#:#####################################:# |
| function check_constraints($tb,$fd) |
function check_constraints($tb,$fd) |
| { |
{ |
| $query = "show create table $tb"; |
global $dbl; |
| $result = mysql_query($query); |
$fds = mysqli_query($dbl, 'SHOW CREATE TABLE '.$tb); |
| $tableDef = preg_split('/\n/',mysql_result($result,0,1)); |
$row = mysqli_fetch_array($fds, MYSQLI_NUM); |
| |
$tableDef = preg_split('/\n/', $row[1]); |
| $constraint_arg=""; |
$constraint_arg=""; |
| while (list($key,$val) = each($tableDef)) { |
while (list($key,$val) = each($tableDef)) { |
| $words=preg_split("/[\s'`()]+/", $val); |
$words=preg_split("/[\s'`()]+/", $val); |
| Riadok 161 function get_versions() |
|
| Riadok 163 function get_versions() |
|
| return $ret_ar; |
return $ret_ar; |
| } |
} |
| |
|
| |
if (!function_exists('mysqli_field_flags')) { |
| |
function mysqli_field_flags($mysqli_result, $field_offset) { |
| |
$flags = array(); |
| |
$constants = get_defined_constants( true ); |
| |
foreach ($constants['mysqli'] as $c => $n) { |
| |
if (preg_match('/MYSQLI_(.*)_FLAG$/', $c, $m)) |
| |
if (!array_key_exists($n, $flags)) |
| |
$flags[$n] = $m[1]; |
| |
$flags_num = mysqli_fetch_field_direct( $mysqli_result, $field_offset ); |
| |
if (is_null($flags_num)) continue; |
| |
$flags_num = $flags_num->flags; |
| |
$result = array(); |
| |
foreach ($flags as $n => $t) |
| |
if ($flags_num & $n) |
| |
$result[] = $t; |
| |
$returnFlags = implode(' ', $result); |
| |
$returnFlags = str_replace( 'PRI_KEY', 'PRIMARY_KEY', $returnFlags); |
| |
$returnFlags = strtolower($returnFlags); |
| |
} |
| |
return $returnFlags; |
| |
} |
| |
} |
| |
|
| |
function convert_mysqli_type($mysqli_type) { |
| |
$convert = array( |
| |
'int' => 'int', |
| |
'double' => 'real', |
| |
'float' => 'real', |
| |
'decimal' => 'real', |
| |
'numeric' => 'real', |
| |
'char' => 'string', |
| |
'enum' => 'string', |
| |
'set' => 'string', |
| |
'blob' => 'blob', |
| |
'text' => 'blob', |
| |
); |
| |
foreach ($convert as $needle => $ret) { |
| |
if (stristr($mysqli_type, $needle) !== false) { |
| |
return $ret; |
| |
} |
| |
} |
| |
return $mysqli_type; |
| |
} |
| |
|
| |
|
| $self = basename($_SERVER['PHP_SELF']); |
$self = basename($_SERVER['PHP_SELF']); |
| $dbl = @mysql_pconnect($hn, $un, $pw, strlen($ssl) ? MYSQL_CLIENT_SSL : null); |
$dbl = @mysqli_connect('p:'.$hn, $un, $pw, strlen($ssl) ? MYSQL_CLIENT_SSL : null); |
| |
|
| if ((!$dbl) or empty($submit)) { |
if ((!$dbl) or empty($submit)) { |
| echo '<h1>Please log in to your MySQL database</h1>'; |
echo '<h1>Please log in to your MySQL database</h1>'; |
| Riadok 199 if ((!$dbl) or empty($submit)) { |
|
| Riadok 245 if ((!$dbl) or empty($submit)) { |
|
| <input type="submit" name="submit" value="Submit"> |
<input type="submit" name="submit" value="Submit"> |
| </form>'.PHP_EOL; |
</form>'.PHP_EOL; |
| } else if (empty($db)) { |
} else if (empty($db)) { |
| $dbs = @mysql_list_dbs($dbl); |
$result = mysqli_query($dbl, 'SHOW DATABASES'); |
| $num_dbs = @mysql_num_rows($dbs); |
$dbs = array(); |
| |
while (($row = mysqli_fetch_array($result, MYSQLI_NUM)) != false) $dbs[] = $row[0]; |
| echo '<h1>Please select a database</h1> |
echo '<h1>Please select a database</h1> |
| <form action="'.htmlspecialchars($self).'" method="POST"> |
<form action="'.htmlspecialchars($self).'" method="POST"> |
| <input type="hidden" name="hn" value="'.htmlspecialchars($hn).'"> |
<input type="hidden" name="hn" value="'.htmlspecialchars($hn).'"> |
| Riadok 208 if ((!$dbl) or empty($submit)) { |
|
| Riadok 255 if ((!$dbl) or empty($submit)) { |
|
| <input type="hidden" name="pw" value="'.htmlspecialchars($pw).'"> |
<input type="hidden" name="pw" value="'.htmlspecialchars($pw).'"> |
| <input type="hidden" name="ssl" value="'.htmlspecialchars($ssl).'"> |
<input type="hidden" name="ssl" value="'.htmlspecialchars($ssl).'"> |
| <table border="1" cellpadding="1" cellspacing="1" summary="Database selection">'.PHP_EOL; |
<table border="1" cellpadding="1" cellspacing="1" summary="Database selection">'.PHP_EOL; |
| for ($i = 0; $i < $num_dbs; $i++) { |
if (is_array($dbs)) foreach ($dbs as $db) { |
| $db = @mysql_db_name($dbs, $i); |
|
| $checked = ! strcasecmp($un, $db) ? ' checked' : ''; |
$checked = ! strcasecmp($un, $db) ? ' checked' : ''; |
| $db = htmlspecialchars($db); |
$db = htmlspecialchars($db); |
| echo '<tr><td><input'.$checked.' type="radio" name="db" value="'.$db.'"></td><td>'.$db.'</td></tr>'.PHP_EOL; |
echo '<tr><td><input'.$checked.' type="radio" name="db" value="'.$db.'"></td><td>'.$db.'</td></tr>'.PHP_EOL; |
| Riadok 227 if ((!$dbl) or empty($submit)) { |
|
| Riadok 273 if ((!$dbl) or empty($submit)) { |
|
| <input type="hidden" name="db" value="'.htmlspecialchars($db).'"> |
<input type="hidden" name="db" value="'.htmlspecialchars($db).'"> |
| <input type="hidden" name="ssl" value="'.htmlspecialchars($ssl).'"> |
<input type="hidden" name="ssl" value="'.htmlspecialchars($ssl).'"> |
| <table border="1" cellpadding="1" cellspacing="1" summary="Table selection">'.PHP_EOL; |
<table border="1" cellpadding="1" cellspacing="1" summary="Table selection">'.PHP_EOL; |
| $tbs = @mysql_list_tables($db, $dbl); |
$result = mysqli_query($dbl, 'SHOW TABLES FROM '.$db); |
| $num_tbs = @mysql_num_rows($tbs); |
$tbs = array(); |
| for ($j = 0; $j < $num_tbs; $j++) { |
while (($row = mysqli_fetch_array($result, MYSQLI_NUM)) != false) $tbs[] = $row[0]; |
| $tb = @mysql_tablename($tbs, $j); |
if (is_array($tbs)) foreach ($tbs as $tb) { |
| $tb = htmlspecialchars($tb); |
$checked = ''; |
| $checked = $j == 0 ? ' checked' : ''; |
|
| echo '<tr><td><input'.$checked.' type="radio" name="tb" value="'.$tb.'"></td><td>'.$tb.'</td></tr>'.PHP_EOL; |
echo '<tr><td><input'.$checked.' type="radio" name="tb" value="'.$tb.'"></td><td>'.$tb.'</td></tr>'.PHP_EOL; |
| } |
} |
| echo '</table><br> |
echo '</table><br> |
| Riadok 261 if ((!$dbl) or empty($submit)) { |
|
| Riadok 306 if ((!$dbl) or empty($submit)) { |
|
| <table border="1" cellpadding="1" cellspacing="1" summary="Key selection">'.PHP_EOL; |
<table border="1" cellpadding="1" cellspacing="1" summary="Key selection">'.PHP_EOL; |
| // <tr><td><input type="radio" name="id" value=""> |
// <tr><td><input type="radio" name="id" value=""> |
| // <td><i>None</i></td><td><i>No id field required</i></td></tr> |
// <td><i>None</i></td><td><i>No id field required</i></td></tr> |
| @mysql_select_db($db); |
@mysqli_select_db($dbl, $db); |
| $tb_desc = @mysql_query("DESCRIBE $tb"); |
$tb_desc = @mysqli_query("DESCRIBE $tb"); |
| $fds = @mysql_list_fields($db,$tb,$dbl); |
$fds = mysqli_query($dbl, 'SHOW COLUMNS FROM '.$db.'.'.$tb); |
| for ($j = 0; ($fd = @mysql_field_name($fds, $j)) != false; $j++) { |
for ($j = 0; ($finfo = mysqli_fetch_array($fds, MYSQLI_ASSOC)) != false; $j++) { |
| $ff = @mysql_field_flags($fds, $j); |
$checked = stristr($finfo['Key'], 'primary_key') ? ' checked' : ''; |
| strlen($ff) <= 0 && $ff = '---'; |
echo '<tr><td><input',$checked,' type="radio" name="id" value="'.htmlspecialchars($finfo['Field']).'"></td>'; |
| $checked = stristr($ff, 'primary_key') ? ' checked' : ''; |
echo '<td>'.htmlspecialchars($finfo['Field']).'</td>'; |
| echo '<tr><td><input',$checked,' type="radio" name="id" value="',htmlspecialchars($fd),'"></td>'; |
echo '<td>'.htmlspecialchars($finfo['Type']).'</td>'; |
| echo '<td>',htmlspecialchars($fd),'</td>'; |
echo '<td>'.htmlspecialchars($finfo['Key']).'</td>'; |
| echo '<td>',htmlspecialchars($ff),'</td>'; |
|
| $r = @mysql_fetch_array($tb_desc, $j); |
|
| } |
} |
| echo '</table><br> |
echo '</table><br> |
| <input type="submit" name="submit" value="Submit"> |
<input type="submit" name="submit" value="Submit"> |
| Riadok 347 if ((!$dbl) or empty($submit)) { |
|
| Riadok 390 if ((!$dbl) or empty($submit)) { |
|
| if ($id == '') { |
if ($id == '') { |
| echo_buffer("\$opts['key_type'] = '';"); |
echo_buffer("\$opts['key_type'] = '';"); |
| } else { |
} else { |
| $fds = @mysql_list_fields($db,$tb,$dbl); |
$fds = mysqli_query($dbl, 'SHOW COLUMNS FROM '.$db.'.'.$tb); |
| for ($j = 0; ($fd = @mysql_field_name($fds, $j)) != ''; $j++) { |
for ($j = 0; ($finfo = mysqli_fetch_array($fds, MYSQLI_ASSOC)) != false; $j++) { |
| if ($fd == $id) { |
if ($finfo['Field'] == $id) { |
| echo_buffer("\$opts['key_type'] = '".@mysql_field_type($fds, $j)."';"); |
echo_buffer("\$opts['key_type'] = '".convert_mysqli_type($finfo['Type'])."';"); |
| break; |
break; |
| } |
} |
| } |
} |
| Riadok 444 appear in generated list. Here are some |
|
| Riadok 487 appear in generated list. Here are some |
|
| */ |
*/ |
| "); |
"); |
| |
|
| @mysql_select_db($db); |
@mysqli_select_db($dbl, $db); |
| $tb_desc = @mysql_query("DESCRIBE $tb"); |
$tb_desc = mysqli_query($dbl, "DESCRIBE $db.$tb"); |
| $fds = @mysql_list_fields($db, $tb, $dbl); |
$ts_cnt = 0; |
| $num_fds = @mysql_num_fields($fds); |
while (($finfo = mysqli_fetch_array($tb_desc, MYSQLI_ASSOC)) != false) { |
| $ts_cnt = 0; |
$fd = $finfo['Field']; |
| for ($k = 0; $k < $num_fds; $k++) { |
$fm = $finfo['Type']; |
| $fd = mysql_field_name($fds,$k); |
|
| $fm = mysql_fetch_field($fds,$k); |
|
| $fn = strtr($fd, '_-.', ' '); |
$fn = strtr($fd, '_-.', ' '); |
| $fn = preg_replace('/(^| +)id( +|$)/', '\\1ID\\2', $fn); // uppercase IDs |
$fn = preg_replace('/(^| +)id( +|$)/', '\\1ID\\2', $fn); // uppercase IDs |
| $fn = ucfirst($fn); |
$fn = ucfirst($fn); |
| $row = @mysql_fetch_array($tb_desc); |
|
| echo_buffer('$opts[\'fdd\'][\''.$fd.'\'] = array('); // ) |
echo_buffer('$opts[\'fdd\'][\''.$fd.'\'] = array('); // ) |
| echo_buffer(" 'name' => '".str_replace('\'','\\\'',$fn)."',"); |
echo_buffer(" 'name' => '".str_replace('\'','\\\'',$fn)."',"); |
| $auto_increment = strstr($row[5], 'auto_increment') ? 1 : 0; |
$auto_increment = strstr($finfo['Extra'], 'auto_increment') ? 1 : 0; |
| if (substr($row[1],0,3) == 'set') { |
if (substr($finfo['Type'],0,3) == 'set') { |
| echo_buffer(" 'select' => 'M',"); |
echo_buffer(" 'select' => 'M',"); |
| } else { |
} else { |
| echo_buffer(" 'select' => 'T',"); |
echo_buffer(" 'select' => 'T',"); |
| Riadok 468 appear in generated list. Here are some |
|
| Riadok 508 appear in generated list. Here are some |
|
| echo_buffer(" 'options' => 'AVCPDR', // auto increment"); |
echo_buffer(" 'options' => 'AVCPDR', // auto increment"); |
| } |
} |
| // timestamps are read-only |
// timestamps are read-only |
| else if (@mysql_field_type($fds, $k) == 'timestamp') { |
else if ($finfo['Type'] == 'timestamp') { |
| if ($ts_cnt > 0) { |
if ($ts_cnt > 0) { |
| echo_buffer(" 'options' => 'AVCPD',"); |
echo_buffer(" 'options' => 'AVCPD',"); |
| } else { // first timestamp |
} else { // first timestamp |
| Riadok 476 appear in generated list. Here are some |
|
| Riadok 516 appear in generated list. Here are some |
|
| } |
} |
| $ts_cnt++; |
$ts_cnt++; |
| } |
} |
| echo_buffer(" 'maxlen' => ".@mysql_field_len($fds,$k).','); |
preg_match('/\((.*)\)/', 'varchar(11)', $matches); |
| |
$maxlen = max(1, intval($matches[1])); |
| |
echo_buffer(" 'maxlen' => ".$maxlen.','); |
| // blobs -> textarea |
// blobs -> textarea |
| if (@mysql_field_type($fds,$k) == 'blob') { |
if ($finfo['Type'] == 'blob') { |
| echo_buffer(" 'textarea' => array("); |
echo_buffer(" 'textarea' => array("); |
| echo_buffer(" 'rows' => 5,"); |
echo_buffer(" 'rows' => 5,"); |
| echo_buffer(" 'cols' => 50),"); |
echo_buffer(" 'cols' => 50),"); |
| } |
} |
| // SETs and ENUMs get special treatment |
// SETs and ENUMs get special treatment |
| if ((substr($row[1],0,3) == 'set' || substr($row[1],0,4) == 'enum') |
if ((substr($finfo['Type'],0,3) == 'set' || substr($finfo['Type'],0,4) == 'enum') |
| && ! (($pos = strpos($row[1], '(')) === false)) { |
&& ! (($pos = strpos($finfo['Type'], '(')) === false)) { |
| $indent = str_repeat(' ', 18); |
$indent = str_repeat(' ', 18); |
| $outstr = substr($row[1], $pos + 2, -2); |
$outstr = substr($finfo['Type'], $pos + 2, -2); |
| $outstr = explode("','", $outstr); |
$outstr = explode("','", $outstr); |
| $outstr = str_replace("''", "'", $outstr); |
$outstr = str_replace("''", "'", $outstr); |
| $outstr = str_replace('"', '\\"', $outstr); |
$outstr = str_replace('"', '\\"', $outstr); |
| Riadok 495 appear in generated list. Here are some |
|
| Riadok 537 appear in generated list. Here are some |
|
| echo_buffer(" 'values' => array(".PHP_EOL.$indent.'"'.$outstr.'"),'); |
echo_buffer(" 'values' => array(".PHP_EOL.$indent.'"'.$outstr.'"),'); |
| } |
} |
| // automatic support for Default values |
// automatic support for Default values |
| if ($row[4] != '' && $row[4] != 'NULL') { |
if ($finfo['Default'] != '' && $finfo['Default'] != 'NULL') { |
| echo_buffer(" 'default' => '".$row[4]."',"); |
echo_buffer(" 'default' => '".$finfo['Default']."',"); |
| } else if ($auto_increment) { |
} else if ($auto_increment) { |
| echo_buffer(" 'default' => '0',"); |
echo_buffer(" 'default' => '0',"); |
| } |
} |
|
|
| $filehandle = @fopen('./'.$contentFile, 'w+'); |
$filehandle = @fopen('./'.$contentFile, 'w+'); |
| if ($filehandle) { |
if ($filehandle) { |
| fwrite($filehandle, $buffer); |
fwrite($filehandle, $buffer); |
| flush($filehandle); |
|
| fclose($filehandle); |
fclose($filehandle); |
| echo 'phpMyEdit content file written successfully<br>'; |
echo 'phpMyEdit content file written successfully<br>'; |
| } else { |
} else { |