@@ -20,10 +20,10 @@ discard block |
||
20 | 20 | case 'tables_priv': return array(array('table' => 'user', 'source' => array('Host', 'User'), 'target' => array('Host', 'User'))); |
21 | 21 | case 'time_zone_name': return array(array('table' => 'time_zone', 'source' => array('Time_zone_id'), 'target' => array('Time_zone_id'))); |
22 | 22 | case 'time_zone_transition': return array(array('table' => 'time_zone', 'source' => array('Time_zone_id'), 'target' => array('Time_zone_id')), array( |
23 | - 'table' => 'time_zone_transition_type', 'source' => array('Time_zone_id', 'Transition_type_id'), 'target' => array( |
|
24 | - 'Time_zone_id', |
|
25 | - 'Transition_type_id' |
|
26 | - ))); |
|
23 | + 'table' => 'time_zone_transition_type', 'source' => array('Time_zone_id', 'Transition_type_id'), 'target' => array( |
|
24 | + 'Time_zone_id', |
|
25 | + 'Transition_type_id' |
|
26 | + ))); |
|
27 | 27 | case 'time_zone_transition_type': return array(array('table' => 'time_zone', 'source' => array('Time_zone_id'), 'target' => array('Time_zone_id'))); |
28 | 28 | } |
29 | 29 | } elseif (DB == 'information_schema') { |
@@ -44,40 +44,40 @@ discard block |
||
44 | 44 | case 'EVENTS': return array_merge(array(array('source' => array('EVENT_CATALOG', 'EVENT_SCHEMA')) + $schemata), $routine_charsets); |
45 | 45 | case 'FILES': return array($schemata, $tables); |
46 | 46 | case 'KEY_COLUMN_USAGE': return array(array('source' => array('CONSTRAINT_CATALOG', 'CONSTRAINT_SCHEMA')) + $schemata, $schemata, $tables, $columns, array('source' => array('TABLE_CATALOG', 'REFERENCED_TABLE_SCHEMA')) + $schemata, array( |
47 | - 'source' => array( |
|
48 | - 'TABLE_CATALOG', |
|
49 | - 'REFERENCED_TABLE_SCHEMA', |
|
50 | - 'REFERENCED_TABLE_NAME' |
|
51 | - )) + $tables, array( |
|
52 | - 'source' => array( |
|
53 | - 'TABLE_CATALOG', |
|
54 | - 'REFERENCED_TABLE_SCHEMA', |
|
55 | - 'REFERENCED_TABLE_NAME', |
|
56 | - 'REFERENCED_COLUMN_NAME' |
|
57 | - )) + $columns); |
|
47 | + 'source' => array( |
|
48 | + 'TABLE_CATALOG', |
|
49 | + 'REFERENCED_TABLE_SCHEMA', |
|
50 | + 'REFERENCED_TABLE_NAME' |
|
51 | + )) + $tables, array( |
|
52 | + 'source' => array( |
|
53 | + 'TABLE_CATALOG', |
|
54 | + 'REFERENCED_TABLE_SCHEMA', |
|
55 | + 'REFERENCED_TABLE_NAME', |
|
56 | + 'REFERENCED_COLUMN_NAME' |
|
57 | + )) + $columns); |
|
58 | 58 | case 'PARTITIONS': return array($schemata, $tables); |
59 | 59 | case 'REFERENTIAL_CONSTRAINTS': return array(array('source' => array('CONSTRAINT_CATALOG', 'CONSTRAINT_SCHEMA')) + $schemata, array('source' => array('UNIQUE_CONSTRAINT_CATALOG', 'UNIQUE_CONSTRAINT_SCHEMA')) + $schemata, array( |
60 | - 'source' => array( |
|
61 | - 'CONSTRAINT_CATALOG', |
|
62 | - 'CONSTRAINT_SCHEMA', |
|
63 | - 'TABLE_NAME' |
|
64 | - )) + $tables, array( |
|
65 | - 'source' => array( |
|
66 | - 'CONSTRAINT_CATALOG', |
|
67 | - 'CONSTRAINT_SCHEMA', |
|
68 | - 'REFERENCED_TABLE_NAME' |
|
69 | - )) + $tables); |
|
60 | + 'source' => array( |
|
61 | + 'CONSTRAINT_CATALOG', |
|
62 | + 'CONSTRAINT_SCHEMA', |
|
63 | + 'TABLE_NAME' |
|
64 | + )) + $tables, array( |
|
65 | + 'source' => array( |
|
66 | + 'CONSTRAINT_CATALOG', |
|
67 | + 'CONSTRAINT_SCHEMA', |
|
68 | + 'REFERENCED_TABLE_NAME' |
|
69 | + )) + $tables); |
|
70 | 70 | case 'ROUTINES': return array_merge(array(array('source' => array('ROUTINE_CATALOG', 'ROUTINE_SCHEMA')) + $schemata), $routine_charsets); |
71 | 71 | case 'SCHEMA_PRIVILEGES': return array($schemata); |
72 | 72 | case 'STATISTICS': return array($schemata, $tables, $columns, array('source' => array('TABLE_CATALOG', 'INDEX_SCHEMA')) + $schemata); |
73 | 73 | case 'TABLE_CONSTRAINTS': return array(array('source' => array('CONSTRAINT_CATALOG', 'CONSTRAINT_SCHEMA')) + $schemata, array('source' => array('CONSTRAINT_CATALOG', 'TABLE_SCHEMA')) + $schemata, array('source' => array('CONSTRAINT_CATALOG', 'TABLE_SCHEMA', 'TABLE_NAME')) + $tables); |
74 | 74 | case 'TABLE_PRIVILEGES': return array($schemata, $tables); |
75 | 75 | case 'TRIGGERS': return array_merge(array(array('source' => array('TRIGGER_CATALOG', 'TRIGGER_SCHEMA')) + $schemata, array('source' => array('EVENT_OBJECT_CATALOG', 'EVENT_OBJECT_SCHEMA')) + $schemata, array( |
76 | - 'source' => array( |
|
77 | - 'EVENT_OBJECT_CATALOG', |
|
78 | - 'EVENT_OBJECT_SCHEMA', |
|
79 | - 'EVENT_OBJECT_TABLE' |
|
80 | - )) + $tables), $routine_charsets); |
|
76 | + 'source' => array( |
|
77 | + 'EVENT_OBJECT_CATALOG', |
|
78 | + 'EVENT_OBJECT_SCHEMA', |
|
79 | + 'EVENT_OBJECT_TABLE' |
|
80 | + )) + $tables), $routine_charsets); |
|
81 | 81 | case 'VIEWS': return array($schemata); |
82 | 82 | } |
83 | 83 | } |
@@ -39,11 +39,11 @@ |
||
39 | 39 | } |
40 | 40 | |
41 | 41 | function tableName(&$tableStatus) { |
42 | - $tableStatus['Comment'] = $this->_translate($tableStatus['Comment']); |
|
42 | + $tableStatus['Comment'] = $this->_translate($tableStatus['Comment']); |
|
43 | 43 | } |
44 | 44 | |
45 | 45 | function fieldName(&$field, $order = 0) { |
46 | - $field['comment'] = $this->_translate($field['comment']); |
|
46 | + $field['comment'] = $this->_translate($field['comment']); |
|
47 | 47 | } |
48 | 48 | |
49 | 49 | function editVal(&$val, $field) { |
@@ -11,9 +11,9 @@ |
||
11 | 11 | var $servers, $driver; |
12 | 12 | |
13 | 13 | /** Set supported servers |
14 | - * @param array array($domain) or array($domain => $description) or array($category => array()) |
|
15 | - * @param string |
|
16 | - */ |
|
14 | + * @param array array($domain) or array($domain => $description) or array($category => array()) |
|
15 | + * @param string |
|
16 | + */ |
|
17 | 17 | function __construct($servers, $driver = 'server') { |
18 | 18 | $this->servers = $servers; |
19 | 19 | $this->driver = $driver; |
@@ -39,7 +39,7 @@ |
||
39 | 39 | ?> |
40 | 40 | <table cellspacing="0"> |
41 | 41 | <tr><th><?php echo lang('Server'); ?><td><input type="hidden" name="auth[driver]" value="<?php echo $this->driver; ?>"><select name="auth[server]"><?php echo optionlist($this->servers, SERVER); ?></select> |
42 | -<tr><th><?php echo lang('Username'); ?><td><input id="username" name="auth[username]" value="<?php echo h($_GET['username']); ?>"> |
|
42 | +<tr><th><?php echo lang('Username'); ?><td><input id="username" name="auth[username]" value="<?php echo h($_GET['username']); ?>"> |
|
43 | 43 | <tr><th><?php echo lang('Password'); ?><td><input type="password" name="auth[password]"> |
44 | 44 | </table> |
45 | 45 | <p><input type="submit" value="<?php echo lang('Login'); ?>"> |
@@ -12,10 +12,10 @@ |
||
12 | 12 | var $uploadPath, $displayPath, $extensions; |
13 | 13 | |
14 | 14 | /** |
15 | - * @param string prefix for uploading data (create writable subdirectory for each table containing uploadable fields) |
|
16 | - * @param string prefix for displaying data, null stands for $uploadPath |
|
17 | - * @param string regular expression with allowed file extensions |
|
18 | - */ |
|
15 | + * @param string prefix for uploading data (create writable subdirectory for each table containing uploadable fields) |
|
16 | + * @param string prefix for displaying data, null stands for $uploadPath |
|
17 | + * @param string regular expression with allowed file extensions |
|
18 | + */ |
|
19 | 19 | function __construct($uploadPath = '../static/data/', $displayPath = null, $extensions = '[a-zA-Z0-9]+') { |
20 | 20 | $this->uploadPath = $uploadPath; |
21 | 21 | $this->displayPath = ($displayPath !== null ? $displayPath : $uploadPath); |
@@ -55,7 +55,7 @@ discard block |
||
55 | 55 | $ajax = true; // AJAX mode: import will be done without refreshing the website |
56 | 56 | $linespersession = 3000; // Lines to be executed per one import session |
57 | 57 | $delaypersession = 0; // You can specify a sleep time in milliseconds after each session |
58 | - // Works only if JavaScript is activated. Use to reduce server overrun |
|
58 | + // Works only if JavaScript is activated. Use to reduce server overrun |
|
59 | 59 | |
60 | 60 | // CSV related settings (only if you use a CSV dump) |
61 | 61 | |
@@ -353,25 +353,25 @@ discard block |
||
353 | 353 | if (!$error && isset($_REQUEST["uploadbutton"])) |
354 | 354 | { if (is_uploaded_file($_FILES["dumpfile"]["tmp_name"]) && ($_FILES["dumpfile"]["error"])==0) |
355 | 355 | { |
356 | - $uploaded_filename=str_replace(" ","_",$_FILES["dumpfile"]["name"]); |
|
357 | - $uploaded_filename=preg_replace("/[^_A-Za-z0-9-\.]/i",'',$uploaded_filename); |
|
358 | - $uploaded_filepath=str_replace("\\","/",$upload_dir."/".$uploaded_filename); |
|
356 | + $uploaded_filename=str_replace(" ","_",$_FILES["dumpfile"]["name"]); |
|
357 | + $uploaded_filename=preg_replace("/[^_A-Za-z0-9-\.]/i",'',$uploaded_filename); |
|
358 | + $uploaded_filepath=str_replace("\\","/",$upload_dir."/".$uploaded_filename); |
|
359 | 359 | |
360 | - do_action('file_uploaded'); |
|
360 | + do_action('file_uploaded'); |
|
361 | 361 | |
362 | - if (file_exists($uploaded_filename)) |
|
363 | - { echo ("<p class=\"error\">File $uploaded_filename already exist! Delete and upload again!</p>\n"); |
|
364 | - } |
|
365 | - else if (!preg_match("/(\.(sql|gz|csv))$/i",$uploaded_filename)) |
|
366 | - { echo ("<p class=\"error\">You may only upload .sql .gz or .csv files.</p>\n"); |
|
367 | - } |
|
368 | - else if (!@move_uploaded_file($_FILES["dumpfile"]["tmp_name"],$uploaded_filepath)) |
|
369 | - { echo ("<p class=\"error\">Error moving uploaded file ".$_FILES["dumpfile"]["tmp_name"]." to the $uploaded_filepath</p>\n"); |
|
370 | - echo ("<p>Check the directory permissions for $upload_dir (must be 777)!</p>\n"); |
|
371 | - } |
|
372 | - else |
|
373 | - { echo ("<p class=\"success\">Uploaded file saved as $uploaded_filename</p>\n"); |
|
374 | - } |
|
362 | + if (file_exists($uploaded_filename)) |
|
363 | + { echo ("<p class=\"error\">File $uploaded_filename already exist! Delete and upload again!</p>\n"); |
|
364 | + } |
|
365 | + else if (!preg_match("/(\.(sql|gz|csv))$/i",$uploaded_filename)) |
|
366 | + { echo ("<p class=\"error\">You may only upload .sql .gz or .csv files.</p>\n"); |
|
367 | + } |
|
368 | + else if (!@move_uploaded_file($_FILES["dumpfile"]["tmp_name"],$uploaded_filepath)) |
|
369 | + { echo ("<p class=\"error\">Error moving uploaded file ".$_FILES["dumpfile"]["tmp_name"]." to the $uploaded_filepath</p>\n"); |
|
370 | + echo ("<p>Check the directory permissions for $upload_dir (must be 777)!</p>\n"); |
|
371 | + } |
|
372 | + else |
|
373 | + { echo ("<p class=\"success\">Uploaded file saved as $uploaded_filename</p>\n"); |
|
374 | + } |
|
375 | 375 | } |
376 | 376 | else |
377 | 377 | { echo ("<p class=\"error\">Error uploading file ".$_FILES["dumpfile"]["name"]."</p>\n"); |
@@ -383,9 +383,9 @@ discard block |
||
383 | 383 | |
384 | 384 | if (!$error && isset($_REQUEST["delete"]) && $_REQUEST["delete"]!=basename($_SERVER["SCRIPT_FILENAME"])) |
385 | 385 | { if (preg_match("/(\.(sql|gz|csv))$/i",$_REQUEST["delete"]) && @unlink($upload_dir.'/'.$_REQUEST["delete"])) |
386 | - echo ("<p class=\"success\">".$_REQUEST["delete"]." was removed successfully</p>\n"); |
|
386 | + echo ("<p class=\"success\">".$_REQUEST["delete"]." was removed successfully</p>\n"); |
|
387 | 387 | else |
388 | - echo ("<p class=\"error\">Can't remove ".$_REQUEST["delete"]."</p>\n"); |
|
388 | + echo ("<p class=\"error\">Can't remove ".$_REQUEST["delete"]."</p>\n"); |
|
389 | 389 | } |
390 | 390 | |
391 | 391 | // Connect to the database, set charset and execute pre-queries |
@@ -395,23 +395,23 @@ discard block |
||
395 | 395 | |
396 | 396 | if (mysqli_connect_error()) |
397 | 397 | { echo ("<p class=\"error\">Database connection failed due to ".mysqli_connect_error()."</p>\n"); |
398 | - echo ("<p>Edit the database settings in BigDump configuration, or contact your database provider.</p>\n"); |
|
399 | - $error=true; |
|
398 | + echo ("<p>Edit the database settings in BigDump configuration, or contact your database provider.</p>\n"); |
|
399 | + $error=true; |
|
400 | 400 | } |
401 | 401 | if (!$error && $db_connection_charset!=='') |
402 | - $mysqli->query("SET NAMES $db_connection_charset"); |
|
402 | + $mysqli->query("SET NAMES $db_connection_charset"); |
|
403 | 403 | |
404 | 404 | if (!$error && isset ($pre_query) && sizeof ($pre_query)>0) |
405 | 405 | { reset($pre_query); |
406 | - foreach ($pre_query as $pre_query_value) |
|
407 | - { if (!$mysqli->query($pre_query_value)) |
|
408 | - { echo ("<p class=\"error\">Error with pre-query.</p>\n"); |
|
409 | - echo ("<p>Query: ".trim(nl2br(htmlentities($pre_query_value)))."</p>\n"); |
|
410 | - echo ("<p>MySQL: ".$mysqli->error."</p>\n"); |
|
411 | - $error=true; |
|
412 | - break; |
|
413 | - } |
|
414 | - } |
|
406 | + foreach ($pre_query as $pre_query_value) |
|
407 | + { if (!$mysqli->query($pre_query_value)) |
|
408 | + { echo ("<p class=\"error\">Error with pre-query.</p>\n"); |
|
409 | + echo ("<p>Query: ".trim(nl2br(htmlentities($pre_query_value)))."</p>\n"); |
|
410 | + echo ("<p>MySQL: ".$mysqli->error."</p>\n"); |
|
411 | + $error=true; |
|
412 | + break; |
|
413 | + } |
|
414 | + } |
|
415 | 415 | } |
416 | 416 | } |
417 | 417 | else |
@@ -428,50 +428,50 @@ discard block |
||
428 | 428 | if (!$error && !isset($_REQUEST["fn"]) && $filename=="") |
429 | 429 | { if ($dirhandle = opendir($upload_dir)) |
430 | 430 | { |
431 | - $files=array(); |
|
432 | - while (false !== ($files[] = readdir($dirhandle))); |
|
433 | - closedir($dirhandle); |
|
434 | - $dirhead=false; |
|
435 | - |
|
436 | - if (sizeof($files)>0) |
|
437 | - { |
|
438 | - sort($files); |
|
439 | - foreach ($files as $dirfile) |
|
440 | - { |
|
441 | - if ($dirfile != "." && $dirfile != ".." && $dirfile!=basename($_SERVER["SCRIPT_FILENAME"]) && preg_match("/\.(sql|gz|csv)$/i",$dirfile)) |
|
442 | - { if (!$dirhead) |
|
443 | - { echo ("<table width=\"100%\" cellspacing=\"2\" cellpadding=\"2\">\n"); |
|
444 | - echo ("<tr><th>Filename</th><th>Size</th><th>Date&Time</th><th>Type</th><th> </th><th> </th>\n"); |
|
445 | - $dirhead=true; |
|
446 | - } |
|
447 | - echo ("<tr><td>$dirfile</td><td class=\"right\">".filesize($upload_dir.'/'.$dirfile)."</td><td>".date ("Y-m-d H:i:s", filemtime($upload_dir.'/'.$dirfile))."</td>"); |
|
448 | - |
|
449 | - if (preg_match("/\.sql$/i",$dirfile)) |
|
450 | - echo ("<td>SQL</td>"); |
|
451 | - elseif (preg_match("/\.gz$/i",$dirfile)) |
|
452 | - echo ("<td>GZip</td>"); |
|
453 | - elseif (preg_match("/\.csv$/i",$dirfile)) |
|
454 | - echo ("<td>CSV</td>"); |
|
455 | - else |
|
456 | - echo ("<td>Misc</td>"); |
|
457 | - |
|
458 | - if ((preg_match("/\.gz$/i",$dirfile) && function_exists("gzopen")) || preg_match("/\.sql$/i",$dirfile) || preg_match("/\.csv$/i",$dirfile)) |
|
459 | - echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&fn=".urlencode($dirfile)."&foffset=0&totalqueries=0&delimiter=".urlencode($delimiter)."\">Start Import</a> into $db_name at $db_server</td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n"); |
|
431 | + $files=array(); |
|
432 | + while (false !== ($files[] = readdir($dirhandle))); |
|
433 | + closedir($dirhandle); |
|
434 | + $dirhead=false; |
|
435 | + |
|
436 | + if (sizeof($files)>0) |
|
437 | + { |
|
438 | + sort($files); |
|
439 | + foreach ($files as $dirfile) |
|
440 | + { |
|
441 | + if ($dirfile != "." && $dirfile != ".." && $dirfile!=basename($_SERVER["SCRIPT_FILENAME"]) && preg_match("/\.(sql|gz|csv)$/i",$dirfile)) |
|
442 | + { if (!$dirhead) |
|
443 | + { echo ("<table width=\"100%\" cellspacing=\"2\" cellpadding=\"2\">\n"); |
|
444 | + echo ("<tr><th>Filename</th><th>Size</th><th>Date&Time</th><th>Type</th><th> </th><th> </th>\n"); |
|
445 | + $dirhead=true; |
|
446 | + } |
|
447 | + echo ("<tr><td>$dirfile</td><td class=\"right\">".filesize($upload_dir.'/'.$dirfile)."</td><td>".date ("Y-m-d H:i:s", filemtime($upload_dir.'/'.$dirfile))."</td>"); |
|
448 | + |
|
449 | + if (preg_match("/\.sql$/i",$dirfile)) |
|
450 | + echo ("<td>SQL</td>"); |
|
451 | + elseif (preg_match("/\.gz$/i",$dirfile)) |
|
452 | + echo ("<td>GZip</td>"); |
|
453 | + elseif (preg_match("/\.csv$/i",$dirfile)) |
|
454 | + echo ("<td>CSV</td>"); |
|
455 | + else |
|
456 | + echo ("<td>Misc</td>"); |
|
457 | + |
|
458 | + if ((preg_match("/\.gz$/i",$dirfile) && function_exists("gzopen")) || preg_match("/\.sql$/i",$dirfile) || preg_match("/\.csv$/i",$dirfile)) |
|
459 | + echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&fn=".urlencode($dirfile)."&foffset=0&totalqueries=0&delimiter=".urlencode($delimiter)."\">Start Import</a> into $db_name at $db_server</td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n"); |
|
460 | 460 | // TODO: echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&fn=".urlencode($dirfile)."&foffset=0&totalqueries=0&delimiter=".urlencode($delimiter)."\">Start Import</a></td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n"); |
461 | - else |
|
462 | - echo ("<td> </td>\n <td> </td></tr>\n"); |
|
463 | - } |
|
464 | - } |
|
465 | - } |
|
461 | + else |
|
462 | + echo ("<td> </td>\n <td> </td></tr>\n"); |
|
463 | + } |
|
464 | + } |
|
465 | + } |
|
466 | 466 | |
467 | - if ($dirhead) |
|
468 | - echo ("</table>\n"); |
|
469 | - else |
|
470 | - echo ("<p>No uploaded SQL, GZ or CSV files found in the working directory</p>\n"); |
|
467 | + if ($dirhead) |
|
468 | + echo ("</table>\n"); |
|
469 | + else |
|
470 | + echo ("<p>No uploaded SQL, GZ or CSV files found in the working directory</p>\n"); |
|
471 | 471 | } |
472 | 472 | else |
473 | 473 | { echo ("<p class=\"error\">Error listing directory $upload_dir</p>\n"); |
474 | - $error=true; |
|
474 | + $error=true; |
|
475 | 475 | } |
476 | 476 | } |
477 | 477 | |
@@ -493,14 +493,14 @@ discard block |
||
493 | 493 | do { $tempfilename=$upload_dir.'/'.time().".tmp"; } while (file_exists($tempfilename)); |
494 | 494 | if (!($tempfile=@fopen($tempfilename,"w"))) |
495 | 495 | { echo ("<p>Upload form disabled. Permissions for the working directory <i>$upload_dir</i> <b>must be set writable for the webserver</b> in order "); |
496 | - echo ("to upload files here. Alternatively you can upload your dump files via FTP.</p>\n"); |
|
496 | + echo ("to upload files here. Alternatively you can upload your dump files via FTP.</p>\n"); |
|
497 | 497 | } |
498 | 498 | else |
499 | 499 | { fclose($tempfile); |
500 | - unlink ($tempfilename); |
|
500 | + unlink ($tempfilename); |
|
501 | 501 | |
502 | - echo ("<p>You can now upload your dump file up to $upload_max_filesize bytes (".round ($upload_max_filesize/1024/1024)." Mbytes) "); |
|
503 | - echo ("directly from your browser to the server. Alternatively you can upload your dump files of any size via FTP.</p>\n"); |
|
502 | + echo ("<p>You can now upload your dump file up to $upload_max_filesize bytes (".round ($upload_max_filesize/1024/1024)." Mbytes) "); |
|
503 | + echo ("directly from your browser to the server. Alternatively you can upload your dump files of any size via FTP.</p>\n"); |
|
504 | 504 | ?> |
505 | 505 | <form method="POST" action="<?php echo ($_SERVER["PHP_SELF"]); ?>" enctype="multipart/form-data"> |
506 | 506 | <input type="hidden" name="MAX_FILE_SIZE" value="$upload_max_filesize"> |
@@ -518,11 +518,11 @@ discard block |
||
518 | 518 | $result = $mysqli->query("SHOW VARIABLES LIKE 'character_set_connection';"); |
519 | 519 | if ($result) |
520 | 520 | { $row = $result->fetch_assoc(); |
521 | - if ($row) |
|
522 | - { $charset = $row['Value']; |
|
523 | - echo ("<p>Note: The current mySQL connection charset is <i>$charset</i>. Your dump file must be encoded in <i>$charset</i> in order to avoid problems with non-latin characters. You can change the connection charset using the \$db_connection_charset variable in bigdump.php</p>\n"); |
|
524 | - } |
|
525 | - $result->free(); |
|
521 | + if ($row) |
|
522 | + { $charset = $row['Value']; |
|
523 | + echo ("<p>Note: The current mySQL connection charset is <i>$charset</i>. Your dump file must be encoded in <i>$charset</i> in order to avoid problems with non-latin characters. You can change the connection charset using the \$db_connection_charset variable in bigdump.php</p>\n"); |
|
524 | + } |
|
525 | + $result->free(); |
|
526 | 526 | } |
527 | 527 | } |
528 | 528 | |
@@ -534,43 +534,43 @@ discard block |
||
534 | 534 | // Set current filename ($filename overrides $_REQUEST["fn"] if set) |
535 | 535 | |
536 | 536 | if ($filename!="") |
537 | - $curfilename=$filename; |
|
537 | + $curfilename=$filename; |
|
538 | 538 | else if (isset($_REQUEST["fn"])) |
539 | - $curfilename=urldecode($_REQUEST["fn"]); |
|
539 | + $curfilename=urldecode($_REQUEST["fn"]); |
|
540 | 540 | else |
541 | - $curfilename=""; |
|
541 | + $curfilename=""; |
|
542 | 542 | |
543 | 543 | // Recognize GZip filename |
544 | 544 | |
545 | 545 | if (preg_match("/\.gz$/i",$curfilename)) |
546 | - $gzipmode=true; |
|
546 | + $gzipmode=true; |
|
547 | 547 | else |
548 | - $gzipmode=false; |
|
548 | + $gzipmode=false; |
|
549 | 549 | |
550 | 550 | if ((!$gzipmode && !$file=@fopen($upload_dir.'/'.$curfilename,"r")) || ($gzipmode && !$file=@gzopen($upload_dir.'/'.$curfilename,"r"))) |
551 | 551 | { echo ("<p class=\"error\">Can't open ".$curfilename." for import</p>\n"); |
552 | - echo ("<p>Please, check that your dump file name contains only alphanumerical characters, and rename it accordingly, for example: $curfilename.". |
|
553 | - "<br>Or, specify \$filename in bigdump.php with the full filename. ". |
|
554 | - "<br>Or, you have to upload the $curfilename to the server first.</p>\n"); |
|
555 | - $error=true; |
|
552 | + echo ("<p>Please, check that your dump file name contains only alphanumerical characters, and rename it accordingly, for example: $curfilename.". |
|
553 | + "<br>Or, specify \$filename in bigdump.php with the full filename. ". |
|
554 | + "<br>Or, you have to upload the $curfilename to the server first.</p>\n"); |
|
555 | + $error=true; |
|
556 | 556 | } |
557 | 557 | |
558 | 558 | // Get the file size (can't do it fast on gzipped files, no idea how) |
559 | 559 | |
560 | 560 | else if ((!$gzipmode && @fseek($file, 0, SEEK_END)==0) || ($gzipmode && @gzseek($file, 0)==0)) |
561 | 561 | { if (!$gzipmode) $filesize = ftell($file); |
562 | - else $filesize = gztell($file); // Always zero, ignore |
|
562 | + else $filesize = gztell($file); // Always zero, ignore |
|
563 | 563 | } |
564 | 564 | else |
565 | 565 | { echo ("<p class=\"error\">I can't seek into $curfilename</p>\n"); |
566 | - $error=true; |
|
566 | + $error=true; |
|
567 | 567 | } |
568 | 568 | |
569 | 569 | // Stop if csv file is used, but $csv_insert_table is not set |
570 | 570 | |
571 | 571 | if (!$error && ($csv_insert_table == "") && (preg_match("/(\.csv)$/i",$curfilename))) |
572 | 572 | { echo ("<p class=\"error\">You have to specify \$csv_insert_table when using a CSV file. </p>\n"); |
573 | - $error=true; |
|
573 | + $error=true; |
|
574 | 574 | } |
575 | 575 | } |
576 | 576 | |
@@ -588,171 +588,171 @@ discard block |
||
588 | 588 | |
589 | 589 | if (!is_numeric($_REQUEST["start"]) || !is_numeric($_REQUEST["foffset"])) |
590 | 590 | { echo ("<p class=\"error\">UNEXPECTED: Non-numeric values for start and foffset</p>\n"); |
591 | - $error=true; |
|
591 | + $error=true; |
|
592 | 592 | } |
593 | 593 | else |
594 | 594 | { $_REQUEST["start"] = floor($_REQUEST["start"]); |
595 | - $_REQUEST["foffset"] = floor($_REQUEST["foffset"]); |
|
595 | + $_REQUEST["foffset"] = floor($_REQUEST["foffset"]); |
|
596 | 596 | } |
597 | 597 | |
598 | 598 | // Set the current delimiter if defined |
599 | 599 | |
600 | 600 | if (isset($_REQUEST["delimiter"])) |
601 | - $delimiter = $_REQUEST["delimiter"]; |
|
601 | + $delimiter = $_REQUEST["delimiter"]; |
|
602 | 602 | |
603 | 603 | // Empty CSV table if requested |
604 | 604 | |
605 | 605 | if (!$error && $_REQUEST["start"]==1 && $csv_insert_table != "" && $csv_preempty_table) |
606 | 606 | { |
607 | - $query = "DELETE FROM `$csv_insert_table`"; |
|
608 | - if (!TESTMODE && !$mysqli->query(trim($query))) |
|
609 | - { echo ("<p class=\"error\">Error when deleting entries from $csv_insert_table.</p>\n"); |
|
610 | - echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n"); |
|
611 | - echo ("<p>MySQL: ".$mysqli->error."</p>\n"); |
|
612 | - $error=true; |
|
613 | - } |
|
607 | + $query = "DELETE FROM `$csv_insert_table`"; |
|
608 | + if (!TESTMODE && !$mysqli->query(trim($query))) |
|
609 | + { echo ("<p class=\"error\">Error when deleting entries from $csv_insert_table.</p>\n"); |
|
610 | + echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n"); |
|
611 | + echo ("<p>MySQL: ".$mysqli->error."</p>\n"); |
|
612 | + $error=true; |
|
613 | + } |
|
614 | 614 | } |
615 | 615 | |
616 | 616 | // Print start message |
617 | 617 | |
618 | 618 | if (!$error) |
619 | 619 | { skin_open(); |
620 | - if (TESTMODE) |
|
621 | - echo ("<p class=\"centr\">TEST MODE ENABLED</p>\n"); |
|
622 | - echo ("<p class=\"centr\">Processing file: <b>".$curfilename."</b></p>\n"); |
|
623 | - echo ("<p class=\"smlcentr\">Starting from line: ".$_REQUEST["start"]."</p>\n"); |
|
624 | - skin_close(); |
|
620 | + if (TESTMODE) |
|
621 | + echo ("<p class=\"centr\">TEST MODE ENABLED</p>\n"); |
|
622 | + echo ("<p class=\"centr\">Processing file: <b>".$curfilename."</b></p>\n"); |
|
623 | + echo ("<p class=\"smlcentr\">Starting from line: ".$_REQUEST["start"]."</p>\n"); |
|
624 | + skin_close(); |
|
625 | 625 | } |
626 | 626 | |
627 | 627 | // Check $_REQUEST["foffset"] upon $filesize (can't do it on gzipped files) |
628 | 628 | |
629 | 629 | if (!$error && !$gzipmode && $_REQUEST["foffset"]>$filesize) |
630 | 630 | { echo ("<p class=\"error\">UNEXPECTED: Can't set file pointer behind the end of file</p>\n"); |
631 | - $error=true; |
|
631 | + $error=true; |
|
632 | 632 | } |
633 | 633 | |
634 | 634 | // Set file pointer to $_REQUEST["foffset"] |
635 | 635 | |
636 | 636 | if (!$error && ((!$gzipmode && fseek($file, $_REQUEST["foffset"])!=0) || ($gzipmode && gzseek($file, $_REQUEST["foffset"])!=0))) |
637 | 637 | { echo ("<p class=\"error\">UNEXPECTED: Can't set file pointer to offset: ".$_REQUEST["foffset"]."</p>\n"); |
638 | - $error=true; |
|
638 | + $error=true; |
|
639 | 639 | } |
640 | 640 | |
641 | 641 | // Start processing queries from $file |
642 | 642 | |
643 | 643 | if (!$error) |
644 | 644 | { $query=""; |
645 | - $queries=0; |
|
646 | - $totalqueries=$_REQUEST["totalqueries"]; |
|
647 | - $linenumber=$_REQUEST["start"]; |
|
648 | - $querylines=0; |
|
649 | - $inparents=false; |
|
645 | + $queries=0; |
|
646 | + $totalqueries=$_REQUEST["totalqueries"]; |
|
647 | + $linenumber=$_REQUEST["start"]; |
|
648 | + $querylines=0; |
|
649 | + $inparents=false; |
|
650 | 650 | |
651 | 651 | // Stay processing as long as the $linespersession is not reached or the query is still incomplete |
652 | 652 | |
653 | - while ($linenumber<$_REQUEST["start"]+$linespersession || $query!="") |
|
654 | - { |
|
653 | + while ($linenumber<$_REQUEST["start"]+$linespersession || $query!="") |
|
654 | + { |
|
655 | 655 | |
656 | 656 | // Read the whole next line |
657 | 657 | |
658 | - $dumpline = ""; |
|
659 | - while (!feof($file) && substr ($dumpline, -1) != "\n" && substr ($dumpline, -1) != "\r") |
|
660 | - { if (!$gzipmode) |
|
661 | - $dumpline .= fgets($file, DATA_CHUNK_LENGTH); |
|
662 | - else |
|
663 | - $dumpline .= gzgets($file, DATA_CHUNK_LENGTH); |
|
664 | - } |
|
665 | - if ($dumpline==="") break; |
|
658 | + $dumpline = ""; |
|
659 | + while (!feof($file) && substr ($dumpline, -1) != "\n" && substr ($dumpline, -1) != "\r") |
|
660 | + { if (!$gzipmode) |
|
661 | + $dumpline .= fgets($file, DATA_CHUNK_LENGTH); |
|
662 | + else |
|
663 | + $dumpline .= gzgets($file, DATA_CHUNK_LENGTH); |
|
664 | + } |
|
665 | + if ($dumpline==="") break; |
|
666 | 666 | |
667 | 667 | // Remove UTF8 Byte Order Mark at the file beginning if any |
668 | 668 | |
669 | - if ($_REQUEST["foffset"]==0) |
|
670 | - $dumpline=preg_replace('|^\xEF\xBB\xBF|','',$dumpline); |
|
669 | + if ($_REQUEST["foffset"]==0) |
|
670 | + $dumpline=preg_replace('|^\xEF\xBB\xBF|','',$dumpline); |
|
671 | 671 | |
672 | 672 | // Create an SQL query from CSV line |
673 | 673 | |
674 | - if (($csv_insert_table != "") && (preg_match("/(\.csv)$/i",$curfilename))) |
|
675 | - { |
|
676 | - if ($csv_add_slashes) |
|
677 | - $dumpline = addslashes($dumpline); |
|
678 | - $dumpline = explode($csv_delimiter,$dumpline); |
|
679 | - if ($csv_add_quotes) |
|
680 | - $dumpline = "'".implode("','",$dumpline)."'"; |
|
681 | - else |
|
682 | - $dumpline = implode(",",$dumpline); |
|
683 | - $dumpline = 'INSERT INTO '.$csv_insert_table.' VALUES ('.$dumpline.');'; |
|
684 | - } |
|
674 | + if (($csv_insert_table != "") && (preg_match("/(\.csv)$/i",$curfilename))) |
|
675 | + { |
|
676 | + if ($csv_add_slashes) |
|
677 | + $dumpline = addslashes($dumpline); |
|
678 | + $dumpline = explode($csv_delimiter,$dumpline); |
|
679 | + if ($csv_add_quotes) |
|
680 | + $dumpline = "'".implode("','",$dumpline)."'"; |
|
681 | + else |
|
682 | + $dumpline = implode(",",$dumpline); |
|
683 | + $dumpline = 'INSERT INTO '.$csv_insert_table.' VALUES ('.$dumpline.');'; |
|
684 | + } |
|
685 | 685 | |
686 | 686 | // Handle DOS and Mac encoded linebreaks (I don't know if it really works on Win32 or Mac Servers) |
687 | 687 | |
688 | - $dumpline=str_replace("\r\n", "\n", $dumpline); |
|
689 | - $dumpline=str_replace("\r", "\n", $dumpline); |
|
688 | + $dumpline=str_replace("\r\n", "\n", $dumpline); |
|
689 | + $dumpline=str_replace("\r", "\n", $dumpline); |
|
690 | 690 | |
691 | 691 | // DIAGNOSTIC |
692 | 692 | // echo ("<p>Line $linenumber: $dumpline</p>\n"); |
693 | 693 | |
694 | 694 | // Recognize delimiter statement |
695 | 695 | |
696 | - if (!$inparents && strpos ($dumpline, "DELIMITER ") === 0) |
|
697 | - $delimiter = str_replace ("DELIMITER ","",trim($dumpline)); |
|
696 | + if (!$inparents && strpos ($dumpline, "DELIMITER ") === 0) |
|
697 | + $delimiter = str_replace ("DELIMITER ","",trim($dumpline)); |
|
698 | 698 | |
699 | 699 | // Skip comments and blank lines only if NOT in parents |
700 | 700 | |
701 | - if (!$inparents) |
|
702 | - { $skipline=false; |
|
703 | - reset($comment); |
|
704 | - foreach ($comment as $comment_value) |
|
705 | - { |
|
701 | + if (!$inparents) |
|
702 | + { $skipline=false; |
|
703 | + reset($comment); |
|
704 | + foreach ($comment as $comment_value) |
|
705 | + { |
|
706 | 706 | |
707 | 707 | // DIAGNOSTIC |
708 | 708 | // echo ($comment_value); |
709 | - if (trim($dumpline)=="" || strpos (trim($dumpline), $comment_value) === 0) |
|
710 | - { $skipline=true; |
|
711 | - break; |
|
712 | - } |
|
713 | - } |
|
714 | - if ($skipline) |
|
715 | - { $linenumber++; |
|
709 | + if (trim($dumpline)=="" || strpos (trim($dumpline), $comment_value) === 0) |
|
710 | + { $skipline=true; |
|
711 | + break; |
|
712 | + } |
|
713 | + } |
|
714 | + if ($skipline) |
|
715 | + { $linenumber++; |
|
716 | 716 | |
717 | 717 | // DIAGNOSTIC |
718 | 718 | // echo ("<p>Comment line skipped</p>\n"); |
719 | 719 | |
720 | - continue; |
|
721 | - } |
|
722 | - } |
|
720 | + continue; |
|
721 | + } |
|
722 | + } |
|
723 | 723 | |
724 | 724 | // Remove double back-slashes from the dumpline prior to count the quotes ('\\' can only be within strings) |
725 | 725 | |
726 | - $dumpline_deslashed = str_replace ("\\\\","",$dumpline); |
|
726 | + $dumpline_deslashed = str_replace ("\\\\","",$dumpline); |
|
727 | 727 | |
728 | 728 | // Count ' and \' (or " and \") in the dumpline to avoid query break within a text field ending by $delimiter |
729 | 729 | |
730 | - $parents=substr_count ($dumpline_deslashed, $string_quotes)-substr_count ($dumpline_deslashed, "\\$string_quotes"); |
|
731 | - if ($parents % 2 != 0) |
|
732 | - $inparents=!$inparents; |
|
730 | + $parents=substr_count ($dumpline_deslashed, $string_quotes)-substr_count ($dumpline_deslashed, "\\$string_quotes"); |
|
731 | + if ($parents % 2 != 0) |
|
732 | + $inparents=!$inparents; |
|
733 | 733 | |
734 | 734 | // Add the line to query |
735 | 735 | |
736 | - $query .= $dumpline; |
|
736 | + $query .= $dumpline; |
|
737 | 737 | |
738 | 738 | // Don't count the line if in parents (text fields may include unlimited linebreaks) |
739 | 739 | |
740 | - if (!$inparents) |
|
741 | - $querylines++; |
|
740 | + if (!$inparents) |
|
741 | + $querylines++; |
|
742 | 742 | |
743 | 743 | // Stop if query contains more lines as defined by $max_query_lines |
744 | 744 | |
745 | - if ($querylines>$max_query_lines) |
|
746 | - { |
|
747 | - echo ("<p class=\"error\">Stopped at the line $linenumber. </p>"); |
|
748 | - echo ("<p>At this place the current query includes more than ".$max_query_lines." dump lines. That can happen if your dump file was "); |
|
749 | - echo ("created by some tool which doesn't place a semicolon followed by a linebreak at the end of each query, or if your dump contains "); |
|
750 | - echo ("extended inserts or very long procedure definitions. Please read the <a href=\"http://www.ozerov.de/bigdump/usage/\">BigDump usage notes</a> "); |
|
751 | - echo ("for more infos. Ask for our support services "); |
|
752 | - echo ("in order to handle dump files containing extended inserts.</p>\n"); |
|
753 | - $error=true; |
|
754 | - break; |
|
755 | - } |
|
745 | + if ($querylines>$max_query_lines) |
|
746 | + { |
|
747 | + echo ("<p class=\"error\">Stopped at the line $linenumber. </p>"); |
|
748 | + echo ("<p>At this place the current query includes more than ".$max_query_lines." dump lines. That can happen if your dump file was "); |
|
749 | + echo ("created by some tool which doesn't place a semicolon followed by a linebreak at the end of each query, or if your dump contains "); |
|
750 | + echo ("extended inserts or very long procedure definitions. Please read the <a href=\"http://www.ozerov.de/bigdump/usage/\">BigDump usage notes</a> "); |
|
751 | + echo ("for more infos. Ask for our support services "); |
|
752 | + echo ("in order to handle dump files containing extended inserts.</p>\n"); |
|
753 | + $error=true; |
|
754 | + break; |
|
755 | + } |
|
756 | 756 | |
757 | 757 | // Execute query if end of query detected ($delimiter as last character) AND NOT in parents |
758 | 758 | |
@@ -761,43 +761,43 @@ discard block |
||
761 | 761 | // echo ("<p>In Parents: ".($inparents?"true":"false")."</p>\n"); |
762 | 762 | // echo ("<p>Line: $dumpline</p>\n"); |
763 | 763 | |
764 | - if ((preg_match('/'.preg_quote($delimiter,'/').'$/',trim($dumpline)) || $delimiter=='') && !$inparents) |
|
765 | - { |
|
764 | + if ((preg_match('/'.preg_quote($delimiter,'/').'$/',trim($dumpline)) || $delimiter=='') && !$inparents) |
|
765 | + { |
|
766 | 766 | |
767 | 767 | // Cut off delimiter of the end of the query |
768 | 768 | |
769 | - $query = substr(trim($query),0,-1*strlen($delimiter)); |
|
769 | + $query = substr(trim($query),0,-1*strlen($delimiter)); |
|
770 | 770 | |
771 | 771 | // DIAGNOSTIC |
772 | 772 | // echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n"); |
773 | 773 | |
774 | - if (!TESTMODE && !$mysqli->query($query)) |
|
775 | - { echo ("<p class=\"error\">Error at the line $linenumber: ". trim($dumpline)."</p>\n"); |
|
776 | - echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n"); |
|
777 | - echo ("<p>MySQL: ".$mysqli->error."</p>\n"); |
|
778 | - $error=true; |
|
779 | - break; |
|
780 | - } |
|
781 | - $totalqueries++; |
|
782 | - $queries++; |
|
783 | - $query=""; |
|
784 | - $querylines=0; |
|
785 | - } |
|
786 | - $linenumber++; |
|
787 | - } |
|
774 | + if (!TESTMODE && !$mysqli->query($query)) |
|
775 | + { echo ("<p class=\"error\">Error at the line $linenumber: ". trim($dumpline)."</p>\n"); |
|
776 | + echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n"); |
|
777 | + echo ("<p>MySQL: ".$mysqli->error."</p>\n"); |
|
778 | + $error=true; |
|
779 | + break; |
|
780 | + } |
|
781 | + $totalqueries++; |
|
782 | + $queries++; |
|
783 | + $query=""; |
|
784 | + $querylines=0; |
|
785 | + } |
|
786 | + $linenumber++; |
|
787 | + } |
|
788 | 788 | } |
789 | 789 | |
790 | 790 | // Get the current file position |
791 | 791 | |
792 | 792 | if (!$error) |
793 | 793 | { if (!$gzipmode) |
794 | - $foffset = ftell($file); |
|
795 | - else |
|
796 | - $foffset = gztell($file); |
|
797 | - if (!$foffset) |
|
798 | - { echo ("<p class=\"error\">UNEXPECTED: Can't read the file pointer offset</p>\n"); |
|
799 | - $error=true; |
|
800 | - } |
|
794 | + $foffset = ftell($file); |
|
795 | + else |
|
796 | + $foffset = gztell($file); |
|
797 | + if (!$foffset) |
|
798 | + { echo ("<p class=\"error\">UNEXPECTED: Can't read the file pointer offset</p>\n"); |
|
799 | + $error=true; |
|
800 | + } |
|
801 | 801 | } |
802 | 802 | |
803 | 803 | // Print statistics |
@@ -808,63 +808,63 @@ discard block |
||
808 | 808 | |
809 | 809 | if (!$error) |
810 | 810 | { |
811 | - $lines_this = $linenumber-$_REQUEST["start"]; |
|
812 | - $lines_done = $linenumber-1; |
|
813 | - $lines_togo = ' ? '; |
|
814 | - $lines_tota = ' ? '; |
|
811 | + $lines_this = $linenumber-$_REQUEST["start"]; |
|
812 | + $lines_done = $linenumber-1; |
|
813 | + $lines_togo = ' ? '; |
|
814 | + $lines_tota = ' ? '; |
|
815 | 815 | |
816 | - $queries_this = $queries; |
|
817 | - $queries_done = $totalqueries; |
|
818 | - $queries_togo = ' ? '; |
|
819 | - $queries_tota = ' ? '; |
|
820 | - |
|
821 | - $bytes_this = $foffset-$_REQUEST["foffset"]; |
|
822 | - $bytes_done = $foffset; |
|
823 | - $kbytes_this = round($bytes_this/1024,2); |
|
824 | - $kbytes_done = round($bytes_done/1024,2); |
|
825 | - $mbytes_this = round($kbytes_this/1024,2); |
|
826 | - $mbytes_done = round($kbytes_done/1024,2); |
|
816 | + $queries_this = $queries; |
|
817 | + $queries_done = $totalqueries; |
|
818 | + $queries_togo = ' ? '; |
|
819 | + $queries_tota = ' ? '; |
|
820 | + |
|
821 | + $bytes_this = $foffset-$_REQUEST["foffset"]; |
|
822 | + $bytes_done = $foffset; |
|
823 | + $kbytes_this = round($bytes_this/1024,2); |
|
824 | + $kbytes_done = round($bytes_done/1024,2); |
|
825 | + $mbytes_this = round($kbytes_this/1024,2); |
|
826 | + $mbytes_done = round($kbytes_done/1024,2); |
|
827 | 827 | |
828 | - if (!$gzipmode) |
|
829 | - { |
|
830 | - $bytes_togo = $filesize-$foffset; |
|
831 | - $bytes_tota = $filesize; |
|
832 | - $kbytes_togo = round($bytes_togo/1024,2); |
|
833 | - $kbytes_tota = round($bytes_tota/1024,2); |
|
834 | - $mbytes_togo = round($kbytes_togo/1024,2); |
|
835 | - $mbytes_tota = round($kbytes_tota/1024,2); |
|
828 | + if (!$gzipmode) |
|
829 | + { |
|
830 | + $bytes_togo = $filesize-$foffset; |
|
831 | + $bytes_tota = $filesize; |
|
832 | + $kbytes_togo = round($bytes_togo/1024,2); |
|
833 | + $kbytes_tota = round($bytes_tota/1024,2); |
|
834 | + $mbytes_togo = round($kbytes_togo/1024,2); |
|
835 | + $mbytes_tota = round($kbytes_tota/1024,2); |
|
836 | 836 | |
837 | - $pct_this = ceil($bytes_this/$filesize*100); |
|
838 | - $pct_done = ceil($foffset/$filesize*100); |
|
839 | - $pct_togo = 100 - $pct_done; |
|
840 | - $pct_tota = 100; |
|
841 | - |
|
842 | - if ($bytes_togo==0) |
|
843 | - { $lines_togo = '0'; |
|
844 | - $lines_tota = $linenumber-1; |
|
845 | - $queries_togo = '0'; |
|
846 | - $queries_tota = $totalqueries; |
|
847 | - } |
|
848 | - |
|
849 | - $pct_bar = "<div style=\"height:15px;width:$pct_done%;background-color:#000080;margin:0px;\"></div>"; |
|
850 | - } |
|
851 | - else |
|
852 | - { |
|
853 | - $bytes_togo = ' ? '; |
|
854 | - $bytes_tota = ' ? '; |
|
855 | - $kbytes_togo = ' ? '; |
|
856 | - $kbytes_tota = ' ? '; |
|
857 | - $mbytes_togo = ' ? '; |
|
858 | - $mbytes_tota = ' ? '; |
|
837 | + $pct_this = ceil($bytes_this/$filesize*100); |
|
838 | + $pct_done = ceil($foffset/$filesize*100); |
|
839 | + $pct_togo = 100 - $pct_done; |
|
840 | + $pct_tota = 100; |
|
841 | + |
|
842 | + if ($bytes_togo==0) |
|
843 | + { $lines_togo = '0'; |
|
844 | + $lines_tota = $linenumber-1; |
|
845 | + $queries_togo = '0'; |
|
846 | + $queries_tota = $totalqueries; |
|
847 | + } |
|
848 | + |
|
849 | + $pct_bar = "<div style=\"height:15px;width:$pct_done%;background-color:#000080;margin:0px;\"></div>"; |
|
850 | + } |
|
851 | + else |
|
852 | + { |
|
853 | + $bytes_togo = ' ? '; |
|
854 | + $bytes_tota = ' ? '; |
|
855 | + $kbytes_togo = ' ? '; |
|
856 | + $kbytes_tota = ' ? '; |
|
857 | + $mbytes_togo = ' ? '; |
|
858 | + $mbytes_tota = ' ? '; |
|
859 | 859 | |
860 | - $pct_this = ' ? '; |
|
861 | - $pct_done = ' ? '; |
|
862 | - $pct_togo = ' ? '; |
|
863 | - $pct_tota = 100; |
|
864 | - $pct_bar = str_replace(' ',' ','<tt>[ Not available for gzipped files ]</tt>'); |
|
865 | - } |
|
860 | + $pct_this = ' ? '; |
|
861 | + $pct_done = ' ? '; |
|
862 | + $pct_togo = ' ? '; |
|
863 | + $pct_tota = 100; |
|
864 | + $pct_bar = str_replace(' ',' ','<tt>[ Not available for gzipped files ]</tt>'); |
|
865 | + } |
|
866 | 866 | |
867 | - echo (" |
|
867 | + echo (" |
|
868 | 868 | <center> |
869 | 869 | <table width=\"520\" border=\"0\" cellpadding=\"3\" cellspacing=\"1\"> |
870 | 870 | <tr><th class=\"bg4\"> </th><th class=\"bg4\">Session</th><th class=\"bg4\">Done</th><th class=\"bg4\">To go</th><th class=\"bg4\">Total</th></tr> |
@@ -881,11 +881,11 @@ discard block |
||
881 | 881 | |
882 | 882 | // Finish message and restart the script |
883 | 883 | |
884 | - if ($linenumber<$_REQUEST["start"]+$linespersession) |
|
885 | - { echo ("<p class=\"successcentr\">Congratulations: End of file reached, assuming OK</p>\n"); |
|
886 | - echo ("<p class=\"successcentr\">IMPORTANT: REMOVE YOUR DUMP FILE and BIGDUMP SCRIPT FROM SERVER NOW!</p>\n"); |
|
887 | - echo ("<p class=\"centr\">Thank you for using this tool! Please rate <a href=\"http://www.hotscripts.com/listing/bigdump/?RID=403\" target=\"_blank\">Bigdump at Hotscripts.com</a></p>\n"); |
|
888 | - echo ("<p class=\"centr\">You can send me some bucks or euros as appreciation via PayPal. Thank you!</p>\n"); |
|
884 | + if ($linenumber<$_REQUEST["start"]+$linespersession) |
|
885 | + { echo ("<p class=\"successcentr\">Congratulations: End of file reached, assuming OK</p>\n"); |
|
886 | + echo ("<p class=\"successcentr\">IMPORTANT: REMOVE YOUR DUMP FILE and BIGDUMP SCRIPT FROM SERVER NOW!</p>\n"); |
|
887 | + echo ("<p class=\"centr\">Thank you for using this tool! Please rate <a href=\"http://www.hotscripts.com/listing/bigdump/?RID=403\" target=\"_blank\">Bigdump at Hotscripts.com</a></p>\n"); |
|
888 | + echo ("<p class=\"centr\">You can send me some bucks or euros as appreciation via PayPal. Thank you!</p>\n"); |
|
889 | 889 | ?> |
890 | 890 | |
891 | 891 | <!-- Start Paypal donation code --> |
@@ -904,24 +904,24 @@ discard block |
||
904 | 904 | <!-- End Paypal donation code --> |
905 | 905 | |
906 | 906 | <?php |
907 | - do_action('script_finished'); |
|
908 | - $error=true; // This is a semi-error telling the script is finished |
|
909 | - } |
|
910 | - else |
|
911 | - { if ($delaypersession!=0) |
|
912 | - echo ("<p class=\"centr\">Now I'm <b>waiting $delaypersession milliseconds</b> before starting next session...</p>\n"); |
|
913 | - if (!$ajax) |
|
914 | - echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&fn=".urlencode($curfilename)."&foffset=$foffset&totalqueries=$totalqueries&delimiter=".urlencode($delimiter)."\";',500+$delaypersession);</script>\n"); |
|
915 | - |
|
916 | - echo ("<noscript>\n"); |
|
917 | - echo ("<p class=\"centr\"><a href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&fn=".urlencode($curfilename)."&foffset=$foffset&totalqueries=$totalqueries&delimiter=".urlencode($delimiter)."\">Continue from the line $linenumber</a> (Enable JavaScript to do it automatically)</p>\n"); |
|
918 | - echo ("</noscript>\n"); |
|
907 | + do_action('script_finished'); |
|
908 | + $error=true; // This is a semi-error telling the script is finished |
|
909 | + } |
|
910 | + else |
|
911 | + { if ($delaypersession!=0) |
|
912 | + echo ("<p class=\"centr\">Now I'm <b>waiting $delaypersession milliseconds</b> before starting next session...</p>\n"); |
|
913 | + if (!$ajax) |
|
914 | + echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&fn=".urlencode($curfilename)."&foffset=$foffset&totalqueries=$totalqueries&delimiter=".urlencode($delimiter)."\";',500+$delaypersession);</script>\n"); |
|
915 | + |
|
916 | + echo ("<noscript>\n"); |
|
917 | + echo ("<p class=\"centr\"><a href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&fn=".urlencode($curfilename)."&foffset=$foffset&totalqueries=$totalqueries&delimiter=".urlencode($delimiter)."\">Continue from the line $linenumber</a> (Enable JavaScript to do it automatically)</p>\n"); |
|
918 | + echo ("</noscript>\n"); |
|
919 | 919 | |
920 | - echo ("<p class=\"centr\">Press <b><a href=\"".$_SERVER["PHP_SELF"]."\">STOP</a></b> to abort the import <b>OR WAIT!</b></p>\n"); |
|
921 | - } |
|
920 | + echo ("<p class=\"centr\">Press <b><a href=\"".$_SERVER["PHP_SELF"]."\">STOP</a></b> to abort the import <b>OR WAIT!</b></p>\n"); |
|
921 | + } |
|
922 | 922 | } |
923 | 923 | else |
924 | - echo ("<p class=\"error\">Stopped on error</p>\n"); |
|
924 | + echo ("<p class=\"error\">Stopped on error</p>\n"); |
|
925 | 925 | |
926 | 926 | skin_close(); |
927 | 927 | |
@@ -967,7 +967,7 @@ discard block |
||
967 | 967 | die; |
968 | 968 | } |
969 | 969 | else |
970 | - create_ajax_script(); |
|
970 | + create_ajax_script(); |
|
971 | 971 | } |
972 | 972 | |
973 | 973 | // Anyway put out the output from above |
@@ -985,8 +985,8 @@ discard block |
||
985 | 985 | |
986 | 986 | if (isset($plugin_actions[$tag])) |
987 | 987 | { reset ($plugin_actions[$tag]); |
988 | - foreach ($plugin_actions[$tag] as $action) |
|
989 | - call_user_func_array($action, array()); |
|
988 | + foreach ($plugin_actions[$tag] as $action) |
|
989 | + call_user_func_array($action, array()); |
|
990 | 990 | } |
991 | 991 | } |
992 | 992 |
@@ -51,28 +51,28 @@ discard block |
||
51 | 51 | |
52 | 52 | // OPTIONAL SETTINGS |
53 | 53 | |
54 | -$filename = ''; // Specify the dump filename to suppress the file selection dialog |
|
55 | -$ajax = true; // AJAX mode: import will be done without refreshing the website |
|
56 | -$linespersession = 3000; // Lines to be executed per one import session |
|
57 | -$delaypersession = 0; // You can specify a sleep time in milliseconds after each session |
|
54 | +$filename = ''; // Specify the dump filename to suppress the file selection dialog |
|
55 | +$ajax = true; // AJAX mode: import will be done without refreshing the website |
|
56 | +$linespersession = 3000; // Lines to be executed per one import session |
|
57 | +$delaypersession = 0; // You can specify a sleep time in milliseconds after each session |
|
58 | 58 | // Works only if JavaScript is activated. Use to reduce server overrun |
59 | 59 | |
60 | 60 | // CSV related settings (only if you use a CSV dump) |
61 | 61 | |
62 | -$csv_insert_table = ''; // Destination table for CSV files |
|
63 | -$csv_preempty_table = false; // true: delete all entries from table specified in $csv_insert_table before processing |
|
64 | -$csv_delimiter = ','; // Field delimiter in CSV file |
|
65 | -$csv_add_quotes = true; // If your CSV data already have quotes around each field set it to false |
|
66 | -$csv_add_slashes = true; // If your CSV data already have slashes in front of ' and " set it to false |
|
62 | +$csv_insert_table = ''; // Destination table for CSV files |
|
63 | +$csv_preempty_table = false; // true: delete all entries from table specified in $csv_insert_table before processing |
|
64 | +$csv_delimiter = ','; // Field delimiter in CSV file |
|
65 | +$csv_add_quotes = true; // If your CSV data already have quotes around each field set it to false |
|
66 | +$csv_add_slashes = true; // If your CSV data already have slashes in front of ' and " set it to false |
|
67 | 67 | |
68 | 68 | // Allowed comment markers: lines starting with these strings will be ignored by BigDump |
69 | 69 | |
70 | -$comment[]='#'; // Standard comment lines are dropped by default |
|
71 | -$comment[]='-- '; |
|
72 | -$comment[]='DELIMITER'; // Ignore DELIMITER switch as it's not a valid SQL statement |
|
70 | +$comment[] = '#'; // Standard comment lines are dropped by default |
|
71 | +$comment[] = '-- '; |
|
72 | +$comment[] = 'DELIMITER'; // Ignore DELIMITER switch as it's not a valid SQL statement |
|
73 | 73 | // $comment[]='---'; // Uncomment this line if using proprietary dump created by outdated mysqldump |
74 | 74 | // $comment[]='CREATE DATABASE'; // Uncomment this line if your dump contains create database queries in order to ignore them |
75 | -$comment[]='/*!'; // Or add your own string to leave out other proprietary things |
|
75 | +$comment[] = '/*!'; // Or add your own string to leave out other proprietary things |
|
76 | 76 | |
77 | 77 | // Pre-queries: SQL queries to be executed at the beginning of each import session |
78 | 78 | |
@@ -86,7 +86,7 @@ discard block |
||
86 | 86 | |
87 | 87 | // String quotes character |
88 | 88 | |
89 | -$string_quotes = '\''; // Change to '"' if your dump file uses double qoutes for strings |
|
89 | +$string_quotes = '\''; // Change to '"' if your dump file uses double qoutes for strings |
|
90 | 90 | |
91 | 91 | // How many lines may be considered to be one query (except text lines) |
92 | 92 | |
@@ -103,11 +103,11 @@ discard block |
||
103 | 103 | if ($ajax) |
104 | 104 | ob_start(); |
105 | 105 | |
106 | -define ('VERSION','0.36b'); |
|
107 | -define ('DATA_CHUNK_LENGTH',16384); // How many chars are read per time |
|
108 | -define ('TESTMODE',false); // Set to true to process the file without actually accessing the database |
|
109 | -define ('BIGDUMP_DIR',dirname(__FILE__)); |
|
110 | -define ('PLUGIN_DIR',BIGDUMP_DIR.'/plugins/'); |
|
106 | +define('VERSION', '0.36b'); |
|
107 | +define('DATA_CHUNK_LENGTH', 16384); // How many chars are read per time |
|
108 | +define('TESTMODE', false); // Set to true to process the file without actually accessing the database |
|
109 | +define('BIGDUMP_DIR', dirname(__FILE__)); |
|
110 | +define('PLUGIN_DIR', BIGDUMP_DIR . '/plugins/'); |
|
111 | 111 | |
112 | 112 | header("Expires: Mon, 1 Dec 2003 01:00:00 GMT"); |
113 | 113 | header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); |
@@ -125,7 +125,7 @@ discard block |
||
125 | 125 | |
126 | 126 | foreach ($_REQUEST as $key => $val) |
127 | 127 | { |
128 | - $val = preg_replace("/[^_A-Za-z0-9-\.&= ;\$]/i",'', $val); |
|
128 | + $val = preg_replace("/[^_A-Za-z0-9-\.&= ;\$]/i", '', $val); |
|
129 | 129 | $_REQUEST[$key] = $val; |
130 | 130 | } |
131 | 131 | |
@@ -301,7 +301,7 @@ discard block |
||
301 | 301 | } |
302 | 302 | |
303 | 303 | skin_open(); |
304 | -echo ('<h1>BigDump: Staggered MySQL Dump Importer v'.VERSION.'</h1>'); |
|
304 | +echo ('<h1>BigDump: Staggered MySQL Dump Importer v' . VERSION . '</h1>'); |
|
305 | 305 | skin_close(); |
306 | 306 | |
307 | 307 | do_action('after_headline'); |
@@ -312,24 +312,24 @@ discard block |
||
312 | 312 | // Check PHP version |
313 | 313 | |
314 | 314 | if (!$error && !function_exists('version_compare')) |
315 | -{ echo ("<p class=\"error\">PHP version 4.1.0 is required for BigDump to proceed. You have PHP ".phpversion()." installed. Sorry!</p>\n"); |
|
316 | - $error=true; |
|
315 | +{ echo ("<p class=\"error\">PHP version 4.1.0 is required for BigDump to proceed. You have PHP " . phpversion() . " installed. Sorry!</p>\n"); |
|
316 | + $error = true; |
|
317 | 317 | } |
318 | 318 | |
319 | 319 | // Check if mysql extension is available |
320 | 320 | |
321 | 321 | if (!$error && !function_exists('mysqli_connect')) |
322 | 322 | { echo ("<p class=\"error\">There is no mySQLi extension found in your PHP installation. You can use an older Bigdump version if your PHP supports mySQL extension.</p>\n"); |
323 | - $error=true; |
|
323 | + $error = true; |
|
324 | 324 | } |
325 | 325 | |
326 | 326 | // Calculate PHP max upload size (handle settings like 10M or 100K) |
327 | 327 | |
328 | 328 | if (!$error) |
329 | -{ $upload_max_filesize=ini_get("upload_max_filesize"); |
|
330 | - if (preg_match("/([0-9]+)K/i",$upload_max_filesize,$tempregs)) $upload_max_filesize=$tempregs[1]*1024; |
|
331 | - if (preg_match("/([0-9]+)M/i",$upload_max_filesize,$tempregs)) $upload_max_filesize=$tempregs[1]*1024*1024; |
|
332 | - if (preg_match("/([0-9]+)G/i",$upload_max_filesize,$tempregs)) $upload_max_filesize=$tempregs[1]*1024*1024*1024; |
|
329 | +{ $upload_max_filesize = ini_get("upload_max_filesize"); |
|
330 | + if (preg_match("/([0-9]+)K/i", $upload_max_filesize, $tempregs)) $upload_max_filesize = $tempregs[1] * 1024; |
|
331 | + if (preg_match("/([0-9]+)M/i", $upload_max_filesize, $tempregs)) $upload_max_filesize = $tempregs[1] * 1024 * 1024; |
|
332 | + if (preg_match("/([0-9]+)G/i", $upload_max_filesize, $tempregs)) $upload_max_filesize = $tempregs[1] * 1024 * 1024 * 1024; |
|
333 | 333 | } |
334 | 334 | |
335 | 335 | // Get the current directory |
@@ -346,27 +346,27 @@ discard block |
||
346 | 346 | $upload_dir=dirname($_SERVER["SCRIPT_FILENAME"]); |
347 | 347 | */ |
348 | 348 | |
349 | -do_action ('script_runs'); |
|
349 | +do_action('script_runs'); |
|
350 | 350 | |
351 | 351 | // Handle file upload |
352 | 352 | |
353 | 353 | if (!$error && isset($_REQUEST["uploadbutton"])) |
354 | -{ if (is_uploaded_file($_FILES["dumpfile"]["tmp_name"]) && ($_FILES["dumpfile"]["error"])==0) |
|
354 | +{ if (is_uploaded_file($_FILES["dumpfile"]["tmp_name"]) && ($_FILES["dumpfile"]["error"]) == 0) |
|
355 | 355 | { |
356 | - $uploaded_filename=str_replace(" ","_",$_FILES["dumpfile"]["name"]); |
|
357 | - $uploaded_filename=preg_replace("/[^_A-Za-z0-9-\.]/i",'',$uploaded_filename); |
|
358 | - $uploaded_filepath=str_replace("\\","/",$upload_dir."/".$uploaded_filename); |
|
356 | + $uploaded_filename = str_replace(" ", "_", $_FILES["dumpfile"]["name"]); |
|
357 | + $uploaded_filename = preg_replace("/[^_A-Za-z0-9-\.]/i", '', $uploaded_filename); |
|
358 | + $uploaded_filepath = str_replace("\\", "/", $upload_dir . "/" . $uploaded_filename); |
|
359 | 359 | |
360 | 360 | do_action('file_uploaded'); |
361 | 361 | |
362 | 362 | if (file_exists($uploaded_filename)) |
363 | 363 | { echo ("<p class=\"error\">File $uploaded_filename already exist! Delete and upload again!</p>\n"); |
364 | 364 | } |
365 | - else if (!preg_match("/(\.(sql|gz|csv))$/i",$uploaded_filename)) |
|
365 | + else if (!preg_match("/(\.(sql|gz|csv))$/i", $uploaded_filename)) |
|
366 | 366 | { echo ("<p class=\"error\">You may only upload .sql .gz or .csv files.</p>\n"); |
367 | 367 | } |
368 | - else if (!@move_uploaded_file($_FILES["dumpfile"]["tmp_name"],$uploaded_filepath)) |
|
369 | - { echo ("<p class=\"error\">Error moving uploaded file ".$_FILES["dumpfile"]["tmp_name"]." to the $uploaded_filepath</p>\n"); |
|
368 | + else if (!@move_uploaded_file($_FILES["dumpfile"]["tmp_name"], $uploaded_filepath)) |
|
369 | + { echo ("<p class=\"error\">Error moving uploaded file " . $_FILES["dumpfile"]["tmp_name"] . " to the $uploaded_filepath</p>\n"); |
|
370 | 370 | echo ("<p>Check the directory permissions for $upload_dir (must be 777)!</p>\n"); |
371 | 371 | } |
372 | 372 | else |
@@ -374,18 +374,18 @@ discard block |
||
374 | 374 | } |
375 | 375 | } |
376 | 376 | else |
377 | - { echo ("<p class=\"error\">Error uploading file ".$_FILES["dumpfile"]["name"]."</p>\n"); |
|
377 | + { echo ("<p class=\"error\">Error uploading file " . $_FILES["dumpfile"]["name"] . "</p>\n"); |
|
378 | 378 | } |
379 | 379 | } |
380 | 380 | |
381 | 381 | |
382 | 382 | // Handle file deletion (delete only in the current directory for security reasons) |
383 | 383 | |
384 | -if (!$error && isset($_REQUEST["delete"]) && $_REQUEST["delete"]!=basename($_SERVER["SCRIPT_FILENAME"])) |
|
385 | -{ if (preg_match("/(\.(sql|gz|csv))$/i",$_REQUEST["delete"]) && @unlink($upload_dir.'/'.$_REQUEST["delete"])) |
|
386 | - echo ("<p class=\"success\">".$_REQUEST["delete"]." was removed successfully</p>\n"); |
|
384 | +if (!$error && isset($_REQUEST["delete"]) && $_REQUEST["delete"] != basename($_SERVER["SCRIPT_FILENAME"])) |
|
385 | +{ if (preg_match("/(\.(sql|gz|csv))$/i", $_REQUEST["delete"]) && @unlink($upload_dir . '/' . $_REQUEST["delete"])) |
|
386 | + echo ("<p class=\"success\">" . $_REQUEST["delete"] . " was removed successfully</p>\n"); |
|
387 | 387 | else |
388 | - echo ("<p class=\"error\">Can't remove ".$_REQUEST["delete"]."</p>\n"); |
|
388 | + echo ("<p class=\"error\">Can't remove " . $_REQUEST["delete"] . "</p>\n"); |
|
389 | 389 | } |
390 | 390 | |
391 | 391 | // Connect to the database, set charset and execute pre-queries |
@@ -394,21 +394,21 @@ discard block |
||
394 | 394 | { $mysqli = new mysqli($db_server, $db_username, $db_password, $db_name); |
395 | 395 | |
396 | 396 | if (mysqli_connect_error()) |
397 | - { echo ("<p class=\"error\">Database connection failed due to ".mysqli_connect_error()."</p>\n"); |
|
397 | + { echo ("<p class=\"error\">Database connection failed due to " . mysqli_connect_error() . "</p>\n"); |
|
398 | 398 | echo ("<p>Edit the database settings in BigDump configuration, or contact your database provider.</p>\n"); |
399 | - $error=true; |
|
399 | + $error = true; |
|
400 | 400 | } |
401 | - if (!$error && $db_connection_charset!=='') |
|
401 | + if (!$error && $db_connection_charset !== '') |
|
402 | 402 | $mysqli->query("SET NAMES $db_connection_charset"); |
403 | 403 | |
404 | - if (!$error && isset ($pre_query) && sizeof ($pre_query)>0) |
|
404 | + if (!$error && isset ($pre_query) && sizeof($pre_query) > 0) |
|
405 | 405 | { reset($pre_query); |
406 | 406 | foreach ($pre_query as $pre_query_value) |
407 | 407 | { if (!$mysqli->query($pre_query_value)) |
408 | 408 | { echo ("<p class=\"error\">Error with pre-query.</p>\n"); |
409 | - echo ("<p>Query: ".trim(nl2br(htmlentities($pre_query_value)))."</p>\n"); |
|
410 | - echo ("<p>MySQL: ".$mysqli->error."</p>\n"); |
|
411 | - $error=true; |
|
409 | + echo ("<p>Query: " . trim(nl2br(htmlentities($pre_query_value))) . "</p>\n"); |
|
410 | + echo ("<p>MySQL: " . $mysqli->error . "</p>\n"); |
|
411 | + $error = true; |
|
412 | 412 | break; |
413 | 413 | } |
414 | 414 | } |
@@ -425,38 +425,38 @@ discard block |
||
425 | 425 | |
426 | 426 | // List uploaded files in multifile mode |
427 | 427 | |
428 | -if (!$error && !isset($_REQUEST["fn"]) && $filename=="") |
|
428 | +if (!$error && !isset($_REQUEST["fn"]) && $filename == "") |
|
429 | 429 | { if ($dirhandle = opendir($upload_dir)) |
430 | 430 | { |
431 | - $files=array(); |
|
431 | + $files = array(); |
|
432 | 432 | while (false !== ($files[] = readdir($dirhandle))); |
433 | 433 | closedir($dirhandle); |
434 | - $dirhead=false; |
|
434 | + $dirhead = false; |
|
435 | 435 | |
436 | - if (sizeof($files)>0) |
|
436 | + if (sizeof($files) > 0) |
|
437 | 437 | { |
438 | 438 | sort($files); |
439 | 439 | foreach ($files as $dirfile) |
440 | 440 | { |
441 | - if ($dirfile != "." && $dirfile != ".." && $dirfile!=basename($_SERVER["SCRIPT_FILENAME"]) && preg_match("/\.(sql|gz|csv)$/i",$dirfile)) |
|
441 | + if ($dirfile != "." && $dirfile != ".." && $dirfile != basename($_SERVER["SCRIPT_FILENAME"]) && preg_match("/\.(sql|gz|csv)$/i", $dirfile)) |
|
442 | 442 | { if (!$dirhead) |
443 | 443 | { echo ("<table width=\"100%\" cellspacing=\"2\" cellpadding=\"2\">\n"); |
444 | 444 | echo ("<tr><th>Filename</th><th>Size</th><th>Date&Time</th><th>Type</th><th> </th><th> </th>\n"); |
445 | - $dirhead=true; |
|
445 | + $dirhead = true; |
|
446 | 446 | } |
447 | - echo ("<tr><td>$dirfile</td><td class=\"right\">".filesize($upload_dir.'/'.$dirfile)."</td><td>".date ("Y-m-d H:i:s", filemtime($upload_dir.'/'.$dirfile))."</td>"); |
|
447 | + echo ("<tr><td>$dirfile</td><td class=\"right\">" . filesize($upload_dir . '/' . $dirfile) . "</td><td>" . date("Y-m-d H:i:s", filemtime($upload_dir . '/' . $dirfile)) . "</td>"); |
|
448 | 448 | |
449 | - if (preg_match("/\.sql$/i",$dirfile)) |
|
449 | + if (preg_match("/\.sql$/i", $dirfile)) |
|
450 | 450 | echo ("<td>SQL</td>"); |
451 | - elseif (preg_match("/\.gz$/i",$dirfile)) |
|
451 | + elseif (preg_match("/\.gz$/i", $dirfile)) |
|
452 | 452 | echo ("<td>GZip</td>"); |
453 | - elseif (preg_match("/\.csv$/i",$dirfile)) |
|
453 | + elseif (preg_match("/\.csv$/i", $dirfile)) |
|
454 | 454 | echo ("<td>CSV</td>"); |
455 | 455 | else |
456 | 456 | echo ("<td>Misc</td>"); |
457 | 457 | |
458 | - if ((preg_match("/\.gz$/i",$dirfile) && function_exists("gzopen")) || preg_match("/\.sql$/i",$dirfile) || preg_match("/\.csv$/i",$dirfile)) |
|
459 | - echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&fn=".urlencode($dirfile)."&foffset=0&totalqueries=0&delimiter=".urlencode($delimiter)."\">Start Import</a> into $db_name at $db_server</td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n"); |
|
458 | + if ((preg_match("/\.gz$/i", $dirfile) && function_exists("gzopen")) || preg_match("/\.sql$/i", $dirfile) || preg_match("/\.csv$/i", $dirfile)) |
|
459 | + echo ("<td><a href=\"" . $_SERVER["PHP_SELF"] . "?start=1&fn=" . urlencode($dirfile) . "&foffset=0&totalqueries=0&delimiter=" . urlencode($delimiter) . "\">Start Import</a> into $db_name at $db_server</td>\n <td><a href=\"" . $_SERVER["PHP_SELF"] . "?delete=" . urlencode($dirfile) . "\">Delete file</a></td></tr>\n"); |
|
460 | 460 | // TODO: echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&fn=".urlencode($dirfile)."&foffset=0&totalqueries=0&delimiter=".urlencode($delimiter)."\">Start Import</a></td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n"); |
461 | 461 | else |
462 | 462 | echo ("<td> </td>\n <td> </td></tr>\n"); |
@@ -471,35 +471,35 @@ discard block |
||
471 | 471 | } |
472 | 472 | else |
473 | 473 | { echo ("<p class=\"error\">Error listing directory $upload_dir</p>\n"); |
474 | - $error=true; |
|
474 | + $error = true; |
|
475 | 475 | } |
476 | 476 | } |
477 | 477 | |
478 | 478 | |
479 | 479 | // Single file mode |
480 | 480 | |
481 | -if (!$error && !isset ($_REQUEST["fn"]) && $filename!="") |
|
482 | -{ echo ("<p><a href=\"".$_SERVER["PHP_SELF"]."?start=1&fn=".urlencode($filename)."&foffset=0&totalqueries=0\">Start Import</a> from $filename into $db_name at $db_server</p>\n"); |
|
481 | +if (!$error && !isset ($_REQUEST["fn"]) && $filename != "") |
|
482 | +{ echo ("<p><a href=\"" . $_SERVER["PHP_SELF"] . "?start=1&fn=" . urlencode($filename) . "&foffset=0&totalqueries=0\">Start Import</a> from $filename into $db_name at $db_server</p>\n"); |
|
483 | 483 | } |
484 | 484 | |
485 | 485 | |
486 | 486 | // File Upload Form |
487 | 487 | |
488 | -if (!$error && !isset($_REQUEST["fn"]) && $filename=="") |
|
488 | +if (!$error && !isset($_REQUEST["fn"]) && $filename == "") |
|
489 | 489 | { |
490 | 490 | |
491 | 491 | // Test permissions on working directory |
492 | 492 | |
493 | - do { $tempfilename=$upload_dir.'/'.time().".tmp"; } while (file_exists($tempfilename)); |
|
494 | - if (!($tempfile=@fopen($tempfilename,"w"))) |
|
493 | + do { $tempfilename = $upload_dir . '/' . time() . ".tmp"; } while (file_exists($tempfilename)); |
|
494 | + if (!($tempfile = @fopen($tempfilename, "w"))) |
|
495 | 495 | { echo ("<p>Upload form disabled. Permissions for the working directory <i>$upload_dir</i> <b>must be set writable for the webserver</b> in order "); |
496 | 496 | echo ("to upload files here. Alternatively you can upload your dump files via FTP.</p>\n"); |
497 | 497 | } |
498 | 498 | else |
499 | 499 | { fclose($tempfile); |
500 | - unlink ($tempfilename); |
|
500 | + unlink($tempfilename); |
|
501 | 501 | |
502 | - echo ("<p>You can now upload your dump file up to $upload_max_filesize bytes (".round ($upload_max_filesize/1024/1024)." Mbytes) "); |
|
502 | + echo ("<p>You can now upload your dump file up to $upload_max_filesize bytes (" . round($upload_max_filesize / 1024 / 1024) . " Mbytes) "); |
|
503 | 503 | echo ("directly from your browser to the server. Alternatively you can upload your dump files of any size via FTP.</p>\n"); |
504 | 504 | ?> |
505 | 505 | <form method="POST" action="<?php echo ($_SERVER["PHP_SELF"]); ?>" enctype="multipart/form-data"> |
@@ -533,44 +533,44 @@ discard block |
||
533 | 533 | |
534 | 534 | // Set current filename ($filename overrides $_REQUEST["fn"] if set) |
535 | 535 | |
536 | - if ($filename!="") |
|
537 | - $curfilename=$filename; |
|
536 | + if ($filename != "") |
|
537 | + $curfilename = $filename; |
|
538 | 538 | else if (isset($_REQUEST["fn"])) |
539 | - $curfilename=urldecode($_REQUEST["fn"]); |
|
539 | + $curfilename = urldecode($_REQUEST["fn"]); |
|
540 | 540 | else |
541 | - $curfilename=""; |
|
541 | + $curfilename = ""; |
|
542 | 542 | |
543 | 543 | // Recognize GZip filename |
544 | 544 | |
545 | - if (preg_match("/\.gz$/i",$curfilename)) |
|
546 | - $gzipmode=true; |
|
545 | + if (preg_match("/\.gz$/i", $curfilename)) |
|
546 | + $gzipmode = true; |
|
547 | 547 | else |
548 | - $gzipmode=false; |
|
548 | + $gzipmode = false; |
|
549 | 549 | |
550 | - if ((!$gzipmode && !$file=@fopen($upload_dir.'/'.$curfilename,"r")) || ($gzipmode && !$file=@gzopen($upload_dir.'/'.$curfilename,"r"))) |
|
551 | - { echo ("<p class=\"error\">Can't open ".$curfilename." for import</p>\n"); |
|
552 | - echo ("<p>Please, check that your dump file name contains only alphanumerical characters, and rename it accordingly, for example: $curfilename.". |
|
553 | - "<br>Or, specify \$filename in bigdump.php with the full filename. ". |
|
550 | + if ((!$gzipmode && !$file = @fopen($upload_dir . '/' . $curfilename, "r")) || ($gzipmode && !$file = @gzopen($upload_dir . '/' . $curfilename, "r"))) |
|
551 | + { echo ("<p class=\"error\">Can't open " . $curfilename . " for import</p>\n"); |
|
552 | + echo ("<p>Please, check that your dump file name contains only alphanumerical characters, and rename it accordingly, for example: $curfilename." . |
|
553 | + "<br>Or, specify \$filename in bigdump.php with the full filename. " . |
|
554 | 554 | "<br>Or, you have to upload the $curfilename to the server first.</p>\n"); |
555 | - $error=true; |
|
555 | + $error = true; |
|
556 | 556 | } |
557 | 557 | |
558 | 558 | // Get the file size (can't do it fast on gzipped files, no idea how) |
559 | 559 | |
560 | - else if ((!$gzipmode && @fseek($file, 0, SEEK_END)==0) || ($gzipmode && @gzseek($file, 0)==0)) |
|
560 | + else if ((!$gzipmode && @fseek($file, 0, SEEK_END) == 0) || ($gzipmode && @gzseek($file, 0) == 0)) |
|
561 | 561 | { if (!$gzipmode) $filesize = ftell($file); |
562 | - else $filesize = gztell($file); // Always zero, ignore |
|
562 | + else $filesize = gztell($file); // Always zero, ignore |
|
563 | 563 | } |
564 | 564 | else |
565 | 565 | { echo ("<p class=\"error\">I can't seek into $curfilename</p>\n"); |
566 | - $error=true; |
|
566 | + $error = true; |
|
567 | 567 | } |
568 | 568 | |
569 | 569 | // Stop if csv file is used, but $csv_insert_table is not set |
570 | 570 | |
571 | - if (!$error && ($csv_insert_table == "") && (preg_match("/(\.csv)$/i",$curfilename))) |
|
571 | + if (!$error && ($csv_insert_table == "") && (preg_match("/(\.csv)$/i", $curfilename))) |
|
572 | 572 | { echo ("<p class=\"error\">You have to specify \$csv_insert_table when using a CSV file. </p>\n"); |
573 | - $error=true; |
|
573 | + $error = true; |
|
574 | 574 | } |
575 | 575 | } |
576 | 576 | |
@@ -579,7 +579,7 @@ discard block |
||
579 | 579 | // START IMPORT SESSION HERE |
580 | 580 | // ******************************************************************************************* |
581 | 581 | |
582 | -if (!$error && isset($_REQUEST["start"]) && isset($_REQUEST["foffset"]) && preg_match("/(\.(sql|gz|csv))$/i",$curfilename)) |
|
582 | +if (!$error && isset($_REQUEST["start"]) && isset($_REQUEST["foffset"]) && preg_match("/(\.(sql|gz|csv))$/i", $curfilename)) |
|
583 | 583 | { |
584 | 584 | |
585 | 585 | do_action('session_start'); |
@@ -588,7 +588,7 @@ discard block |
||
588 | 588 | |
589 | 589 | if (!is_numeric($_REQUEST["start"]) || !is_numeric($_REQUEST["foffset"])) |
590 | 590 | { echo ("<p class=\"error\">UNEXPECTED: Non-numeric values for start and foffset</p>\n"); |
591 | - $error=true; |
|
591 | + $error = true; |
|
592 | 592 | } |
593 | 593 | else |
594 | 594 | { $_REQUEST["start"] = floor($_REQUEST["start"]); |
@@ -602,14 +602,14 @@ discard block |
||
602 | 602 | |
603 | 603 | // Empty CSV table if requested |
604 | 604 | |
605 | - if (!$error && $_REQUEST["start"]==1 && $csv_insert_table != "" && $csv_preempty_table) |
|
605 | + if (!$error && $_REQUEST["start"] == 1 && $csv_insert_table != "" && $csv_preempty_table) |
|
606 | 606 | { |
607 | 607 | $query = "DELETE FROM `$csv_insert_table`"; |
608 | 608 | if (!TESTMODE && !$mysqli->query(trim($query))) |
609 | 609 | { echo ("<p class=\"error\">Error when deleting entries from $csv_insert_table.</p>\n"); |
610 | - echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n"); |
|
611 | - echo ("<p>MySQL: ".$mysqli->error."</p>\n"); |
|
612 | - $error=true; |
|
610 | + echo ("<p>Query: " . trim(nl2br(htmlentities($query))) . "</p>\n"); |
|
611 | + echo ("<p>MySQL: " . $mysqli->error . "</p>\n"); |
|
612 | + $error = true; |
|
613 | 613 | } |
614 | 614 | } |
615 | 615 | |
@@ -619,95 +619,95 @@ discard block |
||
619 | 619 | { skin_open(); |
620 | 620 | if (TESTMODE) |
621 | 621 | echo ("<p class=\"centr\">TEST MODE ENABLED</p>\n"); |
622 | - echo ("<p class=\"centr\">Processing file: <b>".$curfilename."</b></p>\n"); |
|
623 | - echo ("<p class=\"smlcentr\">Starting from line: ".$_REQUEST["start"]."</p>\n"); |
|
622 | + echo ("<p class=\"centr\">Processing file: <b>" . $curfilename . "</b></p>\n"); |
|
623 | + echo ("<p class=\"smlcentr\">Starting from line: " . $_REQUEST["start"] . "</p>\n"); |
|
624 | 624 | skin_close(); |
625 | 625 | } |
626 | 626 | |
627 | 627 | // Check $_REQUEST["foffset"] upon $filesize (can't do it on gzipped files) |
628 | 628 | |
629 | - if (!$error && !$gzipmode && $_REQUEST["foffset"]>$filesize) |
|
629 | + if (!$error && !$gzipmode && $_REQUEST["foffset"] > $filesize) |
|
630 | 630 | { echo ("<p class=\"error\">UNEXPECTED: Can't set file pointer behind the end of file</p>\n"); |
631 | - $error=true; |
|
631 | + $error = true; |
|
632 | 632 | } |
633 | 633 | |
634 | 634 | // Set file pointer to $_REQUEST["foffset"] |
635 | 635 | |
636 | - if (!$error && ((!$gzipmode && fseek($file, $_REQUEST["foffset"])!=0) || ($gzipmode && gzseek($file, $_REQUEST["foffset"])!=0))) |
|
637 | - { echo ("<p class=\"error\">UNEXPECTED: Can't set file pointer to offset: ".$_REQUEST["foffset"]."</p>\n"); |
|
638 | - $error=true; |
|
636 | + if (!$error && ((!$gzipmode && fseek($file, $_REQUEST["foffset"]) != 0) || ($gzipmode && gzseek($file, $_REQUEST["foffset"]) != 0))) |
|
637 | + { echo ("<p class=\"error\">UNEXPECTED: Can't set file pointer to offset: " . $_REQUEST["foffset"] . "</p>\n"); |
|
638 | + $error = true; |
|
639 | 639 | } |
640 | 640 | |
641 | 641 | // Start processing queries from $file |
642 | 642 | |
643 | 643 | if (!$error) |
644 | - { $query=""; |
|
645 | - $queries=0; |
|
646 | - $totalqueries=$_REQUEST["totalqueries"]; |
|
647 | - $linenumber=$_REQUEST["start"]; |
|
648 | - $querylines=0; |
|
649 | - $inparents=false; |
|
644 | + { $query = ""; |
|
645 | + $queries = 0; |
|
646 | + $totalqueries = $_REQUEST["totalqueries"]; |
|
647 | + $linenumber = $_REQUEST["start"]; |
|
648 | + $querylines = 0; |
|
649 | + $inparents = false; |
|
650 | 650 | |
651 | 651 | // Stay processing as long as the $linespersession is not reached or the query is still incomplete |
652 | 652 | |
653 | - while ($linenumber<$_REQUEST["start"]+$linespersession || $query!="") |
|
653 | + while ($linenumber < $_REQUEST["start"] + $linespersession || $query != "") |
|
654 | 654 | { |
655 | 655 | |
656 | 656 | // Read the whole next line |
657 | 657 | |
658 | 658 | $dumpline = ""; |
659 | - while (!feof($file) && substr ($dumpline, -1) != "\n" && substr ($dumpline, -1) != "\r") |
|
659 | + while (!feof($file) && substr($dumpline, -1) != "\n" && substr($dumpline, -1) != "\r") |
|
660 | 660 | { if (!$gzipmode) |
661 | 661 | $dumpline .= fgets($file, DATA_CHUNK_LENGTH); |
662 | 662 | else |
663 | 663 | $dumpline .= gzgets($file, DATA_CHUNK_LENGTH); |
664 | 664 | } |
665 | - if ($dumpline==="") break; |
|
665 | + if ($dumpline === "") break; |
|
666 | 666 | |
667 | 667 | // Remove UTF8 Byte Order Mark at the file beginning if any |
668 | 668 | |
669 | - if ($_REQUEST["foffset"]==0) |
|
670 | - $dumpline=preg_replace('|^\xEF\xBB\xBF|','',$dumpline); |
|
669 | + if ($_REQUEST["foffset"] == 0) |
|
670 | + $dumpline = preg_replace('|^\xEF\xBB\xBF|', '', $dumpline); |
|
671 | 671 | |
672 | 672 | // Create an SQL query from CSV line |
673 | 673 | |
674 | - if (($csv_insert_table != "") && (preg_match("/(\.csv)$/i",$curfilename))) |
|
674 | + if (($csv_insert_table != "") && (preg_match("/(\.csv)$/i", $curfilename))) |
|
675 | 675 | { |
676 | 676 | if ($csv_add_slashes) |
677 | 677 | $dumpline = addslashes($dumpline); |
678 | - $dumpline = explode($csv_delimiter,$dumpline); |
|
678 | + $dumpline = explode($csv_delimiter, $dumpline); |
|
679 | 679 | if ($csv_add_quotes) |
680 | - $dumpline = "'".implode("','",$dumpline)."'"; |
|
680 | + $dumpline = "'" . implode("','", $dumpline) . "'"; |
|
681 | 681 | else |
682 | - $dumpline = implode(",",$dumpline); |
|
683 | - $dumpline = 'INSERT INTO '.$csv_insert_table.' VALUES ('.$dumpline.');'; |
|
682 | + $dumpline = implode(",", $dumpline); |
|
683 | + $dumpline = 'INSERT INTO ' . $csv_insert_table . ' VALUES (' . $dumpline . ');'; |
|
684 | 684 | } |
685 | 685 | |
686 | 686 | // Handle DOS and Mac encoded linebreaks (I don't know if it really works on Win32 or Mac Servers) |
687 | 687 | |
688 | - $dumpline=str_replace("\r\n", "\n", $dumpline); |
|
689 | - $dumpline=str_replace("\r", "\n", $dumpline); |
|
688 | + $dumpline = str_replace("\r\n", "\n", $dumpline); |
|
689 | + $dumpline = str_replace("\r", "\n", $dumpline); |
|
690 | 690 | |
691 | 691 | // DIAGNOSTIC |
692 | 692 | // echo ("<p>Line $linenumber: $dumpline</p>\n"); |
693 | 693 | |
694 | 694 | // Recognize delimiter statement |
695 | 695 | |
696 | - if (!$inparents && strpos ($dumpline, "DELIMITER ") === 0) |
|
697 | - $delimiter = str_replace ("DELIMITER ","",trim($dumpline)); |
|
696 | + if (!$inparents && strpos($dumpline, "DELIMITER ") === 0) |
|
697 | + $delimiter = str_replace("DELIMITER ", "", trim($dumpline)); |
|
698 | 698 | |
699 | 699 | // Skip comments and blank lines only if NOT in parents |
700 | 700 | |
701 | 701 | if (!$inparents) |
702 | - { $skipline=false; |
|
702 | + { $skipline = false; |
|
703 | 703 | reset($comment); |
704 | 704 | foreach ($comment as $comment_value) |
705 | 705 | { |
706 | 706 | |
707 | 707 | // DIAGNOSTIC |
708 | 708 | // echo ($comment_value); |
709 | - if (trim($dumpline)=="" || strpos (trim($dumpline), $comment_value) === 0) |
|
710 | - { $skipline=true; |
|
709 | + if (trim($dumpline) == "" || strpos(trim($dumpline), $comment_value) === 0) |
|
710 | + { $skipline = true; |
|
711 | 711 | break; |
712 | 712 | } |
713 | 713 | } |
@@ -723,13 +723,13 @@ discard block |
||
723 | 723 | |
724 | 724 | // Remove double back-slashes from the dumpline prior to count the quotes ('\\' can only be within strings) |
725 | 725 | |
726 | - $dumpline_deslashed = str_replace ("\\\\","",$dumpline); |
|
726 | + $dumpline_deslashed = str_replace("\\\\", "", $dumpline); |
|
727 | 727 | |
728 | 728 | // Count ' and \' (or " and \") in the dumpline to avoid query break within a text field ending by $delimiter |
729 | 729 | |
730 | - $parents=substr_count ($dumpline_deslashed, $string_quotes)-substr_count ($dumpline_deslashed, "\\$string_quotes"); |
|
730 | + $parents = substr_count($dumpline_deslashed, $string_quotes) - substr_count($dumpline_deslashed, "\\$string_quotes"); |
|
731 | 731 | if ($parents % 2 != 0) |
732 | - $inparents=!$inparents; |
|
732 | + $inparents = !$inparents; |
|
733 | 733 | |
734 | 734 | // Add the line to query |
735 | 735 | |
@@ -742,15 +742,15 @@ discard block |
||
742 | 742 | |
743 | 743 | // Stop if query contains more lines as defined by $max_query_lines |
744 | 744 | |
745 | - if ($querylines>$max_query_lines) |
|
745 | + if ($querylines > $max_query_lines) |
|
746 | 746 | { |
747 | 747 | echo ("<p class=\"error\">Stopped at the line $linenumber. </p>"); |
748 | - echo ("<p>At this place the current query includes more than ".$max_query_lines." dump lines. That can happen if your dump file was "); |
|
748 | + echo ("<p>At this place the current query includes more than " . $max_query_lines . " dump lines. That can happen if your dump file was "); |
|
749 | 749 | echo ("created by some tool which doesn't place a semicolon followed by a linebreak at the end of each query, or if your dump contains "); |
750 | 750 | echo ("extended inserts or very long procedure definitions. Please read the <a href=\"http://www.ozerov.de/bigdump/usage/\">BigDump usage notes</a> "); |
751 | 751 | echo ("for more infos. Ask for our support services "); |
752 | 752 | echo ("in order to handle dump files containing extended inserts.</p>\n"); |
753 | - $error=true; |
|
753 | + $error = true; |
|
754 | 754 | break; |
755 | 755 | } |
756 | 756 | |
@@ -761,27 +761,27 @@ discard block |
||
761 | 761 | // echo ("<p>In Parents: ".($inparents?"true":"false")."</p>\n"); |
762 | 762 | // echo ("<p>Line: $dumpline</p>\n"); |
763 | 763 | |
764 | - if ((preg_match('/'.preg_quote($delimiter,'/').'$/',trim($dumpline)) || $delimiter=='') && !$inparents) |
|
764 | + if ((preg_match('/' . preg_quote($delimiter, '/') . '$/', trim($dumpline)) || $delimiter == '') && !$inparents) |
|
765 | 765 | { |
766 | 766 | |
767 | 767 | // Cut off delimiter of the end of the query |
768 | 768 | |
769 | - $query = substr(trim($query),0,-1*strlen($delimiter)); |
|
769 | + $query = substr(trim($query), 0, -1 * strlen($delimiter)); |
|
770 | 770 | |
771 | 771 | // DIAGNOSTIC |
772 | 772 | // echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n"); |
773 | 773 | |
774 | 774 | if (!TESTMODE && !$mysqli->query($query)) |
775 | - { echo ("<p class=\"error\">Error at the line $linenumber: ". trim($dumpline)."</p>\n"); |
|
776 | - echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n"); |
|
777 | - echo ("<p>MySQL: ".$mysqli->error."</p>\n"); |
|
778 | - $error=true; |
|
775 | + { echo ("<p class=\"error\">Error at the line $linenumber: " . trim($dumpline) . "</p>\n"); |
|
776 | + echo ("<p>Query: " . trim(nl2br(htmlentities($query))) . "</p>\n"); |
|
777 | + echo ("<p>MySQL: " . $mysqli->error . "</p>\n"); |
|
778 | + $error = true; |
|
779 | 779 | break; |
780 | 780 | } |
781 | 781 | $totalqueries++; |
782 | 782 | $queries++; |
783 | - $query=""; |
|
784 | - $querylines=0; |
|
783 | + $query = ""; |
|
784 | + $querylines = 0; |
|
785 | 785 | } |
786 | 786 | $linenumber++; |
787 | 787 | } |
@@ -796,7 +796,7 @@ discard block |
||
796 | 796 | $foffset = gztell($file); |
797 | 797 | if (!$foffset) |
798 | 798 | { echo ("<p class=\"error\">UNEXPECTED: Can't read the file pointer offset</p>\n"); |
799 | - $error=true; |
|
799 | + $error = true; |
|
800 | 800 | } |
801 | 801 | } |
802 | 802 | |
@@ -808,8 +808,8 @@ discard block |
||
808 | 808 | |
809 | 809 | if (!$error) |
810 | 810 | { |
811 | - $lines_this = $linenumber-$_REQUEST["start"]; |
|
812 | - $lines_done = $linenumber-1; |
|
811 | + $lines_this = $linenumber - $_REQUEST["start"]; |
|
812 | + $lines_done = $linenumber - 1; |
|
813 | 813 | $lines_togo = ' ? '; |
814 | 814 | $lines_tota = ' ? '; |
815 | 815 | |
@@ -818,35 +818,35 @@ discard block |
||
818 | 818 | $queries_togo = ' ? '; |
819 | 819 | $queries_tota = ' ? '; |
820 | 820 | |
821 | - $bytes_this = $foffset-$_REQUEST["foffset"]; |
|
821 | + $bytes_this = $foffset - $_REQUEST["foffset"]; |
|
822 | 822 | $bytes_done = $foffset; |
823 | - $kbytes_this = round($bytes_this/1024,2); |
|
824 | - $kbytes_done = round($bytes_done/1024,2); |
|
825 | - $mbytes_this = round($kbytes_this/1024,2); |
|
826 | - $mbytes_done = round($kbytes_done/1024,2); |
|
823 | + $kbytes_this = round($bytes_this / 1024, 2); |
|
824 | + $kbytes_done = round($bytes_done / 1024, 2); |
|
825 | + $mbytes_this = round($kbytes_this / 1024, 2); |
|
826 | + $mbytes_done = round($kbytes_done / 1024, 2); |
|
827 | 827 | |
828 | 828 | if (!$gzipmode) |
829 | 829 | { |
830 | - $bytes_togo = $filesize-$foffset; |
|
830 | + $bytes_togo = $filesize - $foffset; |
|
831 | 831 | $bytes_tota = $filesize; |
832 | - $kbytes_togo = round($bytes_togo/1024,2); |
|
833 | - $kbytes_tota = round($bytes_tota/1024,2); |
|
834 | - $mbytes_togo = round($kbytes_togo/1024,2); |
|
835 | - $mbytes_tota = round($kbytes_tota/1024,2); |
|
832 | + $kbytes_togo = round($bytes_togo / 1024, 2); |
|
833 | + $kbytes_tota = round($bytes_tota / 1024, 2); |
|
834 | + $mbytes_togo = round($kbytes_togo / 1024, 2); |
|
835 | + $mbytes_tota = round($kbytes_tota / 1024, 2); |
|
836 | 836 | |
837 | - $pct_this = ceil($bytes_this/$filesize*100); |
|
838 | - $pct_done = ceil($foffset/$filesize*100); |
|
837 | + $pct_this = ceil($bytes_this / $filesize * 100); |
|
838 | + $pct_done = ceil($foffset / $filesize * 100); |
|
839 | 839 | $pct_togo = 100 - $pct_done; |
840 | 840 | $pct_tota = 100; |
841 | 841 | |
842 | - if ($bytes_togo==0) |
|
842 | + if ($bytes_togo == 0) |
|
843 | 843 | { $lines_togo = '0'; |
844 | - $lines_tota = $linenumber-1; |
|
844 | + $lines_tota = $linenumber - 1; |
|
845 | 845 | $queries_togo = '0'; |
846 | 846 | $queries_tota = $totalqueries; |
847 | 847 | } |
848 | 848 | |
849 | - $pct_bar = "<div style=\"height:15px;width:$pct_done%;background-color:#000080;margin:0px;\"></div>"; |
|
849 | + $pct_bar = "<div style=\"height:15px;width:$pct_done%;background-color:#000080;margin:0px;\"></div>"; |
|
850 | 850 | } |
851 | 851 | else |
852 | 852 | { |
@@ -861,7 +861,7 @@ discard block |
||
861 | 861 | $pct_done = ' ? '; |
862 | 862 | $pct_togo = ' ? '; |
863 | 863 | $pct_tota = 100; |
864 | - $pct_bar = str_replace(' ',' ','<tt>[ Not available for gzipped files ]</tt>'); |
|
864 | + $pct_bar = str_replace(' ', ' ', '<tt>[ Not available for gzipped files ]</tt>'); |
|
865 | 865 | } |
866 | 866 | |
867 | 867 | echo (" |
@@ -881,7 +881,7 @@ discard block |
||
881 | 881 | |
882 | 882 | // Finish message and restart the script |
883 | 883 | |
884 | - if ($linenumber<$_REQUEST["start"]+$linespersession) |
|
884 | + if ($linenumber < $_REQUEST["start"] + $linespersession) |
|
885 | 885 | { echo ("<p class=\"successcentr\">Congratulations: End of file reached, assuming OK</p>\n"); |
886 | 886 | echo ("<p class=\"successcentr\">IMPORTANT: REMOVE YOUR DUMP FILE and BIGDUMP SCRIPT FROM SERVER NOW!</p>\n"); |
887 | 887 | echo ("<p class=\"centr\">Thank you for using this tool! Please rate <a href=\"http://www.hotscripts.com/listing/bigdump/?RID=403\" target=\"_blank\">Bigdump at Hotscripts.com</a></p>\n"); |
@@ -905,19 +905,19 @@ discard block |
||
905 | 905 | |
906 | 906 | <?php |
907 | 907 | do_action('script_finished'); |
908 | - $error=true; // This is a semi-error telling the script is finished |
|
908 | + $error = true; // This is a semi-error telling the script is finished |
|
909 | 909 | } |
910 | 910 | else |
911 | - { if ($delaypersession!=0) |
|
911 | + { if ($delaypersession != 0) |
|
912 | 912 | echo ("<p class=\"centr\">Now I'm <b>waiting $delaypersession milliseconds</b> before starting next session...</p>\n"); |
913 | 913 | if (!$ajax) |
914 | - echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&fn=".urlencode($curfilename)."&foffset=$foffset&totalqueries=$totalqueries&delimiter=".urlencode($delimiter)."\";',500+$delaypersession);</script>\n"); |
|
914 | + echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"" . $_SERVER["PHP_SELF"] . "?start=$linenumber&fn=" . urlencode($curfilename) . "&foffset=$foffset&totalqueries=$totalqueries&delimiter=" . urlencode($delimiter) . "\";',500+$delaypersession);</script>\n"); |
|
915 | 915 | |
916 | 916 | echo ("<noscript>\n"); |
917 | - echo ("<p class=\"centr\"><a href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&fn=".urlencode($curfilename)."&foffset=$foffset&totalqueries=$totalqueries&delimiter=".urlencode($delimiter)."\">Continue from the line $linenumber</a> (Enable JavaScript to do it automatically)</p>\n"); |
|
917 | + echo ("<p class=\"centr\"><a href=\"" . $_SERVER["PHP_SELF"] . "?start=$linenumber&fn=" . urlencode($curfilename) . "&foffset=$foffset&totalqueries=$totalqueries&delimiter=" . urlencode($delimiter) . "\">Continue from the line $linenumber</a> (Enable JavaScript to do it automatically)</p>\n"); |
|
918 | 918 | echo ("</noscript>\n"); |
919 | 919 | |
920 | - echo ("<p class=\"centr\">Press <b><a href=\"".$_SERVER["PHP_SELF"]."\">STOP</a></b> to abort the import <b>OR WAIT!</b></p>\n"); |
|
920 | + echo ("<p class=\"centr\">Press <b><a href=\"" . $_SERVER["PHP_SELF"] . "\">STOP</a></b> to abort the import <b>OR WAIT!</b></p>\n"); |
|
921 | 921 | } |
922 | 922 | } |
923 | 923 | else |
@@ -928,7 +928,7 @@ discard block |
||
928 | 928 | } |
929 | 929 | |
930 | 930 | if ($error) |
931 | - echo ("<p class=\"centr\"><a href=\"".$_SERVER["PHP_SELF"]."\">Start from the beginning</a> (DROP the old tables before restarting)</p>\n"); |
|
931 | + echo ("<p class=\"centr\"><a href=\"" . $_SERVER["PHP_SELF"] . "\">Start from the beginning</a> (DROP the old tables before restarting)</p>\n"); |
|
932 | 932 | |
933 | 933 | if ($mysqli) $mysqli->close(); |
934 | 934 | if ($file && !$gzipmode) fclose($file); |
@@ -984,7 +984,7 @@ discard block |
||
984 | 984 | { global $plugin_actions; |
985 | 985 | |
986 | 986 | if (isset($plugin_actions[$tag])) |
987 | - { reset ($plugin_actions[$tag]); |
|
987 | + { reset($plugin_actions[$tag]); |
|
988 | 988 | foreach ($plugin_actions[$tag] as $action) |
989 | 989 | call_user_func_array($action, array()); |
990 | 990 | } |
@@ -1008,7 +1008,7 @@ discard block |
||
1008 | 1008 | $bytes_this, $bytes_done, $bytes_togo, $bytes_tota, |
1009 | 1009 | $kbytes_this, $kbytes_done, $kbytes_togo, $kbytes_tota, |
1010 | 1010 | $mbytes_this, $mbytes_done, $mbytes_togo, $mbytes_tota, |
1011 | - $pct_this, $pct_done, $pct_togo, $pct_tota,$pct_bar; |
|
1011 | + $pct_this, $pct_done, $pct_togo, $pct_tota, $pct_bar; |
|
1012 | 1012 | |
1013 | 1013 | header('Content-Type: application/xml'); |
1014 | 1014 | header('Cache-Control: no-cache'); |
@@ -1055,7 +1055,7 @@ discard block |
||
1055 | 1055 | echo "<elem22>$pct_done</elem22>"; |
1056 | 1056 | echo "<elem23>$pct_togo</elem23>"; |
1057 | 1057 | echo "<elem24>$pct_tota</elem24>"; |
1058 | - echo "<elem_bar>".htmlentities($pct_bar)."</elem_bar>"; |
|
1058 | + echo "<elem_bar>" . htmlentities($pct_bar) . "</elem_bar>"; |
|
1059 | 1059 | |
1060 | 1060 | echo "</root>"; |
1061 | 1061 | } |
@@ -1158,7 +1158,7 @@ discard block |
||
1158 | 1158 | // First Ajax request from initial page |
1159 | 1159 | |
1160 | 1160 | var http_request = false; |
1161 | - var url_request = get_url(<?php echo ($linenumber.',"'.urlencode($curfilename).'",'.$foffset.','.$totalqueries.',"'.urlencode($delimiter).'"') ;?>); |
|
1161 | + var url_request = get_url(<?php echo ($linenumber . ',"' . urlencode($curfilename) . '",' . $foffset . ',' . $totalqueries . ',"' . urlencode($delimiter) . '"'); ?>); |
|
1162 | 1162 | window.setTimeout("makeRequest(url_request)",500+<?php echo $delaypersession; ?>); |
1163 | 1163 | </script> |
1164 | 1164 |
@@ -100,8 +100,9 @@ discard block |
||
100 | 100 | // If not familiar with PHP please don't change anything below this line |
101 | 101 | // ******************************************************************************************* |
102 | 102 | |
103 | -if ($ajax) |
|
104 | - ob_start(); |
|
103 | +if ($ajax) { |
|
104 | + ob_start(); |
|
105 | +} |
|
105 | 106 | |
106 | 107 | define ('VERSION','0.36b'); |
107 | 108 | define ('DATA_CHUNK_LENGTH',16384); // How many chars are read per time |
@@ -118,8 +119,9 @@ discard block |
||
118 | 119 | @ini_set('auto_detect_line_endings', true); |
119 | 120 | @set_time_limit(0); |
120 | 121 | |
121 | -if (function_exists("date_default_timezone_set") && function_exists("date_default_timezone_get")) |
|
122 | - @date_default_timezone_set(@date_default_timezone_get()); |
|
122 | +if (function_exists("date_default_timezone_set") && function_exists("date_default_timezone_get")) { |
|
123 | + @date_default_timezone_set(@date_default_timezone_get()); |
|
124 | +} |
|
123 | 125 | |
124 | 126 | // Clean and strip anything we don't want from user's input [0.27b] |
125 | 127 | |
@@ -327,10 +329,16 @@ discard block |
||
327 | 329 | |
328 | 330 | if (!$error) |
329 | 331 | { $upload_max_filesize=ini_get("upload_max_filesize"); |
330 | - if (preg_match("/([0-9]+)K/i",$upload_max_filesize,$tempregs)) $upload_max_filesize=$tempregs[1]*1024; |
|
331 | - if (preg_match("/([0-9]+)M/i",$upload_max_filesize,$tempregs)) $upload_max_filesize=$tempregs[1]*1024*1024; |
|
332 | - if (preg_match("/([0-9]+)G/i",$upload_max_filesize,$tempregs)) $upload_max_filesize=$tempregs[1]*1024*1024*1024; |
|
333 | -} |
|
332 | + if (preg_match("/([0-9]+)K/i",$upload_max_filesize,$tempregs)) { |
|
333 | + $upload_max_filesize=$tempregs[1]*1024; |
|
334 | + } |
|
335 | + if (preg_match("/([0-9]+)M/i",$upload_max_filesize,$tempregs)) { |
|
336 | + $upload_max_filesize=$tempregs[1]*1024*1024; |
|
337 | + } |
|
338 | + if (preg_match("/([0-9]+)G/i",$upload_max_filesize,$tempregs)) { |
|
339 | + $upload_max_filesize=$tempregs[1]*1024*1024*1024; |
|
340 | + } |
|
341 | + } |
|
334 | 342 | |
335 | 343 | // Get the current directory |
336 | 344 | /* |
@@ -361,19 +369,15 @@ discard block |
||
361 | 369 | |
362 | 370 | if (file_exists($uploaded_filename)) |
363 | 371 | { echo ("<p class=\"error\">File $uploaded_filename already exist! Delete and upload again!</p>\n"); |
364 | - } |
|
365 | - else if (!preg_match("/(\.(sql|gz|csv))$/i",$uploaded_filename)) |
|
372 | + } else if (!preg_match("/(\.(sql|gz|csv))$/i",$uploaded_filename)) |
|
366 | 373 | { echo ("<p class=\"error\">You may only upload .sql .gz or .csv files.</p>\n"); |
367 | - } |
|
368 | - else if (!@move_uploaded_file($_FILES["dumpfile"]["tmp_name"],$uploaded_filepath)) |
|
374 | + } else if (!@move_uploaded_file($_FILES["dumpfile"]["tmp_name"],$uploaded_filepath)) |
|
369 | 375 | { echo ("<p class=\"error\">Error moving uploaded file ".$_FILES["dumpfile"]["tmp_name"]." to the $uploaded_filepath</p>\n"); |
370 | 376 | echo ("<p>Check the directory permissions for $upload_dir (must be 777)!</p>\n"); |
371 | - } |
|
372 | - else |
|
377 | + } else |
|
373 | 378 | { echo ("<p class=\"success\">Uploaded file saved as $uploaded_filename</p>\n"); |
374 | 379 | } |
375 | - } |
|
376 | - else |
|
380 | + } else |
|
377 | 381 | { echo ("<p class=\"error\">Error uploading file ".$_FILES["dumpfile"]["name"]."</p>\n"); |
378 | 382 | } |
379 | 383 | } |
@@ -382,11 +386,12 @@ discard block |
||
382 | 386 | // Handle file deletion (delete only in the current directory for security reasons) |
383 | 387 | |
384 | 388 | if (!$error && isset($_REQUEST["delete"]) && $_REQUEST["delete"]!=basename($_SERVER["SCRIPT_FILENAME"])) |
385 | -{ if (preg_match("/(\.(sql|gz|csv))$/i",$_REQUEST["delete"]) && @unlink($upload_dir.'/'.$_REQUEST["delete"])) |
|
386 | - echo ("<p class=\"success\">".$_REQUEST["delete"]." was removed successfully</p>\n"); |
|
387 | - else |
|
388 | - echo ("<p class=\"error\">Can't remove ".$_REQUEST["delete"]."</p>\n"); |
|
389 | -} |
|
389 | +{ if (preg_match("/(\.(sql|gz|csv))$/i",$_REQUEST["delete"]) && @unlink($upload_dir.'/'.$_REQUEST["delete"])) { |
|
390 | + echo ("<p class=\"success\">".$_REQUEST["delete"]." was removed successfully</p>\n"); |
|
391 | +} else { |
|
392 | + echo ("<p class=\"error\">Can't remove ".$_REQUEST["delete"]."</p>\n"); |
|
393 | + } |
|
394 | + } |
|
390 | 395 | |
391 | 396 | // Connect to the database, set charset and execute pre-queries |
392 | 397 | |
@@ -398,8 +403,9 @@ discard block |
||
398 | 403 | echo ("<p>Edit the database settings in BigDump configuration, or contact your database provider.</p>\n"); |
399 | 404 | $error=true; |
400 | 405 | } |
401 | - if (!$error && $db_connection_charset!=='') |
|
402 | - $mysqli->query("SET NAMES $db_connection_charset"); |
|
406 | + if (!$error && $db_connection_charset!=='') { |
|
407 | + $mysqli->query("SET NAMES $db_connection_charset"); |
|
408 | + } |
|
403 | 409 | |
404 | 410 | if (!$error && isset ($pre_query) && sizeof ($pre_query)>0) |
405 | 411 | { reset($pre_query); |
@@ -413,8 +419,7 @@ discard block |
||
413 | 419 | } |
414 | 420 | } |
415 | 421 | } |
416 | -} |
|
417 | -else |
|
422 | +} else |
|
418 | 423 | { $dbconnection = false; |
419 | 424 | } |
420 | 425 | |
@@ -446,30 +451,33 @@ discard block |
||
446 | 451 | } |
447 | 452 | echo ("<tr><td>$dirfile</td><td class=\"right\">".filesize($upload_dir.'/'.$dirfile)."</td><td>".date ("Y-m-d H:i:s", filemtime($upload_dir.'/'.$dirfile))."</td>"); |
448 | 453 | |
449 | - if (preg_match("/\.sql$/i",$dirfile)) |
|
450 | - echo ("<td>SQL</td>"); |
|
451 | - elseif (preg_match("/\.gz$/i",$dirfile)) |
|
452 | - echo ("<td>GZip</td>"); |
|
453 | - elseif (preg_match("/\.csv$/i",$dirfile)) |
|
454 | - echo ("<td>CSV</td>"); |
|
455 | - else |
|
456 | - echo ("<td>Misc</td>"); |
|
457 | - |
|
458 | - if ((preg_match("/\.gz$/i",$dirfile) && function_exists("gzopen")) || preg_match("/\.sql$/i",$dirfile) || preg_match("/\.csv$/i",$dirfile)) |
|
459 | - echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&fn=".urlencode($dirfile)."&foffset=0&totalqueries=0&delimiter=".urlencode($delimiter)."\">Start Import</a> into $db_name at $db_server</td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n"); |
|
460 | -// TODO: echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&fn=".urlencode($dirfile)."&foffset=0&totalqueries=0&delimiter=".urlencode($delimiter)."\">Start Import</a></td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n"); |
|
461 | - else |
|
462 | - echo ("<td> </td>\n <td> </td></tr>\n"); |
|
454 | + if (preg_match("/\.sql$/i",$dirfile)) { |
|
455 | + echo ("<td>SQL</td>"); |
|
456 | + } elseif (preg_match("/\.gz$/i",$dirfile)) { |
|
457 | + echo ("<td>GZip</td>"); |
|
458 | + } elseif (preg_match("/\.csv$/i",$dirfile)) { |
|
459 | + echo ("<td>CSV</td>"); |
|
460 | + } else { |
|
461 | + echo ("<td>Misc</td>"); |
|
462 | + } |
|
463 | + |
|
464 | + if ((preg_match("/\.gz$/i",$dirfile) && function_exists("gzopen")) || preg_match("/\.sql$/i",$dirfile) || preg_match("/\.csv$/i",$dirfile)) { |
|
465 | + echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&fn=".urlencode($dirfile)."&foffset=0&totalqueries=0&delimiter=".urlencode($delimiter)."\">Start Import</a> into $db_name at $db_server</td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n"); |
|
466 | + } |
|
467 | + // TODO: echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&fn=".urlencode($dirfile)."&foffset=0&totalqueries=0&delimiter=".urlencode($delimiter)."\">Start Import</a></td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n"); |
|
468 | + else { |
|
469 | + echo ("<td> </td>\n <td> </td></tr>\n"); |
|
470 | + } |
|
463 | 471 | } |
464 | 472 | } |
465 | 473 | } |
466 | 474 | |
467 | - if ($dirhead) |
|
468 | - echo ("</table>\n"); |
|
469 | - else |
|
470 | - echo ("<p>No uploaded SQL, GZ or CSV files found in the working directory</p>\n"); |
|
471 | - } |
|
472 | - else |
|
475 | + if ($dirhead) { |
|
476 | + echo ("</table>\n"); |
|
477 | + } else { |
|
478 | + echo ("<p>No uploaded SQL, GZ or CSV files found in the working directory</p>\n"); |
|
479 | + } |
|
480 | + } else |
|
473 | 481 | { echo ("<p class=\"error\">Error listing directory $upload_dir</p>\n"); |
474 | 482 | $error=true; |
475 | 483 | } |
@@ -494,8 +502,7 @@ discard block |
||
494 | 502 | if (!($tempfile=@fopen($tempfilename,"w"))) |
495 | 503 | { echo ("<p>Upload form disabled. Permissions for the working directory <i>$upload_dir</i> <b>must be set writable for the webserver</b> in order "); |
496 | 504 | echo ("to upload files here. Alternatively you can upload your dump files via FTP.</p>\n"); |
497 | - } |
|
498 | - else |
|
505 | + } else |
|
499 | 506 | { fclose($tempfile); |
500 | 507 | unlink ($tempfilename); |
501 | 508 | |
@@ -533,19 +540,21 @@ discard block |
||
533 | 540 | |
534 | 541 | // Set current filename ($filename overrides $_REQUEST["fn"] if set) |
535 | 542 | |
536 | - if ($filename!="") |
|
537 | - $curfilename=$filename; |
|
538 | - else if (isset($_REQUEST["fn"])) |
|
539 | - $curfilename=urldecode($_REQUEST["fn"]); |
|
540 | - else |
|
541 | - $curfilename=""; |
|
543 | + if ($filename!="") { |
|
544 | + $curfilename=$filename; |
|
545 | + } else if (isset($_REQUEST["fn"])) { |
|
546 | + $curfilename=urldecode($_REQUEST["fn"]); |
|
547 | + } else { |
|
548 | + $curfilename=""; |
|
549 | + } |
|
542 | 550 | |
543 | 551 | // Recognize GZip filename |
544 | 552 | |
545 | - if (preg_match("/\.gz$/i",$curfilename)) |
|
546 | - $gzipmode=true; |
|
547 | - else |
|
548 | - $gzipmode=false; |
|
553 | + if (preg_match("/\.gz$/i",$curfilename)) { |
|
554 | + $gzipmode=true; |
|
555 | + } else { |
|
556 | + $gzipmode=false; |
|
557 | + } |
|
549 | 558 | |
550 | 559 | if ((!$gzipmode && !$file=@fopen($upload_dir.'/'.$curfilename,"r")) || ($gzipmode && !$file=@gzopen($upload_dir.'/'.$curfilename,"r"))) |
551 | 560 | { echo ("<p class=\"error\">Can't open ".$curfilename." for import</p>\n"); |
@@ -558,10 +567,13 @@ discard block |
||
558 | 567 | // Get the file size (can't do it fast on gzipped files, no idea how) |
559 | 568 | |
560 | 569 | else if ((!$gzipmode && @fseek($file, 0, SEEK_END)==0) || ($gzipmode && @gzseek($file, 0)==0)) |
561 | - { if (!$gzipmode) $filesize = ftell($file); |
|
562 | - else $filesize = gztell($file); // Always zero, ignore |
|
563 | - } |
|
564 | - else |
|
570 | + { if (!$gzipmode) { |
|
571 | + $filesize = ftell($file); |
|
572 | + } else { |
|
573 | + $filesize = gztell($file); |
|
574 | + } |
|
575 | + // Always zero, ignore |
|
576 | + } else |
|
565 | 577 | { echo ("<p class=\"error\">I can't seek into $curfilename</p>\n"); |
566 | 578 | $error=true; |
567 | 579 | } |
@@ -589,16 +601,16 @@ discard block |
||
589 | 601 | if (!is_numeric($_REQUEST["start"]) || !is_numeric($_REQUEST["foffset"])) |
590 | 602 | { echo ("<p class=\"error\">UNEXPECTED: Non-numeric values for start and foffset</p>\n"); |
591 | 603 | $error=true; |
592 | - } |
|
593 | - else |
|
604 | + } else |
|
594 | 605 | { $_REQUEST["start"] = floor($_REQUEST["start"]); |
595 | 606 | $_REQUEST["foffset"] = floor($_REQUEST["foffset"]); |
596 | 607 | } |
597 | 608 | |
598 | 609 | // Set the current delimiter if defined |
599 | 610 | |
600 | - if (isset($_REQUEST["delimiter"])) |
|
601 | - $delimiter = $_REQUEST["delimiter"]; |
|
611 | + if (isset($_REQUEST["delimiter"])) { |
|
612 | + $delimiter = $_REQUEST["delimiter"]; |
|
613 | + } |
|
602 | 614 | |
603 | 615 | // Empty CSV table if requested |
604 | 616 | |
@@ -617,8 +629,9 @@ discard block |
||
617 | 629 | |
618 | 630 | if (!$error) |
619 | 631 | { skin_open(); |
620 | - if (TESTMODE) |
|
621 | - echo ("<p class=\"centr\">TEST MODE ENABLED</p>\n"); |
|
632 | + if (TESTMODE) { |
|
633 | + echo ("<p class=\"centr\">TEST MODE ENABLED</p>\n"); |
|
634 | + } |
|
622 | 635 | echo ("<p class=\"centr\">Processing file: <b>".$curfilename."</b></p>\n"); |
623 | 636 | echo ("<p class=\"smlcentr\">Starting from line: ".$_REQUEST["start"]."</p>\n"); |
624 | 637 | skin_close(); |
@@ -657,29 +670,35 @@ discard block |
||
657 | 670 | |
658 | 671 | $dumpline = ""; |
659 | 672 | while (!feof($file) && substr ($dumpline, -1) != "\n" && substr ($dumpline, -1) != "\r") |
660 | - { if (!$gzipmode) |
|
661 | - $dumpline .= fgets($file, DATA_CHUNK_LENGTH); |
|
662 | - else |
|
663 | - $dumpline .= gzgets($file, DATA_CHUNK_LENGTH); |
|
673 | + { if (!$gzipmode) { |
|
674 | + $dumpline .= fgets($file, DATA_CHUNK_LENGTH); |
|
675 | + } else { |
|
676 | + $dumpline .= gzgets($file, DATA_CHUNK_LENGTH); |
|
677 | + } |
|
664 | 678 | } |
665 | - if ($dumpline==="") break; |
|
679 | + if ($dumpline==="") { |
|
680 | + break; |
|
681 | + } |
|
666 | 682 | |
667 | 683 | // Remove UTF8 Byte Order Mark at the file beginning if any |
668 | 684 | |
669 | - if ($_REQUEST["foffset"]==0) |
|
670 | - $dumpline=preg_replace('|^\xEF\xBB\xBF|','',$dumpline); |
|
685 | + if ($_REQUEST["foffset"]==0) { |
|
686 | + $dumpline=preg_replace('|^\xEF\xBB\xBF|','',$dumpline); |
|
687 | + } |
|
671 | 688 | |
672 | 689 | // Create an SQL query from CSV line |
673 | 690 | |
674 | 691 | if (($csv_insert_table != "") && (preg_match("/(\.csv)$/i",$curfilename))) |
675 | 692 | { |
676 | - if ($csv_add_slashes) |
|
677 | - $dumpline = addslashes($dumpline); |
|
693 | + if ($csv_add_slashes) { |
|
694 | + $dumpline = addslashes($dumpline); |
|
695 | + } |
|
678 | 696 | $dumpline = explode($csv_delimiter,$dumpline); |
679 | - if ($csv_add_quotes) |
|
680 | - $dumpline = "'".implode("','",$dumpline)."'"; |
|
681 | - else |
|
682 | - $dumpline = implode(",",$dumpline); |
|
697 | + if ($csv_add_quotes) { |
|
698 | + $dumpline = "'".implode("','",$dumpline)."'"; |
|
699 | + } else { |
|
700 | + $dumpline = implode(",",$dumpline); |
|
701 | + } |
|
683 | 702 | $dumpline = 'INSERT INTO '.$csv_insert_table.' VALUES ('.$dumpline.');'; |
684 | 703 | } |
685 | 704 | |
@@ -693,8 +712,9 @@ discard block |
||
693 | 712 | |
694 | 713 | // Recognize delimiter statement |
695 | 714 | |
696 | - if (!$inparents && strpos ($dumpline, "DELIMITER ") === 0) |
|
697 | - $delimiter = str_replace ("DELIMITER ","",trim($dumpline)); |
|
715 | + if (!$inparents && strpos ($dumpline, "DELIMITER ") === 0) { |
|
716 | + $delimiter = str_replace ("DELIMITER ","",trim($dumpline)); |
|
717 | + } |
|
698 | 718 | |
699 | 719 | // Skip comments and blank lines only if NOT in parents |
700 | 720 | |
@@ -728,8 +748,9 @@ discard block |
||
728 | 748 | // Count ' and \' (or " and \") in the dumpline to avoid query break within a text field ending by $delimiter |
729 | 749 | |
730 | 750 | $parents=substr_count ($dumpline_deslashed, $string_quotes)-substr_count ($dumpline_deslashed, "\\$string_quotes"); |
731 | - if ($parents % 2 != 0) |
|
732 | - $inparents=!$inparents; |
|
751 | + if ($parents % 2 != 0) { |
|
752 | + $inparents=!$inparents; |
|
753 | + } |
|
733 | 754 | |
734 | 755 | // Add the line to query |
735 | 756 | |
@@ -737,8 +758,9 @@ discard block |
||
737 | 758 | |
738 | 759 | // Don't count the line if in parents (text fields may include unlimited linebreaks) |
739 | 760 | |
740 | - if (!$inparents) |
|
741 | - $querylines++; |
|
761 | + if (!$inparents) { |
|
762 | + $querylines++; |
|
763 | + } |
|
742 | 764 | |
743 | 765 | // Stop if query contains more lines as defined by $max_query_lines |
744 | 766 | |
@@ -790,10 +812,11 @@ discard block |
||
790 | 812 | // Get the current file position |
791 | 813 | |
792 | 814 | if (!$error) |
793 | - { if (!$gzipmode) |
|
794 | - $foffset = ftell($file); |
|
795 | - else |
|
796 | - $foffset = gztell($file); |
|
815 | + { if (!$gzipmode) { |
|
816 | + $foffset = ftell($file); |
|
817 | + } else { |
|
818 | + $foffset = gztell($file); |
|
819 | + } |
|
797 | 820 | if (!$foffset) |
798 | 821 | { echo ("<p class=\"error\">UNEXPECTED: Can't read the file pointer offset</p>\n"); |
799 | 822 | $error=true; |
@@ -847,8 +870,7 @@ discard block |
||
847 | 870 | } |
848 | 871 | |
849 | 872 | $pct_bar = "<div style=\"height:15px;width:$pct_done%;background-color:#000080;margin:0px;\"></div>"; |
850 | - } |
|
851 | - else |
|
873 | + } else |
|
852 | 874 | { |
853 | 875 | $bytes_togo = ' ? '; |
854 | 876 | $bytes_tota = ' ? '; |
@@ -906,12 +928,13 @@ discard block |
||
906 | 928 | <?php |
907 | 929 | do_action('script_finished'); |
908 | 930 | $error=true; // This is a semi-error telling the script is finished |
909 | - } |
|
910 | - else |
|
911 | - { if ($delaypersession!=0) |
|
912 | - echo ("<p class=\"centr\">Now I'm <b>waiting $delaypersession milliseconds</b> before starting next session...</p>\n"); |
|
913 | - if (!$ajax) |
|
914 | - echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&fn=".urlencode($curfilename)."&foffset=$foffset&totalqueries=$totalqueries&delimiter=".urlencode($delimiter)."\";',500+$delaypersession);</script>\n"); |
|
931 | + } else |
|
932 | + { if ($delaypersession!=0) { |
|
933 | + echo ("<p class=\"centr\">Now I'm <b>waiting $delaypersession milliseconds</b> before starting next session...</p>\n"); |
|
934 | + } |
|
935 | + if (!$ajax) { |
|
936 | + echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&fn=".urlencode($curfilename)."&foffset=$foffset&totalqueries=$totalqueries&delimiter=".urlencode($delimiter)."\";',500+$delaypersession);</script>\n"); |
|
937 | + } |
|
915 | 938 | |
916 | 939 | echo ("<noscript>\n"); |
917 | 940 | echo ("<p class=\"centr\"><a href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&fn=".urlencode($curfilename)."&foffset=$foffset&totalqueries=$totalqueries&delimiter=".urlencode($delimiter)."\">Continue from the line $linenumber</a> (Enable JavaScript to do it automatically)</p>\n"); |
@@ -919,20 +942,26 @@ discard block |
||
919 | 942 | |
920 | 943 | echo ("<p class=\"centr\">Press <b><a href=\"".$_SERVER["PHP_SELF"]."\">STOP</a></b> to abort the import <b>OR WAIT!</b></p>\n"); |
921 | 944 | } |
922 | - } |
|
923 | - else |
|
924 | - echo ("<p class=\"error\">Stopped on error</p>\n"); |
|
945 | + } else { |
|
946 | + echo ("<p class=\"error\">Stopped on error</p>\n"); |
|
947 | + } |
|
925 | 948 | |
926 | 949 | skin_close(); |
927 | 950 | |
928 | 951 | } |
929 | 952 | |
930 | -if ($error) |
|
931 | - echo ("<p class=\"centr\"><a href=\"".$_SERVER["PHP_SELF"]."\">Start from the beginning</a> (DROP the old tables before restarting)</p>\n"); |
|
953 | +if ($error) { |
|
954 | + echo ("<p class=\"centr\"><a href=\"".$_SERVER["PHP_SELF"]."\">Start from the beginning</a> (DROP the old tables before restarting)</p>\n"); |
|
955 | +} |
|
932 | 956 | |
933 | -if ($mysqli) $mysqli->close(); |
|
934 | -if ($file && !$gzipmode) fclose($file); |
|
935 | -else if ($file && $gzipmode) gzclose($file); |
|
957 | +if ($mysqli) { |
|
958 | + $mysqli->close(); |
|
959 | +} |
|
960 | +if ($file && !$gzipmode) { |
|
961 | + fclose($file); |
|
962 | +} else if ($file && $gzipmode) { |
|
963 | + gzclose($file); |
|
964 | +} |
|
936 | 965 | |
937 | 966 | ?> |
938 | 967 | |
@@ -965,10 +994,10 @@ discard block |
||
965 | 994 | { ob_end_clean(); |
966 | 995 | create_xml_response(); |
967 | 996 | die; |
968 | - } |
|
969 | - else |
|
970 | - create_ajax_script(); |
|
971 | -} |
|
997 | + } else { |
|
998 | + create_ajax_script(); |
|
999 | + } |
|
1000 | + } |
|
972 | 1001 | |
973 | 1002 | // Anyway put out the output from above |
974 | 1003 | |
@@ -985,8 +1014,9 @@ discard block |
||
985 | 1014 | |
986 | 1015 | if (isset($plugin_actions[$tag])) |
987 | 1016 | { reset ($plugin_actions[$tag]); |
988 | - foreach ($plugin_actions[$tag] as $action) |
|
989 | - call_user_func_array($action, array()); |
|
1017 | + foreach ($plugin_actions[$tag] as $action) { |
|
1018 | + call_user_func_array($action, array()); |
|
1019 | + } |
|
990 | 1020 | } |
991 | 1021 | } |
992 | 1022 |
@@ -6,669 +6,669 @@ discard block |
||
6 | 6 | * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 |
7 | 7 | * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other) |
8 | 8 | * @version 4.2.5 |
9 | -*/error_reporting(6135);$oc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($oc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$yg=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($yg)$$X=$yg;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo |
|
10 | -lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo |
|
11 | -lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8У’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤ l^íZ6˜ej…Á³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxlÖ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù €‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò 'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,EÍ`T¦É6Ûˆ-“Åì¾ÅÚŽT[Ѫz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø •ÿš´hìÁ{Ü£•î ËÔ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØÍ‡Ð¢©‰‚êcâ¡óB’—}Ø&`ˆîr+E“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼ ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡ ³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£Ì]6¦Þ1´!1M±¸@a´/`Û>Ù¸üߣðÕßÈÛC/ì6à´·#p@pá‘óÿ`Zÿôýchý°\0ïë\0oæ€ð4OýOøi\0-\n«îÿ/ý\0£Dð.ÿ ¾ˆ.“Ä\0fiŒÀÈ«£€˜\0Œ”IDüç\0§¬\rïý0f ßoãÿ€ÊGüˆðeJ|\r€¿ýl ¨3ê~ðiP›¦&“É¿/µ\09 ^\0r•0]¯õ ¾Â›oõŽ.ý\" °ÐÑM¥íðvÿP€ZÐÕmpËP°ùÚœÐÞ¹ïô{§†C?²ÀkŽ“Ï¼}ð®þdöïʰ~=‘.Ô- é Ðm1>hûÏÛЕ1;QI‘OPÈ\rºcßpApV«k\rQ*èQ}ÏçŸq>˜Ðu15BqQ[1fûñl«Â€apå¯ü\0Û‘*ŒJ©Q=ñãّGÜäŠÕÁ±Ÿ±_ñ—ñbŒGHF.‚0Ôø = 2P™Àó æòÏçP!ò#(3 \nÙ!1&72fª`Â/å\0°‡\"PÁUõ\$ñ\r0Ìð,QrU&2fšÒ_²Xààò]ð9\"’S'òƒ'²yð8\r¨ú§òkW)Oõ)’*Ra%ã\\i—%ò‰&Ò³+r…’3ðS`…,ñvý¦&2×L–&Pu*›-ð˜0\"Á%HĬԞïÏ@Ø“±°H‰B–P(ÃÉ\$p&ý,1M ªØÃ®;\rnÁ.¯Ê I.Õ',1ò)Ó4ý²å2°u+ó3æ `ÈSŽŠpL\nt§’_*²S3;6r'h35¤55䜋d2q+6ñ8‘O7sC\"pm8Ò³“6³—9òm\n@e0É<8B8©<,( ¨8²Û\0è Ó0šJÙ<@¦ÐI¤«ÀR6pÔmGË\"11¤6ËÐ.\"æÀ‚ï5Ì‚ûÇ:àÜ8bêA1±;ƒ';Â?<*\$È,³Ìo= òTÓÖ/3Û#«ºÒ†¬");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
12 | -lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s> )â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n \ræs<ŒPi2INÆ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(Òm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$ CAÆ ä„¤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AKã¡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…): ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDùÑ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æÚŒÚ‡Ÿ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/ØX ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éï†PÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðÈôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEÐ€Ôøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6↬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F 4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀÎ t]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ 1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*/¹UÖVû‰¤þpì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Æ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·> —BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ ¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6Chº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ß§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)×…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üàå€ ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤ (€\r¹öGFžª@ؼÃúÙÀß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷Ƚà¸à\\P’,\"ª-rCÉrVäæY×·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê ‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rÔ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔÄ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„â¢ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ €ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;SÇ]ãñ@ËÇè:Ââ“÷I~Û‘•ÙùÒÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}Ï:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð‰)¯i4Ñu•sÁLjXÁMP¬‚^«ä5¹O’¥ bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE% dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> “ªÿ'Ó|“#hàÅœ˜6è¦\rñ.=(Ôv±…¥;`\"OøCÜ!âBŠ9ã.B!UEÌDáÄ‚d œ–€)ºKŠ Œ\0Þ» ÆmF~ B{O\0¨Ï©¡¦_éø³u#„–5 =LjÀò7´9 š6¢î£lCV‘€ŒTpÀÚ08± 1ÄÎx'0@gIw€Zã†@9ÇLᎎ\\v\0_(º\".ЯA[sÅ„ä€ê7I(azl_„EЦ<ñ€“tƒUöë7`tèÒ0ø‹(ßà3”=¦ço\$[Ìh×!¸B¦œ[HîR¶œœ) )nxaZ™#=HË8ð뛥 ”’%þ@0w5J’– ¸²A\"F:8NŠÏ\"Xù- èÔ¥?pj@)iUjƒÀ™\$Ìš-EÆ÷”E§´\n/¸œPÓB–P@y8j¾Y¼Kð³9 0ÊH€Ddš&0Œ¡èh“X \\Ñê\$Ë(ÁÐ`d\nEΤÀŽ@ÉJ“b*NRP\"(q.f#“dšGÈæD¾š¦M’n9:*€¶fÐŽt4æò:p½Mí(5%ÊQ\0e”Sb’4ú1¤ÉõeM‡),ŸR‘\"k§m?Ê\0rB¿( è\\èšÅ••de<£\\ÊBMò’i„¢L (Åh›ÚRÁ¿D›e\"r™CÊÖRä•ô¬å)9EJâQÒ˜> õO´ãí`šAÈ#®bh|HNÐ\$™%Z#˜4-® 2=ˆD‰ê„ñ\\´æ0څȆ¶õ\\’\"©aUR Ã-I¨ãk0\0ÛæÙ‚ÊÃæHýH³ ÀÎ~u”]QŽƒFš1')-¡\0'óxüeüˆÑ·ŸÌÕp\$ÆQØeaþ#\"ëRǰÀœ@\\èÂF0ѸÀÕ#\"–˜&<¬1ÎHЃÃ\" BªÂð.ˆþ#h˜ÎÃÀ/ùž…TmA[€ç\rRŒ(̼@%ÙE8ÌÂÙÐ&\$ `Eà€ŠÃ,B]À(a{„@ù6I›¢k3[ˆhÚ ìEw\0¡1®)%檘 @Úªÿ\"ˆ6ˆÙ®aJ¦I8J+4q€Úa¨±0\nBë2É—àa“!{q›•ŽŒÛ„Àgá1!9à:\0¦Š&D8|8Á\0Ë:á5P1ƒ¼›0‹ã:y„ª¨FDHÄÎUk3Á’…USLKôàfŠi‡mB¹Fk§@EPØM-ä;1ˆ¡%Òá82ls1œ´!&û5¼ÍRaÅñ—ÄÂÀú’4’ÏP%¸„eOþ/¹¨ˆ±³ÈE‰I@C=ùùMHÉÓôd°çË8@¹–à9rI¼Ð€£Š*B,› Ã^ð‘Ò\r˜Û€N猗4ˆB“™ZCXÿÂs! *@ENø)»Ð”4àa\n¨Â )¿¸˜?`+¡€&‰C01M¼SqDñ€ÞQŸBð\"ï¡ ‘‰n)ÓM¹¢!x\0€Š5Æüj3w\0⣂ð0!\$\0`a7º¨2Q¶Zì>I4ŒÖ}ÉxÑàÁ½›ÊÏÚZu¶\0´çñWÉdd4J2„†26\n À¶žÙ ŸÅ…æ€OhÜFç0Èš\0=΃š%Ù1Ú\rÊAàih@vM)’\0¼`£&Êa2ù´Kši©KðfhZUÆ\n¶‘AM(iéP€ÈW47¥|ò©ZQ†þ:¨5X>x#5†¡s=0Rªå>„“7úÓÀiü'èÙž\0Ê™£ú)`hþRÁð…š—d`œÑµM‘IQ\\V´ÞV‚ã4T²¦ÓUãåR%9F“aºhÕ47œ]Mà_`>P~_T!¡†ÑN\0ŽÎ.lÔú%ÈC(DZSþqu\0œ¸…in默2¡áÙHéqCÔM`”…AÞMqQ¢~«5p+ŠAZh¾¡3Ÿ‡Å¸\n62¸URbq%B(\nÀTØó‘œ›FåâÌð>œ8¿†GM ‹LpiÈ¢EQf‘M&•.©OQ\"=Z{µºR¥åïl¨aOêïØ«”ýk}° Á-´~+Ê`µewíWêÎT Õ¨º2ߘ’.¤1RÒH8H¤†d€Á†h@0Œ\0[€@réŸ j\"„ý¸êöOZŽ ‘1r#¬tQ@7—V5kÈ+˜ÖÉʽVlï¬ì·\r-å®–¯U„Ý\$\$XÚ¼ž4µ«äF6{à/ˆ‰Ç–P¡óZ¹s½|Œ\rcÓ€f™Á˜f¸? •_«™XՔ𰕆¬@Áë—â0nlŠÜ„Yòg:×°ËSæâä›sª~˜šâ¡9ëî×FŽt\0/Ã\nÅ0']y‰á^ŠÇ#&¹\rHœ†j‡R0ý:æ¤â‡£¦äD7J¡Ÿ~¿Ä52Éælë”D}J‡TàeΜ% ŸÕ}¸è+R#”°k3T¼Ýë¶\0rYuŒh¡‹ÞŒf¼“Þleù„ØAï1S•TØP\"±¾PhŠE¶NœÞVK`2Qò\0e©eK‡›Š>IFÜš-Ã7Sê=Ôù•BÀ¼j¢N5U÷[ñXl'\0 2¡…j\0;ªÍ‘’ìú®J\"\r4hEž±FXômRö\0Q‘Ö·*/X ”K£{hÍWÚ‘ž©”l€êm'j8€ÚŽŽ.êFˆÔsUÔ©µ\"iþ+bÒÊBÚUl1 ¬¼RCGÐ-²3Þ)3å\0ø'ÉNv?³³PeÒÔÀÂZžÕ/óiãOÝ]6b“|1T•ªÉ×jØHÚ¾×@mµà¹-k_TÃÅPè–¯\\©¬\0æÀ69¸°nU¶{‚-±Õ5Â!²“´øGª³çξ5㚺m®S Á´\$룱øm3õÙ%˜`[¯B©/ËešØÎõÉTm§i‚N›o£!âàµ.È\râ÷0¨6 ,lí¬\0äàà:&|\rÖ»\"M¯¡kw*ÛrHVó„Ü5Û‚Ãjàá „YpÒ“ÙX\råw{Uß…qÄ’Ü\$u⨞Ul{‹Û\$×¶þ5mÀ(ü`/¬¢—ù¸4/nIp–j\\-³¶ç_3\\)òës×–çW–·mçt\n†JR—D¹Ñ‚%tŠ\nÝ*‹Rzá2>²°\"®‰a²\0Ö8Š1˜Žè¤/sÄ@Û†Jì'l—Hu®k Zªç©´hÔ8§s}ÈšP§)R*“Übûe%²í·o„Ús– û2aQ¡J†©¤Õ°í‹qkÂ6g. ¼R“/({Ǥ~ÙEŒ©;ö\$ÝÓt†löÃmIêºèGR:iÕ'—àÁApªÞy€üÛDMºŽ/<¦ÜwºÁàp\rÀ\"•Âá}\0ßPS€'éŠß܆“”pý¶k`CìÜqEYÀ3Êd¡èÉ|p{ó DJ;úå÷cHTšÏWnW<)M5~ÆY2÷–t9Š©âkÞR<ý«q#\0¨ýep7Lø+Óc¾ Ú\0u\0\0®mÔW¾‘c}[* <÷ؾÎ+¢ër7Æ@+·Ô^/Ä·ûò_ÀYÆŽ¿ £/yƒ6Ù¾þ«%œXÛKRÒÚoƒÙS¯\\¾ m/ˆg³PþÉV–%D«¡GÄOiuöÝt€åN)®›Î¯&ú†ySô0jn“rrÚT”y×myˆk!É8UšøDn£Bþ\0÷l¥¨PGç.[‡z··|†8bGõx×Ñ\\s[µ#¸?>:£\0Xz f¯´ f.â£4€^ 9‡ |šË\r§·z+G¸Z¸D©È?‰5A¢„A]¹1ϱ5‹7bvæ`|1»èk.‚LUëÍÚ/`Weñ©'âàkû¹†k°ÜŸàÅÐI\0wvu‘]©-˜Ó%OÈb3ó¡j•bŠÍ™T½A%¯à&êIÊÜP£ŽcBã9Í‹{yBßLtVÖ?ØÊF:hªUd[ËÑ ük±–8OSV« káZÑ|â€*ÑU¾Gû˜-k¦&ˆÚI–‘žÈÝ”ðO9\0®€Åˆ˜ÕeQ>7ŠÉp¶e[¶<¯¿RæÝ h\$®?Ïöäúª¾AñÇ‘ÿ-×!–iÈ|¿Ö¿…ä[UγïfEƧ‘’SätF™RUÎHÁ?¡Z¡¶¨I@â¢Ã‘‚šÖEY*–½Y²‘YúÔZEÐöÂÂ=–ì:Û+Ù@¾VÐ6„·^ÃÚ½NÖ8VK2‡’ê ¼#èbÉŠ[2ç- ñ…k2&*äENškV¶2Áy¼ùW8+Öœq°Œ&9„1åøù+Z“Dªã\",¥œ““‹Êƒ#-šÉÈ4ÿ5•µ—‘cãxPŸæÌ•ÓÅlXó Ös-P”χBÂßÕkFŒ¸ÖŒ\$5m€W@º¨\0›Ò—!úÌ`@ð¼ß©²\"áOõa7œš†Ï14yo®us,|d*+É¢ee7ž<Åœó:Çߘ¸Ôá]œbg!™ùÎbsŸH\nr˜„nÕ–É@Ø@ör Ÿæâr€)0 €’à\"\0\"΀òO4]ªÞaÄH*•o–,뀬.CpÉÒÉ3>Šu©Åx5™äúž‘ Åæš³ÓÊVZ–Ò€,,\ršfáHl÷e£êè:Úe™Z@Î]ò¼½\rs@¨%Ë\"\n!ìk‰úhÊ´ËeÈ´?åÄji: ˆ>{ÉšÞËŸ½! W.ºEBV‘åË \0002Ï9©¦ËæšC¼Ñ\r4íÌûóP+.Ÿ‹=5\$KbÍÂùËh(5\0©I¤CŸèì“ U«ÅÇ4'V”°(-¢!0 À¨ÀÈ•:eñÔn¥Ã›©’:¥”-F®‚µ;/¥#”‡T<¢ÐùMVH/O¦½±´Û¹ÂûQ®€Åž4h-âDþ5ÀU€\0‚@\"€€ àFavœ@à€y ëé'‰;.HnrzxPô^€ÿ[áªûbEÐÖD;SYãåÚ Pôï :1¬ÇN‰iâ€wfíw»Ü1ÀY½¨ù™| FâDiZ×¶D|{q”RÁà0\"³Íç(åO³ÕDîƒ —z`Ò)Þ`-ˆ Ä|è5Ql_c.øküö<Ù5¤0§zÏÒ–Ñü›Ûßкe˜†dí\$’©\"þJè÷ÓSÝÑû\n\rHK¿_Ó„”tà4ç€s›A\njVð´ñŒ!oÚ[l¶œOPÀQª©¬‹wÑÓ†Q¥9ÛÑ!…5€ì¥\0¶Ym‹g„õÛ(@u¶§ƒXO_éÝa~ÉÔ&Ðó#( =:ã Ã\0½µ×k4WñÏ\0]IàŒ+šf FÕÈj¥C#Ûn7ˆ?µöô×N Ní’´)Ï&zÝŠ‹“o»Ž¿h¤·BlM½TU)5ÜËp¾t€¦µ›¥tÁä¶ùºî¨\rµV.è]û¹Í‹†Ð»¡nç†JÑív… ضï·t(ÍÉn¸Ñ»±ÝœD2)mÛž([Ïr©˜Åë³2z eŒ¿¦ñ¾=Òn*Ìvûw8ÝÄàx+§<` 2½GFííTBÛ=væh=ºì};L/wîþ÷£¿÷v[«cîØßîã÷)¦ÀnL¦*§¡¹ê¡ã7`7ôÞ‘þ÷©_øˆ\næ{˜æ‚B%Q\0ǃ@pyæ÷\0ûÁȈnè'Š^î庾&‡Ó6Þ\0•È¿‘Ôð†û»Þ̃%¾EKÔÈ;,á‰â·PeÍîl-•:ÙþïgÄKüëXTØEPVP. èP ´¼RØl²ë±sìOmtâ•êhô’ô ñÀ¬#”Uv…ϲ=}ì”a>\"‡õàÆ½Žˆøo|RØt£Më¢û<fM SòãZ˜QBà¡È*¡o^ð&ÍÞ5Æþµ€*D²QþN»\$*¦ ä¯ BrD`Íòe¡Ó=äç'¹?Ê•T MxkkÓZúŒ}Q²‰[~ùŸÕŒš(qmQ:ü{Þ‹µè¿ó×Ͳ°f}N@±lCaùðˆê\"N`ˆùAP“cÔ€V0\0ÍB’fÝÙÀž…ø„P\0Iu†5ª4›³ì÷ÿ©Ð`°:*†`þQ¢wRó(º¸éœêÆÊÉû7È»™jj÷gçdc°™ð6,É/%ñç2ç¦#³òûiÉ»8\\nϧ‘—ðqö‘SuÛ³nu4?W7\$»>-0ϵЦ-7d}y¼…[áx‡ñ~»¸0òSükó«y{!©sü°ö(@6p\$a:ʨ€Z5}\0üç]BßøŸgŒÔÀuTT\"K@€uÑþ<Ìž.ªugGø›±n¢¿ÚŠ|aâx¡ÔÀÇ窱ÿX5é‡EØõØó@tçVw¿ü?\0½ç„ruY둹Ï.Å?[ŽfèÈ9Îñ9ô3£® I\0—ذš)±OuɈz*ð’ãbí+\$Sª9ÇØ~‚vŒú}+–Ññ„«Ùtwøµ‹\0\\€");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
13 | -lzw_decompress("v0œF£©ÌÐ==˜ÎFS ÐÊ_6MƳ˜èèr:™E‡CI´Êo:C„”Xc‚\ræØ„J(:=ŸE†¦a28¡xð¸?Ä'ƒi°SANN‘ùðxs…NBáÌVl0›ŒçS œËUl(D|Ò„çÊP¦À>šE†ã©¶yHchäÂ-3Eb“å ¸b½ßpEÁpÿ9.Š˜Ì~\nŽ?Kb±iw|È`Ç÷d.¼x8EN¦ã!”Í2™‡3©ˆá\r‡ÑYŽÌèy6GFmYŽ8o7\n\r³0¤÷\0DbcÓ!¾Q7Шd8‹Áì~‘¬N)ùEг`ôNsßð`ÆS)ÐOé—·ç/º<xÆ9Žo»ÔåµÁì3n«®2»!r¼:;ã+Â9ˆCȨ®‰Ã\n<ñ`Èó¯bè\\š?`†4\r#`È<¯BeãB#¤N Üã\r.D`¬«jê4ÿŽŽpéar°øã¢º÷>ò8Ó\$Éc ¾1Écœ ¡c êÝê{n7ÀáƒAðNÊRLi\r1À¾ø!£(æj´®+Âê62ÀXÊ8+Êâàä.\rÍÎôƒÎ!x¼åƒhù'ãâˆ6Sð\0RïÔôñOÒ\n¼…1(W0…ãœÇ7qœë:NÃE:68n+ŽäÕ´5_(®s \rã”ê‰/m6PÔ@ÃEQàÄ9\n¨V-‹Áó\"¦.:åJÏ8weÎq½|؇³XÐ]µÝY XÁeåzWâü Ž7âûZ1íhQfÙãu£jÑ4Z{p\\AUËJ<õ†káÁ@¼ÉÃà@„}&„ˆL7U°wuYhÔ2¸È@ûu Pà7ËA†hèÌò°Þ3ÛêçXEÍ…Zˆ]lá@MplvÂ)æ ÁÁHW‘‘Ôy>Y-øYŸè/«›ªÁî hC [*‹ûFã#~†!Ð`ô\r#0PïCË—f ·¶¡îÃ\\î›¶‡É^Ã%B<\\½fˆÞ±ÅáÐÝã&/¦O‚ðL\\jF¨jZ£1«\\:Æ´>N¹¯XaFÃAÀ³²ðÃØÍf…h{\"s\n×64‡ÜøÒ…¼?Ä8Ü^p\"ë°ñȸ\\Úe(¸PƒNµìq[g¸Árÿ&Â}PhÊà¡ÀWÙí*Þír_sËP‡hà¼àÐ\nÛËÃomõ¿¥Ãê—Ó#§¡.Á\0@épdW ²\$Òº°QÛ½Tl0† ¾ÃHdHë)š‡ÛÙÀ)PÓÜØHgàýUþ„ªBèe\r†t:‡Õ\0)\"Åtô,´œ’ÛÇ[(DøO\nR8!†Æ¬ÖšðÜlAüV…¨4 hà£Sq<žà@}ÃëÊgK±]®àè]â=90°'€åâøwA<‚ƒÐÑaÁ~€òWšæƒD|A´††2ÓXÙU2àéyÅŠŠ=¡p)«\0P ˜s€µn…3îr„f\0¢F…·ºvÒÌG®ÁI@é%¤”Ÿ+Àö_I`¶ÌôÅ\r.ƒ N²ºËKI…[”Ê–SJò©¾aUf›Szûƒ«M§ô„%¬·\"Q|9€¨Bc§aÁq\0©8Ÿ#Ò<a„³:z1Ufª·>îZ¹l‰‰¹ÓÀe5#U@iUG‚™©n¨%Ò°s¦„Ë;gxL´pPš?BçŒÊQ\\—b„ÿé¾’Q„=7:¸¯Ý¡Qº\r:ƒtì¥:y(Å ×\nÛd)¹ÐÒ\nÁX; ‹ìŽêCaA¬\ráÝñŸP¨GHù!¡ ¢@È9\n\nAl~H úªV\nsªÉիƯÕbBr£ªö„’²ßû3ƒ\ržP¿%¢Ñ„\r}b/‰Î‘\$“5§PëCä\"wÌB_çŽÉUÕgAtë¤ô…夅é^QÄåUÉÄÖj™Áí Bvhì¡„4‡)¹ã+ª)<–j^<Lóà4U* õBg ëÐæè*nÊ–è-ÿÜõÓ 9O\$´‰Ø·zyM™3„\\9Üè˜.oжšÌë¸E(iåàžœÄÓ7 tßšé-&¢\nj!\rÀyœyàD1gðÒö]«ÜyRÔ7\"ðæ§·ƒˆ~ÀíàÜ)TZ0E9MåYZtXe!Ýf†@ç{Ȭyl 8‡;¦ƒR{„ë8‡Ä®ÁeØ+ULñ'‚F²1ýøæ8PE5- Ð_!Ô7…ó [2‰JËÁ;‡HR²éǹ€8p痲݇@™£0,Õ®psK0\r¿4”¢\$sJ¾Ã4ÉDZ©ÕI¢™'\$cL”R–MpY&ü½Íiçz3GÍzÒšJ%ÁÌPÜ-„[É/xç³T¾{p¶§z‹CÖvµ¥Ó:ƒV'\\–’KJa¨ÃMƒ&º°£Ó¾\"à²eo^Q+h^âÐiTð1ªORäl«,5[ݘ\$¹·)¬ôNô\n«ž[Ðb÷ƒà|;‘éîp»74Íܔ¢¨ÐIŠCË\\ÞX°ç\n%øhØIäç4Ïg‹P:< ôõk¦1Q™+\\ÚÈ^å’ ™VèøCàòôWàÃ`83B-9F@ànÃT>»ÞÀlj-–¿öÊ&âÜ`9q¦…Çßä‘“PÜy6Üå\r.yñ&£ñ´ÎảÍÃE8Ÿ0 êÀõkAÁ×VÛT7ñpïÆxØ)Þ¡~¤M½ûÎß!áEt§ÐùP\\èÄÏ—m~c½Bð\\\nímŠv{µÎù9`G[·¾~xsLî\\±Iõ®ïâXwy\nà¨çu¯áÁ™S£c»¬€1?A¼*‡ùÍ{œã½ÿ´óÍ¿á|9Þ¾/–òþ¯Eúï4æÊ/¿Wÿ[ȳ>–á]ÄržÊý¯v¹~B£ PB`T¡H>0¤BÒ)ð >¸N!4\"‡À¦xW-ÅX)„0BhA0à½J2P@>ÈAA)„SÎôn¼ìnìO˜Q¢¬ÇÎÊb®rõŽÔÒ¦âöàøïhèí@È‹’î®(–ð\nì†Fì˜ñÏ–øÆ™…(ìγ¤ÛP\0÷NÂõo}¯‚l«<ønÞø®ˆâîlëoq\0/Q\0of*Ê‘NѽP\r/îpA°Y\0p\\ãï~³ÐbÐLh °!Îã ÐPöîd÷.¿ïy\no\0áÌËжöPptùP¡ovЂknޏ\0z+æ›l6÷°©¬Êø0’äð¹P½oF€NìÏFô¯OpýàN`ÜÐÖ\rogðá0}PÍ\n¬–@°”ö15\r±9\$M\r \\©\nggìÀ Ø\$Q \r‘“Dd‰ÆÊ8\$¶ªkþDâjÖ¢Ô†ö&€ÓÀÊ ¶àbѬ˜ê°¿‰› ñ=\n0ÊÕÀúºÀPØ ~ج6eö½¬2%Íx\"pß@Xб~«æ’?¬Ñ†Zelf\0ÒZ), ,^Ê`ß\0è8&´ì¨Ù©‘Ñr€© ©ÃkFJÂÂP>VÆœÔp¨²8%2>ÂBmÎóØ@ä’G(²ä¨s\$Ž dÕÌœv†\"Èp°wÇÆ6§æ}(VÌKË ‚K¬L ¾¤éÄWñöqú\r‘þÃ̤ʀQòL%’PÔdJ¨¦HÀNxK:\n ¤ †%fn‹ã³%ÒŒ¿DÌMü À[#¢T\r©ÀrÂ.¦LLè&W/>h6@êE ÈãLP‚vÆC’ß6O:Yh^mn6£n¼j>7`z`Ní\\Ùj\rgô\rÈi2I\$\"@¾[`¢hMý3q3d’þ\0ÖµÈúys\$`ÖDÀæ\$\0äQOf1ƒ&‚\"~0€¸`ø£\"@ZG¼) Y:S¨ê†D.S%͈’ Ð3¾à d¹ÀmÓU5‹æ¬ó<£SÒSZ3â%r “ÎãÆ{óe3Cu6³o73î—³ÀdÀL\"àc7ÄLN ÜY Ê÷k‘>²Ž‚Ç.æpäì2øQôÐ÷“¼åÓ3ÀVذWBðDtCq#C@½I”P÷DT_D´:ÔQ<”UF²=’1ô@\$‚‰6Â<cÆrÅf%Ô¬,|“27#w7ÌTq´6sþl-1cPÕmðqªÊ\n@ÊàŠ5\0P!`\\\r@Þ\"CÆ-\0RRˆtFH8µ|NíÆ-€Ædòg€‡Ò\rÀ¾)FÆ*h—`ö €CK4Ã1‹ÊkMKCRf@w4BßJÁ2\"䌴Ó\r1Q4É2,\"ô¤'¼êx§Œy—R‚%RÄ“SÓ5K”¦IFz #XP‡>¨âfÉ-WX\ršÜê¤pU´ÕDÔt&7@¶ÂÑô?’©ÀÑ ªµ£}O1½2†‡2Õ#UK*¤)ô긋Œ0o<> ]HŽš„Æ¿rè›LGNª›ê˜W%–™M^’Õ9X:ÕÉ¥N”òÕêÔséE¥@xy’(HêÆ™Md×5<52B– ð–k!>\r^J`‹IžS N¡¥4'Æš*œ*`ø>€—`|¢0,™DJ£Fxbèµí4lTØ•û[¨§[é•\\‡¦¨Ô –\\{Ò6\\Þ–’ öß(#mJÔ£,ý`©I³ûJ‚ÕÊÜèlß ûj…jÖŸ?Ö£kG»k¬T9ÀÛ]3ohuJ©ê¢®ÑW•\rkÕÏ)\0Ý3Õ€@xè¹,³-Ê 5B”¡¶˜=ÂÔà£#–gf¢¡&Üß·Z`ä#ÄoíæXf È\r ìJhô˜“À´5rqnzõ§sÁ,6’oÓtD´y‡äÂb´àhþ—Ctn˜9n‘ í`§X&¨\r'tpLž7²Î—¤&—¨¼l¬Z-ͬw£{r—¤@iUzM¿{rx×—mÒSBÀ\r@ H*BD.7¹(‘3XCV Ç<WÔуÝ|d‡q*@”þ@ÞÀÊ+xø÷̼`á€Ï^™Ì˜ß¬__•NDX\0Q_D]}tõYÅúp¦f€wÔÚ\"â3øz¦n«MYñùZR\0÷¬Q¤?¸{†M3†•£*×1 ,¨\"Øg*U¡*²¯ˆÌ«zÒŒW5NV2O-|€¾ÉÓñ,×]‚B×dí\rŠñ/OâtÎøÃï‚Ì0‹xƆðŽ½Ð®OCë8Þ-0Ò\r”ÿ0à·õ„@]¤XÌŠÐÎð\\\0¾0NÈï£Ñƒ4ëi¨;ƒØAtê¼8X—x¤\r†…Š“‘ìÁ‡øÝŠ×Ê7¬<ö@SlÈ'LÒø9WŽ ÊθòϬÖËì¢Íı•ùRçÌðÌ\r¾Ï ÂÏò|ÜXÐÖa÷ø7y€Ù\rwe¸Œù„Y!ƒ˜Eƒù’´šÂcRIdBOkË28[‡mÌJŒ+L ÈÅÙ¸OXpføÓ9ÑDÏ›·¦ßªw“@Ë“—Y—…¢Õ÷\\yäAcÙ£ƒXgš™%šôó’Â1“ï“j œX†9Cc݇àR¡¹‡”QFÇpdÒ= C˜÷ýš\n\r¥Õ‘ÔóšdjŽÙ«’xE¡Â2FX§¢x_¢ØÅ£Ú5£™—}q¨Åí¿¤M%¦ZM™:\nÏzWšX7¥åí¦:ÐZi¢npY;Žù>ʘí£ÙɆ:6Ú;£ZÎX0ƒ“Ì¢#ùýcàMyU…i2,q¹FËšÈbJ @ÓgGè|4ógÈÒmzWõäÊ ¬)™Èr|àX`Sc‚Õ§ÀË™„óc—¥‡û!²B²—±”»/}{4JÂ\0ÒÃn»Kuz @ÌmÚÑ®€ßyÍžÒyÖ\"º)u¹ÊÂÙã¶Yç˜s·c¶yë‘¶š‡··y¼—޹7Á|·±|—Å{Ϙ*)°Ê4Y`ϵ[v¹‡¤‡û^NX•†¸‰†ò‡W”©û·‚7†;¾_‚‹*x™ˆ¹Ú\rù߼߉xm+¾mû¨Ú™ ´»¹‹\$\n¾l˜);™²„|Ù ßÚ™¡:œNÚ :„‚Š_È8N³¸Uœ5;¨p+U–L‡ò\\‡9í¦Ùñ“›¡»ýO:I’šû zQºœ¡ƒ¡TëšÜ)ªXG¡æ»ÅJ{w8“¾ûʼn¸UÆù\$ôàÃøü›PxTY¾pjh·¾J×À›˜JÙ{‹Âð@îÇ‚³ øðZ‡ÌÙs•¹h˘ç–XÌ\0Û–lÓ–ÌàÌÈθÎçìó‚Y}˜Ÿ®ü^Ð@u2ÀSÚ#U‰ˆ;È|¼¼•¥¼™P\\ŸÊ#ùÊ|ª<®Ý\\³À›žJÛ‚,öœÀ•\\ÅÌšEÌú…‚]WÍlÁÎ,£ÍìÉ–<åÎŒÛ>YnÎ),ΙrÎüûÔ¼å—âº]Èý ª\$õÐç½Íq„DJí=•Ù÷•XI-ðÅ€äÅÌa‡llõ]\\“w(iÜCÄ׃tƒ‘<i-u[uVŽDÖ“¸Q¸€xb€kæLI.kú›@ÞÀ„ÜN‹“[ñ¼l<o=-]1`蔼ªdš ÜMÌ7‡@Û%C=]ú›êÀ/|-à܈¾ÉÞáqÃã•âíùâ*¾C¾òO~ÊQâòså`·ç(âòãDÉßɲ¿à[ãþæ>Éká¾R™uéÞ\\+>)3íûPÊßP§Óí6ÓËM%º¡¾pÔŒœÅAÐ3qmu2ÖfzƒÛ¯ì4s‹ ´í`ÛŽ‘ì°-kÊS%6\"IT5½‹~Òì\"™íÂUt_ TuvàÖ½ä¶Yw¤†0I7¤’L‡\$ú¿1Mí?íe@3Ûq{,çÀÏó\"&Vi·àžÔIŸ?¾µmõˆ™¯UWR¾´\"uiT‹‘uƒqŸj\"•GÃËõßò(™ï-½‚Byîê5øcÝõ?Œàwñ®°ëTúî’`ei¾½Jtb‰gðU‹3ËëÉå@öá~ê+¾Íï\0MïGè7`ùïÍ\0¢_Ô-ùñ?\rîVÿµ?øFOÔ6á`\no†ÏšInª¼*pà™öeÙí\"T{[Гp^÷ä\nlh@l0[/ö„poóJKÖX“ñ€ü<ª=€9{Ǿ6ç–<eßAxãÀùÇ‚¼Éá4x[ÍžLò“~>!åOQxš{ZVFÔŽ`½éÈ~Ižß–“øL)Q[ëTûôM›àþT²*BC¤~ æâ‚ä\nƒò¡gÈŅp9zKÉ–ówzO9di^›'‰+¹ßïDz4ägHAº¯Lyô¡\nr€<IêjKQó¸Snô==\r.Âo7½Êé%a;‰kÏãmX¿›Zi%P¨iÏ\r€¾ýµ/©…L`pR0¤Ž&õ—I (Øá\\.£*m„*Ž(ÚÖŽõ—\$䆯À÷\nw׊Х…8a“\n&´Â‘žÍUmª MÖ¨P+\"Ly„ó?¡M\n€2’ L\nbS ¥NäùÇr¶!w¥jw`¼Â\$îôƒráè…Êaáv±^ÃqF‰Ü6•Ó¨i*™Ÿæ„ì_xõØ\n‰fðIê:B&ù6@É“KED¡úú·QD(V`.1\0Q\$íøF¹H®’Tþ€zІ‹Ì\rªjkzM€ÐÀ®Y™À(61€”x‘+®%dj¸Æo\n¦¬\rg°ï\"ÉŒ´ˆ—?Œ1- 3hÏXÖÁ)åyjÃ5r¢N±#Q¾¼Š¸w{_þ¡øG)ÂÎÙ1i‹Ì íç¤<Z‹ºpX³¡Ö\$â?¥=%.´€Ò®&¾%\\±8w!¤µa4œ<JB[Ðĺ¦u4‡%êŠ×47‹Ä%gÑä&¸€Z(@ €E¢{@’Ð#¥–2Šh@Œ#ñŸø™ÑŸ¥£@\$8\n\0UŒìjãA(מ2ÀO€Š8Ú€ž5‘¸Œ¨@†ð&'´\n€DŽ\$i#ŽÀ#Ÿt\n PŽTs#]P* àDÌuc› PÀO|pc—øËP ÞŽ¼i#Ô}ˆæ:<ñí\0\0¥ÀˆÅ¥lo#}ÏFÜR‰Tp@„À' `Q¬ycTp(ÆŠ@€eh\0‹˜Õ8\nrx› cþ<`NŽˆã:)DY\n*Dý‘2{dZ)A‹Ú4±²¤€cZLð2ÈÊ<ñò\\Œ\$r#ˆþÆö7ñÁŽ¥°!û€´ü€Nª{O¼@\$< Ñ¢ðVƒZÒÆž52.Aù#D0 \0´ÀI¸û\"P'H ²_)¼x@Š€*úàAOh£hI)I²L1¦’ìƒäµ%áJI‚B‘þ’g¤i\"p÷§K2}’ä–Å(CËÉÍ=²t”xCøÐ&FÄ r“ÒoÙÉ@@'”ñ€% ÛHÞT±áˆ ãÔ˜:=¾)\0.ñ°]Îâ5 .ðæõ(pÈÀL!à8\0ˆ¹ éR\0L‹YaÔbkÔ°ˆ6Ä)Y·éˆî •Ô®£ h³zZ¦õ±’IgÎVO3oœLgà3ËY2ãÛ‰ÜDoPË`3̸ec-‰r7í‡2Ô—Dº‚Þç‘B¼‰Z•¼¼%å/I{MÃ\0pÐÀÌ.`äÊÝo*•Ô¯%T€ý\0 &–iR\n™+Éo€ì©–\rÀ^2q”Ë©\0\\¨I@‚ KÀ#peC*!>€/á%|È…Ì’ÁÞŽüô\$è)çÀ§1P30(\r¢+\nZÆzž„))\0*®\0kà€ÙÅ2¼–Ï…(–E86å¶s—tºf&”™Š¡´“+;”Ø76&ãK–_Ž(›9fÓ,@-ÃÉ4l\$Û‚e7\0ù±:l“LÝæM7.\0ˆ³|›ðo–JÛ©ÀÎZ³u•̺Š'Èy{ÅH,#\0vU@9!¼¥ Ñ'†¨&„òGôøß@_-Ù¿³ºt;Üê¡:©µ€²u¡<—ˆL†iÙΚ_ê€Ø£@U6°Îù#ä_€L'~ùæ/Öm`\\Të']=Iäât°Çž¸Âà)ÔÏqùsÉ9Âa<RPº|tžút&5°äs©lî@¾ ÞKÆwS®èlÍ:9úN®wSø|·göÉØOùAП<ë‰BÈ€\0/àz@´ ÍÏÁ•Òå†=?=iÞO‘ŽkÓŸ=\0E@iâÐ\$B× hO\0Á>DÖP´ó‹Uäçцj¥HìÂ9F¬BcCi‰éBwMާtÓx€PÀÙM‚?p“®=—äì8ÜÔý‘Ïlg~¨˜tÁa©€%]b\$àØ\rˆr„èÄa,6ÅtŒàW)Ž\0U¨›F˜ |æì“¢ˆvh¦Qú*¥Oƒl.C\$À\\ ÐÖRRÌ<lcù™&Cj3Ñý%ôZM¨öÀz9GpY’â¹£\0i\$Dµ‡d‡ñzt[')[)Q¤ØêÞkÁpi0·#cþ‹ôNE¨ô(ºC2L Æ@9hÑEJ5Ò,šh{&Jzö0n€vª©>[€j“£Û[œ]ƒK•ýRîJë>.;ù¨íF=RÚŒŽ<råÓM¡=—Ô’¤ÜhØ^Y\\RmnËÐð Nn*g‘¦ôÒÅB¬·5^QÒ‰@O¢°x¨¡HIÊT ´â9½)(‘œ&µ‡}A)PÊ\\/êô…_Õ!ÌH þÚ‘¥¤ù\0éBá\$z4ÓTYu‚J’v\0ꃔ¨…%@æ32\0Sôm€--Gi@¸úQÅ%Ñj©YÝ+FuzlSž—”ÜW3ØÅ·OrŠU\$EÔè;¹M©¢\\€Ô±Äu/£õjeQªš¦§,#J¡ªXPÔ<UH•TVVé#Uê™ÔUbˆOU´DZ‘⢵£Í8êÕUJuS «À‘g)XDZK‚•¢Bî\n¼@2Š©ìx@d&ü ½eÜ«Ià@ÊFwì¬8“©\$Ù'IºV‚V†U\$²ETÎ_ð*ˆd¸/áFCÓYdp§vGƒ‰3‰ ‹Ñš‹L^(ù`áj”÷2S¸ºcÛW¨ÜJQYiÖHB”£ckœRè\nþ²U\$jê\n„ZAi€î»¢U*wKDRxW‰LÂòˆ€+fÚŒ@ã¨A4¢àGz…R\n²5‚b¬\\_²Ÿ ô‡¡á0¼C@¤\$X\0+Å]¤ÑÂè\"?‡n¦€+QIj\n»x\r€ôB`S¸âM‚ÈÑûŠ\r o°@‚À6XÀ\"{±\0µãb ¯)–ÁM¨cMðW ä¶D_áαÐv@{cÐ:¤®%[%‰C²þ1¼Ù;AƈÌTn› \0º a²pážóe~ÙU5 s©V†Ýe|M9‡€9 hË@æ¦\0êÙ~É@.³ l€· Jv]©ºD§f€7¨FÌá±³ËùŒ,/+:¾‹íÚXIi\0U¢â@Nµá´\r Ê¢,².½i¶‡ª³m_ûFŒàÖõäÀYiUÔÓJ¯!©gûLj‹ãÑú¬D“iKAà6²õª-U«KfÖ_N€\0ö-3©ìÀã3+¥dãiûD \"ö¯µM¥ml‹L…XÜã㯸Œ>‹&|UÕÑõ`Ïh¾ù2¦ÑÐn6Ý…·ÉI+Øné-nDÃ×`„µ†®°É”°@ã¬B!;X™smȯ·†pC`‘p5Á°¬¡O‰%Z/Õè5”³é#CK`‚XˆªÂcb°Q#«§Qa»–Ž…ƒ¸q…èpÚÝ÷)™®G+~Û–ß÷\"ðlM_^zò©šæ!ÌÉàE«”Ð¥’®šÀ‡ïa úØp86ì„åˆn+oì’Jâ¶ö¥¾,¹¡ó‡¢ºw\n¢]̓pëŠÛRÁõ'§eÖJÕqµ'ܨ%£'€nlO‹h@>NBÈŠX5,ˆ‡‹¢ÊrGr¹ Z l\r(ªË‘jIù†±lŸ¬%b‡;s+±× ¤Wg7¨)’*e…¸1µ•ÞÑ3“L e@(»p\0 ÐÃŽèds®AñÖD\0Ã\\bD§\nuê/&1¬ÞXR×¥E楂5¡Tœ\r§}7õ§”ªîÔþ”AÙ¬áÉkâ\\–øö͵´ŸÇqà2Ü€öZ-wo´“tßZùƒ‹¯]ó-yq2j+Õ†¾Õ묀n¾XA«Û\0†\0º¾+S•+ïY6_BúV7z®nZ@̆²Ô·Æ´]´-UMJc*¢ü¸´®í¢s\"ß+\0·ï¯x´B3^«öà0\r÷ÜÀÎïÁcðÖ\\jÆÆ*¬P-\\Q8ˆÊŽ·…l•cË%XþÉVB‡}‘,€þ;(‰`*Qú \$áïÛrßÂ{ÁKøìCúÖ%¬\r¥ˆx ÞøQû…,¶Ø¾¥×/‰vàä\" pÁã¶ð~ Óáã ÅJ5eãü®Eš-^âX;c²\\©¶×¬m‹´7£?˜6C*庮†,7®HfÄ/Â9eÌ0[@ñ¤!bê®íÅþUБ=›Äi.Jocñj;ø—B³\0¼ƒï]Õ”ÑúvÙGÃÜ8àO\\\0ÀÇŠüO©›\$Ž•.& p‘\\‹H1bØpø’:F\"8Ŷ…þ‰ŠøVx©ÅýµR®–xä=À3Æf1Š+|Ò»\0ÂBÀ¼kbÌPÇLÑ’£ô\$zÌáàÎc ¢ÇÐi,Pcb,pÃn(¥Æ,¸ì`'/»~êÙkÖµ‚Îp€q-›Áȱ¹VÀÜ܆Ü\rÙž \0á‘‹dSˆÓÈÚÍ+º\"Šéˆ1\0(Ä-’Ì1~útcªþfý¸àBÛ‘b}Ø ’Ã0<1\r°¨¨L’€»\$¸ˆ2d\"1ž&ì™Æ€BóN…Ô\ràB\rrƒ«\"?vädäZá±.\".\0?wä¼9€oÃà\rÄ0¥Ñœ!¢ÍdR€‚뤶\0‘ÃÇHëÜra%ЊØ+\0yrƒH¾sÏ’4W#œ,\$èô \0„*xBó\nPÌòü|„ 8@/ \0ø2U’°ábíÝè¢ÂÎΪxÀ!¨d§°óúNÿ3SÔ?£ÑP»…€(òg\n8·‡ppŸˆü€S9õ@‘' Ç\0úyµÿ\0¦y46¡H<‚öÌ×ô\n`S’ˆ…¼ÈûCY¹’„”³jp:\0N(ÓŒáX4ŒkÌÈÓgßDy‹<–n4™£ØrS<ÒÏýˆó¯?¥\nÀÇBãúf('™Ì~dgÓ™SËÏ?<³ÓVg(1™éãæƒ2ù£ž—²)ÕôŸf`éZ€¼a“>t{ÀœÉŸô’>ñø\0ŠìPû`O¼\\sŒ<õ?4äwÞ~³ÜÇf@z™ÿÍ~hBW Ìø³á´ŠxhA¡¡ÜO'=úP֌ײÜö±ë=óúc[ysèÌûgâ|¹‹Ï掳%™Mè,Q³ÆÒ8'X žhlUs®…§Ù¢ú é4ËÃqDýÂx*8g§NLšBÈ–¨;§}%eû@YìŸv ho!\$æ›NcCXì³@Ð;YH'Á°@^ à·Rf^x„\0^osÜ_fª—“;¨Ópj]²:’Ô¤ïõ.mLêl\rš®V¨\0ó@Ü€¶Ê\"ÓÕÄ1%Œ!_êô@-]8f¤ç -Õþ±äa]Y¯WšÏˆh`(‘¬äJë@…ÁÖ\rˆ—õ€Y kB(€xÖÂ:5˜B\\QkO[:Õ0˜Â¼¡uk›X¥\\×P\0ë[öx¹ÀÅ®`ŠRIGÕÐk5°ðª§YzÍ×PÒ™¬=†l=áõÖe€\0ç•2=k` Å[K¼‡Bê½Ìû8ž¶C±Í}k«c{#ÖØ¢„ølŸdfF.̵ü-›AºÿÙ6º†K’•¤ÐÖ×Pàv„'¢lHiAÝÚ8C¶“® G„`GbyÙ¾·Í- 0•Ĭ;[*_ˆ¡ãmlH{(;Uo¶ÕÑ*Ä]Š,Ä‹åŒÖÆÈþôXË“¡80Cµ°K !N¼õÔ(I`¨³ V¾Dv½§íšwá·rpc,ðåŒÃÓ\0ää 9~s»Xn㦇¢žŸr[ec·4dçpÅi \\…Èe2âãl±ÄaZCk»gl÷bB„™¶7x%¿ê轞í€Å»Ùk`ì\nÁ(@ź«®„5åݘ¥Ïċ#t›–Ü–éãE½}Å„sñ–Lvö÷E¹ï\nQQÛ”Þæú76}õ‹Or»çj§b¯%@7‹˜àÛµßh³w͹÷n£kÙ`Víq·±Íòï³~›™ß~ø„4{Œßþå÷ë¾óË;òßï8p2mP+ dÖaX8&,=Òn›}ü!/øK&\rŠÿt´H™Ó)/øYÜ”†6@å¯=}ðŠðEU§lKÃü\\kÓb[×â1Gø®M)™J¨xXÚEïTä¾ /¸\"-‘ë…<4ßxDˆ¥ÅíÐpÄ(¼3ÞÊŸ·ß´'È+Û\$\r†¶<rí×n`H\\t\"þ¶70=ä·Y×Wéhsð\rÏw¼~°!ù0@6l‹\\† •§/þBò7’¼‰–ßÏ>Fÿ‘܉\\¶¼RÙ¾-Çn‡€þܧ\n¸?F~†œaÞ×+xÉÁýëñ¨\rœl,fúCß+Žîw•i¢GøÛËî.X!¼_à71ymÌ~ñ„œDå¦È7åÊé ÷š¼ÆåîûÅG;gówƒàb/89¯ËxÑ@!R–9¸eÍJq˜Y¼hß'3¹ÏÍĬ*÷ñXw‹Ë®^—ÛË ¾7ŸÎî5óÀûåÖ`ö:î#È+Û0˜ž·œS¯ˆ@0óo7:&~r(Z·‘G1zÐþˆ€·¢pÝÎñdNŒï“£›`ç¿/Fz@8Ñt0ŠZÌ_ ‰ªÎ0³™{Úè¿Lén•‡×‡oEËÃÑâ=rû¡‚Gj]õ H•¥›²Ò·…»ÞAf+ªÈèVº•ºmžœ7ýåßB‹ÛÓî*q‚þ}cãwس=Û„g¥»wE¢-H·°€»·¦½&Rh4—ªMêžZÕ_L½©]WV'ÁÕ¦§Íñ\"uŒ@-ÜaMÃsº@9êL:ÈÕ’]ù#‚ÝaëoybÝ\n\0[Øêrðp*}Qí‚bwßÛÓ¦?†ºâÿ;Vc¾Ê°›» «.Ûsç´¢XíÖ°ûy·R=§&d”ã·rûO«žçõ2Åj!Ïux¥ÜÎÔ§R{NÖ&øµÑ»®5ö„}£ßvyÛ°Ž1o8Z#žþ{ÛNärû½ÝÑï‡Q:BÕHzW{òïW{:ìržÞ÷ó¶}D\$§j7)àP€÷ëÁÐÝCvV¬X—¾ýdí¨D7óᮀ·¼,Ôh»÷á_ø]·^í—qσܟxO»]ïŠö¬?p{Æ\"ˆðOŠ8Qáµ?xw}ùJâ?9kâÞüx½5buÛ&÷øÏo›ÅÆ^ñ†õ¼Ÿ¬>õw“g]çíh¼#ä?+÷‹ mï(³¼¹àÿ/ngŒ é5â5<ù;‡ñüòÈ…¼Ë³½œxÍ%‡³‘;ì(³ÞVóŸ–;Çço-ìó˽ëòÿ.eänkpËÂÀ_ËFäXõ9ÓWjQ¥ÓàCBاåv3R=°ì†¦;aÙ][yËÈ»4Þ/¢|óÃ##v @_Ç}UçM>ùßÌþ1§»\rC£MúqƒCÞÄÆädĘU#[ÓɦŸm\n\\Ä\r6ô'Ï>‰ôÃiI;€R\0X€ç<rW0[ÀE°dHSèH\n^×\\”¥3ÂTû´ÀF÷xB™îÀ\$ Òi÷´-‚'ûÛÝÕ÷Xf¼}\0#ɤ 1êo·BÆ€*;Û1±(\0ø~@)ü§Òh>³ª{³â~Ûøw·ÉH/vL\n9È?doÒÑð°,‹x)#>˜#b`',úgTð¤È~¯tˆ €YÐ}Ùï°/]-'Òüž\0¾(ØÈ þñ@Ï¡î/Ÿëä…>¶Š~ðolH‹âžÜöÿ·½À/qû–DƒTúéö~¾¡o|ÓìaÉþ°°#|F8ÍûdœÏ¥ò/±|“ì¿u÷¿€Vîâ©hø\n>Û÷ÿ°{´ Þõ÷ˆýçï_{þGâ IaùE½÷&{VNñžod¡õÃFÆBÀXûï×½ÙñÀ(I¦N@Yû¿Çÿøÿ·ýÇð9»üÉ¿\n-èû{çã@RýoÛ½Ù&‘o^3Y¹÷ï»>ð¯†|”òŸø—îþ-ñóö¶ùä~åý/»ò?*ù`\nÏú?—Sæ!VùŸîÏ©óœüïîÿ>ÎèÕ¸}ïãþO⟕ü¿Å>îýRMïûºƒõãø?b@\nOÚ?þà0¯s\0ˆ¢IèÏ€’ú+èà'¾’úX¯¦À,úƒò`'¾¦óê¯Ô?€úÓñ¯å\0‚K௸¬úCéO…À2út©>¨LO¬¾¢Lïv3ŠàúÒ\0ŠÎ[ï£PΛïlë¬H\nhä²Îlr\$/Àý\0+½Øý\0 »£ž¨ ©\r@ ?Kå)<#PøÓîïs\0Žø ” ÂÎ?Kæ@Ì@\0ÃæÏꀱø\0²%,p)?#£îïÄ\$ø\niL€¦¤°3è[Ìå3˜’“îð?²¬ @Ï´O¼\0ªýö°A|P\0™ôD?²N@\$Á,£Ý/ÞÀÿ€\$B?0ýÃø\0‚\$¯²\0Vú’LhÍ…¼Žˆ èé€ùŒ£é½Ê>¤#6ý+ù€>öR:p¾>«7#÷…½\\гlΓãAoãüÉ<3lø pe#7ÚA@)À±ðü¯Ü@ÒÔ#ýAV?hýãøƒ 0*ÐZ\0“°*Ð\\AuƒüÐ_>kÃöÐb?>«ïÀ\"…½cæ©#6>ÒBÃö’Òü \"\0ž>Ü\0psÁÒ?ÛDPvA\\#þà(>Ò÷3EPŒ¿>ûÓ:Â<\n´OÅ\0ˆüd\"ï@A\0ô°AêŽûð‘Áò”ð”Â5ìÞÁÿ “ø #¿‡ ´ cþ© “þ€+´@ÃùhØ€ø÷¤€\$\0øŽ‹:M3nø’3cêÞ`ûèØÂ„ÑT+I8¿Bò3@*ÀÆÐø @'”\\pM¤8Olòüøû¯†‚»ÝM€Ÿcî#üÂíÄð7B÷h`, àâ6oŒÂ\\\\.S>¤›DÌÙCù˜ÿ0ŠË´ÐÆ£S\$2ÃòB‚ù«ù@&AŠ>ºLðkù¬4ÎAóÜ3˜÷Ô°Ð@½;öÍ>pùÐüɤ‡\r¨\n°3|Î\0\nO‹Aø:6ƒô\0¥d7à«@8ýœ%`#Ɉ[ÐÀ=ÚDåÀÐ\n°ýÌÜ3u’LãóC™¢9ÏBCÔ:`£Ž‘\$!hÚ\$Ó“;ÐêB”20uÁ[¬8°ñC× Ä<ôÃäúó篟ÃëdPŠÃß|=q€2pí€V>˜û°áÃ÷ |*1\0Âç\rÐE\0©dAov´PÎt'?d,PD*ü@ /Ÿ#6øÔCP‹BO\n¬©8Ä',5ÃÑüE€ ½ËLq\r?m¤Eq\nÂzþC@+¤är60åCê?3ß/¡Ì“ˆ\nPÜÙlHð•D—ü¯Í¤5\nóü°°ÂÆãói)D°„1(ú£Dƒï£7ƒæÏu>Üà\nà\$Aæüj4Í\0˜?ê4Áª?”ÑLK Aæ¢>Ͻ?Œü‹û€ÀqDI@³£\$;ð†D®Ž8 &¾?;°c€—ÄJØ£bÑPû¯ÐÅþ\0 ðBÅ#3í`‚øˆ)ªÁ»ÌOÐ3CMZ50âEO6èÔC¯ì\0ÂÀŒ\\\$èÍÔûp[Ð9BãíÁª#cj<‘1Ä1B;còÅDBhÔ?Ëô@`*€ƒ¬.qbÄÐøX o?;\0KÜp¤3¥8 ÐRCÌú6/®¤—ˆ\$>lͤpIÀª,!€*\0®+ÜÀ>=÷]±wÅã\nT^pgźú#ó\0ž?\$J@Ä \0*CÈ*É7Æh\nñj?“ê:pArø”]Y€’ùÔL‹ËDbÑŒàúïBÑ4d@(Dä”ÌcÀEçÛâ@>\$Òà 4¾Ø‘þц©</¶Ð?\n€/ĺ>¬gpŽ>šŒü± ¤I6i8¾;³êÃèÆ‰cÝ1¢AZ6€!Æ}<j±¤D¢¤jÉ(F’?dÀÂÅ'óêït\0†üTeÂØø´1– ú ü£þAv?lnos3˜’„50†#Æ>¼Èòœ_¯«Ûd°©¿³¬UкÁZPú©4DŽ|;Ðr£‘ÃCðñ€ˆø[9£ê¤¥ú5IÇ5²I‘É\0ûEOÜB\0{9q C‡|\"pUÇZÎPû` €²øý´GcœQCëGPúJO‹ñÂ6(ÚBïóÇz>Ú7ðÏFøöÈ0IÂ:¼vOŠÇ‘¢BÏuEäµ·,\\0ŽÇ¸r8îÂÈûqgA6>ÀýÑ74D÷0qÇG¥ûêÍ>-SE@# ÑÈÎGÒ÷¤.à*\0i\n\\-`*\0q\n\\eñ½Áÿر\"—Œ)qu¤ýÃï³nùô@`>DÔ8 \0/Ä@þ„_±Ú€¤üw#îÇlƒÒG‚>Ô„²¾-+ß6¿Wl%°6½·l0®\$5´sÔÅ&Œ\r *\0e!èrÇÿœ€qI” \"ÀæÑ> Ș3EILÅ\"‹â‰94G\$/ñ¦\0—´‚©\0¯ Ñ-2>/„ƒì倘üèÓGg\nà/¿LŒq®BP€\"#7ôzñáHMÔ…O‹ÈO\0Ì &£¶2L‘ƒÁT^P@Zúd¨À=”]Q—=çÌKCïEã\0ŒQO¢Æ\\øôs0¤¤>ƒèq—Czù¬†±—G„>¤†²¿ü ÌÄ@?Œ0Â?ü\\o¿³–èø4Md1‰9€‰\0¼ÍGò?m\rDÆÑü(Ô´LdòÃ\\KJ8\rE’Ðù-24U 0VAÛ”…R=ÈEäe£þ¤5!Ì2m³qðüÏÓAEÛô²V\$ÆüÏ•ÉâŒØÅI9Óü‘ C&ù\\GÀ)D «ü§½òü4çIç#pú«#ÆøŒ—ññCˆù\\x£ø¿C(\$òƒHÍ:NI(J\0΋ß\"w\0¿,)PØÇ¬‹íÏ‹4<þÔ!òŽ=ÞúœGošÄó‹âP‡¿6üìN±QDë\r[;‹A|KÒ'AAäP\0¥C:šÊ„̉Ñ4Åã*To‘†£ÕD˜F^ÈûÉ‘\$)Ï¢»¬\n«É’àÍ)’(Sà‰\0ò’È(ý\$:ä@à‚²Y8’‹JÐà#ÅЂë+œ¯\nQ5ß+`a+ ¸iþ`6x𑤪†è: ÚŒà.ÐT‚:‰þa˜\0øŸcv(ƒ^X¨€Â¼H˜O.\"JÊðO\rÎË>ex-¾¨J¸€èKPïû¤rÔ‚-`2²€ÜË_à7€Å-!\"JØô¶òÝJêH.²ÚËo-ø.²Ý\$ª<¸BOЀ`> ©dáµ\nêH\"ò؆o+›“§s‚Øè 3ƒ‘+¢± ©6¿/¡ƒa.Ð\r²ð†nd»²ï˨é’?ˆô£z1\0¥àð‚?‰¨ 7€ˆâà<À?âãø\$Ó\n`+Aw*MQ¼Ã<Pýo¿°?,)#P>”à€šøÌ„\0¦?jŒÞÄ“ÄVqÀ?“£ñ³\$¡ 9¯õÆ-üÄ2ŒÌIÄÐîD9̳Lg1h[ÌÛÏ1ŒÄsC1sÞ©9Lz?à LWdÈovLŠþ#ðÐ9`ͨ0æ€Þ‰É¦W·–ˆh>\0>¦¢Å/)Dáü²·Lº¢¡ÀÌÀ\$ÍaÀ†¨9*ƒ<:C+àJËìKPJ¸\"—L\\Ã*bÌò 1ÔÀä6ë4ja+\0î%Qf ;KœE¬¹ÀÔš`è> >7¦tÒHw€¾MPn3I:fàD <LÄÊRÈ'¾.\$ðíBO\\²\nû Ðø5ã86Ä̹D1‰<\r¼³\$Z…œð’ƒ„ï4Š%r̃¬²×àúÌþ\$€ƒË¶§»éo™^Ú\\°È\0øf[z“e…í6|Ö“gŒ&ñ8+M=6È5ˆ³\0Ò1Idì{™^fqd趈s7(|©tM.]HSó[€ø¬Ô ÕÍ;7yC„—šÎ¸mÎÌÞI|A‚Ê:`c †Êß8\rÒ…iÔɃ¤ßÓ@¬‚P`È~\rlËa=M3ã€áf‰<ëÀRå\0Ï!ûÀ@’ØeØ«ríÍdO‘t ¬‰T°³-æXY9A“˜:38áOÊÞadÐ¥ö’gL³fxË=4K\n&€ôu0KòͨÇ,ô³o7¤€ëĆÓ,à½Î3Ë:h|’ÎKbá)AN¬úÄ`ì€Ñ:ØÎŒ€×;´ €Í»*sI&”á«Rsµ>\rX\r!\0\nÀàBsVM63˜KâO×:Ä®ƒƒc5„× úÎæ‰X!AœQ9z%`º{:èHòºDëE€îcv!‚Î,Èôá“:Xƒ)¬(üº%˜Ë2a&Œ«,ðl3Ó8j1è|’͇É=CRrÍË<â\$óŽ\"KB3äöÁ'9…:|÷)`Oj+îÀ9 }-õSÒ>2¬ëUU5ÜôBUNàóô÷²ÑNÄäìS¾NÄüì«ÈO²äû3±KNìÐŽˆ†¨ ×@:/ç7£ÄQ†¨ç!Ô@.’(&v9ÔédÓøŒ^þ“‡’ج!ï¦[.pGc K#?¸füÐpÃe“Oæçd®€2\0k6)„,\rÿ65GmOFV™dåiÈx,ÿa=O@s³þc6…`¤Ø\rJ\0å;‰³H†(ù*ŽrÅ-Œ¾.íMÛ[ BÎ !(àóM¸LP«bUèÛpJÔ:î1úÞE“»¦º!:¢,ô:‚YB‚ò*KRÞ¤¾rÍ0جLî“a6Å;6+2Æí)èUB`JsV0È:Ô0_B14/ÎúíAOáœNeúÈ)A~\rÚÈ öÃÌ –NPów“,È´C„î3œæ®¹ÌÞ°T3öq9}SQ\$ÄãA‚P“DÐ;!:À!îæ¸YŒÐsÄÎû6Ø“ÑÑRÔŒFt›#C¨Ï€øQ\\`rXr…<í'ò×72ؼ´O-„w9Ó¤ùËb8à5€Å3{¡\0Ä7ø\ra\"ƒ\nh[j·ŸåFÛa)”Ñ+€2Ï<%’´M¢ê|®m¸|\nÀ54pˆþ &bUQ¨8\0EŽÑ¥4AAN,ËàìËFØ•To(ÉG`šO•GA›³êËGlý`:†=è\0<\0Ðëꔃ²ŒTÌNϬ=.û´ 6Ζ(ûSBİô\0,Jð?”.º(é†%“…,Ê?B.<2ðhM΃I`éÎŒá4ô¶*é˯G°ëì'ÙI¸ÛíÊÑ9š¾ôžRX—E%,O\r,ʈs³Ï*•(”}<Ú—@c©öRœj]Dþ`UR÷γ,˜.²÷·d£¥rø¦’ \\·N•ÒÆl¸ÀØRÏ-󓴵˚Üëkô·Q•K„½”¹,ƒIå.ÒíÒêšT·@1\0ÉK 4¼Òý/]04¾K›K\nC¨&•F,¶ô³SF0“ÔµS.-´ÉÊéKÅ2ÔÀRÏLe'ÀìÓ7L…0”ÏËoKõ3TËS.å4T‘:X̾4‰Î9/:WRò9.Í62ôËËJ6ÀŽS .ðc´¡Sv^ 0®»ËèO|L±MD%3î 4z3Id\n»ö•áú#tPq5h{!7Z‘Û»2 „ÆthÊ !îK€Ñ7YÝó1S³<»áh‹µ©½Ç-<ÎÍpÆø€jéÍÖà<4øÓ¹O˜%@‰OKBø°ôS¶!10Ô‡SÚÒëôõ‚YF…?UR4ÏÁ›ÓÜÇ!•õŒ~ÂXl´=¨ÇH|¶5QHýC&¸\"1M'µ8¯5a`Å?¢SPlõ`0—\\ÝmËÈTM,8'1eQaA& \nÇTRèI¡ÑGÌ¿´ýÍZxôâ6yQôôñ¼aÀJÀ‹¼üûkU&ÿOXHá‚ÔphQEN†â=Cµ\"ˆLÉ›( ÚçQe@\0;ÐñQ®ÓPÔÅD\"€/—ú\rB༖tãµTžì\r<eÐÔeS}Om¾—EPP\rüÓ«P5B•4U\rR==õBSÏR}Hã“Tè#µE\0Îô¥U‚=QE‚J<ýSð` Û‚¼1x\0ãU:óéOá/‚¼€+µN J`P!t8Õ\rT¥µ7 SõR58\nc>ÇÆºÈâ!ÊõŒ1{ÀúÓ¼uE€ÚM4{Ö”4TÞíGa;Ž|ðñà5\"SÎÕýNkSä8»DÄÔ?JcU0Õ¯RtB¸{ð5qSåB„Ï,±\0ÆpÐàÔj†!‡\0006K¼1å ƒX@¦D¨Vå_ .Ô(¥_`-Öð`ÆD¼àua .‹•X\rFÃÕöðõRõ…ÐFD½•‚S÷RxhÁª<mXjïbÖWù_G\nVšÄ©èS¸ï\00074Ù\0ÒLRÁ\$QíX›pˆÄÓðù ×ê\$°Nó¡Ö&83&a+²€|l³Õ‰ÏÉQsÀA£…CXšú]Î_X]‚\0á+8+UzƒsRPΨQ\0Ü\08Õ™PóOÝMU¶ÔH6!ªVX¤5†˜X…a¤ÇV/kÓVF”ý`‰TŸZ\0D5FÑOS½nákÖóTMSÕ¾U\rTMZÒºBðÍìoÓîÜEgÿWGµfµÅ„-YÁ(µ}V7T0BÀ©œ4Úð’Âòƒ[9‘5ÖX´åm¯ÿXhét>×LU`4\nÍŒTÑõ††o9vÓ×FÊUm®Ö\"ýu†DÕ€ \rw+Ö˜\r`©V(ýVÏãPËÆÓjô]Kâœ4°ìoT.\$mDĵ¶ S’à‚e@3ÿ×;@7mŒ:È륥“´dðÈ!õâ¥Zð£ôá»Q[œåõÑ5P•µ7;Sôº/BÖ!McÃG¹ÉT»Wõå(V–ÖÔò䯕<7ó[lÓt…‡^Êô×ø\ri0ÁPÕÐÍa£|VX‰•á̃a[x9Hˆõ]¿õ¬^&m¹‚¼ƒÒ¤ù\0ÙXl㤫Ìú•‚•Þ€»T‹ÐáOXl0£öØ(ô,Ï`€ØoaÈÕu€×ø3½‡U#Îô'0+Ó½8ñ]HT!XX\ryW@è¡\$ÛMQb¹‘-ä)ÓX oõ†‚\n|Å`-qÎ-bÙ¶U‘VcŠÇÒÖ ‘3N=5vAg\rýŒÀ8<IGPBÔ9O^8. Xk®ö;+\"Cµü×Z/åÂUUo[i`Ö\$×ïd].âÙ(s¼Ñå“ÔèÕ`-•Öâ½€óqªûe‘-ÂN¿=#[ÖMÙPè…ÅÑO^(B †”6ÍÏ_u–¶2:0mx Yg^5”-‘YG8”´AØÝc¯VVßÉdô6Í\">\raè™^íÈЮ0õ\"䱿R¤¬–,·3Dä¯Åøß¡2iGÈ5§Í?:\rT!ƒwg„óM[7;[v{ÖªCs\rU9d×`ØÈyh\0h@ØÈ~ŸqT4Ì×_QVÍvÃø•F5ÔPƒs*ÄMc]Ió9Ú1T0m†V)S•ÓXÖ[üâÍ*Œ¨c“dA+Œ1hóbõ:×IhõM@Ýs>P¬ÛÍÞ9ûvuTË>¥Ž‚Ö½` O5ÙccÛÍöjÏ?QëTmq\$¼¹—=(VÏ6F\rTr¶®~¥šÃ\0Ø|m•CÚ)[Õ‚N¨ÖÆ,dÐ+;µQm™-Ňðê\$µo²B-žsšÚÇRˆÕàN›:’È/8‰>øb.°Û40>‡ÆÚñ,‹.tÚºJ¶\rÛ\rk®•6Û WMmØ3[Ñx5œËêqÕÉÑìLb´6Í;`•Lm‹ÿ4•Iµ6^d!5`7¤:aOÕh4õµÀÐ-3üÒHÈUm˜€¶Ú’³^_ÀÔNTê±²[PHðÙØa=UH\rE µ\rjM¶•”SåPsN6ºMXQ 5Œæ Ã\r’ÛYKqsþ[¾s-\0Öé®ï]¼aN³d5?ó+—Cf¼ÍÀRe^ø+@Ø[ÓP€5ËÐGa‹öôÒµoM@w\0QyoKŽõUÛøe}¼Õ[¶_oK’Ž@Ûán»wxVýpEºäùPuo5öR“ñ8c·.¥ Uo5Áw\0ò\n(%ÓNp¤ëVÖ®ˆJàˆ AqtÏ×Zæ#Õˆ³òÜk6””ÜiEÜØV‹R{qü×fØ{3l@äPqH‹r!VS]úÈ6¥Ú'q«Ð@>R=E\0ùêSñ+UjõÊ”øYÓ[źuUÕ¸Õ»rÌÜÇp»6Öõs]h'tË mJ ¬8ñQUUuD’m2z›Ð„àˆB¡K”ßÜÝv'P¿l]AAfËchÈ\"RåV«p´ÓXÌü;UË5öÜŽÆåÒcƒÖ°zPTuUQYëõíZ¯5åU¹…ýJen5ÀÜnÞÕovÅs=Hu½ÙÅZõoa‚itÝoUÀÚ»uuH5nÝ=jSÐÀUPZMNÄàˆÿQmobF·A>´]i\\¨G\rTŸvÏÖ‚Ôâ\"•Ä2Ø×v4γ=]¶2åz\n=:¢\rh*s¯×fÅÓw_ÔäÊUt8Å[Ý„8]Ÿ+=•ÐëGÕ×7z=n…Û—JÝòßuè8|«Å4u]ô caÈÝzà×€YwíÊt]ܪÔÕáÅä^€ˆÎrÌÞ)w]Œ%‚i,˜¦õí¤e}w—0<Õ3ÕäµnÛLr½å.³Ýiy-Þ7(K&‡\r_;f‰[̈\\\rXÃ+Hï…çÔøa=ܳbÞnôc€ ,c’!£Õ8\$m“VõvRæJ]g -†W¹OsˆôŽƒR( êÞ5]WHVC\\5@DÝ!s%Î’²^×sdñ%NÐÞ9úÈ7·Öƒ{U™¡+ÜÙI-îÕ¼€ïP\0\"FЈS5…ÒFÞÏ[Òâµz¶Åsk(7ÄEz•Ÿ÷ÇÖ1-å@Ýxñ̹Ú>M³g‡ïWM£âjÔ»n\nÈ ƒ^«tLµ·ÓUc}AÃVRÜúõ™@;ÕX-<sÔ<×t…¹C8^!P}Ì3q´d·\\ζLÄ3uÀÖúÛû\\-\rSlX{sàLÅNlÙåïL™ßŸnà‹¶&ZÅpút6_[\r±¢°¬ƒVÅV÷è„C~ÈIªE…?W%üUöÜ«u…[ÓATAW\rü÷•¦\rdáwøßÅV½ÛkÝù¶þÏh,8£ÅŠÏ”Üí×D×ÈØ»¦Ë|añ¸6-_1O×Ã`j…ýo?7>\nÀXsôY‘nã^cÑÙ{jÈ7®ÚÄÚÊ:ÈÜ]E\"JVJe~×.ÙQHgžT3r…cÆÙVßBceø“3e^Õ€…9®8¤\nò ™Zð(ä䇪½ ;tæzôãÕ# üq#à\0V.\nÂS/DkÈ");}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&ٜƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function |
|
14 | -connection(){global$e;return$e;}function |
|
15 | -adminer(){global$b;return$b;}function |
|
16 | -idf_unescape($Jc){$fd=substr($Jc,-1);return |
|
17 | -str_replace($fd.$fd,$fd,substr($Jc,1,-1));}function |
|
18 | -escape_string($X){return |
|
19 | -substr(q($X),1,-1);}function |
|
20 | -number($X){return |
|
21 | -preg_replace('~[^0-9]+~','',$X);}function |
|
22 | -remove_slashes($Me,$oc=false){if(get_magic_quotes_gpc()){while(list($z,$X)=each($Me)){foreach($X |
|
23 | -as$Zc=>$W){unset($Me[$z][$Zc]);if(is_array($W)){$Me[$z][stripslashes($Zc)]=$W;$Me[]=&$Me[$z][stripslashes($Zc)];}else$Me[$z][stripslashes($Zc)]=($oc?$W:stripslashes($W));}}}}function |
|
24 | -bracket_escape($Jc,$_a=false){static$mg=array(':'=>':1',']'=>':2','['=>':3');return |
|
25 | -strtr($Jc,($_a?array_flip($mg):$mg));}function |
|
26 | -charset($e){return(version_compare($e->server_info,"5.5.3")>=0?"utf8mb4":"utf8");}function |
|
27 | -h($Gf){return |
|
28 | -str_replace("\0","�",htmlspecialchars($Gf,ENT_QUOTES,'utf-8'));}function |
|
29 | -nbsp($Gf){return(trim($Gf)!=""?h($Gf):" ");}function |
|
30 | -nl_br($Gf){return |
|
31 | -str_replace("\n","<br>",$Gf);}function |
|
32 | -checkbox($F,$Y,$Na,$dd="",$Xd="",$Ra=""){$K="<input type='checkbox' name='$F' value='".h($Y)."'".($Na?" checked":"").($Xd?' onclick="'.h($Xd).'"':'').">";return($dd!=""||$Ra?"<label".($Ra?" class='$Ra'":"").">$K".h($dd)."</label>":$K);}function |
|
33 | -optionlist($be,$qf=null,$Eg=false){$K="";foreach($be |
|
34 | -as$Zc=>$W){$ce=array($Zc=>$W);if(is_array($W)){$K.='<optgroup label="'.h($Zc).'">';$ce=$W;}foreach($ce |
|
35 | -as$z=>$X)$K.='<option'.($Eg||is_string($z)?' value="'.h($z).'"':'').(($Eg||is_string($z)?(string)$z:$X)===$qf?' selected':'').'>'.h($X);if(is_array($W))$K.='</optgroup>';}return$K;}function |
|
36 | -html_select($F,$be,$Y="",$Wd=true){if($Wd)return"<select name='".h($F)."'".(is_string($Wd)?' onchange="'.h($Wd).'"':"").">".optionlist($be,$Y)."</select>";$K="";foreach($be |
|
37 | -as$z=>$X)$K.="<label><input type='radio' name='".h($F)."' value='".h($z)."'".($z==$Y?" checked":"").">".h($X)."</label>";return$K;}function |
|
38 | -select_input($wa,$be,$Y="",$_e=""){return($be?"<select$wa><option value=''>$_e".optionlist($be,$Y,true)."</select>":"<input$wa size='10' value='".h($Y)."' placeholder='$_e'>");}function |
|
39 | -confirm(){return" onclick=\"return confirm('".'Are you sure?'."');\"";}function |
|
40 | -print_fieldset($u,$kd,$Mg=false,$Xd=""){echo"<fieldset><legend><a href='#fieldset-$u' onclick=\"".h($Xd)."return !toggle('fieldset-$u');\">$kd</a></legend><div id='fieldset-$u'".($Mg?"":" class='hidden'").">\n";}function |
|
41 | -bold($Ga,$Ra=""){return($Ga?" class='active $Ra'":($Ra?" class='$Ra'":""));}function |
|
42 | -odd($K=' class="odd"'){static$t=0;if(!$K)$t=-1;return($t++%2?$K:'');}function |
|
43 | -js_escape($Gf){return |
|
44 | -addcslashes($Gf,"\r\n'\\/");}function |
|
45 | -json_row($z,$X=null){static$pc=true;if($pc)echo"{";if($z!=""){echo($pc?"":",")."\n\t\"".addcslashes($z,"\r\n\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'undefined');$pc=false;}else{echo"\n}\n";$pc=true;}}function |
|
46 | -ini_bool($Nc){$X=ini_get($Nc);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function |
|
47 | -sid(){static$K;if($K===null)$K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$K;}function |
|
48 | -set_password($Jg,$O,$V,$we){$_SESSION["pwds"][$Jg][$O][$V]=($_COOKIE["adminer_key"]&&is_string($we)?array(encrypt_string($we,$_COOKIE["adminer_key"])):$we);}function |
|
49 | -get_password(){$K=get_session("pwds");if(is_array($K))$K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false);return$K;}function |
|
50 | -q($Gf){global$e;return$e->quote($Gf);}function |
|
51 | -get_vals($I,$c=0){global$e;$K=array();$J=$e->query($I);if(is_object($J)){while($L=$J->fetch_row())$K[]=$L[$c];}return$K;}function |
|
52 | -get_key_vals($I,$f=null,$cg=0){global$e;if(!is_object($f))$f=$e;$K=array();$f->timeout=$cg;$J=$f->query($I);$f->timeout=0;if(is_object($J)){while($L=$J->fetch_row())$K[$L[0]]=$L[1];}return$K;}function |
|
53 | -get_rows($I,$f=null,$k="<p class='error'>"){global$e;$eb=(is_object($f)?$f:$e);$K=array();$J=$eb->query($I);if(is_object($J)){while($L=$J->fetch_assoc())$K[]=$L;}elseif(!$J&&!is_object($f)&&$k&&defined("PAGE_HEADER"))echo$k.error()."\n";return$K;}function |
|
54 | -unique_array($L,$w){foreach($w |
|
55 | -as$v){if(preg_match("~PRIMARY|UNIQUE~",$v["type"])){$K=array();foreach($v["columns"]as$z){if(!isset($L[$z]))continue |
|
56 | -2;$K[$z]=$L[$z];}return$K;}}}function |
|
57 | -escape_key($z){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$z,$C))return$C[1].idf_escape(idf_unescape($C[2])).$C[3];return |
|
58 | -idf_escape($z);}function |
|
59 | -where($Z,$m=array()){global$e,$y;$K=array();foreach((array)$Z["where"]as$z=>$X){$z=bracket_escape($z,1);$c=escape_key($z);$K[]=$c.(($y=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$X))||$y=="mssql"?" LIKE ".q(addcslashes($X,"%_\\")):" = ".unconvert_field($m[$z],q($X)));if($y=="sql"&&preg_match('~char|text~',$m[$z]["type"])&&preg_match("~[^ -@]~",$X))$K[]="$c = ".q($X)." COLLATE ".charset($e)."_bin";}foreach((array)$Z["null"]as$z)$K[]=escape_key($z)." IS NULL";return |
|
60 | -implode(" AND ",$K);}function |
|
61 | -where_check($X,$m=array()){parse_str($X,$Ma);remove_slashes(array(&$Ma));return |
|
62 | -where($Ma,$m);}function |
|
63 | -where_link($t,$c,$Y,$Yd="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($c)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$Yd:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function |
|
64 | -convert_fields($d,$m,$N=array()){$K="";foreach($d |
|
65 | -as$z=>$X){if($N&&!in_array(idf_escape($z),$N))continue;$ua=convert_field($m[$z]);if($ua)$K.=", $ua AS ".idf_escape($z);}return$K;}function |
|
66 | -cookie($F,$Y,$nd=2592000){global$ba;$pe=array($F,(preg_match("~\n~",$Y)?"":$Y),($nd?time()+$nd:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$pe[]=true;return |
|
67 | -call_user_func_array('setcookie',$pe);}function |
|
68 | -restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function |
|
69 | -stop_session(){if(!ini_bool("session.use_cookies"))session_write_close();}function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]];}function |
|
70 | -set_session($z,$X){$_SESSION[$z][DRIVER][SERVER][$_GET["username"]]=$X;}function |
|
71 | -auth_url($Jg,$O,$V,$i=null){global$Eb;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($Eb))."|username|".($i!==null?"db|":"").session_name()),$C);return"$C[1]?".(sid()?SID."&":"").($Jg!="server"||$O!=""?urlencode($Jg)."=".urlencode($O)."&":"")."username=".urlencode($V).($i!=""?"&db=".urlencode($i):"").($C[2]?"&$C[2]":"");}function |
|
72 | -is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function |
|
73 | -redirect($B,$D=null){if($D!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($B!==null?$B:$_SERVER["REQUEST_URI"]))][]=$D;}if($B!==null){if($B=="")$B=".";header("Location: $B");exit;}}function |
|
74 | -query_redirect($I,$B,$D,$Ue=true,$cc=true,$ic=false,$bg=""){global$e,$k,$b;if($cc){$Cf=microtime(true);$ic=!$e->query($I);$bg=format_time($Cf);}$Bf="";if($I)$Bf=$b->messageQuery($I,$bg);if($ic){$k=error().$Bf;return |
|
75 | -false;}if($Ue)redirect($B,$D.$Bf);return |
|
76 | -true;}function |
|
77 | -queries($I){global$e;static$Pe=array();static$Cf;if(!$Cf)$Cf=microtime(true);if($I===null)return |
|
78 | -array(implode("\n",$Pe),format_time($Cf));$Pe[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$e->query($I);}function |
|
79 | -apply_queries($I,$S,$Yb='table'){foreach($S |
|
80 | -as$Q){if(!queries("$I ".$Yb($Q)))return |
|
81 | -false;}return |
|
82 | -true;}function |
|
83 | -queries_redirect($B,$D,$Ue){list($Pe,$bg)=queries(null);return |
|
84 | -query_redirect($Pe,$B,$D,$Ue,false,!$Ue,$bg);}function |
|
85 | -format_time($Cf){return |
|
86 | -sprintf('%.3f s',max(0,microtime(true)-$Cf));}function |
|
87 | -remove_from_uri($oe=""){return |
|
88 | -substr(preg_replace("~(?<=[?&])($oe".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function |
|
89 | -pagination($G,$nb){return" ".($G==$nb?$G+1:'<a href="'.h(remove_from_uri("page").($G?"&page=$G".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($G+1)."</a>");}function |
|
90 | -get_file($z,$ub=false){$mc=$_FILES[$z];if(!$mc)return |
|
91 | -null;foreach($mc |
|
92 | -as$z=>$X)$mc[$z]=(array)$X;$K='';foreach($mc["error"]as$z=>$k){if($k)return$k;$F=$mc["name"][$z];$jg=$mc["tmp_name"][$z];$fb=file_get_contents($ub&&preg_match('~\\.gz$~',$F)?"compress.zlib://$jg":$jg);if($ub){$Cf=substr($fb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Cf,$af))$fb=iconv("utf-16","utf-8",$fb);elseif($Cf=="\xEF\xBB\xBF")$fb=substr($fb,3);$K.=$fb."\n\n";}else$K.=$fb;}return$K;}function |
|
93 | -upload_error($k){$wd=($k==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($k?'Unable to upload a file.'.($wd?" ".sprintf('Maximum allowed file size is %sB.',$wd):""):'File does not exist.');}function |
|
94 | -repeat_pattern($ye,$ld){return |
|
95 | -str_repeat("$ye{0,65535}",$ld/65535)."$ye{0,".($ld%65535)."}";}function |
|
96 | -is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$X));}function |
|
97 | -shorten_utf8($Gf,$ld=80,$Kf=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$ld).")($)?)u",$Gf,$C))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$ld).")($)?)",$Gf,$C);return |
|
98 | -h($C[1]).$Kf.(isset($C[2])?"":"<i>...</i>");}function |
|
99 | -format_number($X){return |
|
100 | -strtr(number_format($X,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function |
|
101 | -friendly_url($X){return |
|
102 | -preg_replace('~[^a-z0-9_]~i','-',$X);}function |
|
103 | -hidden_fields($Me,$Kc=array()){while(list($z,$X)=each($Me)){if(!in_array($z,$Kc)){if(is_array($X)){foreach($X |
|
104 | -as$Zc=>$W)$Me[$z."[$Zc]"]=$W;}else |
|
105 | -echo'<input type="hidden" name="'.h($z).'" value="'.h($X).'">';}}}function |
|
106 | -hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function |
|
107 | -table_status1($Q,$jc=false){$K=table_status($Q,$jc);return($K?$K:array("Name"=>$Q));}function |
|
108 | -column_foreign_keys($Q){global$b;$K=array();foreach($b->foreignKeys($Q)as$n){foreach($n["source"]as$X)$K[$X][]=$n;}return$K;}function |
|
109 | -enum_input($U,$wa,$l,$Y,$Sb=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$rd);$K=($Sb!==null?"<label><input type='$U'$wa value='$Sb'".((is_array($Y)?in_array($Sb,$Y):$Y===0)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($rd[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Na=(is_int($Y)?$Y==$t+1:(is_array($Y)?in_array($t+1,$Y):$Y===$X));$K.=" <label><input type='$U'$wa value='".($t+1)."'".($Na?' checked':'').'>'.h($b->editVal($X,$l)).'</label>';}return$K;}function |
|
110 | -input($l,$Y,$q){global$e,$tg,$b,$y;$F=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($Y)&&!$q){$ta=array($Y);if(version_compare(PHP_VERSION,5.4)>=0)$ta[]=JSON_PRETTY_PRINT;$Y=call_user_func_array('json_encode',$ta);$q="json";}$cf=($y=="mssql"&&$l["auto_increment"]);if($cf&&!$_POST["save"])$q=null;$xc=(isset($_GET["select"])||$cf?array("orig"=>'original'):array())+$b->editFunctions($l);$wa=" name='fields[$F]'";if($l["type"]=="enum")echo |
|
111 | -nbsp($xc[""])."<td>".$b->editInput($_GET["edit"],$l,$wa,$Y);else{$pc=0;foreach($xc |
|
112 | -as$z=>$X){if($z===""||!$X)break;$pc++;}$Wd=($pc?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($pc > f.selectedIndex) f.selectedIndex = $pc;\" onkeyup='keyupChange.call(this);'":"");$wa.=$Wd;$Cc=(in_array($q,$xc)||isset($xc[$q]));echo(count($xc)>1?"<select name='function[$F]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($xc,$q===null||$Cc?$q:"")."</select>":nbsp(reset($xc))).'<td>';$Pc=$b->editInput($_GET["edit"],$l,$wa,$Y);if($Pc!="")echo$Pc;elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$rd);foreach($rd[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Na=(is_int($Y)?($Y>>$t)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$F][$t]' value='".(1<<$t)."'".($Na?' checked':'')."$Wd>".h($b->editVal($X,$l)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$F'$Wd>";elseif(($Zf=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$Y)){if($Zf&&$y!="sqlite")$wa.=" cols='50' rows='12'";else{$M=min(12,substr_count($Y,"\n")+1);$wa.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$wa>".h($Y).'</textarea>';}elseif($q=="json")echo"<textarea$wa cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';else{$yd=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$C)?((preg_match("~binary~",$l["type"])?2:1)*$C[1]+($C[3]?1:0)+($C[2]&&!$l["unsigned"]?1:0)):($tg[$l["type"]]?$tg[$l["type"]]+($l["unsigned"]?0:1):0));if($y=='sql'&&$e->server_info>=5.6&&preg_match('~time~',$l["type"]))$yd+=7;echo"<input".((!$Cc||$q==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($Y)."'".($yd?" maxlength='$yd'":"").(preg_match('~char|binary~',$l["type"])&&$yd>20?" size='40'":"")."$wa>";}}}function |
|
113 | -process_input($l){global$b;$Jc=bracket_escape($l["field"]);$q=$_POST["function"][$Jc];$Y=$_POST["fields"][$Jc];if($l["type"]=="enum"){if($Y==-1)return |
|
114 | -false;if($Y=="")return"NULL";return+$Y;}if($l["auto_increment"]&&$Y=="")return |
|
115 | -null;if($q=="orig")return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false);if($q=="NULL")return"NULL";if($l["type"]=="set")return |
|
116 | -array_sum((array)$Y);if($q=="json"){$q="";$Y=json_decode($Y,true);if(!is_array($Y))return |
|
117 | -false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$mc=get_file("fields-$Jc");if(!is_string($mc))return |
|
118 | -false;return |
|
119 | -q($mc);}return$b->processInput($l,$Y,$q);}function |
|
120 | -fields_from_edit(){global$j;$K=array();foreach((array)$_POST["field_keys"]as$z=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$z];$_POST["fields"][$X]=$_POST["field_vals"][$z];}}foreach((array)$_POST["fields"]as$z=>$X){$F=bracket_escape($z,1);$K[$F]=array("field"=>$F,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($z==$j->primary),);}return$K;}function |
|
121 | -search_tables(){global$b,$e;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$uc=false;foreach(table_status('',true)as$Q=>$R){$F=$b->tableName($R);if(isset($R["Engine"])&&$F!=""&&(!$_POST["tables"]||in_array($Q,$_POST["tables"]))){$J=$e->query("SELECT".limit("1 FROM ".table($Q)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($Q),array())),1));if(!$J||$J->fetch_row()){if(!$uc){echo"<ul>\n";$uc=true;}echo"<li>".($J?"<a href='".h(ME."select=".urlencode($Q)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$F</a>\n":"$F: <span class='error'>".error()."</span>\n");}}}echo($uc?"</ul>":"<p class='message'>".'No tables.')."\n";}function |
|
122 | -dump_headers($Ic,$Ed=false){global$b;$K=$b->dumpHeaders($Ic,$Ed);$me=$_POST["output"];if($me!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Ic).".$K".($me!="file"&&!preg_match('~[^0-9a-z]~',$me)?".$me":""));session_write_close();ob_flush();flush();return$K;}function |
|
123 | -dump_csv($L){foreach($L |
|
124 | -as$z=>$X){if(preg_match("~[\"\n,;\t]~",$X)||$X==="")$L[$z]='"'.str_replace('"','""',$X).'"';}echo |
|
125 | -implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$L)."\r\n";}function |
|
126 | -apply_sql_function($q,$c){return($q?($q=="unixepoch"?"DATETIME($c, '$q')":($q=="count distinct"?"COUNT(DISTINCT ":strtoupper("$q("))."$c)"):$c);}function |
|
127 | -get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir'))$K=sys_get_temp_dir();else{$nc=@tempnam("","");if(!$nc)return |
|
128 | -false;$K=dirname($nc);unlink($nc);}}return$K;}function |
|
129 | -password_file($g){$nc=get_temp_dir()."/adminer.key";$K=@file_get_contents($nc);if($K||!$g)return$K;$p=@fopen($nc,"w");if($p){chmod($nc,0660);$K=rand_string();fwrite($p,$K);fclose($p);}return$K;}function |
|
130 | -rand_string(){return |
|
131 | -md5(uniqid(mt_rand(),true));}function |
|
132 | -select_value($X,$A,$l,$ag){global$b,$ba;if(is_array($X)){$K="";foreach($X |
|
133 | -as$Zc=>$W)$K.="<tr>".($X!=array_values($X)?"<th>".h($Zc):"")."<td>".select_value($W,$A,$l,$ag);return"<table cellspacing='0'>$K</table>";}if(!$A)$A=$b->selectLink($X,$l);if($A===null){if(is_mail($X))$A="mailto:$X";if($Oe=is_url($X))$A=(($Oe=="http"&&$ba)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$X:"https://www.adminer.org/redirect/?url=".urlencode($X));}$K=$b->editVal($X,$l);if($K!==null){if($K==="")$K=" ";elseif(!is_utf8($K))$K="\0";elseif($ag!=""&&is_shortable($l))$K=shorten_utf8($K,max(0,+$ag));else$K=h($K);}return$b->selectVal($K,$A,$l,$X);}function |
|
134 | -is_mail($Pb){$va='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Db='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$ye="$va+(\\.$va+)*@($Db?\\.)+$Db";return |
|
135 | -is_string($Pb)&&preg_match("(^$ye(,\\s*$ye)*\$)i",$Pb);}function |
|
136 | -is_url($Gf){$Db='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($Db?\\.)+$Db(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Gf,$C)?strtolower($C[1]):"");}function |
|
137 | -is_shortable($l){return |
|
138 | -preg_match('~char|text|lob|geometry|point|linestring|polygon|string~',$l["type"]);}function |
|
139 | -count_rows($Q,$Z,$Vc,$s){global$y;$I=" FROM ".table($Q).($Z?" WHERE ".implode(" AND ",$Z):"");return($Vc&&($y=="sql"||count($s)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$s).")$I":"SELECT COUNT(*)".($Vc?" FROM (SELECT 1$I$zc) x":$I));}function |
|
140 | -slow_query($I){global$b,$T;$i=$b->database();$cg=$b->queryTimeout();if(support("kill")&&is_object($f=connect())&&($i==""||$f->select_db($i))){$bd=$f->result("SELECT CONNECTION_ID()");echo'<script type="text/javascript"> |
|
9 | +*/error_reporting(6135); $oc = !preg_match('~^(unsafe_raw)?$~', ini_get("filter.default")); if ($oc || ini_get("filter.default_flags")) {foreach (array('_GET', '_POST', '_COOKIE', '_SERVER')as$X) {$yg = filter_input_array(constant("INPUT$X"), FILTER_UNSAFE_RAW); if ($yg)$$X = $yg; }}if (function_exists("mb_internal_encoding"))mb_internal_encoding("8bit"); if (isset($_GET["file"])) {if ($_SERVER["HTTP_IF_MODIFIED_SINCE"]) {header("HTTP/1.1 304 Not Modified"); exit; }header("Expires: " . gmdate("D, d M Y H:i:s", time() + 365 * 24 * 60 * 60) . " GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); if ($_GET["file"] == "favicon.ico") {header("Content-Type: image/x-icon"); echo |
|
10 | +lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0"); }elseif ($_GET["file"] == "default.css") {header("Content-Type: text/css; charset=utf-8"); echo |
|
11 | +lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8У’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤ l^íZ6˜ej…Á³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxlÖ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù €‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò 'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,EÍ`T¦É6Ûˆ-“Åì¾ÅÚŽT[Ѫz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø •ÿš´hìÁ{Ü£•î ËÔ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØÍ‡Ð¢©‰‚êcâ¡óB’—}Ø&`ˆîr+E“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼ ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡ ³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£Ì]6¦Þ1´!1M±¸@a´/`Û>Ù¸üߣðÕßÈÛC/ì6à´·#p@pá‘óÿ`Zÿôýchý°\0ïë\0oæ€ð4OýOøi\0-\n«îÿ/ý\0£Dð.ÿ ¾ˆ.“Ä\0fiŒÀÈ«£€˜\0Œ”IDüç\0§¬\rïý0f ßoãÿ€ÊGüˆðeJ|\r€¿ýl ¨3ê~ðiP›¦&“É¿/µ\09 ^\0r•0]¯õ ¾Â›oõŽ.ý\" °ÐÑM¥íðvÿP€ZÐÕmpËP°ùÚœÐÞ¹ïô{§†C?²ÀkŽ“Ï¼}ð®þdöïʰ~=‘.Ô- é Ðm1>hûÏÛЕ1;QI‘OPÈ\rºcßpApV«k\rQ*èQ}ÏçŸq>˜Ðu15BqQ[1fûñl«Â€apå¯ü\0Û‘*ŒJ©Q=ñãّGÜäŠÕÁ±Ÿ±_ñ—ñbŒGHF.‚0Ôø = 2P™Àó æòÏçP!ò#(3 \nÙ!1&72fª`Â/å\0°‡\"PÁUõ\$ñ\r0Ìð,QrU&2fšÒ_²Xààò]ð9\"’S'òƒ'²yð8\r¨ú§òkW)Oõ)’*Ra%ã\\i—%ò‰&Ò³+r…’3ðS`…,ñvý¦&2×L–&Pu*›-ð˜0\"Á%HĬԞïÏ@Ø“±°H‰B–P(ÃÉ\$p&ý,1M ªØÃ®;\rnÁ.¯Ê I.Õ',1ò)Ó4ý²å2°u+ó3æ `ÈSŽŠpL\nt§’_*²S3;6r'h35¤55䜋d2q+6ñ8‘O7sC\"pm8Ò³“6³—9òm\n@e0É<8B8©<,( ¨8²Û\0è Ó0šJÙ<@¦ÐI¤«ÀR6pÔmGË\"11¤6ËÐ.\"æÀ‚ï5Ì‚ûÇ:àÜ8bêA1±;ƒ';Â?<*\$È,³Ìo= òTÓÖ/3Û#«ºÒ†¬"); }elseif ($_GET["file"] == "functions.js") {header("Content-Type: text/javascript; charset=utf-8"); echo |
|
12 | +lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s> )â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n \ræs<ŒPi2INÆ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(Òm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$ CAÆ ä„¤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AKã¡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…): ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDùÑ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æÚŒÚ‡Ÿ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/ØX ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éï†PÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðÈôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEÐ€Ôøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6↬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F 4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀÎ t]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ 1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*/¹UÖVû‰¤þpì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Æ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·> —BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ ¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6Chº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ß§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)×…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üàå€ ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤ (€\r¹öGFžª@ؼÃúÙÀß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷Ƚà¸à\\P’,\"ª-rCÉrVäæY×·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê ‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rÔ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔÄ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„â¢ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ €ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;SÇ]ãñ@ËÇè:Ââ“÷I~Û‘•ÙùÒÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}Ï:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð‰)¯i4Ñu•sÁLjXÁMP¬‚^«ä5¹O’¥ bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE% dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> “ªÿ'Ó|“#hàÅœ˜6è¦\rñ.=(Ôv±…¥;`\"OøCÜ!âBŠ9ã.B!UEÌDáÄ‚d œ–€)ºKŠ Œ\0Þ» ÆmF~ B{O\0¨Ï©¡¦_éø³u#„–5 =LjÀò7´9 š6¢î£lCV‘€ŒTpÀÚ08± 1ÄÎx'0@gIw€Zã†@9ÇLᎎ\\v\0_(º\".ЯA[sÅ„ä€ê7I(azl_„EЦ<ñ€“tƒUöë7`tèÒ0ø‹(ßà3”=¦ço\$[Ìh×!¸B¦œ[HîR¶œœ) )nxaZ™#=HË8ð뛥 ”’%þ@0w5J’– ¸²A\"F:8NŠÏ\"Xù- èÔ¥?pj@)iUjƒÀ™\$Ìš-EÆ÷”E§´\n/¸œPÓB–P@y8j¾Y¼Kð³9 0ÊH€Ddš&0Œ¡èh“X \\Ñê\$Ë(ÁÐ`d\nEΤÀŽ@ÉJ“b*NRP\"(q.f#“dšGÈæD¾š¦M’n9:*€¶fÐŽt4æò:p½Mí(5%ÊQ\0e”Sb’4ú1¤ÉõeM‡),ŸR‘\"k§m?Ê\0rB¿( è\\èšÅ••de<£\\ÊBMò’i„¢L (Åh›ÚRÁ¿D›e\"r™CÊÖRä•ô¬å)9EJâQÒ˜> õO´ãí`šAÈ#®bh|HNÐ\$™%Z#˜4-® 2=ˆD‰ê„ñ\\´æ0څȆ¶õ\\’\"©aUR Ã-I¨ãk0\0ÛæÙ‚ÊÃæHýH³ ÀÎ~u”]QŽƒFš1')-¡\0'óxüeüˆÑ·ŸÌÕp\$ÆQØeaþ#\"ëRǰÀœ@\\èÂF0ѸÀÕ#\"–˜&<¬1ÎHЃÃ\" BªÂð.ˆþ#h˜ÎÃÀ/ùž…TmA[€ç\rRŒ(̼@%ÙE8ÌÂÙÐ&\$ `Eà€ŠÃ,B]À(a{„@ù6I›¢k3[ˆhÚ ìEw\0¡1®)%檘 @Úªÿ\"ˆ6ˆÙ®aJ¦I8J+4q€Úa¨±0\nBë2É—àa“!{q›•ŽŒÛ„Àgá1!9à:\0¦Š&D8|8Á\0Ë:á5P1ƒ¼›0‹ã:y„ª¨FDHÄÎUk3Á’…USLKôàfŠi‡mB¹Fk§@EPØM-ä;1ˆ¡%Òá82ls1œ´!&û5¼ÍRaÅñ—ÄÂÀú’4’ÏP%¸„eOþ/¹¨ˆ±³ÈE‰I@C=ùùMHÉÓôd°çË8@¹–à9rI¼Ð€£Š*B,› Ã^ð‘Ò\r˜Û€N猗4ˆB“™ZCXÿÂs! *@ENø)»Ð”4àa\n¨Â )¿¸˜?`+¡€&‰C01M¼SqDñ€ÞQŸBð\"ï¡ ‘‰n)ÓM¹¢!x\0€Š5Æüj3w\0⣂ð0!\$\0`a7º¨2Q¶Zì>I4ŒÖ}ÉxÑàÁ½›ÊÏÚZu¶\0´çñWÉdd4J2„†26\n À¶žÙ ŸÅ…æ€OhÜFç0Èš\0=΃š%Ù1Ú\rÊAàih@vM)’\0¼`£&Êa2ù´Kši©KðfhZUÆ\n¶‘AM(iéP€ÈW47¥|ò©ZQ†þ:¨5X>x#5†¡s=0Rªå>„“7úÓÀiü'èÙž\0Ê™£ú)`hþRÁð…š—d`œÑµM‘IQ\\V´ÞV‚ã4T²¦ÓUãåR%9F“aºhÕ47œ]Mà_`>P~_T!¡†ÑN\0ŽÎ.lÔú%ÈC(DZSþqu\0œ¸…in默2¡áÙHéqCÔM`”…AÞMqQ¢~«5p+ŠAZh¾¡3Ÿ‡Å¸\n62¸URbq%B(\nÀTØó‘œ›FåâÌð>œ8¿†GM ‹LpiÈ¢EQf‘M&•.©OQ\"=Z{µºR¥åïl¨aOêïØ«”ýk}° Á-´~+Ê`µewíWêÎT Õ¨º2ߘ’.¤1RÒH8H¤†d€Á†h@0Œ\0[€@réŸ j\"„ý¸êöOZŽ ‘1r#¬tQ@7—V5kÈ+˜ÖÉʽVlï¬ì·\r-å®–¯U„Ý\$\$XÚ¼ž4µ«äF6{à/ˆ‰Ç–P¡óZ¹s½|Œ\rcÓ€f™Á˜f¸? •_«™XՔ𰕆¬@Áë—â0nlŠÜ„Yòg:×°ËSæâä›sª~˜šâ¡9ëî×FŽt\0/Ã\nÅ0']y‰á^ŠÇ#&¹\rHœ†j‡R0ý:æ¤â‡£¦äD7J¡Ÿ~¿Ä52Éælë”D}J‡TàeΜ% ŸÕ}¸è+R#”°k3T¼Ýë¶\0rYuŒh¡‹ÞŒf¼“Þleù„ØAï1S•TØP\"±¾PhŠE¶NœÞVK`2Qò\0e©eK‡›Š>IFÜš-Ã7Sê=Ôù•BÀ¼j¢N5U÷[ñXl'\0 2¡…j\0;ªÍ‘’ìú®J\"\r4hEž±FXômRö\0Q‘Ö·*/X ”K£{hÍWÚ‘ž©”l€êm'j8€ÚŽŽ.êFˆÔsUÔ©µ\"iþ+bÒÊBÚUl1 ¬¼RCGÐ-²3Þ)3å\0ø'ÉNv?³³PeÒÔÀÂZžÕ/óiãOÝ]6b“|1T•ªÉ×jØHÚ¾×@mµà¹-k_TÃÅPè–¯\\©¬\0æÀ69¸°nU¶{‚-±Õ5Â!²“´øGª³çξ5㚺m®S Á´\$룱øm3õÙ%˜`[¯B©/ËešØÎõÉTm§i‚N›o£!âàµ.È\râ÷0¨6 ,lí¬\0äàà:&|\rÖ»\"M¯¡kw*ÛrHVó„Ü5Û‚Ãjàá „YpÒ“ÙX\råw{Uß…qÄ’Ü\$u⨞Ul{‹Û\$×¶þ5mÀ(ü`/¬¢—ù¸4/nIp–j\\-³¶ç_3\\)òës×–çW–·mçt\n†JR—D¹Ñ‚%tŠ\nÝ*‹Rzá2>²°\"®‰a²\0Ö8Š1˜Žè¤/sÄ@Û†Jì'l—Hu®k Zªç©´hÔ8§s}ÈšP§)R*“Übûe%²í·o„Ús– û2aQ¡J†©¤Õ°í‹qkÂ6g. ¼R“/({Ǥ~ÙEŒ©;ö\$ÝÓt†löÃmIêºèGR:iÕ'—àÁApªÞy€üÛDMºŽ/<¦ÜwºÁàp\rÀ\"•Âá}\0ßPS€'éŠß܆“”pý¶k`CìÜqEYÀ3Êd¡èÉ|p{ó DJ;úå÷cHTšÏWnW<)M5~ÆY2÷–t9Š©âkÞR<ý«q#\0¨ýep7Lø+Óc¾ Ú\0u\0\0®mÔW¾‘c}[* <÷ؾÎ+¢ër7Æ@+·Ô^/Ä·ûò_ÀYÆŽ¿ £/yƒ6Ù¾þ«%œXÛKRÒÚoƒÙS¯\\¾ m/ˆg³PþÉV–%D«¡GÄOiuöÝt€åN)®›Î¯&ú†ySô0jn“rrÚT”y×myˆk!É8UšøDn£Bþ\0÷l¥¨PGç.[‡z··|†8bGõx×Ñ\\s[µ#¸?>:£\0Xz f¯´ f.â£4€^ 9‡ |šË\r§·z+G¸Z¸D©È?‰5A¢„A]¹1ϱ5‹7bvæ`|1»èk.‚LUëÍÚ/`Weñ©'âàkû¹†k°ÜŸàÅÐI\0wvu‘]©-˜Ó%OÈb3ó¡j•bŠÍ™T½A%¯à&êIÊÜP£ŽcBã9Í‹{yBßLtVÖ?ØÊF:hªUd[ËÑ ük±–8OSV« káZÑ|â€*ÑU¾Gû˜-k¦&ˆÚI–‘žÈÝ”ðO9\0®€Åˆ˜ÕeQ>7ŠÉp¶e[¶<¯¿RæÝ h\$®?Ïöäúª¾AñÇ‘ÿ-×!–iÈ|¿Ö¿…ä[UγïfEƧ‘’SätF™RUÎHÁ?¡Z¡¶¨I@â¢Ã‘‚šÖEY*–½Y²‘YúÔZEÐöÂÂ=–ì:Û+Ù@¾VÐ6„·^ÃÚ½NÖ8VK2‡’ê ¼#èbÉŠ[2ç- ñ…k2&*äENškV¶2Áy¼ùW8+Öœq°Œ&9„1åøù+Z“Dªã\",¥œ““‹Êƒ#-šÉÈ4ÿ5•µ—‘cãxPŸæÌ•ÓÅlXó Ös-P”χBÂßÕkFŒ¸ÖŒ\$5m€W@º¨\0›Ò—!úÌ`@ð¼ß©²\"áOõa7œš†Ï14yo®us,|d*+É¢ee7ž<Åœó:Çߘ¸Ôá]œbg!™ùÎbsŸH\nr˜„nÕ–É@Ø@ör Ÿæâr€)0 €’à\"\0\"΀òO4]ªÞaÄH*•o–,뀬.CpÉÒÉ3>Šu©Åx5™äúž‘ Åæš³ÓÊVZ–Ò€,,\ršfáHl÷e£êè:Úe™Z@Î]ò¼½\rs@¨%Ë\"\n!ìk‰úhÊ´ËeÈ´?åÄji: ˆ>{ÉšÞËŸ½! W.ºEBV‘åË \0002Ï9©¦ËæšC¼Ñ\r4íÌûóP+.Ÿ‹=5\$KbÍÂùËh(5\0©I¤CŸèì“ U«ÅÇ4'V”°(-¢!0 À¨ÀÈ•:eñÔn¥Ã›©’:¥”-F®‚µ;/¥#”‡T<¢ÐùMVH/O¦½±´Û¹ÂûQ®€Åž4h-âDþ5ÀU€\0‚@\"€€ àFavœ@à€y ëé'‰;.HnrzxPô^€ÿ[áªûbEÐÖD;SYãåÚ Pôï :1¬ÇN‰iâ€wfíw»Ü1ÀY½¨ù™| FâDiZ×¶D|{q”RÁà0\"³Íç(åO³ÕDîƒ —z`Ò)Þ`-ˆ Ä|è5Ql_c.øküö<Ù5¤0§zÏÒ–Ñü›Ûßкe˜†dí\$’©\"þJè÷ÓSÝÑû\n\rHK¿_Ó„”tà4ç€s›A\njVð´ñŒ!oÚ[l¶œOPÀQª©¬‹wÑÓ†Q¥9ÛÑ!…5€ì¥\0¶Ym‹g„õÛ(@u¶§ƒXO_éÝa~ÉÔ&Ðó#( =:ã Ã\0½µ×k4WñÏ\0]IàŒ+šf FÕÈj¥C#Ûn7ˆ?µöô×N Ní’´)Ï&zÝŠ‹“o»Ž¿h¤·BlM½TU)5ÜËp¾t€¦µ›¥tÁä¶ùºî¨\rµV.è]û¹Í‹†Ð»¡nç†JÑív… ضï·t(ÍÉn¸Ñ»±ÝœD2)mÛž([Ïr©˜Åë³2z eŒ¿¦ñ¾=Òn*Ìvûw8ÝÄàx+§<` 2½GFííTBÛ=væh=ºì};L/wîþ÷£¿÷v[«cîØßîã÷)¦ÀnL¦*§¡¹ê¡ã7`7ôÞ‘þ÷©_øˆ\næ{˜æ‚B%Q\0ǃ@pyæ÷\0ûÁȈnè'Š^î庾&‡Ó6Þ\0•È¿‘Ôð†û»Þ̃%¾EKÔÈ;,á‰â·PeÍîl-•:ÙþïgÄKüëXTØEPVP. èP ´¼RØl²ë±sìOmtâ•êhô’ô ñÀ¬#”Uv…ϲ=}ì”a>\"‡õàÆ½Žˆøo|RØt£Më¢û<fM SòãZ˜QBà¡È*¡o^ð&ÍÞ5Æþµ€*D²QþN»\$*¦ ä¯ BrD`Íòe¡Ó=äç'¹?Ê•T MxkkÓZúŒ}Q²‰[~ùŸÕŒš(qmQ:ü{Þ‹µè¿ó×Ͳ°f}N@±lCaùðˆê\"N`ˆùAP“cÔ€V0\0ÍB’fÝÙÀž…ø„P\0Iu†5ª4›³ì÷ÿ©Ð`°:*†`þQ¢wRó(º¸éœêÆÊÉû7È»™jj÷gçdc°™ð6,É/%ñç2ç¦#³òûiÉ»8\\nϧ‘—ðqö‘SuÛ³nu4?W7\$»>-0ϵЦ-7d}y¼…[áx‡ñ~»¸0òSükó«y{!©sü°ö(@6p\$a:ʨ€Z5}\0üç]BßøŸgŒÔÀuTT\"K@€uÑþ<Ìž.ªugGø›±n¢¿ÚŠ|aâx¡ÔÀÇ窱ÿX5é‡EØõØó@tçVw¿ü?\0½ç„ruY둹Ï.Å?[ŽfèÈ9Îñ9ô3£® I\0—ذš)±OuɈz*ð’ãbí+\$Sª9ÇØ~‚vŒú}+–Ññ„«Ùtwøµ‹\0\\€"); }elseif ($_GET["file"] == "jush.js") {header("Content-Type: text/javascript; charset=utf-8"); echo |
|
13 | +lzw_decompress("v0œF£©ÌÐ==˜ÎFS ÐÊ_6MƳ˜èèr:™E‡CI´Êo:C„”Xc‚\ræØ„J(:=ŸE†¦a28¡xð¸?Ä'ƒi°SANN‘ùðxs…NBáÌVl0›ŒçS œËUl(D|Ò„çÊP¦À>šE†ã©¶yHchäÂ-3Eb“å ¸b½ßpEÁpÿ9.Š˜Ì~\nŽ?Kb±iw|È`Ç÷d.¼x8EN¦ã!”Í2™‡3©ˆá\r‡ÑYŽÌèy6GFmYŽ8o7\n\r³0¤÷\0DbcÓ!¾Q7Шd8‹Áì~‘¬N)ùEг`ôNsßð`ÆS)ÐOé—·ç/º<xÆ9Žo»ÔåµÁì3n«®2»!r¼:;ã+Â9ˆCȨ®‰Ã\n<ñ`Èó¯bè\\š?`†4\r#`È<¯BeãB#¤N Üã\r.D`¬«jê4ÿŽŽpéar°øã¢º÷>ò8Ó\$Éc ¾1Écœ ¡c êÝê{n7ÀáƒAðNÊRLi\r1À¾ø!£(æj´®+Âê62ÀXÊ8+Êâàä.\rÍÎôƒÎ!x¼åƒhù'ãâˆ6Sð\0RïÔôñOÒ\n¼…1(W0…ãœÇ7qœë:NÃE:68n+ŽäÕ´5_(®s \rã”ê‰/m6PÔ@ÃEQàÄ9\n¨V-‹Áó\"¦.:åJÏ8weÎq½|؇³XÐ]µÝY XÁeåzWâü Ž7âûZ1íhQfÙãu£jÑ4Z{p\\AUËJ<õ†káÁ@¼ÉÃà@„}&„ˆL7U°wuYhÔ2¸È@ûu Pà7ËA†hèÌò°Þ3ÛêçXEÍ…Zˆ]lá@MplvÂ)æ ÁÁHW‘‘Ôy>Y-øYŸè/«›ªÁî hC [*‹ûFã#~†!Ð`ô\r#0PïCË—f ·¶¡îÃ\\î›¶‡É^Ã%B<\\½fˆÞ±ÅáÐÝã&/¦O‚ðL\\jF¨jZ£1«\\:Æ´>N¹¯XaFÃAÀ³²ðÃØÍf…h{\"s\n×64‡ÜøÒ…¼?Ä8Ü^p\"ë°ñȸ\\Úe(¸PƒNµìq[g¸Árÿ&Â}PhÊà¡ÀWÙí*Þír_sËP‡hà¼àÐ\nÛËÃomõ¿¥Ãê—Ó#§¡.Á\0@épdW ²\$Òº°QÛ½Tl0† ¾ÃHdHë)š‡ÛÙÀ)PÓÜØHgàýUþ„ªBèe\r†t:‡Õ\0)\"Åtô,´œ’ÛÇ[(DøO\nR8!†Æ¬ÖšðÜlAüV…¨4 hà£Sq<žà@}ÃëÊgK±]®àè]â=90°'€åâøwA<‚ƒÐÑaÁ~€òWšæƒD|A´††2ÓXÙU2àéyÅŠŠ=¡p)«\0P ˜s€µn…3îr„f\0¢F…·ºvÒÌG®ÁI@é%¤”Ÿ+Àö_I`¶ÌôÅ\r.ƒ N²ºËKI…[”Ê–SJò©¾aUf›Szûƒ«M§ô„%¬·\"Q|9€¨Bc§aÁq\0©8Ÿ#Ò<a„³:z1Ufª·>îZ¹l‰‰¹ÓÀe5#U@iUG‚™©n¨%Ò°s¦„Ë;gxL´pPš?BçŒÊQ\\—b„ÿé¾’Q„=7:¸¯Ý¡Qº\r:ƒtì¥:y(Å ×\nÛd)¹ÐÒ\nÁX; ‹ìŽêCaA¬\ráÝñŸP¨GHù!¡ ¢@È9\n\nAl~H úªV\nsªÉիƯÕbBr£ªö„’²ßû3ƒ\ržP¿%¢Ñ„\r}b/‰Î‘\$“5§PëCä\"wÌB_çŽÉUÕgAtë¤ô…夅é^QÄåUÉÄÖj™Áí Bvhì¡„4‡)¹ã+ª)<–j^<Lóà4U* õBg ëÐæè*nÊ–è-ÿÜõÓ 9O\$´‰Ø·zyM™3„\\9Üè˜.oжšÌë¸E(iåàžœÄÓ7 tßšé-&¢\nj!\rÀyœyàD1gðÒö]«ÜyRÔ7\"ðæ§·ƒˆ~ÀíàÜ)TZ0E9MåYZtXe!Ýf†@ç{Ȭyl 8‡;¦ƒR{„ë8‡Ä®ÁeØ+ULñ'‚F²1ýøæ8PE5- Ð_!Ô7…ó [2‰JËÁ;‡HR²éǹ€8p痲݇@™£0,Õ®psK0\r¿4”¢\$sJ¾Ã4ÉDZ©ÕI¢™'\$cL”R–MpY&ü½Íiçz3GÍzÒšJ%ÁÌPÜ-„[É/xç³T¾{p¶§z‹CÖvµ¥Ó:ƒV'\\–’KJa¨ÃMƒ&º°£Ó¾\"à²eo^Q+h^âÐiTð1ªORäl«,5[ݘ\$¹·)¬ôNô\n«ž[Ðb÷ƒà|;‘éîp»74Íܔ¢¨ÐIŠCË\\ÞX°ç\n%øhØIäç4Ïg‹P:< ôõk¦1Q™+\\ÚÈ^å’ ™VèøCàòôWàÃ`83B-9F@ànÃT>»ÞÀlj-–¿öÊ&âÜ`9q¦…Çßä‘“PÜy6Üå\r.yñ&£ñ´ÎảÍÃE8Ÿ0 êÀõkAÁ×VÛT7ñpïÆxØ)Þ¡~¤M½ûÎß!áEt§ÐùP\\èÄÏ—m~c½Bð\\\nímŠv{µÎù9`G[·¾~xsLî\\±Iõ®ïâXwy\nà¨çu¯áÁ™S£c»¬€1?A¼*‡ùÍ{œã½ÿ´óÍ¿á|9Þ¾/–òþ¯Eúï4æÊ/¿Wÿ[ȳ>–á]ÄržÊý¯v¹~B£ PB`T¡H>0¤BÒ)ð >¸N!4\"‡À¦xW-ÅX)„0BhA0à½J2P@>ÈAA)„SÎôn¼ìnìO˜Q¢¬ÇÎÊb®rõŽÔÒ¦âöàøïhèí@È‹’î®(–ð\nì†Fì˜ñÏ–øÆ™…(ìγ¤ÛP\0÷NÂõo}¯‚l«<ønÞø®ˆâîlëoq\0/Q\0of*Ê‘NѽP\r/îpA°Y\0p\\ãï~³ÐbÐLh °!Îã ÐPöîd÷.¿ïy\no\0áÌËжöPptùP¡ovЂknޏ\0z+æ›l6÷°©¬Êø0’äð¹P½oF€NìÏFô¯OpýàN`ÜÐÖ\rogðá0}PÍ\n¬–@°”ö15\r±9\$M\r \\©\nggìÀ Ø\$Q \r‘“Dd‰ÆÊ8\$¶ªkþDâjÖ¢Ô†ö&€ÓÀÊ ¶àbѬ˜ê°¿‰› ñ=\n0ÊÕÀúºÀPØ ~ج6eö½¬2%Íx\"pß@Xб~«æ’?¬Ñ†Zelf\0ÒZ), ,^Ê`ß\0è8&´ì¨Ù©‘Ñr€© ©ÃkFJÂÂP>VÆœÔp¨²8%2>ÂBmÎóØ@ä’G(²ä¨s\$Ž dÕÌœv†\"Èp°wÇÆ6§æ}(VÌKË ‚K¬L ¾¤éÄWñöqú\r‘þÃ̤ʀQòL%’PÔdJ¨¦HÀNxK:\n ¤ †%fn‹ã³%ÒŒ¿DÌMü À[#¢T\r©ÀrÂ.¦LLè&W/>h6@êE ÈãLP‚vÆC’ß6O:Yh^mn6£n¼j>7`z`Ní\\Ùj\rgô\rÈi2I\$\"@¾[`¢hMý3q3d’þ\0ÖµÈúys\$`ÖDÀæ\$\0äQOf1ƒ&‚\"~0€¸`ø£\"@ZG¼) Y:S¨ê†D.S%͈’ Ð3¾à d¹ÀmÓU5‹æ¬ó<£SÒSZ3â%r “ÎãÆ{óe3Cu6³o73î—³ÀdÀL\"àc7ÄLN ÜY Ê÷k‘>²Ž‚Ç.æpäì2øQôÐ÷“¼åÓ3ÀVذWBðDtCq#C@½I”P÷DT_D´:ÔQ<”UF²=’1ô@\$‚‰6Â<cÆrÅf%Ô¬,|“27#w7ÌTq´6sþl-1cPÕmðqªÊ\n@ÊàŠ5\0P!`\\\r@Þ\"CÆ-\0RRˆtFH8µ|NíÆ-€Ædòg€‡Ò\rÀ¾)FÆ*h—`ö €CK4Ã1‹ÊkMKCRf@w4BßJÁ2\"䌴Ó\r1Q4É2,\"ô¤'¼êx§Œy—R‚%RÄ“SÓ5K”¦IFz #XP‡>¨âfÉ-WX\ršÜê¤pU´ÕDÔt&7@¶ÂÑô?’©ÀÑ ªµ£}O1½2†‡2Õ#UK*¤)ô긋Œ0o<> ]HŽš„Æ¿rè›LGNª›ê˜W%–™M^’Õ9X:ÕÉ¥N”òÕêÔséE¥@xy’(HêÆ™Md×5<52B– ð–k!>\r^J`‹IžS N¡¥4'Æš*œ*`ø>€—`|¢0,™DJ£Fxbèµí4lTØ•û[¨§[é•\\‡¦¨Ô –\\{Ò6\\Þ–’ öß(#mJÔ£,ý`©I³ûJ‚ÕÊÜèlß ûj…jÖŸ?Ö£kG»k¬T9ÀÛ]3ohuJ©ê¢®ÑW•\rkÕÏ)\0Ý3Õ€@xè¹,³-Ê 5B”¡¶˜=ÂÔà£#–gf¢¡&Üß·Z`ä#ÄoíæXf È\r ìJhô˜“À´5rqnzõ§sÁ,6’oÓtD´y‡äÂb´àhþ—Ctn˜9n‘ í`§X&¨\r'tpLž7²Î—¤&—¨¼l¬Z-ͬw£{r—¤@iUzM¿{rx×—mÒSBÀ\r@ H*BD.7¹(‘3XCV Ç<WÔуÝ|d‡q*@”þ@ÞÀÊ+xø÷̼`á€Ï^™Ì˜ß¬__•NDX\0Q_D]}tõYÅúp¦f€wÔÚ\"â3øz¦n«MYñùZR\0÷¬Q¤?¸{†M3†•£*×1 ,¨\"Øg*U¡*²¯ˆÌ«zÒŒW5NV2O-|€¾ÉÓñ,×]‚B×dí\rŠñ/OâtÎøÃï‚Ì0‹xƆðŽ½Ð®OCë8Þ-0Ò\r”ÿ0à·õ„@]¤XÌŠÐÎð\\\0¾0NÈï£Ñƒ4ëi¨;ƒØAtê¼8X—x¤\r†…Š“‘ìÁ‡øÝŠ×Ê7¬<ö@SlÈ'LÒø9WŽ ÊθòϬÖËì¢Íı•ùRçÌðÌ\r¾Ï ÂÏò|ÜXÐÖa÷ø7y€Ù\rwe¸Œù„Y!ƒ˜Eƒù’´šÂcRIdBOkË28[‡mÌJŒ+L ÈÅÙ¸OXpføÓ9ÑDÏ›·¦ßªw“@Ë“—Y—…¢Õ÷\\yäAcÙ£ƒXgš™%šôó’Â1“ï“j œX†9Cc݇àR¡¹‡”QFÇpdÒ= C˜÷ýš\n\r¥Õ‘ÔóšdjŽÙ«’xE¡Â2FX§¢x_¢ØÅ£Ú5£™—}q¨Åí¿¤M%¦ZM™:\nÏzWšX7¥åí¦:ÐZi¢npY;Žù>ʘí£ÙɆ:6Ú;£ZÎX0ƒ“Ì¢#ùýcàMyU…i2,q¹FËšÈbJ @ÓgGè|4ógÈÒmzWõäÊ ¬)™Èr|àX`Sc‚Õ§ÀË™„óc—¥‡û!²B²—±”»/}{4JÂ\0ÒÃn»Kuz @ÌmÚÑ®€ßyÍžÒyÖ\"º)u¹ÊÂÙã¶Yç˜s·c¶yë‘¶š‡··y¼—޹7Á|·±|—Å{Ϙ*)°Ê4Y`ϵ[v¹‡¤‡û^NX•†¸‰†ò‡W”©û·‚7†;¾_‚‹*x™ˆ¹Ú\rù߼߉xm+¾mû¨Ú™ ´»¹‹\$\n¾l˜);™²„|Ù ßÚ™¡:œNÚ :„‚Š_È8N³¸Uœ5;¨p+U–L‡ò\\‡9í¦Ùñ“›¡»ýO:I’šû zQºœ¡ƒ¡TëšÜ)ªXG¡æ»ÅJ{w8“¾ûʼn¸UÆù\$ôàÃøü›PxTY¾pjh·¾J×À›˜JÙ{‹Âð@îÇ‚³ øðZ‡ÌÙs•¹h˘ç–XÌ\0Û–lÓ–ÌàÌÈθÎçìó‚Y}˜Ÿ®ü^Ð@u2ÀSÚ#U‰ˆ;È|¼¼•¥¼™P\\ŸÊ#ùÊ|ª<®Ý\\³À›žJÛ‚,öœÀ•\\ÅÌšEÌú…‚]WÍlÁÎ,£ÍìÉ–<åÎŒÛ>YnÎ),ΙrÎüûÔ¼å—âº]Èý ª\$õÐç½Íq„DJí=•Ù÷•XI-ðÅ€äÅÌa‡llõ]\\“w(iÜCÄ׃tƒ‘<i-u[uVŽDÖ“¸Q¸€xb€kæLI.kú›@ÞÀ„ÜN‹“[ñ¼l<o=-]1`蔼ªdš ÜMÌ7‡@Û%C=]ú›êÀ/|-à܈¾ÉÞáqÃã•âíùâ*¾C¾òO~ÊQâòså`·ç(âòãDÉßɲ¿à[ãþæ>Éká¾R™uéÞ\\+>)3íûPÊßP§Óí6ÓËM%º¡¾pÔŒœÅAÐ3qmu2ÖfzƒÛ¯ì4s‹ ´í`ÛŽ‘ì°-kÊS%6\"IT5½‹~Òì\"™íÂUt_ TuvàÖ½ä¶Yw¤†0I7¤’L‡\$ú¿1Mí?íe@3Ûq{,çÀÏó\"&Vi·àžÔIŸ?¾µmõˆ™¯UWR¾´\"uiT‹‘uƒqŸj\"•GÃËõßò(™ï-½‚Byîê5øcÝõ?Œàwñ®°ëTúî’`ei¾½Jtb‰gðU‹3ËëÉå@öá~ê+¾Íï\0MïGè7`ùïÍ\0¢_Ô-ùñ?\rîVÿµ?øFOÔ6á`\no†ÏšInª¼*pà™öeÙí\"T{[Гp^÷ä\nlh@l0[/ö„poóJKÖX“ñ€ü<ª=€9{Ǿ6ç–<eßAxãÀùÇ‚¼Éá4x[ÍžLò“~>!åOQxš{ZVFÔŽ`½éÈ~Ižß–“øL)Q[ëTûôM›àþT²*BC¤~ æâ‚ä\nƒò¡gÈŅp9zKÉ–ówzO9di^›'‰+¹ßïDz4ägHAº¯Lyô¡\nr€<IêjKQó¸Snô==\r.Âo7½Êé%a;‰kÏãmX¿›Zi%P¨iÏ\r€¾ýµ/©…L`pR0¤Ž&õ—I (Øá\\.£*m„*Ž(ÚÖŽõ—\$䆯À÷\nw׊Х…8a“\n&´Â‘žÍUmª MÖ¨P+\"Ly„ó?¡M\n€2’ L\nbS ¥NäùÇr¶!w¥jw`¼Â\$îôƒráè…Êaáv±^ÃqF‰Ü6•Ó¨i*™Ÿæ„ì_xõØ\n‰fðIê:B&ù6@É“KED¡úú·QD(V`.1\0Q\$íøF¹H®’Tþ€zІ‹Ì\rªjkzM€ÐÀ®Y™À(61€”x‘+®%dj¸Æo\n¦¬\rg°ï\"ÉŒ´ˆ—?Œ1- 3hÏXÖÁ)åyjÃ5r¢N±#Q¾¼Š¸w{_þ¡øG)ÂÎÙ1i‹Ì íç¤<Z‹ºpX³¡Ö\$â?¥=%.´€Ò®&¾%\\±8w!¤µa4œ<JB[Ðĺ¦u4‡%êŠ×47‹Ä%gÑä&¸€Z(@ €E¢{@’Ð#¥–2Šh@Œ#ñŸø™ÑŸ¥£@\$8\n\0UŒìjãA(מ2ÀO€Š8Ú€ž5‘¸Œ¨@†ð&'´\n€DŽ\$i#ŽÀ#Ÿt\n PŽTs#]P* àDÌuc› PÀO|pc—øËP ÞŽ¼i#Ô}ˆæ:<ñí\0\0¥ÀˆÅ¥lo#}ÏFÜR‰Tp@„À' `Q¬ycTp(ÆŠ@€eh\0‹˜Õ8\nrx› cþ<`NŽˆã:)DY\n*Dý‘2{dZ)A‹Ú4±²¤€cZLð2ÈÊ<ñò\\Œ\$r#ˆþÆö7ñÁŽ¥°!û€´ü€Nª{O¼@\$< Ñ¢ðVƒZÒÆž52.Aù#D0 \0´ÀI¸û\"P'H ²_)¼x@Š€*úàAOh£hI)I²L1¦’ìƒäµ%áJI‚B‘þ’g¤i\"p÷§K2}’ä–Å(CËÉÍ=²t”xCøÐ&FÄ r“ÒoÙÉ@@'”ñ€% ÛHÞT±áˆ ãÔ˜:=¾)\0.ñ°]Îâ5 .ðæõ(pÈÀL!à8\0ˆ¹ éR\0L‹YaÔbkÔ°ˆ6Ä)Y·éˆî •Ô®£ h³zZ¦õ±’IgÎVO3oœLgà3ËY2ãÛ‰ÜDoPË`3̸ec-‰r7í‡2Ô—Dº‚Þç‘B¼‰Z•¼¼%å/I{MÃ\0pÐÀÌ.`äÊÝo*•Ô¯%T€ý\0 &–iR\n™+Éo€ì©–\rÀ^2q”Ë©\0\\¨I@‚ KÀ#peC*!>€/á%|È…Ì’ÁÞŽüô\$è)çÀ§1P30(\r¢+\nZÆzž„))\0*®\0kà€ÙÅ2¼–Ï…(–E86å¶s—tºf&”™Š¡´“+;”Ø76&ãK–_Ž(›9fÓ,@-ÃÉ4l\$Û‚e7\0ù±:l“LÝæM7.\0ˆ³|›ðo–JÛ©ÀÎZ³u•̺Š'Èy{ÅH,#\0vU@9!¼¥ Ñ'†¨&„òGôøß@_-Ù¿³ºt;Üê¡:©µ€²u¡<—ˆL†iÙΚ_ê€Ø£@U6°Îù#ä_€L'~ùæ/Öm`\\Të']=Iäât°Çž¸Âà)ÔÏqùsÉ9Âa<RPº|tžút&5°äs©lî@¾ ÞKÆwS®èlÍ:9úN®wSø|·göÉØOùAП<ë‰BÈ€\0/àz@´ ÍÏÁ•Òå†=?=iÞO‘ŽkÓŸ=\0E@iâÐ\$B× hO\0Á>DÖP´ó‹Uäçцj¥HìÂ9F¬BcCi‰éBwMާtÓx€PÀÙM‚?p“®=—äì8ÜÔý‘Ïlg~¨˜tÁa©€%]b\$àØ\rˆr„èÄa,6ÅtŒàW)Ž\0U¨›F˜ |æì“¢ˆvh¦Qú*¥Oƒl.C\$À\\ ÐÖRRÌ<lcù™&Cj3Ñý%ôZM¨öÀz9GpY’â¹£\0i\$Dµ‡d‡ñzt[')[)Q¤ØêÞkÁpi0·#cþ‹ôNE¨ô(ºC2L Æ@9hÑEJ5Ò,šh{&Jzö0n€vª©>[€j“£Û[œ]ƒK•ýRîJë>.;ù¨íF=RÚŒŽ<råÓM¡=—Ô’¤ÜhØ^Y\\RmnËÐð Nn*g‘¦ôÒÅB¬·5^QÒ‰@O¢°x¨¡HIÊT ´â9½)(‘œ&µ‡}A)PÊ\\/êô…_Õ!ÌH þÚ‘¥¤ù\0éBá\$z4ÓTYu‚J’v\0ꃔ¨…%@æ32\0Sôm€--Gi@¸úQÅ%Ñj©YÝ+FuzlSž—”ÜW3ØÅ·OrŠU\$EÔè;¹M©¢\\€Ô±Äu/£õjeQªš¦§,#J¡ªXPÔ<UH•TVVé#Uê™ÔUbˆOU´DZ‘⢵£Í8êÕUJuS «À‘g)XDZK‚•¢Bî\n¼@2Š©ìx@d&ü ½eÜ«Ià@ÊFwì¬8“©\$Ù'IºV‚V†U\$²ETÎ_ð*ˆd¸/áFCÓYdp§vGƒ‰3‰ ‹Ñš‹L^(ù`áj”÷2S¸ºcÛW¨ÜJQYiÖHB”£ckœRè\nþ²U\$jê\n„ZAi€î»¢U*wKDRxW‰LÂòˆ€+fÚŒ@ã¨A4¢àGz…R\n²5‚b¬\\_²Ÿ ô‡¡á0¼C@¤\$X\0+Å]¤ÑÂè\"?‡n¦€+QIj\n»x\r€ôB`S¸âM‚ÈÑûŠ\r o°@‚À6XÀ\"{±\0µãb ¯)–ÁM¨cMðW ä¶D_áαÐv@{cÐ:¤®%[%‰C²þ1¼Ù;AƈÌTn› \0º a²pážóe~ÙU5 s©V†Ýe|M9‡€9 hË@æ¦\0êÙ~É@.³ l€· Jv]©ºD§f€7¨FÌá±³ËùŒ,/+:¾‹íÚXIi\0U¢â@Nµá´\r Ê¢,².½i¶‡ª³m_ûFŒàÖõäÀYiUÔÓJ¯!©gûLj‹ãÑú¬D“iKAà6²õª-U«KfÖ_N€\0ö-3©ìÀã3+¥dãiûD \"ö¯µM¥ml‹L…XÜã㯸Œ>‹&|UÕÑõ`Ïh¾ù2¦ÑÐn6Ý…·ÉI+Øné-nDÃ×`„µ†®°É”°@ã¬B!;X™smȯ·†pC`‘p5Á°¬¡O‰%Z/Õè5”³é#CK`‚XˆªÂcb°Q#«§Qa»–Ž…ƒ¸q…èpÚÝ÷)™®G+~Û–ß÷\"ðlM_^zò©šæ!ÌÉàE«”Ð¥’®šÀ‡ïa úØp86ì„åˆn+oì’Jâ¶ö¥¾,¹¡ó‡¢ºw\n¢]̓pëŠÛRÁõ'§eÖJÕqµ'ܨ%£'€nlO‹h@>NBÈŠX5,ˆ‡‹¢ÊrGr¹ Z l\r(ªË‘jIù†±lŸ¬%b‡;s+±× ¤Wg7¨)’*e…¸1µ•ÞÑ3“L e@(»p\0 ÐÃŽèds®AñÖD\0Ã\\bD§\nuê/&1¬ÞXR×¥E楂5¡Tœ\r§}7õ§”ªîÔþ”AÙ¬áÉkâ\\–øö͵´ŸÇqà2Ü€öZ-wo´“tßZùƒ‹¯]ó-yq2j+Õ†¾Õ묀n¾XA«Û\0†\0º¾+S•+ïY6_BúV7z®nZ@̆²Ô·Æ´]´-UMJc*¢ü¸´®í¢s\"ß+\0·ï¯x´B3^«öà0\r÷ÜÀÎïÁcðÖ\\jÆÆ*¬P-\\Q8ˆÊŽ·…l•cË%XþÉVB‡}‘,€þ;(‰`*Qú \$áïÛrßÂ{ÁKøìCúÖ%¬\r¥ˆx ÞøQû…,¶Ø¾¥×/‰vàä\" pÁã¶ð~ Óáã ÅJ5eãü®Eš-^âX;c²\\©¶×¬m‹´7£?˜6C*庮†,7®HfÄ/Â9eÌ0[@ñ¤!bê®íÅþUБ=›Äi.Jocñj;ø—B³\0¼ƒï]Õ”ÑúvÙGÃÜ8àO\\\0ÀÇŠüO©›\$Ž•.& p‘\\‹H1bØpø’:F\"8Ŷ…þ‰ŠøVx©ÅýµR®–xä=À3Æf1Š+|Ò»\0ÂBÀ¼kbÌPÇLÑ’£ô\$zÌáàÎc ¢ÇÐi,Pcb,pÃn(¥Æ,¸ì`'/»~êÙkÖµ‚Îp€q-›Áȱ¹VÀÜ܆Ü\rÙž \0á‘‹dSˆÓÈÚÍ+º\"Šéˆ1\0(Ä-’Ì1~útcªþfý¸àBÛ‘b}Ø ’Ã0<1\r°¨¨L’€»\$¸ˆ2d\"1ž&ì™Æ€BóN…Ô\ràB\rrƒ«\"?vädäZá±.\".\0?wä¼9€oÃà\rÄ0¥Ñœ!¢ÍdR€‚뤶\0‘ÃÇHëÜra%ЊØ+\0yrƒH¾sÏ’4W#œ,\$èô \0„*xBó\nPÌòü|„ 8@/ \0ø2U’°ábíÝè¢ÂÎΪxÀ!¨d§°óúNÿ3SÔ?£ÑP»…€(òg\n8·‡ppŸˆü€S9õ@‘' Ç\0úyµÿ\0¦y46¡H<‚öÌ×ô\n`S’ˆ…¼ÈûCY¹’„”³jp:\0N(ÓŒáX4ŒkÌÈÓgßDy‹<–n4™£ØrS<ÒÏýˆó¯?¥\nÀÇBãúf('™Ì~dgÓ™SËÏ?<³ÓVg(1™éãæƒ2ù£ž—²)ÕôŸf`éZ€¼a“>t{ÀœÉŸô’>ñø\0ŠìPû`O¼\\sŒ<õ?4äwÞ~³ÜÇf@z™ÿÍ~hBW Ìø³á´ŠxhA¡¡ÜO'=úP֌ײÜö±ë=óúc[ysèÌûgâ|¹‹Ï掳%™Mè,Q³ÆÒ8'X žhlUs®…§Ù¢ú é4ËÃqDýÂx*8g§NLšBÈ–¨;§}%eû@YìŸv ho!\$æ›NcCXì³@Ð;YH'Á°@^ à·Rf^x„\0^osÜ_fª—“;¨Ópj]²:’Ô¤ïõ.mLêl\rš®V¨\0ó@Ü€¶Ê\"ÓÕÄ1%Œ!_êô@-]8f¤ç -Õþ±äa]Y¯WšÏˆh`(‘¬äJë@…ÁÖ\rˆ—õ€Y kB(€xÖÂ:5˜B\\QkO[:Õ0˜Â¼¡uk›X¥\\×P\0ë[öx¹ÀÅ®`ŠRIGÕÐk5°ðª§YzÍ×PÒ™¬=†l=áõÖe€\0ç•2=k` Å[K¼‡Bê½Ìû8ž¶C±Í}k«c{#ÖØ¢„ølŸdfF.̵ü-›AºÿÙ6º†K’•¤ÐÖ×Pàv„'¢lHiAÝÚ8C¶“® G„`GbyÙ¾·Í- 0•Ĭ;[*_ˆ¡ãmlH{(;Uo¶ÕÑ*Ä]Š,Ä‹åŒÖÆÈþôXË“¡80Cµ°K !N¼õÔ(I`¨³ V¾Dv½§íšwá·rpc,ðåŒÃÓ\0ää 9~s»Xn㦇¢žŸr[ec·4dçpÅi \\…Èe2âãl±ÄaZCk»gl÷bB„™¶7x%¿ê轞í€Å»Ùk`ì\nÁ(@ź«®„5åݘ¥Ïċ#t›–Ü–éãE½}Å„sñ–Lvö÷E¹ï\nQQÛ”Þæú76}õ‹Or»çj§b¯%@7‹˜àÛµßh³w͹÷n£kÙ`Víq·±Íòï³~›™ß~ø„4{Œßþå÷ë¾óË;òßï8p2mP+ dÖaX8&,=Òn›}ü!/øK&\rŠÿt´H™Ó)/øYÜ”†6@å¯=}ðŠðEU§lKÃü\\kÓb[×â1Gø®M)™J¨xXÚEïTä¾ /¸\"-‘ë…<4ßxDˆ¥ÅíÐpÄ(¼3ÞÊŸ·ß´'È+Û\$\r†¶<rí×n`H\\t\"þ¶70=ä·Y×Wéhsð\rÏw¼~°!ù0@6l‹\\† •§/þBò7’¼‰–ßÏ>Fÿ‘܉\\¶¼RÙ¾-Çn‡€þܧ\n¸?F~†œaÞ×+xÉÁýëñ¨\rœl,fúCß+Žîw•i¢GøÛËî.X!¼_à71ymÌ~ñ„œDå¦È7åÊé ÷š¼ÆåîûÅG;gówƒàb/89¯ËxÑ@!R–9¸eÍJq˜Y¼hß'3¹ÏÍĬ*÷ñXw‹Ë®^—ÛË ¾7ŸÎî5óÀûåÖ`ö:î#È+Û0˜ž·œS¯ˆ@0óo7:&~r(Z·‘G1zÐþˆ€·¢pÝÎñdNŒï“£›`ç¿/Fz@8Ñt0ŠZÌ_ ‰ªÎ0³™{Úè¿Lén•‡×‡oEËÃÑâ=rû¡‚Gj]õ H•¥›²Ò·…»ÞAf+ªÈèVº•ºmžœ7ýåßB‹ÛÓî*q‚þ}cãwس=Û„g¥»wE¢-H·°€»·¦½&Rh4—ªMêžZÕ_L½©]WV'ÁÕ¦§Íñ\"uŒ@-ÜaMÃsº@9êL:ÈÕ’]ù#‚ÝaëoybÝ\n\0[Øêrðp*}Qí‚bwßÛÓ¦?†ºâÿ;Vc¾Ê°›» «.Ûsç´¢XíÖ°ûy·R=§&d”ã·rûO«žçõ2Åj!Ïux¥ÜÎÔ§R{NÖ&øµÑ»®5ö„}£ßvyÛ°Ž1o8Z#žþ{ÛNärû½ÝÑï‡Q:BÕHzW{òïW{:ìržÞ÷ó¶}D\$§j7)àP€÷ëÁÐÝCvV¬X—¾ýdí¨D7óᮀ·¼,Ôh»÷á_ø]·^í—qσܟxO»]ïŠö¬?p{Æ\"ˆðOŠ8Qáµ?xw}ùJâ?9kâÞüx½5buÛ&÷øÏo›ÅÆ^ñ†õ¼Ÿ¬>õw“g]çíh¼#ä?+÷‹ mï(³¼¹àÿ/ngŒ é5â5<ù;‡ñüòÈ…¼Ë³½œxÍ%‡³‘;ì(³ÞVóŸ–;Çço-ìó˽ëòÿ.eänkpËÂÀ_ËFäXõ9ÓWjQ¥ÓàCBاåv3R=°ì†¦;aÙ][yËÈ»4Þ/¢|óÃ##v @_Ç}UçM>ùßÌþ1§»\rC£MúqƒCÞÄÆädĘU#[ÓɦŸm\n\\Ä\r6ô'Ï>‰ôÃiI;€R\0X€ç<rW0[ÀE°dHSèH\n^×\\”¥3ÂTû´ÀF÷xB™îÀ\$ Òi÷´-‚'ûÛÝÕ÷Xf¼}\0#ɤ 1êo·BÆ€*;Û1±(\0ø~@)ü§Òh>³ª{³â~Ûøw·ÉH/vL\n9È?doÒÑð°,‹x)#>˜#b`',úgTð¤È~¯tˆ €YÐ}Ùï°/]-'Òüž\0¾(ØÈ þñ@Ï¡î/Ÿëä…>¶Š~ðolH‹âžÜöÿ·½À/qû–DƒTúéö~¾¡o|ÓìaÉþ°°#|F8ÍûdœÏ¥ò/±|“ì¿u÷¿€Vîâ©hø\n>Û÷ÿ°{´ Þõ÷ˆýçï_{þGâ IaùE½÷&{VNñžod¡õÃFÆBÀXûï×½ÙñÀ(I¦N@Yû¿Çÿøÿ·ýÇð9»üÉ¿\n-èû{çã@RýoÛ½Ù&‘o^3Y¹÷ï»>ð¯†|”òŸø—îþ-ñóö¶ùä~åý/»ò?*ù`\nÏú?—Sæ!VùŸîÏ©óœüïîÿ>ÎèÕ¸}ïãþO⟕ü¿Å>îýRMïûºƒõãø?b@\nOÚ?þà0¯s\0ˆ¢IèÏ€’ú+èà'¾’úX¯¦À,úƒò`'¾¦óê¯Ô?€úÓñ¯å\0‚K௸¬úCéO…À2út©>¨LO¬¾¢Lïv3ŠàúÒ\0ŠÎ[ï£PΛïlë¬H\nhä²Îlr\$/Àý\0+½Øý\0 »£ž¨ ©\r@ ?Kå)<#PøÓîïs\0Žø ” ÂÎ?Kæ@Ì@\0ÃæÏꀱø\0²%,p)?#£îïÄ\$ø\niL€¦¤°3è[Ìå3˜’“îð?²¬ @Ï´O¼\0ªýö°A|P\0™ôD?²N@\$Á,£Ý/ÞÀÿ€\$B?0ýÃø\0‚\$¯²\0Vú’LhÍ…¼Žˆ èé€ùŒ£é½Ê>¤#6ý+ù€>öR:p¾>«7#÷…½\\гlΓãAoãüÉ<3lø pe#7ÚA@)À±ðü¯Ü@ÒÔ#ýAV?hýãøƒ 0*ÐZ\0“°*Ð\\AuƒüÐ_>kÃöÐb?>«ïÀ\"…½cæ©#6>ÒBÃö’Òü \"\0ž>Ü\0psÁÒ?ÛDPvA\\#þà(>Ò÷3EPŒ¿>ûÓ:Â<\n´OÅ\0ˆüd\"ï@A\0ô°AêŽûð‘Áò”ð”Â5ìÞÁÿ “ø #¿‡ ´ cþ© “þ€+´@ÃùhØ€ø÷¤€\$\0øŽ‹:M3nø’3cêÞ`ûèØÂ„ÑT+I8¿Bò3@*ÀÆÐø @'”\\pM¤8Olòüøû¯†‚»ÝM€Ÿcî#üÂíÄð7B÷h`, àâ6oŒÂ\\\\.S>¤›DÌÙCù˜ÿ0ŠË´ÐÆ£S\$2ÃòB‚ù«ù@&AŠ>ºLðkù¬4ÎAóÜ3˜÷Ô°Ð@½;öÍ>pùÐüɤ‡\r¨\n°3|Î\0\nO‹Aø:6ƒô\0¥d7à«@8ýœ%`#Ɉ[ÐÀ=ÚDåÀÐ\n°ýÌÜ3u’LãóC™¢9ÏBCÔ:`£Ž‘\$!hÚ\$Ó“;ÐêB”20uÁ[¬8°ñC× Ä<ôÃäúó篟ÃëdPŠÃß|=q€2pí€V>˜û°áÃ÷ |*1\0Âç\rÐE\0©dAov´PÎt'?d,PD*ü@ /Ÿ#6øÔCP‹BO\n¬©8Ä',5ÃÑüE€ ½ËLq\r?m¤Eq\nÂzþC@+¤är60åCê?3ß/¡Ì“ˆ\nPÜÙlHð•D—ü¯Í¤5\nóü°°ÂÆãói)D°„1(ú£Dƒï£7ƒæÏu>Üà\nà\$Aæüj4Í\0˜?ê4Áª?”ÑLK Aæ¢>Ͻ?Œü‹û€ÀqDI@³£\$;ð†D®Ž8 &¾?;°c€—ÄJØ£bÑPû¯ÐÅþ\0 ðBÅ#3í`‚øˆ)ªÁ»ÌOÐ3CMZ50âEO6èÔC¯ì\0ÂÀŒ\\\$èÍÔûp[Ð9BãíÁª#cj<‘1Ä1B;còÅDBhÔ?Ëô@`*€ƒ¬.qbÄÐøX o?;\0KÜp¤3¥8 ÐRCÌú6/®¤—ˆ\$>lͤpIÀª,!€*\0®+ÜÀ>=÷]±wÅã\nT^pgźú#ó\0ž?\$J@Ä \0*CÈ*É7Æh\nñj?“ê:pArø”]Y€’ùÔL‹ËDbÑŒàúïBÑ4d@(Dä”ÌcÀEçÛâ@>\$Òà 4¾Ø‘þц©</¶Ð?\n€/ĺ>¬gpŽ>šŒü± ¤I6i8¾;³êÃèÆ‰cÝ1¢AZ6€!Æ}<j±¤D¢¤jÉ(F’?dÀÂÅ'óêït\0†üTeÂØø´1– ú ü£þAv?lnos3˜’„50†#Æ>¼Èòœ_¯«Ûd°©¿³¬UкÁZPú©4DŽ|;Ðr£‘ÃCðñ€ˆø[9£ê¤¥ú5IÇ5²I‘É\0ûEOÜB\0{9q C‡|\"pUÇZÎPû` €²øý´GcœQCëGPúJO‹ñÂ6(ÚBïóÇz>Ú7ðÏFøöÈ0IÂ:¼vOŠÇ‘¢BÏuEäµ·,\\0ŽÇ¸r8îÂÈûqgA6>ÀýÑ74D÷0qÇG¥ûêÍ>-SE@# ÑÈÎGÒ÷¤.à*\0i\n\\-`*\0q\n\\eñ½Áÿر\"—Œ)qu¤ýÃï³nùô@`>DÔ8 \0/Ä@þ„_±Ú€¤üw#îÇlƒÒG‚>Ô„²¾-+ß6¿Wl%°6½·l0®\$5´sÔÅ&Œ\r *\0e!èrÇÿœ€qI” \"ÀæÑ> Ș3EILÅ\"‹â‰94G\$/ñ¦\0—´‚©\0¯ Ñ-2>/„ƒì倘üèÓGg\nà/¿LŒq®BP€\"#7ôzñáHMÔ…O‹ÈO\0Ì &£¶2L‘ƒÁT^P@Zúd¨À=”]Q—=çÌKCïEã\0ŒQO¢Æ\\øôs0¤¤>ƒèq—Czù¬†±—G„>¤†²¿ü ÌÄ@?Œ0Â?ü\\o¿³–èø4Md1‰9€‰\0¼ÍGò?m\rDÆÑü(Ô´LdòÃ\\KJ8\rE’Ðù-24U 0VAÛ”…R=ÈEäe£þ¤5!Ì2m³qðüÏÓAEÛô²V\$ÆüÏ•ÉâŒØÅI9Óü‘ C&ù\\GÀ)D «ü§½òü4çIç#pú«#ÆøŒ—ññCˆù\\x£ø¿C(\$òƒHÍ:NI(J\0΋ß\"w\0¿,)PØÇ¬‹íÏ‹4<þÔ!òŽ=ÞúœGošÄó‹âP‡¿6üìN±QDë\r[;‹A|KÒ'AAäP\0¥C:šÊ„̉Ñ4Åã*To‘†£ÕD˜F^ÈûÉ‘\$)Ï¢»¬\n«É’àÍ)’(Sà‰\0ò’È(ý\$:ä@à‚²Y8’‹JÐà#ÅЂë+œ¯\nQ5ß+`a+ ¸iþ`6x𑤪†è: ÚŒà.ÐT‚:‰þa˜\0øŸcv(ƒ^X¨€Â¼H˜O.\"JÊðO\rÎË>ex-¾¨J¸€èKPïû¤rÔ‚-`2²€ÜË_à7€Å-!\"JØô¶òÝJêH.²ÚËo-ø.²Ý\$ª<¸BOЀ`> ©dáµ\nêH\"ò؆o+›“§s‚Øè 3ƒ‘+¢± ©6¿/¡ƒa.Ð\r²ð†nd»²ï˨é’?ˆô£z1\0¥àð‚?‰¨ 7€ˆâà<À?âãø\$Ó\n`+Aw*MQ¼Ã<Pýo¿°?,)#P>”à€šøÌ„\0¦?jŒÞÄ“ÄVqÀ?“£ñ³\$¡ 9¯õÆ-üÄ2ŒÌIÄÐîD9̳Lg1h[ÌÛÏ1ŒÄsC1sÞ©9Lz?à LWdÈovLŠþ#ðÐ9`ͨ0æ€Þ‰É¦W·–ˆh>\0>¦¢Å/)Dáü²·Lº¢¡ÀÌÀ\$ÍaÀ†¨9*ƒ<:C+àJËìKPJ¸\"—L\\Ã*bÌò 1ÔÀä6ë4ja+\0î%Qf ;KœE¬¹ÀÔš`è> >7¦tÒHw€¾MPn3I:fàD <LÄÊRÈ'¾.\$ðíBO\\²\nû Ðø5ã86Ä̹D1‰<\r¼³\$Z…œð’ƒ„ï4Š%r̃¬²×àúÌþ\$€ƒË¶§»éo™^Ú\\°È\0øf[z“e…í6|Ö“gŒ&ñ8+M=6È5ˆ³\0Ò1Idì{™^fqd趈s7(|©tM.]HSó[€ø¬Ô ÕÍ;7yC„—šÎ¸mÎÌÞI|A‚Ê:`c †Êß8\rÒ…iÔɃ¤ßÓ@¬‚P`È~\rlËa=M3ã€áf‰<ëÀRå\0Ï!ûÀ@’ØeØ«ríÍdO‘t ¬‰T°³-æXY9A“˜:38áOÊÞadÐ¥ö’gL³fxË=4K\n&€ôu0KòͨÇ,ô³o7¤€ëĆÓ,à½Î3Ë:h|’ÎKbá)AN¬úÄ`ì€Ñ:ØÎŒ€×;´ €Í»*sI&”á«Rsµ>\rX\r!\0\nÀàBsVM63˜KâO×:Ä®ƒƒc5„× úÎæ‰X!AœQ9z%`º{:èHòºDëE€îcv!‚Î,Èôá“:Xƒ)¬(üº%˜Ë2a&Œ«,ðl3Ó8j1è|’͇É=CRrÍË<â\$óŽ\"KB3äöÁ'9…:|÷)`Oj+îÀ9 }-õSÒ>2¬ëUU5ÜôBUNàóô÷²ÑNÄäìS¾NÄüì«ÈO²äû3±KNìÐŽˆ†¨ ×@:/ç7£ÄQ†¨ç!Ô@.’(&v9ÔédÓøŒ^þ“‡’ج!ï¦[.pGc K#?¸füÐpÃe“Oæçd®€2\0k6)„,\rÿ65GmOFV™dåiÈx,ÿa=O@s³þc6…`¤Ø\rJ\0å;‰³H†(ù*ŽrÅ-Œ¾.íMÛ[ BÎ !(àóM¸LP«bUèÛpJÔ:î1úÞE“»¦º!:¢,ô:‚YB‚ò*KRÞ¤¾rÍ0جLî“a6Å;6+2Æí)èUB`JsV0È:Ô0_B14/ÎúíAOáœNeúÈ)A~\rÚÈ öÃÌ –NPów“,È´C„î3œæ®¹ÌÞ°T3öq9}SQ\$ÄãA‚P“DÐ;!:À!îæ¸YŒÐsÄÎû6Ø“ÑÑRÔŒFt›#C¨Ï€øQ\\`rXr…<í'ò×72ؼ´O-„w9Ó¤ùËb8à5€Å3{¡\0Ä7ø\ra\"ƒ\nh[j·ŸåFÛa)”Ñ+€2Ï<%’´M¢ê|®m¸|\nÀ54pˆþ &bUQ¨8\0EŽÑ¥4AAN,ËàìËFØ•To(ÉG`šO•GA›³êËGlý`:†=è\0<\0Ðëꔃ²ŒTÌNϬ=.û´ 6Ζ(ûSBİô\0,Jð?”.º(é†%“…,Ê?B.<2ðhM΃I`éÎŒá4ô¶*é˯G°ëì'ÙI¸ÛíÊÑ9š¾ôžRX—E%,O\r,ʈs³Ï*•(”}<Ú—@c©öRœj]Dþ`UR÷γ,˜.²÷·d£¥rø¦’ \\·N•ÒÆl¸ÀØRÏ-󓴵˚Üëkô·Q•K„½”¹,ƒIå.ÒíÒêšT·@1\0ÉK 4¼Òý/]04¾K›K\nC¨&•F,¶ô³SF0“ÔµS.-´ÉÊéKÅ2ÔÀRÏLe'ÀìÓ7L…0”ÏËoKõ3TËS.å4T‘:X̾4‰Î9/:WRò9.Í62ôËËJ6ÀŽS .ðc´¡Sv^ 0®»ËèO|L±MD%3î 4z3Id\n»ö•áú#tPq5h{!7Z‘Û»2 „ÆthÊ !îK€Ñ7YÝó1S³<»áh‹µ©½Ç-<ÎÍpÆø€jéÍÖà<4øÓ¹O˜%@‰OKBø°ôS¶!10Ô‡SÚÒëôõ‚YF…?UR4ÏÁ›ÓÜÇ!•õŒ~ÂXl´=¨ÇH|¶5QHýC&¸\"1M'µ8¯5a`Å?¢SPlõ`0—\\ÝmËÈTM,8'1eQaA& \nÇTRèI¡ÑGÌ¿´ýÍZxôâ6yQôôñ¼aÀJÀ‹¼üûkU&ÿOXHá‚ÔphQEN†â=Cµ\"ˆLÉ›( ÚçQe@\0;ÐñQ®ÓPÔÅD\"€/—ú\rB༖tãµTžì\r<eÐÔeS}Om¾—EPP\rüÓ«P5B•4U\rR==õBSÏR}Hã“Tè#µE\0Îô¥U‚=QE‚J<ýSð` Û‚¼1x\0ãU:óéOá/‚¼€+µN J`P!t8Õ\rT¥µ7 SõR58\nc>ÇÆºÈâ!ÊõŒ1{ÀúÓ¼uE€ÚM4{Ö”4TÞíGa;Ž|ðñà5\"SÎÕýNkSä8»DÄÔ?JcU0Õ¯RtB¸{ð5qSåB„Ï,±\0ÆpÐàÔj†!‡\0006K¼1å ƒX@¦D¨Vå_ .Ô(¥_`-Öð`ÆD¼àua .‹•X\rFÃÕöðõRõ…ÐFD½•‚S÷RxhÁª<mXjïbÖWù_G\nVšÄ©èS¸ï\00074Ù\0ÒLRÁ\$QíX›pˆÄÓðù ×ê\$°Nó¡Ö&83&a+²€|l³Õ‰ÏÉQsÀA£…CXšú]Î_X]‚\0á+8+UzƒsRPΨQ\0Ü\08Õ™PóOÝMU¶ÔH6!ªVX¤5†˜X…a¤ÇV/kÓVF”ý`‰TŸZ\0D5FÑOS½nákÖóTMSÕ¾U\rTMZÒºBðÍìoÓîÜEgÿWGµfµÅ„-YÁ(µ}V7T0BÀ©œ4Úð’Âòƒ[9‘5ÖX´åm¯ÿXhét>×LU`4\nÍŒTÑõ††o9vÓ×FÊUm®Ö\"ýu†DÕ€ \rw+Ö˜\r`©V(ýVÏãPËÆÓjô]Kâœ4°ìoT.\$mDĵ¶ S’à‚e@3ÿ×;@7mŒ:È륥“´dðÈ!õâ¥Zð£ôá»Q[œåõÑ5P•µ7;Sôº/BÖ!McÃG¹ÉT»Wõå(V–ÖÔò䯕<7ó[lÓt…‡^Êô×ø\ri0ÁPÕÐÍa£|VX‰•á̃a[x9Hˆõ]¿õ¬^&m¹‚¼ƒÒ¤ù\0ÙXl㤫Ìú•‚•Þ€»T‹ÐáOXl0£öØ(ô,Ï`€ØoaÈÕu€×ø3½‡U#Îô'0+Ó½8ñ]HT!XX\ryW@è¡\$ÛMQb¹‘-ä)ÓX oõ†‚\n|Å`-qÎ-bÙ¶U‘VcŠÇÒÖ ‘3N=5vAg\rýŒÀ8<IGPBÔ9O^8. Xk®ö;+\"Cµü×Z/åÂUUo[i`Ö\$×ïd].âÙ(s¼Ñå“ÔèÕ`-•Öâ½€óqªûe‘-ÂN¿=#[ÖMÙPè…ÅÑO^(B †”6ÍÏ_u–¶2:0mx Yg^5”-‘YG8”´AØÝc¯VVßÉdô6Í\">\raè™^íÈЮ0õ\"䱿R¤¬–,·3Dä¯Åøß¡2iGÈ5§Í?:\rT!ƒwg„óM[7;[v{ÖªCs\rU9d×`ØÈyh\0h@ØÈ~ŸqT4Ì×_QVÍvÃø•F5ÔPƒs*ÄMc]Ió9Ú1T0m†V)S•ÓXÖ[üâÍ*Œ¨c“dA+Œ1hóbõ:×IhõM@Ýs>P¬ÛÍÞ9ûvuTË>¥Ž‚Ö½` O5ÙccÛÍöjÏ?QëTmq\$¼¹—=(VÏ6F\rTr¶®~¥šÃ\0Ø|m•CÚ)[Õ‚N¨ÖÆ,dÐ+;µQm™-Ňðê\$µo²B-žsšÚÇRˆÕàN›:’È/8‰>øb.°Û40>‡ÆÚñ,‹.tÚºJ¶\rÛ\rk®•6Û WMmØ3[Ñx5œËêqÕÉÑìLb´6Í;`•Lm‹ÿ4•Iµ6^d!5`7¤:aOÕh4õµÀÐ-3üÒHÈUm˜€¶Ú’³^_ÀÔNTê±²[PHðÙØa=UH\rE µ\rjM¶•”SåPsN6ºMXQ 5Œæ Ã\r’ÛYKqsþ[¾s-\0Öé®ï]¼aN³d5?ó+—Cf¼ÍÀRe^ø+@Ø[ÓP€5ËÐGa‹öôÒµoM@w\0QyoKŽõUÛøe}¼Õ[¶_oK’Ž@Ûán»wxVýpEºäùPuo5öR“ñ8c·.¥ Uo5Áw\0ò\n(%ÓNp¤ëVÖ®ˆJàˆ AqtÏ×Zæ#Õˆ³òÜk6””ÜiEÜØV‹R{qü×fØ{3l@äPqH‹r!VS]úÈ6¥Ú'q«Ð@>R=E\0ùêSñ+UjõÊ”øYÓ[źuUÕ¸Õ»rÌÜÇp»6Öõs]h'tË mJ ¬8ñQUUuD’m2z›Ð„àˆB¡K”ßÜÝv'P¿l]AAfËchÈ\"RåV«p´ÓXÌü;UË5öÜŽÆåÒcƒÖ°zPTuUQYëõíZ¯5åU¹…ýJen5ÀÜnÞÕovÅs=Hu½ÙÅZõoa‚itÝoUÀÚ»uuH5nÝ=jSÐÀUPZMNÄàˆÿQmobF·A>´]i\\¨G\rTŸvÏÖ‚Ôâ\"•Ä2Ø×v4γ=]¶2åz\n=:¢\rh*s¯×fÅÓw_ÔäÊUt8Å[Ý„8]Ÿ+=•ÐëGÕ×7z=n…Û—JÝòßuè8|«Å4u]ô caÈÝzà×€YwíÊt]ܪÔÕáÅä^€ˆÎrÌÞ)w]Œ%‚i,˜¦õí¤e}w—0<Õ3ÕäµnÛLr½å.³Ýiy-Þ7(K&‡\r_;f‰[̈\\\rXÃ+Hï…çÔøa=ܳbÞnôc€ ,c’!£Õ8\$m“VõvRæJ]g -†W¹OsˆôŽƒR( êÞ5]WHVC\\5@DÝ!s%Î’²^×sdñ%NÐÞ9úÈ7·Öƒ{U™¡+ÜÙI-îÕ¼€ïP\0\"FЈS5…ÒFÞÏ[Òâµz¶Åsk(7ÄEz•Ÿ÷ÇÖ1-å@Ýxñ̹Ú>M³g‡ïWM£âjÔ»n\nÈ ƒ^«tLµ·ÓUc}AÃVRÜúõ™@;ÕX-<sÔ<×t…¹C8^!P}Ì3q´d·\\ζLÄ3uÀÖúÛû\\-\rSlX{sàLÅNlÙåïL™ßŸnà‹¶&ZÅpút6_[\r±¢°¬ƒVÅV÷è„C~ÈIªE…?W%üUöÜ«u…[ÓATAW\rü÷•¦\rdáwøßÅV½ÛkÝù¶þÏh,8£ÅŠÏ”Üí×D×ÈØ»¦Ë|añ¸6-_1O×Ã`j…ýo?7>\nÀXsôY‘nã^cÑÙ{jÈ7®ÚÄÚÊ:ÈÜ]E\"JVJe~×.ÙQHgžT3r…cÆÙVßBceø“3e^Õ€…9®8¤\nò ™Zð(ä䇪½ ;tæzôãÕ# üq#à\0V.\nÂS/DkÈ"); } else {header("Content-Type: image/gif"); switch ($_GET["file"]) {case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;"; break; case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;"; break; case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;"; break; case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&ٜƶ•\0Çò\0;"; break; case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;"; break; }}exit; }function |
|
14 | +connection() {global$e; return$e; }function |
|
15 | +adminer() {global$b; return$b; }function |
|
16 | +idf_unescape($Jc) {$fd = substr($Jc, -1); return |
|
17 | +str_replace($fd . $fd, $fd, substr($Jc, 1, -1)); }function |
|
18 | +escape_string($X) {return |
|
19 | +substr(q($X), 1, -1); }function |
|
20 | +number($X) {return |
|
21 | +preg_replace('~[^0-9]+~', '', $X); }function |
|
22 | +remove_slashes($Me, $oc = false) {if (get_magic_quotes_gpc()) {while (list($z, $X) = each($Me)) {foreach ($X |
|
23 | +as$Zc=>$W) {unset($Me[$z][$Zc]); if (is_array($W)) {$Me[$z][stripslashes($Zc)] = $W; $Me[] = &$Me[$z][stripslashes($Zc)]; } else$Me[$z][stripslashes($Zc)] = ($oc ? $W : stripslashes($W)); }}}}function |
|
24 | +bracket_escape($Jc, $_a = false) {static$mg = array(':'=>':1', ']'=>':2', '['=>':3'); return |
|
25 | +strtr($Jc, ($_a ? array_flip($mg) : $mg)); }function |
|
26 | +charset($e) {return(version_compare($e->server_info, "5.5.3") >= 0 ? "utf8mb4" : "utf8"); }function |
|
27 | +h($Gf) {return |
|
28 | +str_replace("\0", "�", htmlspecialchars($Gf, ENT_QUOTES, 'utf-8')); }function |
|
29 | +nbsp($Gf) {return(trim($Gf) != "" ? h($Gf) : " "); }function |
|
30 | +nl_br($Gf) {return |
|
31 | +str_replace("\n", "<br>", $Gf); }function |
|
32 | +checkbox($F, $Y, $Na, $dd = "", $Xd = "", $Ra = "") {$K = "<input type='checkbox' name='$F' value='" . h($Y) . "'" . ($Na ? " checked" : "") . ($Xd ? ' onclick="' . h($Xd) . '"' : '') . ">"; return($dd != "" || $Ra ? "<label" . ($Ra ? " class='$Ra'" : "") . ">$K" . h($dd) . "</label>" : $K); }function |
|
33 | +optionlist($be, $qf = null, $Eg = false) {$K = ""; foreach ($be |
|
34 | +as$Zc=>$W) {$ce = array($Zc=>$W); if (is_array($W)) {$K .= '<optgroup label="' . h($Zc) . '">'; $ce = $W; }foreach ($ce |
|
35 | +as$z=>$X)$K .= '<option' . ($Eg || is_string($z) ? ' value="' . h($z) . '"' : '') . (($Eg || is_string($z) ? (string) $z : $X) === $qf ? ' selected' : '') . '>' . h($X); if (is_array($W))$K .= '</optgroup>'; }return$K; }function |
|
36 | +html_select($F, $be, $Y = "", $Wd = true) {if ($Wd)return"<select name='" . h($F) . "'" . (is_string($Wd) ? ' onchange="' . h($Wd) . '"' : "") . ">" . optionlist($be, $Y) . "</select>"; $K = ""; foreach ($be |
|
37 | +as$z=>$X)$K .= "<label><input type='radio' name='" . h($F) . "' value='" . h($z) . "'" . ($z == $Y ? " checked" : "") . ">" . h($X) . "</label>"; return$K; }function |
|
38 | +select_input($wa, $be, $Y = "", $_e = "") {return($be ? "<select$wa><option value=''>$_e" . optionlist($be, $Y, true) . "</select>" : "<input$wa size='10' value='" . h($Y) . "' placeholder='$_e'>"); }function |
|
39 | +confirm() {return" onclick=\"return confirm('" . 'Are you sure?' . "');\""; }function |
|
40 | +print_fieldset($u, $kd, $Mg = false, $Xd = "") {echo"<fieldset><legend><a href='#fieldset-$u' onclick=\"" . h($Xd) . "return !toggle('fieldset-$u');\">$kd</a></legend><div id='fieldset-$u'" . ($Mg ? "" : " class='hidden'") . ">\n"; }function |
|
41 | +bold($Ga, $Ra = "") {return($Ga ? " class='active $Ra'" : ($Ra ? " class='$Ra'" : "")); }function |
|
42 | +odd($K = ' class="odd"') {static$t = 0; if (!$K)$t = -1; return($t++ % 2 ? $K : ''); }function |
|
43 | +js_escape($Gf) {return |
|
44 | +addcslashes($Gf, "\r\n'\\/"); }function |
|
45 | +json_row($z, $X = null) {static$pc = true; if ($pc)echo"{"; if ($z != "") {echo($pc ? "" : ",") . "\n\t\"" . addcslashes($z, "\r\n\"\\/") . '": ' . ($X !== null ? '"' . addcslashes($X, "\r\n\"\\/") . '"' : 'undefined'); $pc = false; } else {echo"\n}\n"; $pc = true; }}function |
|
46 | +ini_bool($Nc) {$X = ini_get($Nc); return(preg_match('~^(on|true|yes)$~i', $X) || (int) $X); }function |
|
47 | +sid() {static$K; if ($K === null)$K = (SID && !($_COOKIE && ini_bool("session.use_cookies"))); return$K; }function |
|
48 | +set_password($Jg, $O, $V, $we) {$_SESSION["pwds"][$Jg][$O][$V] = ($_COOKIE["adminer_key"] && is_string($we) ? array(encrypt_string($we, $_COOKIE["adminer_key"])) : $we); }function |
|
49 | +get_password() {$K = get_session("pwds"); if (is_array($K))$K = ($_COOKIE["adminer_key"] ? decrypt_string($K[0], $_COOKIE["adminer_key"]) : false); return$K; }function |
|
50 | +q($Gf) {global$e; return$e->quote($Gf); }function |
|
51 | +get_vals($I, $c = 0) {global$e; $K = array(); $J = $e->query($I); if (is_object($J)) {while ($L = $J->fetch_row())$K[] = $L[$c]; }return$K; }function |
|
52 | +get_key_vals($I, $f = null, $cg = 0) {global$e; if (!is_object($f))$f = $e; $K = array(); $f->timeout = $cg; $J = $f->query($I); $f->timeout = 0; if (is_object($J)) {while ($L = $J->fetch_row())$K[$L[0]] = $L[1]; }return$K; }function |
|
53 | +get_rows($I, $f = null, $k = "<p class='error'>") {global$e; $eb = (is_object($f) ? $f : $e); $K = array(); $J = $eb->query($I); if (is_object($J)) {while ($L = $J->fetch_assoc())$K[] = $L; }elseif (!$J && !is_object($f) && $k && defined("PAGE_HEADER"))echo$k . error() . "\n"; return$K; }function |
|
54 | +unique_array($L, $w) {foreach ($w |
|
55 | +as$v) {if (preg_match("~PRIMARY|UNIQUE~", $v["type"])) {$K = array(); foreach ($v["columns"]as$z) {if (!isset($L[$z]))continue |
|
56 | +2; $K[$z] = $L[$z]; }return$K; }}}function |
|
57 | +escape_key($z) {if (preg_match('(^([\w(]+)(' . str_replace("_", ".*", preg_quote(idf_escape("_"))) . ')([ \w)]+)$)', $z, $C))return$C[1] . idf_escape(idf_unescape($C[2])) . $C[3]; return |
|
58 | +idf_escape($z); }function |
|
59 | +where($Z, $m = array()) {global$e, $y; $K = array(); foreach ((array) $Z["where"]as$z=>$X) {$z = bracket_escape($z, 1); $c = escape_key($z); $K[] = $c . (($y == "sql" && preg_match('~^[0-9]*\\.[0-9]*$~', $X)) || $y == "mssql" ? " LIKE " . q(addcslashes($X, "%_\\")) : " = " . unconvert_field($m[$z], q($X))); if ($y == "sql" && preg_match('~char|text~', $m[$z]["type"]) && preg_match("~[^ -@]~", $X))$K[] = "$c = " . q($X) . " COLLATE " . charset($e) . "_bin"; }foreach ((array) $Z["null"]as$z)$K[] = escape_key($z) . " IS NULL"; return |
|
60 | +implode(" AND ", $K); }function |
|
61 | +where_check($X, $m = array()) {parse_str($X, $Ma); remove_slashes(array(&$Ma)); return |
|
62 | +where($Ma, $m); }function |
|
63 | +where_link($t, $c, $Y, $Yd = "=") {return"&where%5B$t%5D%5Bcol%5D=" . urlencode($c) . "&where%5B$t%5D%5Bop%5D=" . urlencode(($Y !== null ? $Yd : "IS NULL")) . "&where%5B$t%5D%5Bval%5D=" . urlencode($Y); }function |
|
64 | +convert_fields($d, $m, $N = array()) {$K = ""; foreach ($d |
|
65 | +as$z=>$X) {if ($N && !in_array(idf_escape($z), $N))continue; $ua = convert_field($m[$z]); if ($ua)$K .= ", $ua AS " . idf_escape($z); }return$K; }function |
|
66 | +cookie($F, $Y, $nd = 2592000) {global$ba; $pe = array($F, (preg_match("~\n~", $Y) ? "" : $Y), ($nd ? time() + $nd : 0), preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]), "", $ba); if (version_compare(PHP_VERSION, '5.2.0') >= 0)$pe[] = true; return |
|
67 | +call_user_func_array('setcookie', $pe); }function |
|
68 | +restart_session() {if (!ini_bool("session.use_cookies"))session_start(); }function |
|
69 | +stop_session() {if (!ini_bool("session.use_cookies"))session_write_close(); }function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]]; }function |
|
70 | +set_session($z, $X) {$_SESSION[$z][DRIVER][SERVER][$_GET["username"]] = $X; }function |
|
71 | +auth_url($Jg, $O, $V, $i = null) {global$Eb; preg_match('~([^?]*)\\??(.*)~', remove_from_uri(implode("|", array_keys($Eb)) . "|username|" . ($i !== null ? "db|" : "") . session_name()), $C); return"$C[1]?" . (sid() ? SID . "&" : "") . ($Jg != "server" || $O != "" ? urlencode($Jg) . "=" . urlencode($O) . "&" : "") . "username=" . urlencode($V) . ($i != "" ? "&db=" . urlencode($i) : "") . ($C[2] ? "&$C[2]" : ""); }function |
|
72 | +is_ajax() {return($_SERVER["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest"); }function |
|
73 | +redirect($B, $D = null) {if ($D !== null) {restart_session(); $_SESSION["messages"][preg_replace('~^[^?]*~', '', ($B !== null ? $B : $_SERVER["REQUEST_URI"]))][] = $D; }if ($B !== null) {if ($B == "")$B = "."; header("Location: $B"); exit; }}function |
|
74 | +query_redirect($I, $B, $D, $Ue = true, $cc = true, $ic = false, $bg = "") {global$e, $k, $b; if ($cc) {$Cf = microtime(true); $ic = !$e->query($I); $bg = format_time($Cf); }$Bf = ""; if ($I)$Bf = $b->messageQuery($I, $bg); if ($ic) {$k = error() . $Bf; return |
|
75 | +false; }if ($Ue)redirect($B, $D . $Bf); return |
|
76 | +true; }function |
|
77 | +queries($I) {global$e; static$Pe = array(); static$Cf; if (!$Cf)$Cf = microtime(true); if ($I === null)return |
|
78 | +array(implode("\n", $Pe), format_time($Cf)); $Pe[] = (preg_match('~;$~', $I) ? "DELIMITER ;;\n$I;\nDELIMITER " : $I) . ";"; return$e->query($I); }function |
|
79 | +apply_queries($I, $S, $Yb = 'table') {foreach ($S |
|
80 | +as$Q) {if (!queries("$I " . $Yb($Q)))return |
|
81 | +false; }return |
|
82 | +true; }function |
|
83 | +queries_redirect($B, $D, $Ue) {list($Pe, $bg) = queries(null); return |
|
84 | +query_redirect($Pe, $B, $D, $Ue, false, !$Ue, $bg); }function |
|
85 | +format_time($Cf) {return |
|
86 | +sprintf('%.3f s', max(0, microtime(true) - $Cf)); }function |
|
87 | +remove_from_uri($oe = "") {return |
|
88 | +substr(preg_replace("~(?<=[?&])($oe" . (SID ? "" : "|" . session_name()) . ")=[^&]*&~", '', "$_SERVER[REQUEST_URI]&"), 0, -1); }function |
|
89 | +pagination($G, $nb) {return" " . ($G == $nb ? $G + 1 : '<a href="' . h(remove_from_uri("page") . ($G ? "&page=$G" . ($_GET["next"] ? "&next=" . urlencode($_GET["next"]) : "") : "")) . '">' . ($G + 1) . "</a>"); }function |
|
90 | +get_file($z, $ub = false) {$mc = $_FILES[$z]; if (!$mc)return |
|
91 | +null; foreach ($mc |
|
92 | +as$z=>$X)$mc[$z] = (array) $X; $K = ''; foreach ($mc["error"]as$z=>$k) {if ($k)return$k; $F = $mc["name"][$z]; $jg = $mc["tmp_name"][$z]; $fb = file_get_contents($ub && preg_match('~\\.gz$~', $F) ? "compress.zlib://$jg" : $jg); if ($ub) {$Cf = substr($fb, 0, 3); if (function_exists("iconv") && preg_match("~^\xFE\xFF|^\xFF\xFE~", $Cf, $af))$fb = iconv("utf-16", "utf-8", $fb); elseif ($Cf == "\xEF\xBB\xBF")$fb = substr($fb, 3); $K .= $fb . "\n\n"; } else$K .= $fb; }return$K; }function |
|
93 | +upload_error($k) {$wd = ($k == UPLOAD_ERR_INI_SIZE ? ini_get("upload_max_filesize") : 0); return($k ? 'Unable to upload a file.' . ($wd ? " " . sprintf('Maximum allowed file size is %sB.', $wd) : "") : 'File does not exist.'); }function |
|
94 | +repeat_pattern($ye, $ld) {return |
|
95 | +str_repeat("$ye{0,65535}", $ld / 65535) . "$ye{0," . ($ld % 65535) . "}"; }function |
|
96 | +is_utf8($X) {return(preg_match('~~u', $X) && !preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~', $X)); }function |
|
97 | +shorten_utf8($Gf, $ld = 80, $Kf = "") {if (!preg_match("(^(" . repeat_pattern("[\t\r\n -\x{FFFF}]", $ld) . ")($)?)u", $Gf, $C))preg_match("(^(" . repeat_pattern("[\t\r\n -~]", $ld) . ")($)?)", $Gf, $C); return |
|
98 | +h($C[1]) . $Kf . (isset($C[2]) ? "" : "<i>...</i>"); }function |
|
99 | +format_number($X) {return |
|
100 | +strtr(number_format($X, 0, ".", ','), preg_split('~~u', '0123456789', -1, PREG_SPLIT_NO_EMPTY)); }function |
|
101 | +friendly_url($X) {return |
|
102 | +preg_replace('~[^a-z0-9_]~i', '-', $X); }function |
|
103 | +hidden_fields($Me, $Kc = array()) {while (list($z, $X) = each($Me)) {if (!in_array($z, $Kc)) {if (is_array($X)) {foreach ($X |
|
104 | +as$Zc=>$W)$Me[$z . "[$Zc]"] = $W; } else |
|
105 | +echo'<input type="hidden" name="' . h($z) . '" value="' . h($X) . '">'; }}}function |
|
106 | +hidden_fields_get() {echo(sid() ? '<input type="hidden" name="' . session_name() . '" value="' . h(session_id()) . '">' : ''), (SERVER !== null ? '<input type="hidden" name="' . DRIVER . '" value="' . h(SERVER) . '">' : ""), '<input type="hidden" name="username" value="' . h($_GET["username"]) . '">'; }function |
|
107 | +table_status1($Q, $jc = false) {$K = table_status($Q, $jc); return($K ? $K : array("Name"=>$Q)); }function |
|
108 | +column_foreign_keys($Q) {global$b; $K = array(); foreach ($b->foreignKeys($Q)as$n) {foreach ($n["source"]as$X)$K[$X][] = $n; }return$K; }function |
|
109 | +enum_input($U, $wa, $l, $Y, $Sb = null) {global$b; preg_match_all("~'((?:[^']|'')*)'~", $l["length"], $rd); $K = ($Sb !== null ? "<label><input type='$U'$wa value='$Sb'" . ((is_array($Y) ? in_array($Sb, $Y) : $Y === 0) ? " checked" : "") . "><i>" . 'empty' . "</i></label>" : ""); foreach ($rd[1]as$t=>$X) {$X = stripcslashes(str_replace("''", "'", $X)); $Na = (is_int($Y) ? $Y == $t + 1 : (is_array($Y) ? in_array($t + 1, $Y) : $Y === $X)); $K .= " <label><input type='$U'$wa value='" . ($t + 1) . "'" . ($Na ? ' checked' : '') . '>' . h($b->editVal($X, $l)) . '</label>'; }return$K; }function |
|
110 | +input($l, $Y, $q) {global$e, $tg, $b, $y; $F = h(bracket_escape($l["field"])); echo"<td class='function'>"; if (is_array($Y) && !$q) {$ta = array($Y); if (version_compare(PHP_VERSION, 5.4) >= 0)$ta[] = JSON_PRETTY_PRINT; $Y = call_user_func_array('json_encode', $ta); $q = "json"; }$cf = ($y == "mssql" && $l["auto_increment"]); if ($cf && !$_POST["save"])$q = null; $xc = (isset($_GET["select"]) || $cf ? array("orig"=>'original') : array()) + $b->editFunctions($l); $wa = " name='fields[$F]'"; if ($l["type"] == "enum")echo |
|
111 | +nbsp($xc[""]) . "<td>" . $b->editInput($_GET["edit"], $l, $wa, $Y); else {$pc = 0; foreach ($xc |
|
112 | +as$z=>$X) {if ($z === "" || !$X)break; $pc++; }$Wd = ($pc ? " onchange=\"var f = this.form['function[" . h(js_escape(bracket_escape($l["field"]))) . "]']; if ($pc > f.selectedIndex) f.selectedIndex = $pc;\" onkeyup='keyupChange.call(this);'" : ""); $wa .= $Wd; $Cc = (in_array($q, $xc) || isset($xc[$q])); echo(count($xc) > 1 ? "<select name='function[$F]' onchange='functionChange(this);'" . on_help("getTarget(event).value.replace(/^SQL\$/, '')", 1) . ">" . optionlist($xc, $q === null || $Cc ? $q : "") . "</select>" : nbsp(reset($xc))) . '<td>'; $Pc = $b->editInput($_GET["edit"], $l, $wa, $Y); if ($Pc != "")echo$Pc; elseif ($l["type"] == "set") {preg_match_all("~'((?:[^']|'')*)'~", $l["length"], $rd); foreach ($rd[1]as$t=>$X) {$X = stripcslashes(str_replace("''", "'", $X)); $Na = (is_int($Y) ? ($Y >> $t) & 1 : in_array($X, explode(",", $Y), true)); echo" <label><input type='checkbox' name='fields[$F][$t]' value='" . (1 << $t) . "'" . ($Na ? ' checked' : '') . "$Wd>" . h($b->editVal($X, $l)) . '</label>'; }}elseif (preg_match('~blob|bytea|raw|file~', $l["type"]) && ini_bool("file_uploads"))echo"<input type='file' name='fields-$F'$Wd>"; elseif (($Zf = preg_match('~text|lob~', $l["type"])) || preg_match("~\n~", $Y)) {if ($Zf && $y != "sqlite")$wa .= " cols='50' rows='12'"; else {$M = min(12, substr_count($Y, "\n") + 1); $wa .= " cols='30' rows='$M'" . ($M == 1 ? " style='height: 1.2em;'" : ""); }echo"<textarea$wa>" . h($Y) . '</textarea>'; }elseif ($q == "json")echo"<textarea$wa cols='50' rows='12' class='jush-js'>" . h($Y) . '</textarea>'; else {$yd = (!preg_match('~int~', $l["type"]) && preg_match('~^(\\d+)(,(\\d+))?$~', $l["length"], $C) ? ((preg_match("~binary~", $l["type"]) ? 2 : 1) * $C[1] + ($C[3] ? 1 : 0) + ($C[2] && !$l["unsigned"] ? 1 : 0)) : ($tg[$l["type"]] ? $tg[$l["type"]] + ($l["unsigned"] ? 0 : 1) : 0)); if ($y == 'sql' && $e->server_info >= 5.6 && preg_match('~time~', $l["type"]))$yd += 7; echo"<input" . ((!$Cc || $q === "") && preg_match('~(?<!o)int~', $l["type"]) ? " type='number'" : "") . " value='" . h($Y) . "'" . ($yd ? " maxlength='$yd'" : "") . (preg_match('~char|binary~', $l["type"]) && $yd > 20 ? " size='40'" : "") . "$wa>"; }}}function |
|
113 | +process_input($l) {global$b; $Jc = bracket_escape($l["field"]); $q = $_POST["function"][$Jc]; $Y = $_POST["fields"][$Jc]; if ($l["type"] == "enum") {if ($Y == -1)return |
|
114 | +false; if ($Y == "")return"NULL"; return+$Y; }if ($l["auto_increment"] && $Y == "")return |
|
115 | +null; if ($q == "orig")return($l["on_update"] == "CURRENT_TIMESTAMP" ? idf_escape($l["field"]) : false); if ($q == "NULL")return"NULL"; if ($l["type"] == "set")return |
|
116 | +array_sum((array) $Y); if ($q == "json") {$q = ""; $Y = json_decode($Y, true); if (!is_array($Y))return |
|
117 | +false; return$Y; }if (preg_match('~blob|bytea|raw|file~', $l["type"]) && ini_bool("file_uploads")) {$mc = get_file("fields-$Jc"); if (!is_string($mc))return |
|
118 | +false; return |
|
119 | +q($mc); }return$b->processInput($l, $Y, $q); }function |
|
120 | +fields_from_edit() {global$j; $K = array(); foreach ((array) $_POST["field_keys"]as$z=>$X) {if ($X != "") {$X = bracket_escape($X); $_POST["function"][$X] = $_POST["field_funs"][$z]; $_POST["fields"][$X] = $_POST["field_vals"][$z]; }}foreach ((array) $_POST["fields"]as$z=>$X) {$F = bracket_escape($z, 1); $K[$F] = array("field"=>$F, "privileges"=>array("insert"=>1, "update"=>1), "null"=>1, "auto_increment"=>($z == $j->primary),); }return$K; }function |
|
121 | +search_tables() {global$b, $e; $_GET["where"][0]["op"] = "LIKE %%"; $_GET["where"][0]["val"] = $_POST["query"]; $uc = false; foreach (table_status('', true)as$Q=>$R) {$F = $b->tableName($R); if (isset($R["Engine"]) && $F != "" && (!$_POST["tables"] || in_array($Q, $_POST["tables"]))) {$J = $e->query("SELECT" . limit("1 FROM " . table($Q), " WHERE " . implode(" AND ", $b->selectSearchProcess(fields($Q), array())), 1)); if (!$J || $J->fetch_row()) {if (!$uc) {echo"<ul>\n"; $uc = true; }echo"<li>" . ($J ? "<a href='" . h(ME . "select=" . urlencode($Q) . "&where[0][op]=" . urlencode($_GET["where"][0]["op"]) . "&where[0][val]=" . urlencode($_GET["where"][0]["val"])) . "'>$F</a>\n" : "$F: <span class='error'>" . error() . "</span>\n"); }}}echo($uc ? "</ul>" : "<p class='message'>" . 'No tables.') . "\n"; }function |
|
122 | +dump_headers($Ic, $Ed = false) {global$b; $K = $b->dumpHeaders($Ic, $Ed); $me = $_POST["output"]; if ($me != "text")header("Content-Disposition: attachment; filename=" . $b->dumpFilename($Ic) . ".$K" . ($me != "file" && !preg_match('~[^0-9a-z]~', $me) ? ".$me" : "")); session_write_close(); ob_flush(); flush(); return$K; }function |
|
123 | +dump_csv($L) {foreach ($L |
|
124 | +as$z=>$X) {if (preg_match("~[\"\n,;\t]~", $X) || $X === "")$L[$z] = '"' . str_replace('"', '""', $X) . '"'; }echo |
|
125 | +implode(($_POST["format"] == "csv" ? "," : ($_POST["format"] == "tsv" ? "\t" : ";")), $L) . "\r\n"; }function |
|
126 | +apply_sql_function($q, $c) {return($q ? ($q == "unixepoch" ? "DATETIME($c, '$q')" : ($q == "count distinct" ? "COUNT(DISTINCT " : strtoupper("$q(")) . "$c)") : $c); }function |
|
127 | +get_temp_dir() {$K = ini_get("upload_tmp_dir"); if (!$K) {if (function_exists('sys_get_temp_dir'))$K = sys_get_temp_dir(); else {$nc = @tempnam("", ""); if (!$nc)return |
|
128 | +false; $K = dirname($nc); unlink($nc); }}return$K; }function |
|
129 | +password_file($g) {$nc = get_temp_dir() . "/adminer.key"; $K = @file_get_contents($nc); if ($K || !$g)return$K; $p = @fopen($nc, "w"); if ($p) {chmod($nc, 0660); $K = rand_string(); fwrite($p, $K); fclose($p); }return$K; }function |
|
130 | +rand_string() {return |
|
131 | +md5(uniqid(mt_rand(), true)); }function |
|
132 | +select_value($X, $A, $l, $ag) {global$b, $ba; if (is_array($X)) {$K = ""; foreach ($X |
|
133 | +as$Zc=>$W)$K .= "<tr>" . ($X != array_values($X) ? "<th>" . h($Zc) : "") . "<td>" . select_value($W, $A, $l, $ag); return"<table cellspacing='0'>$K</table>"; }if (!$A)$A = $b->selectLink($X, $l); if ($A === null) {if (is_mail($X))$A = "mailto:$X"; if ($Oe = is_url($X))$A = (($Oe == "http" && $ba) || preg_match('~WebKit~i', $_SERVER["HTTP_USER_AGENT"]) ? $X : "https://www.adminer.org/redirect/?url=" . urlencode($X)); }$K = $b->editVal($X, $l); if ($K !== null) {if ($K === "")$K = " "; elseif (!is_utf8($K))$K = "\0"; elseif ($ag != "" && is_shortable($l))$K = shorten_utf8($K, max(0, +$ag)); else$K = h($K); }return$b->selectVal($K, $A, $l, $X); }function |
|
134 | +is_mail($Pb) {$va = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]'; $Db = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; $ye = "$va+(\\.$va+)*@($Db?\\.)+$Db"; return |
|
135 | +is_string($Pb) && preg_match("(^$ye(,\\s*$ye)*\$)i", $Pb); }function |
|
136 | +is_url($Gf) {$Db = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; return(preg_match("~^(https?)://($Db?\\.)+$Db(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i", $Gf, $C) ? strtolower($C[1]) : ""); }function |
|
137 | +is_shortable($l) {return |
|
138 | +preg_match('~char|text|lob|geometry|point|linestring|polygon|string~', $l["type"]); }function |
|
139 | +count_rows($Q, $Z, $Vc, $s) {global$y; $I = " FROM " . table($Q) . ($Z ? " WHERE " . implode(" AND ", $Z) : ""); return($Vc && ($y == "sql" || count($s) == 1) ? "SELECT COUNT(DISTINCT " . implode(", ", $s) . ")$I" : "SELECT COUNT(*)" . ($Vc ? " FROM (SELECT 1$I$zc) x" : $I)); }function |
|
140 | +slow_query($I) {global$b, $T; $i = $b->database(); $cg = $b->queryTimeout(); if (support("kill") && is_object($f = connect()) && ($i == "" || $f->select_db($i))) {$bd = $f->result("SELECT CONNECTION_ID()"); echo'<script type="text/javascript"> |
|
141 | 141 | var timeout = setTimeout(function () { |
142 | - ajax(\'',js_escape(ME),'script=kill\', function () { |
|
143 | - }, \'token=',$T,'&kill=',$bd,'\'); |
|
144 | -}, ',1000*$cg,'); |
|
142 | + ajax(\'',js_escape(ME), 'script=kill\', function () { |
|
143 | + }, \'token=',$T, '&kill=', $bd, '\'); |
|
144 | +}, ',1000 * $cg, '); |
|
145 | 145 | </script> |
146 | -';}else$f=null;ob_flush();flush();$K=@get_key_vals($I,$f,$cg);if($f){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return |
|
147 | -array_keys($K);}function |
|
148 | -get_token(){$Se=rand(1,1e6);return($Se^$_SESSION["token"]).":$Se";}function |
|
149 | -verify_token(){list($T,$Se)=explode(":",$_POST["token"]);return($Se^$_SESSION["token"])==$T;}function |
|
150 | -lzw_decompress($Da){$_b=256;$Ea=8;$Ta=array();$df=0;$ef=0;for($t=0;$t<strlen($Da);$t++){$df=($df<<8)+ord($Da[$t]);$ef+=8;if($ef>=$Ea){$ef-=$Ea;$Ta[]=$df>>$ef;$df&=(1<<$ef)-1;$_b++;if($_b>>$Ea)$Ea++;}}$zb=range("\0","\xFF");$K="";foreach($Ta |
|
151 | -as$t=>$Sa){$Ob=$zb[$Sa];if(!isset($Ob))$Ob=$Qg.$Qg[0];$K.=$Ob;if($t)$zb[]=$Qg.$Ob[0];$Qg=$Ob;}return$K;}function |
|
152 | -on_help($Za,$xf=0){return" onmouseover='helpMouseover(this, event, ".h($Za).", $xf);' onmouseout='helpMouseout(this, event);'";}function |
|
153 | -edit_form($a,$m,$L,$Ag){global$b,$y,$T,$k;$Pf=$b->tableName(table_status1($a,true));page_header(($Ag?'Edit':'Insert'),$k,array("select"=>array($a,$Pf)),$Pf);if($L===false)echo"<p class='error'>".'No rows.'."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form"> |
|
154 | -';if(!$m)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m |
|
155 | -as$F=>$l){echo"<tr><th>".$b->fieldName($l);$vb=$_GET["set"][bracket_escape($F)];if($vb===null){$vb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$vb,$af))$vb=$af[1];}$Y=($L!==null?($L[$F]!=""&&$y=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$F])?array_sum($L[$F]):+$L[$F]):$L[$F]):(!$Ag&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$vb)));if(!$_POST["save"]&&is_string($Y))$Y=$b->editVal($Y,$l);$q=($_POST["save"]?(string)$_POST["function"][$F]:($Ag&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$Y=="CURRENT_TIMESTAMP"){$Y="";$q="now";}input($l,$Y,$q);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($Ag?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n";}echo($Ag?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'"> |
|
146 | +';} else$f = null; ob_flush(); flush(); $K = @get_key_vals($I, $f, $cg); if ($f) {echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n"; ob_flush(); flush(); }return |
|
147 | +array_keys($K); }function |
|
148 | +get_token() {$Se = rand(1, 1e6); return($Se ^ $_SESSION["token"]) . ":$Se"; }function |
|
149 | +verify_token() {list($T, $Se) = explode(":", $_POST["token"]); return($Se ^ $_SESSION["token"]) == $T; }function |
|
150 | +lzw_decompress($Da) {$_b = 256; $Ea = 8; $Ta = array(); $df = 0; $ef = 0; for ($t = 0; $t < strlen($Da); $t++) {$df = ($df << 8) + ord($Da[$t]); $ef += 8; if ($ef >= $Ea) {$ef -= $Ea; $Ta[] = $df >> $ef; $df &= (1 << $ef) - 1; $_b++; if ($_b >> $Ea)$Ea++; }}$zb = range("\0", "\xFF"); $K = ""; foreach ($Ta |
|
151 | +as$t=>$Sa) {$Ob = $zb[$Sa]; if (!isset($Ob))$Ob = $Qg . $Qg[0]; $K .= $Ob; if ($t)$zb[] = $Qg . $Ob[0]; $Qg = $Ob; }return$K; }function |
|
152 | +on_help($Za, $xf = 0) {return" onmouseover='helpMouseover(this, event, " . h($Za) . ", $xf);' onmouseout='helpMouseout(this, event);'"; }function |
|
153 | +edit_form($a, $m, $L, $Ag) {global$b, $y, $T, $k; $Pf = $b->tableName(table_status1($a, true)); page_header(($Ag ? 'Edit' : 'Insert'), $k, array("select"=>array($a, $Pf)), $Pf); if ($L === false)echo"<p class='error'>" . 'No rows.' . "\n"; echo'<form action="" method="post" enctype="multipart/form-data" id="form"> |
|
154 | +';if (!$m)echo"<p class='error'>" . 'You have no privileges to update this table.' . "\n"; else {echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n"; foreach ($m |
|
155 | +as$F=>$l) {echo"<tr><th>" . $b->fieldName($l); $vb = $_GET["set"][bracket_escape($F)]; if ($vb === null) {$vb = $l["default"]; if ($l["type"] == "bit" && preg_match("~^b'([01]*)'\$~", $vb, $af))$vb = $af[1]; }$Y = ($L !== null ? ($L[$F] != "" && $y == "sql" && preg_match("~enum|set~", $l["type"]) ? (is_array($L[$F]) ? array_sum($L[$F]) : +$L[$F]) : $L[$F]) : (!$Ag && $l["auto_increment"] ? "" : (isset($_GET["select"]) ? false : $vb))); if (!$_POST["save"] && is_string($Y))$Y = $b->editVal($Y, $l); $q = ($_POST["save"] ? (string) $_POST["function"][$F] : ($Ag && $l["on_update"] == "CURRENT_TIMESTAMP" ? "now" : ($Y === false ? null : ($Y !== null ? '' : 'NULL')))); if (preg_match("~time~", $l["type"]) && $Y == "CURRENT_TIMESTAMP") {$Y = ""; $q = "now"; }input($l, $Y, $q); echo"\n"; }if (!support("table"))echo"<tr>" . "<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>" . "<td class='function'>" . html_select("field_funs[]", $b->editFunctions(array("null"=>isset($_GET["select"])))) . "<td><input name='field_vals[]'>" . "\n"; echo"</table>\n"; }echo"<p>\n"; if ($m) {echo"<input type='submit' value='" . 'Save' . "'>\n"; if (!isset($_GET["select"]))echo"<input type='submit' name='insert' value='" . ($Ag ? 'Save and continue edit' . "' onclick='return !ajaxForm(this.form, \"" . 'Saving' . '...", this)' : 'Save and insert next') . "' title='Ctrl+Shift+Enter'>\n"; }echo($Ag ? "<input type='submit' name='delete' value='" . 'Delete' . "'" . confirm() . ">\n" : ($_POST || !$m ? "" : "<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n")); if (isset($_GET["select"]))hidden_fields(array("check"=>(array) $_POST["check"], "clone"=>$_POST["clone"], "all"=>$_POST["all"])); echo'<input type="hidden" name="referer" value="', h(isset($_POST["referer"]) ? $_POST["referer"] : $_SERVER["HTTP_REFERER"]), '"> |
|
156 | 156 | <input type="hidden" name="save" value="1"> |
157 | -<input type="hidden" name="token" value="',$T,'"> |
|
157 | +<input type="hidden" name="token" value="',$T, '"> |
|
158 | 158 | </form> |
159 | -';}global$b,$e,$Eb,$Lb,$Vb,$k,$xc,$_c,$ba,$Oc,$y,$ca,$ed,$Vd,$ze,$Hf,$Dc,$T,$og,$tg,$_g,$ga;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";$ba=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$pe=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$pe[]=true;call_user_func_array('session_set_cookie_params',$pe);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$oc);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function |
|
160 | -get_lang(){return'en';}function |
|
161 | -lang($ng,$Md=null){if(is_array($ng)){$Be=($Md==1?0:1);$ng=$ng[$Be];}$ng=str_replace("%d","%s",$ng);$Md=format_number($Md);return |
|
162 | -sprintf($ng,$Md);}if(extension_loaded('pdo')){class |
|
159 | +';}global$b, $e, $Eb, $Lb, $Vb, $k, $xc, $_c, $ba, $Oc, $y, $ca, $ed, $Vd, $ze, $Hf, $Dc, $T, $og, $tg, $_g, $ga; if (!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"] = $_SERVER["ORIG_PATH_INFO"]; if (!strpos($_SERVER["REQUEST_URI"], '?') && $_SERVER["QUERY_STRING"] != "")$_SERVER["REQUEST_URI"] .= "?$_SERVER[QUERY_STRING]"; $ba = $_SERVER["HTTPS"] && strcasecmp($_SERVER["HTTPS"], "off"); @ini_set("session.use_trans_sid", false); session_cache_limiter(""); if (!defined("SID")) {session_name("adminer_sid"); $pe = array(0, preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]), "", $ba); if (version_compare(PHP_VERSION, '5.2.0') >= 0)$pe[] = true; call_user_func_array('session_set_cookie_params', $pe); session_start(); }remove_slashes(array(&$_GET, &$_POST, &$_COOKIE), $oc); if (get_magic_quotes_runtime())set_magic_quotes_runtime(false); @set_time_limit(0); @ini_set("zend.ze1_compatibility_mode", false); @ini_set("precision", 20); function |
|
160 | +get_lang() {return'en'; }function |
|
161 | +lang($ng, $Md = null) {if (is_array($ng)) {$Be = ($Md == 1 ? 0 : 1); $ng = $ng[$Be]; }$ng = str_replace("%d", "%s", $ng); $Md = format_number($Md); return |
|
162 | +sprintf($ng, $Md); }if (extension_loaded('pdo')) {class |
|
163 | 163 | Min_PDO |
164 | 164 | extends |
165 | -PDO{var$_result,$server_info,$affected_rows,$errno,$error;function |
|
166 | -__construct(){global$b;$Be=array_search("SQL",$b->operators);if($Be!==false)unset($b->operators[$Be]);}function |
|
167 | -dsn($Ib,$V,$we){try{parent::__construct($Ib,$V,$we);}catch(Exception$ac){auth_error($ac->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function |
|
168 | -query($I,$ug=false){$J=parent::query($I);$this->error="";if(!$J){list(,$this->errno,$this->error)=$this->errorInfo();return |
|
169 | -false;}$this->store_result($J);return$J;}function |
|
170 | -multi_query($I){return$this->_result=$this->query($I);}function |
|
171 | -store_result($J=null){if(!$J){$J=$this->_result;if(!$J)return |
|
172 | -false;}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return |
|
173 | -true;}function |
|
174 | -next_result(){if(!$this->_result)return |
|
175 | -false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function |
|
176 | -result($I,$l=0){$J=$this->query($I);if(!$J)return |
|
177 | -false;$L=$J->fetch();return$L[$l];}}class |
|
165 | +PDO {var$_result, $server_info, $affected_rows, $errno, $error; function |
|
166 | +__construct() {global$b; $Be = array_search("SQL", $b->operators); if ($Be !== false)unset($b->operators[$Be]); }function |
|
167 | +dsn($Ib, $V, $we) {try {parent::__construct($Ib, $V, $we); } catch (Exception$ac) {auth_error($ac->getMessage()); }$this->setAttribute(13, array('Min_PDOStatement')); $this->server_info = $this->getAttribute(4); }function |
|
168 | +query($I, $ug = false) {$J = parent::query($I); $this->error = ""; if (!$J) {list(,$this->errno, $this->error) = $this->errorInfo(); return |
|
169 | +false; }$this->store_result($J); return$J; }function |
|
170 | +multi_query($I) {return$this->_result = $this->query($I); }function |
|
171 | +store_result($J = null) {if (!$J) {$J = $this->_result; if (!$J)return |
|
172 | +false; }if ($J->columnCount()) {$J->num_rows = $J->rowCount(); return$J; }$this->affected_rows = $J->rowCount(); return |
|
173 | +true; }function |
|
174 | +next_result() {if (!$this->_result)return |
|
175 | +false; $this->_result->_offset = 0; return@$this->_result->nextRowset(); }function |
|
176 | +result($I, $l = 0) {$J = $this->query($I); if (!$J)return |
|
177 | +false; $L = $J->fetch(); return$L[$l]; }}class |
|
178 | 178 | Min_PDOStatement |
179 | 179 | extends |
180 | -PDOStatement{var$_offset=0,$num_rows;function |
|
181 | -fetch_assoc(){return$this->fetch(2);}function |
|
182 | -fetch_row(){return$this->fetch(3);}function |
|
183 | -fetch_field(){$L=(object)$this->getColumnMeta($this->_offset++);$L->orgtable=$L->table;$L->orgname=$L->name;$L->charsetnr=(in_array("blob",(array)$L->flags)?63:0);return$L;}}}$Eb=array();class |
|
184 | -Min_SQL{var$_conn;function |
|
185 | -__construct($e){$this->_conn=$e;}function |
|
186 | -select($Q,$N,$Z,$s,$de=array(),$_=1,$G=0,$Ie=false){global$b,$y;$Vc=(count($s)<count($N));$I=$b->selectQueryBuild($N,$Z,$s,$de,$_,$G);if(!$I)$I="SELECT".limit(($_GET["page"]!="last"&&+$_&&$s&&$Vc&&$y=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($s&&$Vc?"\nGROUP BY ".implode(", ",$s):"").($de?"\nORDER BY ".implode(", ",$de):""),($_!=""?+$_:null),($G?$_*$G:0),"\n");$Cf=microtime(true);$K=$this->_conn->query($I);if($Ie)echo$b->selectQuery($I,format_time($Cf));return$K;}function |
|
187 | -delete($Q,$Qe,$_=0){$I="FROM ".table($Q);return |
|
188 | -queries("DELETE".($_?limit1($I,$Qe):" $I$Qe"));}function |
|
189 | -update($Q,$P,$Qe,$_=0,$sf="\n"){$Hg=array();foreach($P |
|
190 | -as$z=>$X)$Hg[]="$z = $X";$I=table($Q)." SET$sf".implode(",$sf",$Hg);return |
|
191 | -queries("UPDATE".($_?limit1($I,$Qe):" $I$Qe"));}function |
|
192 | -insert($Q,$P){return |
|
193 | -queries("INSERT INTO ".table($Q).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function |
|
194 | -insertUpdate($Q,$M,$He){return |
|
195 | -false;}function |
|
196 | -begin(){return |
|
197 | -queries("BEGIN");}function |
|
198 | -commit(){return |
|
199 | -queries("COMMIT");}function |
|
200 | -rollback(){return |
|
201 | -queries("ROLLBACK");}}$Eb=array("server"=>"MySQL")+$Eb;if(!defined("DRIVER")){$Ee=array("MySQLi","MySQL","PDO_MySQL");define("DRIVER","server");if(extension_loaded("mysqli")){class |
|
180 | +PDOStatement {var$_offset = 0, $num_rows; function |
|
181 | +fetch_assoc() {return$this->fetch(2); }function |
|
182 | +fetch_row() {return$this->fetch(3); }function |
|
183 | +fetch_field() {$L = (object) $this->getColumnMeta($this->_offset++); $L->orgtable = $L->table; $L->orgname = $L->name; $L->charsetnr = (in_array("blob", (array) $L->flags) ? 63 : 0); return$L; }}}$Eb = array(); class |
|
184 | +Min_SQL {var$_conn; function |
|
185 | +__construct($e) {$this->_conn = $e; }function |
|
186 | +select($Q, $N, $Z, $s, $de = array(), $_ = 1, $G = 0, $Ie = false) {global$b, $y; $Vc = (count($s) < count($N)); $I = $b->selectQueryBuild($N, $Z, $s, $de, $_, $G); if (!$I)$I = "SELECT" . limit(($_GET["page"] != "last" && +$_ && $s && $Vc && $y == "sql" ? "SQL_CALC_FOUND_ROWS " : "") . implode(", ", $N) . "\nFROM " . table($Q), ($Z ? "\nWHERE " . implode(" AND ", $Z) : "") . ($s && $Vc ? "\nGROUP BY " . implode(", ", $s) : "") . ($de ? "\nORDER BY " . implode(", ", $de) : ""), ($_ != "" ?+$_ : null), ($G ? $_ * $G : 0), "\n"); $Cf = microtime(true); $K = $this->_conn->query($I); if ($Ie)echo$b->selectQuery($I, format_time($Cf)); return$K; }function |
|
187 | +delete($Q, $Qe, $_ = 0) {$I = "FROM " . table($Q); return |
|
188 | +queries("DELETE" . ($_ ? limit1($I, $Qe) : " $I$Qe")); }function |
|
189 | +update($Q, $P, $Qe, $_ = 0, $sf = "\n") {$Hg = array(); foreach ($P |
|
190 | +as$z=>$X)$Hg[] = "$z = $X"; $I = table($Q) . " SET$sf" . implode(",$sf", $Hg); return |
|
191 | +queries("UPDATE" . ($_ ? limit1($I, $Qe) : " $I$Qe")); }function |
|
192 | +insert($Q, $P) {return |
|
193 | +queries("INSERT INTO " . table($Q) . ($P ? " (" . implode(", ", array_keys($P)) . ")\nVALUES (" . implode(", ", $P) . ")" : " DEFAULT VALUES")); }function |
|
194 | +insertUpdate($Q, $M, $He) {return |
|
195 | +false; }function |
|
196 | +begin() {return |
|
197 | +queries("BEGIN"); }function |
|
198 | +commit() {return |
|
199 | +queries("COMMIT"); }function |
|
200 | +rollback() {return |
|
201 | +queries("ROLLBACK"); }}$Eb = array("server"=>"MySQL") + $Eb; if (!defined("DRIVER")) {$Ee = array("MySQLi", "MySQL", "PDO_MySQL"); define("DRIVER", "server"); if (extension_loaded("mysqli")) {class |
|
202 | 202 | Min_DB |
203 | 203 | extends |
204 | -MySQLi{var$extension="MySQLi";function |
|
205 | -__construct(){parent::init();}function |
|
206 | -connect($O="",$V="",$we="",$qb=null,$Ae=null,$zf=null){mysqli_report(MYSQLI_REPORT_OFF);list($Gc,$Ae)=explode(":",$O,2);$K=@$this->real_connect(($O!=""?$Gc:ini_get("mysqli.default_host")),($O.$V!=""?$V:ini_get("mysqli.default_user")),($O.$V.$we!=""?$we:ini_get("mysqli.default_pw")),$qb,(is_numeric($Ae)?$Ae:ini_get("mysqli.default_port")),(!is_numeric($Ae)?$Ae:$zf));return$K;}function |
|
207 | -set_charset($La){if(parent::set_charset($La))return |
|
208 | -true;parent::set_charset('utf8');return$this->query("SET NAMES $La");}function |
|
209 | -result($I,$l=0){$J=$this->query($I);if(!$J)return |
|
210 | -false;$L=$J->fetch_array();return$L[$l];}function |
|
211 | -quote($Gf){return"'".$this->escape_string($Gf)."'";}}}elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class |
|
212 | -Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function |
|
213 | -connect($O,$V,$we){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$V"!=""?$V:ini_get("mysql.default_user")),("$O$V$we"!=""?$we:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function |
|
214 | -set_charset($La){if(function_exists('mysql_set_charset')){if(mysql_set_charset($La,$this->_link))return |
|
215 | -true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $La");}function |
|
216 | -quote($Gf){return"'".mysql_real_escape_string($Gf,$this->_link)."'";}function |
|
217 | -select_db($qb){return |
|
218 | -mysql_select_db($qb,$this->_link);}function |
|
219 | -query($I,$ug=false){$J=@($ug?mysql_unbuffered_query($I,$this->_link):mysql_query($I,$this->_link));$this->error="";if(!$J){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return |
|
220 | -false;}if($J===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return |
|
221 | -true;}return |
|
204 | +MySQLi {var$extension = "MySQLi"; function |
|
205 | +__construct() {parent::init(); }function |
|
206 | +connect($O = "", $V = "", $we = "", $qb = null, $Ae = null, $zf = null) {mysqli_report(MYSQLI_REPORT_OFF); list($Gc, $Ae) = explode(":", $O, 2); $K = @$this->real_connect(($O != "" ? $Gc : ini_get("mysqli.default_host")), ($O . $V != "" ? $V : ini_get("mysqli.default_user")), ($O . $V . $we != "" ? $we : ini_get("mysqli.default_pw")), $qb, (is_numeric($Ae) ? $Ae : ini_get("mysqli.default_port")), (!is_numeric($Ae) ? $Ae : $zf)); return$K; }function |
|
207 | +set_charset($La) {if (parent::set_charset($La))return |
|
208 | +true; parent::set_charset('utf8'); return$this->query("SET NAMES $La"); }function |
|
209 | +result($I, $l = 0) {$J = $this->query($I); if (!$J)return |
|
210 | +false; $L = $J->fetch_array(); return$L[$l]; }function |
|
211 | +quote($Gf) {return"'" . $this->escape_string($Gf) . "'"; }}}elseif (extension_loaded("mysql") && !(ini_get("sql.safe_mode") && extension_loaded("pdo_mysql"))) {class |
|
212 | +Min_DB {var$extension = "MySQL", $server_info, $affected_rows, $errno, $error, $_link, $_result; function |
|
213 | +connect($O, $V, $we) {$this->_link = @mysql_connect(($O != "" ? $O : ini_get("mysql.default_host")), ("$O$V" != "" ? $V : ini_get("mysql.default_user")), ("$O$V$we" != "" ? $we : ini_get("mysql.default_password")), true, 131072); if ($this->_link)$this->server_info = mysql_get_server_info($this->_link); else$this->error = mysql_error(); return(bool) $this->_link; }function |
|
214 | +set_charset($La) {if (function_exists('mysql_set_charset')) {if (mysql_set_charset($La, $this->_link))return |
|
215 | +true; mysql_set_charset('utf8', $this->_link); }return$this->query("SET NAMES $La"); }function |
|
216 | +quote($Gf) {return"'" . mysql_real_escape_string($Gf, $this->_link) . "'"; }function |
|
217 | +select_db($qb) {return |
|
218 | +mysql_select_db($qb, $this->_link); }function |
|
219 | +query($I, $ug = false) {$J = @($ug ? mysql_unbuffered_query($I, $this->_link) : mysql_query($I, $this->_link)); $this->error = ""; if (!$J) {$this->errno = mysql_errno($this->_link); $this->error = mysql_error($this->_link); return |
|
220 | +false; }if ($J === true) {$this->affected_rows = mysql_affected_rows($this->_link); $this->info = mysql_info($this->_link); return |
|
221 | +true; }return |
|
222 | 222 | new |
223 | -Min_Result($J);}function |
|
224 | -multi_query($I){return$this->_result=$this->query($I);}function |
|
225 | -store_result(){return$this->_result;}function |
|
226 | -next_result(){return |
|
227 | -false;}function |
|
228 | -result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows)return |
|
229 | -false;return |
|
230 | -mysql_result($J->_result,0,$l);}}class |
|
231 | -Min_Result{var$num_rows,$_result,$_offset=0;function |
|
232 | -__construct($J){$this->_result=$J;$this->num_rows=mysql_num_rows($J);}function |
|
233 | -fetch_assoc(){return |
|
234 | -mysql_fetch_assoc($this->_result);}function |
|
235 | -fetch_row(){return |
|
236 | -mysql_fetch_row($this->_result);}function |
|
237 | -fetch_field(){$K=mysql_fetch_field($this->_result,$this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=($K->blob?63:0);return$K;}function |
|
238 | -__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class |
|
223 | +Min_Result($J); }function |
|
224 | +multi_query($I) {return$this->_result = $this->query($I); }function |
|
225 | +store_result() {return$this->_result; }function |
|
226 | +next_result() {return |
|
227 | +false; }function |
|
228 | +result($I, $l = 0) {$J = $this->query($I); if (!$J || !$J->num_rows)return |
|
229 | +false; return |
|
230 | +mysql_result($J->_result, 0, $l); }}class |
|
231 | +Min_Result {var$num_rows, $_result, $_offset = 0; function |
|
232 | +__construct($J) {$this->_result = $J; $this->num_rows = mysql_num_rows($J); }function |
|
233 | +fetch_assoc() {return |
|
234 | +mysql_fetch_assoc($this->_result); }function |
|
235 | +fetch_row() {return |
|
236 | +mysql_fetch_row($this->_result); }function |
|
237 | +fetch_field() {$K = mysql_fetch_field($this->_result, $this->_offset++); $K->orgtable = $K->table; $K->orgname = $K->name; $K->charsetnr = ($K->blob ? 63 : 0); return$K; }function |
|
238 | +__destruct() {mysql_free_result($this->_result); }}}elseif (extension_loaded("pdo_mysql")) {class |
|
239 | 239 | Min_DB |
240 | 240 | extends |
241 | -Min_PDO{var$extension="PDO_MySQL";function |
|
242 | -connect($O,$V,$we){$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\\d)~',';port=\\1',$O)),$V,$we);return |
|
243 | -true;}function |
|
244 | -set_charset($La){$this->query("SET NAMES $La");}function |
|
245 | -select_db($qb){return$this->query("USE ".idf_escape($qb));}function |
|
246 | -query($I,$ug=false){$this->setAttribute(1000,!$ug);return |
|
247 | -parent::query($I,$ug);}}}class |
|
241 | +Min_PDO {var$extension = "PDO_MySQL"; function |
|
242 | +connect($O, $V, $we) {$this->dsn("mysql:charset=utf8;host=" . str_replace(":", ";unix_socket=", preg_replace('~:(\\d)~', ';port=\\1', $O)), $V, $we); return |
|
243 | +true; }function |
|
244 | +set_charset($La) {$this->query("SET NAMES $La"); }function |
|
245 | +select_db($qb) {return$this->query("USE " . idf_escape($qb)); }function |
|
246 | +query($I, $ug = false) {$this->setAttribute(1000, !$ug); return |
|
247 | +parent::query($I, $ug); }}}class |
|
248 | 248 | Min_Driver |
249 | 249 | extends |
250 | -Min_SQL{function |
|
251 | -insert($Q,$P){return($P?parent::insert($Q,$P):queries("INSERT INTO ".table($Q)." ()\nVALUES ()"));}function |
|
252 | -insertUpdate($Q,$M,$He){$d=array_keys(reset($M));$Fe="INSERT INTO ".table($Q)." (".implode(", ",$d).") VALUES\n";$Hg=array();foreach($d |
|
253 | -as$z)$Hg[$z]="$z = VALUES($z)";$Kf="\nON DUPLICATE KEY UPDATE ".implode(", ",$Hg);$Hg=array();$ld=0;foreach($M |
|
254 | -as$P){$Y="(".implode(", ",$P).")";if($Hg&&(strlen($Fe)+$ld+strlen($Y)+strlen($Kf)>1e6)){if(!queries($Fe.implode(",\n",$Hg).$Kf))return |
|
255 | -false;$Hg=array();$ld=0;}$Hg[]=$Y;$ld+=strlen($Y)+2;}return |
|
256 | -queries($Fe.implode(",\n",$Hg).$Kf);}}function |
|
257 | -idf_escape($Jc){return"`".str_replace("`","``",$Jc)."`";}function |
|
258 | -table($Jc){return |
|
259 | -idf_escape($Jc);}function |
|
260 | -connect(){global$b;$e=new |
|
261 | -Min_DB;$mb=$b->credentials();if($e->connect($mb[0],$mb[1],$mb[2])){$e->set_charset(charset($e));$e->query("SET sql_quote_show_create = 1, autocommit = 1");return$e;}$K=$e->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($lf=iconv("windows-1250","utf-8",$K))>strlen($K))$K=$lf;return$K;}function |
|
262 | -get_databases($qc){global$e;$K=get_session("dbs");if($K===null){$I=($e->server_info>=5?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");$K=($qc?slow_query($I):get_vals($I));restart_session();set_session("dbs",$K);stop_session();}return$K;}function |
|
263 | -limit($I,$Z,$_,$Od=0,$sf=" "){return" $I$Z".($_!==null?$sf."LIMIT $_".($Od?" OFFSET $Od":""):"");}function |
|
264 | -limit1($I,$Z){return |
|
265 | -limit($I,$Z,1);}function |
|
266 | -db_collation($i,$Xa){global$e;$K=null;$g=$e->result("SHOW CREATE DATABASE ".idf_escape($i),1);if(preg_match('~ COLLATE ([^ ]+)~',$g,$C))$K=$C[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$g,$C))$K=$Xa[$C[1]][-1];return$K;}function |
|
267 | -engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"]))$K[]=$L["Engine"];}return$K;}function |
|
268 | -logged_user(){global$e;return$e->result("SELECT USER()");}function |
|
269 | -tables_list(){global$e;return |
|
270 | -get_key_vals($e->server_info>=5?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function |
|
271 | -count_tables($h){$K=array();foreach($h |
|
272 | -as$i)$K[$i]=count(get_vals("SHOW TABLES IN ".idf_escape($i)));return$K;}function |
|
273 | -table_status($F="",$jc=false){global$e;$K=array();foreach(get_rows($jc&&$e->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($F!=""?"AND TABLE_NAME = ".q($F):"ORDER BY Name"):"SHOW TABLE STATUS".($F!=""?" LIKE ".q(addcslashes($F,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB")$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]);if(!isset($L["Engine"]))$L["Comment"]="";if($F!="")return$L;$K[$L["Name"]]=$L;}return$K;}function |
|
274 | -is_view($R){return$R["Engine"]===null;}function |
|
275 | -fk_support($R){global$e;return |
|
276 | -preg_match('~InnoDB|IBMDB2I~i',$R["Engine"])||(preg_match('~NDB~i',$R["Engine"])&&version_compare($e->server_info,'5.6')>=0);}function |
|
277 | -fields($Q){$K=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($Q))as$L){preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~',$L["Type"],$C);$K[$L["Field"]]=array("field"=>$L["Field"],"full_type"=>$L["Type"],"type"=>$C[1],"length"=>$C[2],"unsigned"=>ltrim($C[3].$C[4]),"default"=>($L["Default"]!=""||preg_match("~char|set~",$C[1])?$L["Default"]:null),"null"=>($L["Null"]=="YES"),"auto_increment"=>($L["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$L["Extra"],$C)?$C[1]:""),"collation"=>$L["Collation"],"privileges"=>array_flip(preg_split('~, *~',$L["Privileges"])),"comment"=>$L["Comment"],"primary"=>($L["Key"]=="PRI"),);}return$K;}function |
|
278 | -indexes($Q,$f=null){$K=array();foreach(get_rows("SHOW INDEX FROM ".table($Q),$f)as$L){$K[$L["Key_name"]]["type"]=($L["Key_name"]=="PRIMARY"?"PRIMARY":($L["Index_type"]=="FULLTEXT"?"FULLTEXT":($L["Non_unique"]?"INDEX":"UNIQUE")));$K[$L["Key_name"]]["columns"][]=$L["Column_name"];$K[$L["Key_name"]]["lengths"][]=$L["Sub_part"];$K[$L["Key_name"]]["descs"][]=null;}return$K;}function |
|
279 | -foreign_keys($Q){global$e,$Vd;static$ye='`(?:[^`]|``)+`';$K=array();$kb=$e->result("SHOW CREATE TABLE ".table($Q),1);if($kb){preg_match_all("~CONSTRAINT ($ye) FOREIGN KEY ?\\(((?:$ye,? ?)+)\\) REFERENCES ($ye)(?:\\.($ye))? \\(((?:$ye,? ?)+)\\)(?: ON DELETE ($Vd))?(?: ON UPDATE ($Vd))?~",$kb,$rd,PREG_SET_ORDER);foreach($rd |
|
280 | -as$C){preg_match_all("~$ye~",$C[2],$_f);preg_match_all("~$ye~",$C[5],$Vf);$K[idf_unescape($C[1])]=array("db"=>idf_unescape($C[4]!=""?$C[3]:$C[4]),"table"=>idf_unescape($C[4]!=""?$C[4]:$C[3]),"source"=>array_map('idf_unescape',$_f[0]),"target"=>array_map('idf_unescape',$Vf[0]),"on_delete"=>($C[6]?$C[6]:"RESTRICT"),"on_update"=>($C[7]?$C[7]:"RESTRICT"),);}}return$K;}function |
|
281 | -view($F){global$e;return |
|
282 | -array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$e->result("SHOW CREATE VIEW ".table($F),1)));}function |
|
283 | -collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"])$K[$L["Charset"]][-1]=$L["Collation"];else$K[$L["Charset"]][]=$L["Collation"];}ksort($K);foreach($K |
|
284 | -as$z=>$X)asort($K[$z]);return$K;}function |
|
285 | -information_schema($i){global$e;return($e->server_info>=5&&$i=="information_schema")||($e->server_info>=5.5&&$i=="performance_schema");}function |
|
286 | -error(){global$e;return |
|
287 | -h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$e->error));}function |
|
288 | -create_database($i,$Wa){return |
|
289 | -queries("CREATE DATABASE ".idf_escape($i).($Wa?" COLLATE ".q($Wa):""));}function |
|
290 | -drop_databases($h){$K=apply_queries("DROP DATABASE",$h,'idf_escape');restart_session();set_session("dbs",null);return$K;}function |
|
291 | -rename_database($F,$Wa){$K=false;if(create_database($F,$Wa)){$bf=array();foreach(tables_list()as$Q=>$U)$bf[]=table($Q)." TO ".idf_escape($F).".".table($Q);$K=(!$bf||queries("RENAME TABLE ".implode(", ",$bf)));if($K)queries("DROP DATABASE ".idf_escape(DB));restart_session();set_session("dbs",null);}return$K;}function |
|
292 | -auto_increment(){$za=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$za="";break;}if($v["type"]=="PRIMARY")$za=" UNIQUE";}}return" AUTO_INCREMENT$za";}function |
|
293 | -alter_table($Q,$F,$m,$rc,$bb,$Tb,$Wa,$ya,$te){$sa=array();foreach($m |
|
294 | -as$l)$sa[]=($l[1]?($Q!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($Q!=""?$l[2]:""):"DROP ".idf_escape($l[0]));$sa=array_merge($sa,$rc);$Df=($bb!==null?" COMMENT=".q($bb):"").($Tb?" ENGINE=".q($Tb):"").($Wa?" COLLATE ".q($Wa):"").($ya!=""?" AUTO_INCREMENT=$ya":"");if($Q=="")return |
|
295 | -queries("CREATE TABLE ".table($F)." (\n".implode(",\n",$sa)."\n)$Df$te");if($Q!=$F)$sa[]="RENAME TO ".table($F);if($Df)$sa[]=ltrim($Df);return($sa||$te?queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$sa).$te):true);}function |
|
296 | -alter_indexes($Q,$sa){foreach($sa |
|
297 | -as$z=>$X)$sa[$z]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return |
|
298 | -queries("ALTER TABLE ".table($Q).implode(",",$sa));}function |
|
299 | -truncate_tables($S){return |
|
300 | -apply_queries("TRUNCATE TABLE",$S);}function |
|
301 | -drop_views($Lg){return |
|
302 | -queries("DROP VIEW ".implode(", ",array_map('table',$Lg)));}function |
|
303 | -drop_tables($S){return |
|
304 | -queries("DROP TABLE ".implode(", ",array_map('table',$S)));}function |
|
305 | -move_tables($S,$Lg,$Vf){$bf=array();foreach(array_merge($S,$Lg)as$Q)$bf[]=table($Q)." TO ".idf_escape($Vf).".".table($Q);return |
|
306 | -queries("RENAME TABLE ".implode(", ",$bf));}function |
|
307 | -copy_tables($S,$Lg,$Vf){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($S |
|
308 | -as$Q){$F=($Vf==DB?table("copy_$Q"):idf_escape($Vf).".".table($Q));if(!queries("\nDROP TABLE IF EXISTS $F")||!queries("CREATE TABLE $F LIKE ".table($Q))||!queries("INSERT INTO $F SELECT * FROM ".table($Q)))return |
|
309 | -false;}foreach($Lg |
|
310 | -as$Q){$F=($Vf==DB?table("copy_$Q"):idf_escape($Vf).".".table($Q));$Kg=view($Q);if(!queries("DROP VIEW IF EXISTS $F")||!queries("CREATE VIEW $F AS $Kg[select]"))return |
|
311 | -false;}return |
|
312 | -true;}function |
|
313 | -trigger($F){if($F=="")return |
|
314 | -array();$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($F));return |
|
315 | -reset($M);}function |
|
316 | -triggers($Q){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$L)$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);return$K;}function |
|
317 | -trigger_options(){return |
|
318 | -array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function |
|
319 | -routine($F,$U){global$e,$Vb,$Oc,$tg;$qa=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$sg="((".implode("|",array_merge(array_keys($tg),$qa)).")\\b(?:\\s*\\(((?:[^'\")]|$Vb)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$ye="\\s*(".($U=="FUNCTION"?"":$Oc).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$sg";$g=$e->result("SHOW CREATE $U ".idf_escape($F),2);preg_match("~\\(((?:$ye\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$sg\\s+":"")."(.*)~is",$g,$C);$m=array();preg_match_all("~$ye\\s*,?~is",$C[1],$rd,PREG_SET_ORDER);foreach($rd |
|
320 | -as$oe){$F=str_replace("``","`",$oe[2]).$oe[3];$m[]=array("field"=>$F,"type"=>strtolower($oe[5]),"length"=>preg_replace_callback("~$Vb~s",'normalize_enum',$oe[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$oe[8] $oe[7]"))),"null"=>1,"full_type"=>$oe[4],"inout"=>strtoupper($oe[1]),"collation"=>strtolower($oe[9]),);}if($U!="FUNCTION")return |
|
321 | -array("fields"=>$m,"definition"=>$C[11]);return |
|
322 | -array("fields"=>$m,"returns"=>array("type"=>$C[12],"length"=>$C[13],"unsigned"=>$C[15],"collation"=>$C[16]),"definition"=>$C[17],"language"=>"SQL",);}function |
|
323 | -routines(){return |
|
324 | -get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function |
|
325 | -routine_languages(){return |
|
326 | -array();}function |
|
327 | -last_id(){global$e;return$e->result("SELECT LAST_INSERT_ID()");}function |
|
328 | -explain($e,$I){return$e->query("EXPLAIN ".($e->server_info>=5.1?"PARTITIONS ":"").$I);}function |
|
329 | -found_rows($R,$Z){return($Z||$R["Engine"]!="InnoDB"?null:$R["Rows"]);}function |
|
330 | -types(){return |
|
331 | -array();}function |
|
332 | -schemas(){return |
|
333 | -array();}function |
|
334 | -get_schema(){return"";}function |
|
335 | -set_schema($nf){return |
|
336 | -true;}function |
|
337 | -create_sql($Q,$ya){global$e;$K=$e->result("SHOW CREATE TABLE ".table($Q),1);if(!$ya)$K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K);return$K;}function |
|
338 | -truncate_sql($Q){return"TRUNCATE ".table($Q);}function |
|
339 | -use_sql($qb){return"USE ".idf_escape($qb);}function |
|
340 | -trigger_sql($Q,$If){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$L)$K.="\n".($If=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";return$K;}function |
|
341 | -show_variables(){return |
|
342 | -get_key_vals("SHOW VARIABLES");}function |
|
343 | -process_list(){return |
|
344 | -get_rows("SHOW FULL PROCESSLIST");}function |
|
345 | -show_status(){return |
|
346 | -get_key_vals("SHOW STATUS");}function |
|
347 | -convert_field($l){if(preg_match("~binary~",$l["type"]))return"HEX(".idf_escape($l["field"]).")";if($l["type"]=="bit")return"BIN(".idf_escape($l["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))return"AsWKT(".idf_escape($l["field"]).")";}function |
|
348 | -unconvert_field($l,$K){if(preg_match("~binary~",$l["type"]))$K="UNHEX($K)";if($l["type"]=="bit")$K="CONV($K, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))$K="GeomFromText($K)";return$K;}function |
|
349 | -support($kc){global$e;return!preg_match("~scheme|sequence|type|view_trigger".($e->server_info<5.1?"|event|partitioning".($e->server_info<5?"|routine|trigger|view":""):"")."~",$kc);}function |
|
350 | -kill_process($X){return |
|
351 | -queries("KILL ".number($X));}function |
|
352 | -max_connections(){global$e;return$e->result("SELECT @@max_connections");}$y="sql";$tg=array();$Hf=array();foreach(array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Date and time'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Strings'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Lists'=>array("enum"=>65535,"set"=>64),'Binary'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometry'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$z=>$X){$tg+=$X;$Hf[$z]=array_keys($X);}$_g=array("unsigned","zerofill","unsigned zerofill");$Zd=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$xc=array("char_length","date","from_unixtime","lower","round","sec_to_time","time_to_sec","upper");$_c=array("avg","count","count distinct","group_concat","max","min","sum");$Lb=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array("(^|[^o])int|float|double|decimal"=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));}define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~^[^?]*/([^?]*).*~','\\1',$_SERVER["REQUEST_URI"]).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));$ga="4.2.5";class |
|
353 | -Adminer{var$operators;function |
|
354 | -name(){return"<a href='https://www.adminer.org/' target='_blank' id='h1'>Adminer</a>";}function |
|
355 | -credentials(){return |
|
356 | -array(SERVER,$_GET["username"],get_password());}function |
|
357 | -permanentLogin($g=false){return |
|
358 | -password_file($g);}function |
|
359 | -bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function |
|
360 | -database(){return |
|
361 | -DB;}function |
|
362 | -databases($qc=true){return |
|
363 | -get_databases($qc);}function |
|
364 | -schemas(){return |
|
365 | -schemas();}function |
|
366 | -queryTimeout(){return |
|
367 | -5;}function |
|
368 | -headers(){return |
|
369 | -true;}function |
|
370 | -head(){return |
|
371 | -true;}function |
|
372 | -loginForm(){global$Eb;echo'<table cellspacing="0"> |
|
373 | -<tr><th>System<td>',html_select("auth[driver]",$Eb,DRIVER),'<tr><th>Server<td><input name="auth[server]" value="',h(SERVER),'" title="hostname[:port]" placeholder="localhost" autocapitalize="off"> |
|
374 | -<tr><th>Username<td><input name="auth[username]" id="username" value="',h($_GET["username"]),'" autocapitalize="off"> |
|
250 | +Min_SQL {function |
|
251 | +insert($Q, $P) {return($P ? parent::insert($Q, $P) : queries("INSERT INTO " . table($Q) . " ()\nVALUES ()")); }function |
|
252 | +insertUpdate($Q, $M, $He) {$d = array_keys(reset($M)); $Fe = "INSERT INTO " . table($Q) . " (" . implode(", ", $d) . ") VALUES\n"; $Hg = array(); foreach ($d |
|
253 | +as$z)$Hg[$z] = "$z = VALUES($z)"; $Kf = "\nON DUPLICATE KEY UPDATE " . implode(", ", $Hg); $Hg = array(); $ld = 0; foreach ($M |
|
254 | +as$P) {$Y = "(" . implode(", ", $P) . ")"; if ($Hg && (strlen($Fe) + $ld + strlen($Y) + strlen($Kf) > 1e6)) {if (!queries($Fe . implode(",\n", $Hg) . $Kf))return |
|
255 | +false; $Hg = array(); $ld = 0; }$Hg[] = $Y; $ld += strlen($Y) + 2; }return |
|
256 | +queries($Fe . implode(",\n", $Hg) . $Kf); }}function |
|
257 | +idf_escape($Jc) {return"`" . str_replace("`", "``", $Jc) . "`"; }function |
|
258 | +table($Jc) {return |
|
259 | +idf_escape($Jc); }function |
|
260 | +connect() {global$b; $e = new |
|
261 | +Min_DB; $mb = $b->credentials(); if ($e->connect($mb[0], $mb[1], $mb[2])) {$e->set_charset(charset($e)); $e->query("SET sql_quote_show_create = 1, autocommit = 1"); return$e; }$K = $e->error; if (function_exists('iconv') && !is_utf8($K) && strlen($lf = iconv("windows-1250", "utf-8", $K)) > strlen($K))$K = $lf; return$K; }function |
|
262 | +get_databases($qc) {global$e; $K = get_session("dbs"); if ($K === null) {$I = ($e->server_info >= 5 ? "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA" : "SHOW DATABASES"); $K = ($qc ? slow_query($I) : get_vals($I)); restart_session(); set_session("dbs", $K); stop_session(); }return$K; }function |
|
263 | +limit($I, $Z, $_, $Od = 0, $sf = " ") {return" $I$Z" . ($_ !== null ? $sf . "LIMIT $_" . ($Od ? " OFFSET $Od" : "") : ""); }function |
|
264 | +limit1($I, $Z) {return |
|
265 | +limit($I, $Z, 1); }function |
|
266 | +db_collation($i, $Xa) {global$e; $K = null; $g = $e->result("SHOW CREATE DATABASE " . idf_escape($i), 1); if (preg_match('~ COLLATE ([^ ]+)~', $g, $C))$K = $C[1]; elseif (preg_match('~ CHARACTER SET ([^ ]+)~', $g, $C))$K = $Xa[$C[1]][-1]; return$K; }function |
|
267 | +engines() {$K = array(); foreach (get_rows("SHOW ENGINES")as$L) {if (preg_match("~YES|DEFAULT~", $L["Support"]))$K[] = $L["Engine"]; }return$K; }function |
|
268 | +logged_user() {global$e; return$e->result("SELECT USER()"); }function |
|
269 | +tables_list() {global$e; return |
|
270 | +get_key_vals($e->server_info >= 5 ? "SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME" : "SHOW TABLES"); }function |
|
271 | +count_tables($h) {$K = array(); foreach ($h |
|
272 | +as$i)$K[$i] = count(get_vals("SHOW TABLES IN " . idf_escape($i))); return$K; }function |
|
273 | +table_status($F = "", $jc = false) {global$e; $K = array(); foreach (get_rows($jc && $e->server_info >= 5 ? "SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() " . ($F != "" ? "AND TABLE_NAME = " . q($F) : "ORDER BY Name") : "SHOW TABLE STATUS" . ($F != "" ? " LIKE " . q(addcslashes($F, "%_\\")) : ""))as$L) {if ($L["Engine"] == "InnoDB")$L["Comment"] = preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $L["Comment"]); if (!isset($L["Engine"]))$L["Comment"] = ""; if ($F != "")return$L; $K[$L["Name"]] = $L; }return$K; }function |
|
274 | +is_view($R) {return$R["Engine"] === null; }function |
|
275 | +fk_support($R) {global$e; return |
|
276 | +preg_match('~InnoDB|IBMDB2I~i', $R["Engine"]) || (preg_match('~NDB~i', $R["Engine"]) && version_compare($e->server_info, '5.6') >= 0); }function |
|
277 | +fields($Q) {$K = array(); foreach (get_rows("SHOW FULL COLUMNS FROM " . table($Q))as$L) {preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~', $L["Type"], $C); $K[$L["Field"]] = array("field"=>$L["Field"], "full_type"=>$L["Type"], "type"=>$C[1], "length"=>$C[2], "unsigned"=>ltrim($C[3] . $C[4]), "default"=>($L["Default"] != "" || preg_match("~char|set~", $C[1]) ? $L["Default"] : null), "null"=>($L["Null"] == "YES"), "auto_increment"=>($L["Extra"] == "auto_increment"), "on_update"=>(preg_match('~^on update (.+)~i', $L["Extra"], $C) ? $C[1] : ""), "collation"=>$L["Collation"], "privileges"=>array_flip(preg_split('~, *~', $L["Privileges"])), "comment"=>$L["Comment"], "primary"=>($L["Key"] == "PRI"),); }return$K; }function |
|
278 | +indexes($Q, $f = null) {$K = array(); foreach (get_rows("SHOW INDEX FROM " . table($Q), $f)as$L) {$K[$L["Key_name"]]["type"] = ($L["Key_name"] == "PRIMARY" ? "PRIMARY" : ($L["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($L["Non_unique"] ? "INDEX" : "UNIQUE"))); $K[$L["Key_name"]]["columns"][] = $L["Column_name"]; $K[$L["Key_name"]]["lengths"][] = $L["Sub_part"]; $K[$L["Key_name"]]["descs"][] = null; }return$K; }function |
|
279 | +foreign_keys($Q) {global$e, $Vd; static$ye = '`(?:[^`]|``)+`'; $K = array(); $kb = $e->result("SHOW CREATE TABLE " . table($Q), 1); if ($kb) {preg_match_all("~CONSTRAINT ($ye) FOREIGN KEY ?\\(((?:$ye,? ?)+)\\) REFERENCES ($ye)(?:\\.($ye))? \\(((?:$ye,? ?)+)\\)(?: ON DELETE ($Vd))?(?: ON UPDATE ($Vd))?~", $kb, $rd, PREG_SET_ORDER); foreach ($rd |
|
280 | +as$C) {preg_match_all("~$ye~", $C[2], $_f); preg_match_all("~$ye~", $C[5], $Vf); $K[idf_unescape($C[1])] = array("db"=>idf_unescape($C[4] != "" ? $C[3] : $C[4]), "table"=>idf_unescape($C[4] != "" ? $C[4] : $C[3]), "source"=>array_map('idf_unescape', $_f[0]), "target"=>array_map('idf_unescape', $Vf[0]), "on_delete"=>($C[6] ? $C[6] : "RESTRICT"), "on_update"=>($C[7] ? $C[7] : "RESTRICT"),); }}return$K; }function |
|
281 | +view($F) {global$e; return |
|
282 | +array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU', '', $e->result("SHOW CREATE VIEW " . table($F), 1))); }function |
|
283 | +collations() {$K = array(); foreach (get_rows("SHOW COLLATION")as$L) {if ($L["Default"])$K[$L["Charset"]][-1] = $L["Collation"]; else$K[$L["Charset"]][] = $L["Collation"]; }ksort($K); foreach ($K |
|
284 | +as$z=>$X)asort($K[$z]); return$K; }function |
|
285 | +information_schema($i) {global$e; return($e->server_info >= 5 && $i == "information_schema") || ($e->server_info >= 5.5 && $i == "performance_schema"); }function |
|
286 | +error() {global$e; return |
|
287 | +h(preg_replace('~^You have an error.*syntax to use~U', "Syntax error", $e->error)); }function |
|
288 | +create_database($i, $Wa) {return |
|
289 | +queries("CREATE DATABASE " . idf_escape($i) . ($Wa ? " COLLATE " . q($Wa) : "")); }function |
|
290 | +drop_databases($h) {$K = apply_queries("DROP DATABASE", $h, 'idf_escape'); restart_session(); set_session("dbs", null); return$K; }function |
|
291 | +rename_database($F, $Wa) {$K = false; if (create_database($F, $Wa)) {$bf = array(); foreach (tables_list()as$Q=>$U)$bf[] = table($Q) . " TO " . idf_escape($F) . "." . table($Q); $K = (!$bf || queries("RENAME TABLE " . implode(", ", $bf))); if ($K)queries("DROP DATABASE " . idf_escape(DB)); restart_session(); set_session("dbs", null); }return$K; }function |
|
292 | +auto_increment() {$za = " PRIMARY KEY"; if ($_GET["create"] != "" && $_POST["auto_increment_col"]) {foreach (indexes($_GET["create"])as$v) {if (in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"], $v["columns"], true)) {$za = ""; break; }if ($v["type"] == "PRIMARY")$za = " UNIQUE"; }}return" AUTO_INCREMENT$za"; }function |
|
293 | +alter_table($Q, $F, $m, $rc, $bb, $Tb, $Wa, $ya, $te) {$sa = array(); foreach ($m |
|
294 | +as$l)$sa[] = ($l[1] ? ($Q != "" ? ($l[0] != "" ? "CHANGE " . idf_escape($l[0]) : "ADD") : " ") . " " . implode($l[1]) . ($Q != "" ? $l[2] : "") : "DROP " . idf_escape($l[0])); $sa = array_merge($sa, $rc); $Df = ($bb !== null ? " COMMENT=" . q($bb) : "") . ($Tb ? " ENGINE=" . q($Tb) : "") . ($Wa ? " COLLATE " . q($Wa) : "") . ($ya != "" ? " AUTO_INCREMENT=$ya" : ""); if ($Q == "")return |
|
295 | +queries("CREATE TABLE " . table($F) . " (\n" . implode(",\n", $sa) . "\n)$Df$te"); if ($Q != $F)$sa[] = "RENAME TO " . table($F); if ($Df)$sa[] = ltrim($Df); return($sa || $te ? queries("ALTER TABLE " . table($Q) . "\n" . implode(",\n", $sa) . $te) : true); }function |
|
296 | +alter_indexes($Q, $sa) {foreach ($sa |
|
297 | +as$z=>$X)$sa[$z] = ($X[2] == "DROP" ? "\nDROP INDEX " . idf_escape($X[1]) : "\nADD $X[0] " . ($X[0] == "PRIMARY" ? "KEY " : "") . ($X[1] != "" ? idf_escape($X[1]) . " " : "") . "(" . implode(", ", $X[2]) . ")"); return |
|
298 | +queries("ALTER TABLE " . table($Q) . implode(",", $sa)); }function |
|
299 | +truncate_tables($S) {return |
|
300 | +apply_queries("TRUNCATE TABLE", $S); }function |
|
301 | +drop_views($Lg) {return |
|
302 | +queries("DROP VIEW " . implode(", ", array_map('table', $Lg))); }function |
|
303 | +drop_tables($S) {return |
|
304 | +queries("DROP TABLE " . implode(", ", array_map('table', $S))); }function |
|
305 | +move_tables($S, $Lg, $Vf) {$bf = array(); foreach (array_merge($S, $Lg)as$Q)$bf[] = table($Q) . " TO " . idf_escape($Vf) . "." . table($Q); return |
|
306 | +queries("RENAME TABLE " . implode(", ", $bf)); }function |
|
307 | +copy_tables($S, $Lg, $Vf) {queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'"); foreach ($S |
|
308 | +as$Q) {$F = ($Vf == DB ? table("copy_$Q") : idf_escape($Vf) . "." . table($Q)); if (!queries("\nDROP TABLE IF EXISTS $F") || !queries("CREATE TABLE $F LIKE " . table($Q)) || !queries("INSERT INTO $F SELECT * FROM " . table($Q)))return |
|
309 | +false; }foreach ($Lg |
|
310 | +as$Q) {$F = ($Vf == DB ? table("copy_$Q") : idf_escape($Vf) . "." . table($Q)); $Kg = view($Q); if (!queries("DROP VIEW IF EXISTS $F") || !queries("CREATE VIEW $F AS $Kg[select]"))return |
|
311 | +false; }return |
|
312 | +true; }function |
|
313 | +trigger($F) {if ($F == "")return |
|
314 | +array(); $M = get_rows("SHOW TRIGGERS WHERE `Trigger` = " . q($F)); return |
|
315 | +reset($M); }function |
|
316 | +triggers($Q) {$K = array(); foreach (get_rows("SHOW TRIGGERS LIKE " . q(addcslashes($Q, "%_\\")))as$L)$K[$L["Trigger"]] = array($L["Timing"], $L["Event"]); return$K; }function |
|
317 | +trigger_options() {return |
|
318 | +array("Timing"=>array("BEFORE", "AFTER"), "Event"=>array("INSERT", "UPDATE", "DELETE"), "Type"=>array("FOR EACH ROW"),); }function |
|
319 | +routine($F, $U) {global$e, $Vb, $Oc, $tg; $qa = array("bool", "boolean", "integer", "double precision", "real", "dec", "numeric", "fixed", "national char", "national varchar"); $sg = "((" . implode("|", array_merge(array_keys($tg), $qa)) . ")\\b(?:\\s*\\(((?:[^'\")]|$Vb)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?"; $ye = "\\s*(" . ($U == "FUNCTION" ? "" : $Oc) . ")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$sg"; $g = $e->result("SHOW CREATE $U " . idf_escape($F), 2); preg_match("~\\(((?:$ye\\s*,?)*)\\)\\s*" . ($U == "FUNCTION" ? "RETURNS\\s+$sg\\s+" : "") . "(.*)~is", $g, $C); $m = array(); preg_match_all("~$ye\\s*,?~is", $C[1], $rd, PREG_SET_ORDER); foreach ($rd |
|
320 | +as$oe) {$F = str_replace("``", "`", $oe[2]) . $oe[3]; $m[] = array("field"=>$F, "type"=>strtolower($oe[5]), "length"=>preg_replace_callback("~$Vb~s", 'normalize_enum', $oe[6]), "unsigned"=>strtolower(preg_replace('~\\s+~', ' ', trim("$oe[8] $oe[7]"))), "null"=>1, "full_type"=>$oe[4], "inout"=>strtoupper($oe[1]), "collation"=>strtolower($oe[9]),); }if ($U != "FUNCTION")return |
|
321 | +array("fields"=>$m, "definition"=>$C[11]); return |
|
322 | +array("fields"=>$m, "returns"=>array("type"=>$C[12], "length"=>$C[13], "unsigned"=>$C[15], "collation"=>$C[16]), "definition"=>$C[17], "language"=>"SQL",); }function |
|
323 | +routines() {return |
|
324 | +get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . q(DB)); }function |
|
325 | +routine_languages() {return |
|
326 | +array(); }function |
|
327 | +last_id() {global$e; return$e->result("SELECT LAST_INSERT_ID()"); }function |
|
328 | +explain($e, $I) {return$e->query("EXPLAIN " . ($e->server_info >= 5.1 ? "PARTITIONS " : "") . $I); }function |
|
329 | +found_rows($R, $Z) {return($Z || $R["Engine"] != "InnoDB" ? null : $R["Rows"]); }function |
|
330 | +types() {return |
|
331 | +array(); }function |
|
332 | +schemas() {return |
|
333 | +array(); }function |
|
334 | +get_schema() {return""; }function |
|
335 | +set_schema($nf) {return |
|
336 | +true; }function |
|
337 | +create_sql($Q, $ya) {global$e; $K = $e->result("SHOW CREATE TABLE " . table($Q), 1); if (!$ya)$K = preg_replace('~ AUTO_INCREMENT=\\d+~', '', $K); return$K; }function |
|
338 | +truncate_sql($Q) {return"TRUNCATE " . table($Q); }function |
|
339 | +use_sql($qb) {return"USE " . idf_escape($qb); }function |
|
340 | +trigger_sql($Q, $If) {$K = ""; foreach (get_rows("SHOW TRIGGERS LIKE " . q(addcslashes($Q, "%_\\")), null, "-- ")as$L)$K .= "\n" . ($If == 'CREATE+ALTER' ? "DROP TRIGGER IF EXISTS " . idf_escape($L["Trigger"]) . ";;\n" : "") . "CREATE TRIGGER " . idf_escape($L["Trigger"]) . " $L[Timing] $L[Event] ON " . table($L["Table"]) . " FOR EACH ROW\n$L[Statement];;\n"; return$K; }function |
|
341 | +show_variables() {return |
|
342 | +get_key_vals("SHOW VARIABLES"); }function |
|
343 | +process_list() {return |
|
344 | +get_rows("SHOW FULL PROCESSLIST"); }function |
|
345 | +show_status() {return |
|
346 | +get_key_vals("SHOW STATUS"); }function |
|
347 | +convert_field($l) {if (preg_match("~binary~", $l["type"]))return"HEX(" . idf_escape($l["field"]) . ")"; if ($l["type"] == "bit")return"BIN(" . idf_escape($l["field"]) . " + 0)"; if (preg_match("~geometry|point|linestring|polygon~", $l["type"]))return"AsWKT(" . idf_escape($l["field"]) . ")"; }function |
|
348 | +unconvert_field($l, $K) {if (preg_match("~binary~", $l["type"]))$K = "UNHEX($K)"; if ($l["type"] == "bit")$K = "CONV($K, 2, 10) + 0"; if (preg_match("~geometry|point|linestring|polygon~", $l["type"]))$K = "GeomFromText($K)"; return$K; }function |
|
349 | +support($kc) {global$e; return!preg_match("~scheme|sequence|type|view_trigger" . ($e->server_info < 5.1 ? "|event|partitioning" . ($e->server_info < 5 ? "|routine|trigger|view" : "") : "") . "~", $kc); }function |
|
350 | +kill_process($X) {return |
|
351 | +queries("KILL " . number($X)); }function |
|
352 | +max_connections() {global$e; return$e->result("SELECT @@max_connections"); }$y = "sql"; $tg = array(); $Hf = array(); foreach (array('Numbers'=>array("tinyint"=>3, "smallint"=>5, "mediumint"=>8, "int"=>10, "bigint"=>20, "decimal"=>66, "float"=>12, "double"=>21), 'Date and time'=>array("date"=>10, "datetime"=>19, "timestamp"=>19, "time"=>10, "year"=>4), 'Strings'=>array("char"=>255, "varchar"=>65535, "tinytext"=>255, "text"=>65535, "mediumtext"=>16777215, "longtext"=>4294967295), 'Lists'=>array("enum"=>65535, "set"=>64), 'Binary'=>array("bit"=>20, "binary"=>255, "varbinary"=>65535, "tinyblob"=>255, "blob"=>65535, "mediumblob"=>16777215, "longblob"=>4294967295), 'Geometry'=>array("geometry"=>0, "point"=>0, "linestring"=>0, "polygon"=>0, "multipoint"=>0, "multilinestring"=>0, "multipolygon"=>0, "geometrycollection"=>0),)as$z=>$X) {$tg += $X; $Hf[$z] = array_keys($X); }$_g = array("unsigned", "zerofill", "unsigned zerofill"); $Zd = array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "REGEXP", "IN", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL", "SQL"); $xc = array("char_length", "date", "from_unixtime", "lower", "round", "sec_to_time", "time_to_sec", "upper"); $_c = array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"); $Lb = array(array("char"=>"md5/sha1/password/encrypt/uuid", "binary"=>"md5/sha1", "date|time"=>"now",), array("(^|[^o])int|float|double|decimal"=>"+/-", "date"=>"+ interval/- interval", "time"=>"addtime/subtime", "char|text"=>"concat",)); }define("SERVER", $_GET[DRIVER]); define("DB", $_GET["db"]); define("ME", preg_replace('~^[^?]*/([^?]*).*~', '\\1', $_SERVER["REQUEST_URI"]) . '?' . (sid() ? SID . '&' : '') . (SERVER !== null ? DRIVER . "=" . urlencode(SERVER) . '&' : '') . (isset($_GET["username"]) ? "username=" . urlencode($_GET["username"]) . '&' : '') . (DB != "" ? 'db=' . urlencode(DB) . '&' . (isset($_GET["ns"]) ? "ns=" . urlencode($_GET["ns"]) . "&" : "") : '')); $ga = "4.2.5"; class |
|
353 | +Adminer {var$operators; function |
|
354 | +name() {return"<a href='https://www.adminer.org/' target='_blank' id='h1'>Adminer</a>"; }function |
|
355 | +credentials() {return |
|
356 | +array(SERVER, $_GET["username"], get_password()); }function |
|
357 | +permanentLogin($g = false) {return |
|
358 | +password_file($g); }function |
|
359 | +bruteForceKey() {return$_SERVER["REMOTE_ADDR"]; }function |
|
360 | +database() {return |
|
361 | +DB; }function |
|
362 | +databases($qc = true) {return |
|
363 | +get_databases($qc); }function |
|
364 | +schemas() {return |
|
365 | +schemas(); }function |
|
366 | +queryTimeout() {return |
|
367 | +5; }function |
|
368 | +headers() {return |
|
369 | +true; }function |
|
370 | +head() {return |
|
371 | +true; }function |
|
372 | +loginForm() {global$Eb; echo'<table cellspacing="0"> |
|
373 | +<tr><th>System<td>',html_select("auth[driver]", $Eb, DRIVER), '<tr><th>Server<td><input name="auth[server]" value="', h(SERVER), '" title="hostname[:port]" placeholder="localhost" autocapitalize="off"> |
|
374 | +<tr><th>Username<td><input name="auth[username]" id="username" value="',h($_GET["username"]), '" autocapitalize="off"> |
|
375 | 375 | <tr><th>Password<td><input type="password" name="auth[password]"> |
376 | -<tr><th>Database<td><input name="auth[db]" value="',h($_GET["db"]),'" autocapitalize="off"> |
|
376 | +<tr><th>Database<td><input name="auth[db]" value="',h($_GET["db"]), '" autocapitalize="off"> |
|
377 | 377 | </table> |
378 | 378 | <script type="text/javascript"> |
379 | 379 | focus(document.getElementById(\'username\')); |
380 | 380 | </script> |
381 | -',"<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function |
|
382 | -login($pd,$we){global$y;if($y=="sqlite")return |
|
383 | -sprintf('Implement %s method to use SQLite.','login()');return |
|
384 | -true;}function |
|
385 | -tableName($Of){return |
|
386 | -h($Of["Name"]);}function |
|
387 | -fieldName($l,$de=0){return'<span title="'.h($l["full_type"]).'">'.h($l["field"]).'</span>';}function |
|
388 | -selectLinks($Of,$P=""){echo'<p class="links">';$od=array("select"=>'Select data');if(support("table")||support("indexes"))$od["table"]='Show structure';if(support("table")){if(is_view($Of))$od["view"]='Alter view';else$od["create"]='Alter table';}if($P!==null)$od["edit"]='New item';foreach($od |
|
389 | -as$z=>$X)echo" <a href='".h(ME)."$z=".urlencode($Of["Name"]).($z=="edit"?$P:"")."'".bold(isset($_GET[$z])).">$X</a>";echo"\n";}function |
|
390 | -foreignKeys($Q){return |
|
391 | -foreign_keys($Q);}function |
|
392 | -backwardKeys($Q,$Nf){return |
|
393 | -array();}function |
|
394 | -backwardKeysPrint($Aa,$L){}function |
|
395 | -selectQuery($I,$bg){global$y;return"<p><code class='jush-$y'>".h(str_replace("\n"," ",$I))."</code> <span class='time'>($bg)</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($I)."'>".'Edit'."</a>":"")."</p>";}function |
|
396 | -rowDescription($Q){return"";}function |
|
397 | -rowDescriptions($M,$sc){return$M;}function |
|
398 | -selectLink($X,$l){}function |
|
399 | -selectVal($X,$A,$l,$ke){$K=($X===null?"<i>NULL</i>":(preg_match("~char|binary~",$l["type"])&&!preg_match("~var~",$l["type"])?"<code>$X</code>":$X));if(preg_match('~blob|bytea|raw|file~',$l["type"])&&!is_utf8($X))$K=lang(array('%d byte','%d bytes'),strlen($ke));return($A?"<a href='".h($A)."'".(is_url($A)?" rel='noreferrer'":"").">$K</a>":$K);}function |
|
400 | -editVal($X,$l){return$X;}function |
|
401 | -selectColumnsPrint($N,$d){global$xc,$_c;print_fieldset("select",'Select',$N);$t=0;$N[""]=array();foreach($N |
|
402 | -as$z=>$X){$X=$_GET["columns"][$z];$c=select_input(" name='columns[$t][col]' onchange='".($z!==""?"selectFieldChange(this.form)":"selectAddRow(this)").";'",$d,$X["col"]);echo"<div>".($xc||$_c?"<select name='columns[$t][fun]' onchange='helpClose();".($z!==""?"":" this.nextSibling.nextSibling.onchange();")."'".on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).">".optionlist(array(-1=>"")+array_filter(array('Functions'=>$xc,'Aggregation'=>$_c)),$X["fun"])."</select>"."($c)":$c)."</div>\n";$t++;}echo"</div></fieldset>\n";}function |
|
403 | -selectSearchPrint($Z,$d,$w){print_fieldset("search",'Search',$Z);foreach($w |
|
404 | -as$t=>$v){if($v["type"]=="FULLTEXT"){echo"(<i>".implode("</i>, <i>",array_map('h',$v["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$t]' value='".h($_GET["fulltext"][$t])."' onchange='selectFieldChange(this.form);'>",checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"),"<br>\n";}}$_GET["where"]=(array)$_GET["where"];reset($_GET["where"]);$Ka="this.nextSibling.onchange();";for($t=0;$t<=count($_GET["where"]);$t++){list(,$X)=each($_GET["where"]);if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"<div>".select_input(" name='where[$t][col]' onchange='$Ka'",$d,$X["col"],"(".'anywhere'.")"),html_select("where[$t][op]",$this->operators,$X["op"],$Ka),"<input type='search' name='where[$t][val]' value='".h($X["val"])."' onchange='".($X?"selectFieldChange(this.form)":"selectAddRow(this)").";' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n";}}echo"</div></fieldset>\n";}function |
|
405 | -selectOrderPrint($de,$d,$w){print_fieldset("sort",'Sort',$de);$t=0;foreach((array)$_GET["order"]as$z=>$X){if($X!=""){echo"<div>".select_input(" name='order[$t]' onchange='selectFieldChange(this.form);'",$d,$X),checkbox("desc[$t]",1,isset($_GET["desc"][$z]),'descending')."</div>\n";$t++;}}echo"<div>".select_input(" name='order[$t]' onchange='selectAddRow(this);'",$d),checkbox("desc[$t]",1,false,'descending')."</div>\n","</div></fieldset>\n";}function |
|
406 | -selectLimitPrint($_){echo"<fieldset><legend>".'Limit'."</legend><div>";echo"<input type='number' name='limit' class='size' value='".h($_)."' onchange='selectFieldChange(this.form);'>","</div></fieldset>\n";}function |
|
407 | -selectLengthPrint($ag){if($ag!==null){echo"<fieldset><legend>".'Text length'."</legend><div>","<input type='number' name='text_length' class='size' value='".h($ag)."'>","</div></fieldset>\n";}}function |
|
408 | -selectActionPrint($w){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>"," <span id='noindex' title='".'Full table scan'."'></span>","<script type='text/javascript'>\n","var indexColumns = ";$d=array();foreach($w |
|
409 | -as$v){if($v["type"]!="FULLTEXT")$d[reset($v["columns"])]=1;}$d[""]=1;foreach($d |
|
410 | -as$z=>$X)json_row($z);echo";\n","selectFieldChange(document.getElementById('form'));\n","</script>\n","</div></fieldset>\n";}function |
|
411 | -selectCommandPrint(){return!information_schema(DB);}function |
|
412 | -selectImportPrint(){return!information_schema(DB);}function |
|
413 | -selectEmailPrint($Qb,$d){}function |
|
414 | -selectColumnsProcess($d,$w){global$xc,$_c;$N=array();$s=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$xc)||in_array($X["fun"],$_c)))){$N[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$_c))$s[]=$N[$z];}}return |
|
415 | -array($N,$s);}function |
|
416 | -selectSearchProcess($m,$w){global$e,$y;$K=array();foreach($w |
|
417 | -as$t=>$v){if($v["type"]=="FULLTEXT"&&$_GET["fulltext"][$t]!="")$K[]="MATCH (".implode(", ",array_map('idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$db=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Lc=process_length($X["val"]);$db.=" ".($Lc!=""?$Lc:"(NULL)");}elseif($X["op"]=="SQL")$db=" $X[val]";elseif($X["op"]=="LIKE %%")$db=" LIKE ".$this->processInput($m[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$db=" ILIKE ".$this->processInput($m[$X["col"]],"%$X[val]%");elseif(!preg_match('~NULL$~',$X["op"]))$db.=" ".$this->processInput($m[$X["col"]],$X["val"]);if($X["col"]!="")$K[]=idf_escape($X["col"]).$db;else{$Ya=array();foreach($m |
|
418 | -as$F=>$l){$Xc=preg_match('~char|text|enum|set~',$l["type"]);if((is_numeric($X["val"])||!preg_match('~(^|[^o])int|float|double|decimal|bit~',$l["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||$Xc)){$F=idf_escape($F);$Ya[]=($y=="sql"&&$Xc&&!preg_match("~^utf8_~",$l["collation"])?"CONVERT($F USING ".charset($e).")":$F);}}$K[]=($Ya?"(".implode("$db OR ",$Ya)."$db)":"0");}}}return$K;}function |
|
419 | -selectOrderProcess($m,$w){$K=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="")$K[]=(preg_match('~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");}return$K;}function |
|
420 | -selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function |
|
421 | -selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function |
|
422 | -selectEmailProcess($Z,$sc){return |
|
423 | -false;}function |
|
424 | -selectQueryBuild($N,$Z,$s,$de,$_,$G){return"";}function |
|
425 | -messageQuery($I,$bg){global$y;restart_session();$Ec=&get_session("queries");$u="sql-".count($Ec[$_GET["db"]]);if(strlen($I)>1e6)$I=preg_replace('~[\x80-\xFF]+$~','',substr($I,0,1e6))."\n...";$Ec[$_GET["db"]][]=array($I,time(),$bg);return" <span class='time'>".@date("H:i:s")."</span> <a href='#$u' onclick=\"return !toggle('$u');\">".'SQL command'."</a>"."<div id='$u' class='hidden'><pre><code class='jush-$y'>".shorten_utf8($I,1000).'</code></pre>'.($bg?" <span class='time'>($bg)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Ec[$_GET["db"]])-1)).'">'.'Edit'.'</a>':'').'</div>';}function |
|
426 | -editFunctions($l){global$Lb;$K=($l["null"]?"NULL/":"");foreach($Lb |
|
427 | -as$z=>$xc){if(!$z||(!isset($_GET["call"])&&(isset($_GET["select"])||where($_GET)))){foreach($xc |
|
428 | -as$ye=>$X){if(!$ye||preg_match("~$ye~",$l["type"]))$K.="/$X";}if($z&&!preg_match('~set|blob|bytea|raw|file~',$l["type"]))$K.="/SQL";}}if($l["auto_increment"]&&!isset($_GET["select"])&&!where($_GET))$K='Auto Increment';return |
|
429 | -explode("/",$K);}function |
|
430 | -editInput($Q,$l,$wa,$Y){if($l["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$wa value='-1' checked><i>".'original'."</i></label> ":"").($l["null"]?"<label><input type='radio'$wa value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$wa,$l,$Y,0);return"";}function |
|
431 | -processInput($l,$Y,$q=""){if($q=="SQL")return$Y;$F=$l["field"];$K=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$q))$K="$q()";elseif(preg_match('~^current_(date|timestamp)$~',$q))$K=$q;elseif(preg_match('~^([+-]|\\|\\|)$~',$q))$K=idf_escape($F)." $q $K";elseif(preg_match('~^[+-] interval$~',$q))$K=idf_escape($F)." $q ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i",$Y)?$Y:$K);elseif(preg_match('~^(addtime|subtime|concat)$~',$q))$K="$q(".idf_escape($F).", $K)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$q))$K="$q($K)";return |
|
432 | -unconvert_field($l,$K);}function |
|
433 | -dumpOutput(){$K=array('text'=>'open','file'=>'save');if(function_exists('gzencode'))$K['gz']='gzip';return$K;}function |
|
434 | -dumpFormat(){return |
|
435 | -array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function |
|
436 | -dumpDatabase($i){}function |
|
437 | -dumpTable($Q,$If,$Yc=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($If)dump_csv(array_keys(fields($Q)));}else{if($Yc==2){$m=array();foreach(fields($Q)as$F=>$l)$m[]=idf_escape($F)." $l[full_type]";$g="CREATE TABLE ".table($Q)." (".implode(", ",$m).")";}else$g=create_sql($Q,$_POST["auto_increment"]);set_utf8mb4($g);if($If&&$g){if($If=="DROP+CREATE"||$Yc==1)echo"DROP ".($Yc==2?"VIEW":"TABLE")." IF EXISTS ".table($Q).";\n";if($Yc==1)$g=remove_definer($g);echo"$g;\n\n";}}}function |
|
438 | -dumpData($Q,$If,$I){global$e,$y;$td=($y=="sqlite"?0:1048576);if($If){if($_POST["format"]=="sql"){if($If=="TRUNCATE+INSERT")echo |
|
439 | -truncate_sql($Q).";\n";$m=fields($Q);}$J=$e->query($I,1);if($J){$Qc="";$Ia="";$ad=array();$Kf="";$lc=($Q!=''?'fetch_assoc':'fetch_row');while($L=$J->$lc()){if(!$ad){$Hg=array();foreach($L |
|
440 | -as$X){$l=$J->fetch_field();$ad[]=$l->name;$z=idf_escape($l->name);$Hg[]="$z = VALUES($z)";}$Kf=($If=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Hg):"").";\n";}if($_POST["format"]!="sql"){if($If=="table"){dump_csv($ad);$If="INSERT";}dump_csv($L);}else{if(!$Qc)$Qc="INSERT INTO ".table($Q)." (".implode(", ",array_map('idf_escape',$ad)).") VALUES";foreach($L |
|
441 | -as$z=>$X){$l=$m[$z];$L[$z]=($X!==null?unconvert_field($l,preg_match('~(^|[^o])int|float|double|decimal~',$l["type"])&&$X!=''?$X:q($X)):"NULL");}$lf=($td?"\n":" ")."(".implode(",\t",$L).")";if(!$Ia)$Ia=$Qc.$lf;elseif(strlen($Ia)+4+strlen($lf)+strlen($Kf)<$td)$Ia.=",$lf";else{echo$Ia.$Kf;$Ia=$Qc.$lf;}}}if($Ia)echo$Ia.$Kf;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$e->error)."\n";}}function |
|
442 | -dumpFilename($Ic){return |
|
443 | -friendly_url($Ic!=""?$Ic:(SERVER!=""?SERVER:"localhost"));}function |
|
444 | -dumpHeaders($Ic,$Ed=false){$me=$_POST["output"];$gc=(preg_match('~sql~',$_POST["format"])?"sql":($Ed?"tar":"csv"));header("Content-Type: ".($me=="gz"?"application/x-gzip":($gc=="tar"?"application/x-tar":($gc=="sql"||$me!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($me=="gz")ob_start('ob_gzencode',1e6);return$gc;}function |
|
445 | -homepage(){echo'<p class="links">'.($_GET["ns"]==""&&support("database")?'<a href="'.h(ME).'database=">'.'Alter database'."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?'Alter schema':'Create schema')."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.'Database schema'."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".'Privileges'."</a>\n":"");return |
|
446 | -true;}function |
|
447 | -navigation($Dd){global$ga,$y,$Eb,$e;echo'<h1> |
|
448 | -',$this->name(),' <span class="version">',$ga,'</span> |
|
449 | -<a href="https://www.adminer.org/#download" target="_blank" id="version">',(version_compare($ga,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a> |
|
381 | +',"<p><input type='submit' value='" . 'Login' . "'>\n", checkbox("auth[permanent]", 1, $_COOKIE["adminer_permanent"], 'Permanent login') . "\n"; }function |
|
382 | +login($pd, $we) {global$y; if ($y == "sqlite")return |
|
383 | +sprintf('Implement %s method to use SQLite.', 'login()'); return |
|
384 | +true; }function |
|
385 | +tableName($Of) {return |
|
386 | +h($Of["Name"]); }function |
|
387 | +fieldName($l, $de = 0) {return'<span title="' . h($l["full_type"]) . '">' . h($l["field"]) . '</span>'; }function |
|
388 | +selectLinks($Of, $P = "") {echo'<p class="links">'; $od = array("select"=>'Select data'); if (support("table") || support("indexes"))$od["table"] = 'Show structure'; if (support("table")) {if (is_view($Of))$od["view"] = 'Alter view'; else$od["create"] = 'Alter table'; }if ($P !== null)$od["edit"] = 'New item'; foreach ($od |
|
389 | +as$z=>$X)echo" <a href='" . h(ME) . "$z=" . urlencode($Of["Name"]) . ($z == "edit" ? $P : "") . "'" . bold(isset($_GET[$z])) . ">$X</a>"; echo"\n"; }function |
|
390 | +foreignKeys($Q) {return |
|
391 | +foreign_keys($Q); }function |
|
392 | +backwardKeys($Q, $Nf) {return |
|
393 | +array(); }function |
|
394 | +backwardKeysPrint($Aa, $L) {}function |
|
395 | +selectQuery($I, $bg) {global$y; return"<p><code class='jush-$y'>" . h(str_replace("\n", " ", $I)) . "</code> <span class='time'>($bg)</span>" . (support("sql") ? " <a href='" . h(ME) . "sql=" . urlencode($I) . "'>" . 'Edit' . "</a>" : "") . "</p>"; }function |
|
396 | +rowDescription($Q) {return""; }function |
|
397 | +rowDescriptions($M, $sc) {return$M; }function |
|
398 | +selectLink($X, $l) {}function |
|
399 | +selectVal($X, $A, $l, $ke) {$K = ($X === null ? "<i>NULL</i>" : (preg_match("~char|binary~", $l["type"]) && !preg_match("~var~", $l["type"]) ? "<code>$X</code>" : $X)); if (preg_match('~blob|bytea|raw|file~', $l["type"]) && !is_utf8($X))$K = lang(array('%d byte', '%d bytes'), strlen($ke)); return($A ? "<a href='" . h($A) . "'" . (is_url($A) ? " rel='noreferrer'" : "") . ">$K</a>" : $K); }function |
|
400 | +editVal($X, $l) {return$X; }function |
|
401 | +selectColumnsPrint($N, $d) {global$xc, $_c; print_fieldset("select", 'Select', $N); $t = 0; $N[""] = array(); foreach ($N |
|
402 | +as$z=>$X) {$X = $_GET["columns"][$z]; $c = select_input(" name='columns[$t][col]' onchange='" . ($z !== "" ? "selectFieldChange(this.form)" : "selectAddRow(this)") . ";'", $d, $X["col"]); echo"<div>" . ($xc || $_c ? "<select name='columns[$t][fun]' onchange='helpClose();" . ($z !== "" ? "" : " this.nextSibling.nextSibling.onchange();") . "'" . on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'", 1) . ">" . optionlist(array(-1=>"") + array_filter(array('Functions'=>$xc, 'Aggregation'=>$_c)), $X["fun"]) . "</select>" . "($c)" : $c) . "</div>\n"; $t++; }echo"</div></fieldset>\n"; }function |
|
403 | +selectSearchPrint($Z, $d, $w) {print_fieldset("search", 'Search', $Z); foreach ($w |
|
404 | +as$t=>$v) {if ($v["type"] == "FULLTEXT") {echo"(<i>" . implode("</i>, <i>", array_map('h', $v["columns"])) . "</i>) AGAINST", " <input type='search' name='fulltext[$t]' value='" . h($_GET["fulltext"][$t]) . "' onchange='selectFieldChange(this.form);'>", checkbox("boolean[$t]", 1, isset($_GET["boolean"][$t]), "BOOL"), "<br>\n"; }}$_GET["where"] = (array) $_GET["where"]; reset($_GET["where"]); $Ka = "this.nextSibling.onchange();"; for ($t = 0; $t <= count($_GET["where"]); $t++) {list(,$X) = each($_GET["where"]); if (!$X || ("$X[col]$X[val]" != "" && in_array($X["op"], $this->operators))) {echo"<div>" . select_input(" name='where[$t][col]' onchange='$Ka'", $d, $X["col"], "(" . 'anywhere' . ")"), html_select("where[$t][op]", $this->operators, $X["op"], $Ka), "<input type='search' name='where[$t][val]' value='" . h($X["val"]) . "' onchange='" . ($X ? "selectFieldChange(this.form)" : "selectAddRow(this)") . ";' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n"; }}echo"</div></fieldset>\n"; }function |
|
405 | +selectOrderPrint($de, $d, $w) {print_fieldset("sort", 'Sort', $de); $t = 0; foreach ((array) $_GET["order"]as$z=>$X) {if ($X != "") {echo"<div>" . select_input(" name='order[$t]' onchange='selectFieldChange(this.form);'", $d, $X), checkbox("desc[$t]", 1, isset($_GET["desc"][$z]), 'descending') . "</div>\n"; $t++; }}echo"<div>" . select_input(" name='order[$t]' onchange='selectAddRow(this);'", $d), checkbox("desc[$t]", 1, false, 'descending') . "</div>\n", "</div></fieldset>\n"; }function |
|
406 | +selectLimitPrint($_) {echo"<fieldset><legend>" . 'Limit' . "</legend><div>"; echo"<input type='number' name='limit' class='size' value='" . h($_) . "' onchange='selectFieldChange(this.form);'>", "</div></fieldset>\n"; }function |
|
407 | +selectLengthPrint($ag) {if ($ag !== null) {echo"<fieldset><legend>" . 'Text length' . "</legend><div>", "<input type='number' name='text_length' class='size' value='" . h($ag) . "'>", "</div></fieldset>\n"; }}function |
|
408 | +selectActionPrint($w) {echo"<fieldset><legend>" . 'Action' . "</legend><div>", "<input type='submit' value='" . 'Select' . "'>", " <span id='noindex' title='" . 'Full table scan' . "'></span>", "<script type='text/javascript'>\n", "var indexColumns = "; $d = array(); foreach ($w |
|
409 | +as$v) {if ($v["type"] != "FULLTEXT")$d[reset($v["columns"])] = 1; }$d[""] = 1; foreach ($d |
|
410 | +as$z=>$X)json_row($z); echo";\n", "selectFieldChange(document.getElementById('form'));\n", "</script>\n", "</div></fieldset>\n"; }function |
|
411 | +selectCommandPrint() {return!information_schema(DB); }function |
|
412 | +selectImportPrint() {return!information_schema(DB); }function |
|
413 | +selectEmailPrint($Qb, $d) {}function |
|
414 | +selectColumnsProcess($d, $w) {global$xc, $_c; $N = array(); $s = array(); foreach ((array) $_GET["columns"]as$z=>$X) {if ($X["fun"] == "count" || ($X["col"] != "" && (!$X["fun"] || in_array($X["fun"], $xc) || in_array($X["fun"], $_c)))) {$N[$z] = apply_sql_function($X["fun"], ($X["col"] != "" ? idf_escape($X["col"]) : "*")); if (!in_array($X["fun"], $_c))$s[] = $N[$z]; }}return |
|
415 | +array($N, $s); }function |
|
416 | +selectSearchProcess($m, $w) {global$e, $y; $K = array(); foreach ($w |
|
417 | +as$t=>$v) {if ($v["type"] == "FULLTEXT" && $_GET["fulltext"][$t] != "")$K[] = "MATCH (" . implode(", ", array_map('idf_escape', $v["columns"])) . ") AGAINST (" . q($_GET["fulltext"][$t]) . (isset($_GET["boolean"][$t]) ? " IN BOOLEAN MODE" : "") . ")"; }foreach ((array) $_GET["where"]as$X) {if ("$X[col]$X[val]" != "" && in_array($X["op"], $this->operators)) {$db = " $X[op]"; if (preg_match('~IN$~', $X["op"])) {$Lc = process_length($X["val"]); $db .= " " . ($Lc != "" ? $Lc : "(NULL)"); }elseif ($X["op"] == "SQL")$db = " $X[val]"; elseif ($X["op"] == "LIKE %%")$db = " LIKE " . $this->processInput($m[$X["col"]], "%$X[val]%"); elseif ($X["op"] == "ILIKE %%")$db = " ILIKE " . $this->processInput($m[$X["col"]], "%$X[val]%"); elseif (!preg_match('~NULL$~', $X["op"]))$db .= " " . $this->processInput($m[$X["col"]], $X["val"]); if ($X["col"] != "")$K[] = idf_escape($X["col"]) . $db; else {$Ya = array(); foreach ($m |
|
418 | +as$F=>$l) {$Xc = preg_match('~char|text|enum|set~', $l["type"]); if ((is_numeric($X["val"]) || !preg_match('~(^|[^o])int|float|double|decimal|bit~', $l["type"])) && (!preg_match("~[\x80-\xFF]~", $X["val"]) || $Xc)) {$F = idf_escape($F); $Ya[] = ($y == "sql" && $Xc && !preg_match("~^utf8_~", $l["collation"]) ? "CONVERT($F USING " . charset($e) . ")" : $F); }}$K[] = ($Ya ? "(" . implode("$db OR ", $Ya) . "$db)" : "0"); }}}return$K; }function |
|
419 | +selectOrderProcess($m, $w) {$K = array(); foreach ((array) $_GET["order"]as$z=>$X) {if ($X != "")$K[] = (preg_match('~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~', $X) ? $X : idf_escape($X)) . (isset($_GET["desc"][$z]) ? " DESC" : ""); }return$K; }function |
|
420 | +selectLimitProcess() {return(isset($_GET["limit"]) ? $_GET["limit"] : "50"); }function |
|
421 | +selectLengthProcess() {return(isset($_GET["text_length"]) ? $_GET["text_length"] : "100"); }function |
|
422 | +selectEmailProcess($Z, $sc) {return |
|
423 | +false; }function |
|
424 | +selectQueryBuild($N, $Z, $s, $de, $_, $G) {return""; }function |
|
425 | +messageQuery($I, $bg) {global$y; restart_session(); $Ec = &get_session("queries"); $u = "sql-" . count($Ec[$_GET["db"]]); if (strlen($I) > 1e6)$I = preg_replace('~[\x80-\xFF]+$~', '', substr($I, 0, 1e6)) . "\n..."; $Ec[$_GET["db"]][] = array($I, time(), $bg); return" <span class='time'>" . @date("H:i:s") . "</span> <a href='#$u' onclick=\"return !toggle('$u');\">" . 'SQL command' . "</a>" . "<div id='$u' class='hidden'><pre><code class='jush-$y'>" . shorten_utf8($I, 1000) . '</code></pre>' . ($bg ? " <span class='time'>($bg)</span>" : '') . (support("sql") ? '<p><a href="' . h(str_replace("db=" . urlencode(DB), "db=" . urlencode($_GET["db"]), ME) . 'sql=&history=' . (count($Ec[$_GET["db"]]) - 1)) . '">' . 'Edit' . '</a>' : '') . '</div>'; }function |
|
426 | +editFunctions($l) {global$Lb; $K = ($l["null"] ? "NULL/" : ""); foreach ($Lb |
|
427 | +as$z=>$xc) {if (!$z || (!isset($_GET["call"]) && (isset($_GET["select"]) || where($_GET)))) {foreach ($xc |
|
428 | +as$ye=>$X) {if (!$ye || preg_match("~$ye~", $l["type"]))$K .= "/$X"; }if ($z && !preg_match('~set|blob|bytea|raw|file~', $l["type"]))$K .= "/SQL"; }}if ($l["auto_increment"] && !isset($_GET["select"]) && !where($_GET))$K = 'Auto Increment'; return |
|
429 | +explode("/", $K); }function |
|
430 | +editInput($Q, $l, $wa, $Y) {if ($l["type"] == "enum")return(isset($_GET["select"]) ? "<label><input type='radio'$wa value='-1' checked><i>" . 'original' . "</i></label> " : "") . ($l["null"] ? "<label><input type='radio'$wa value=''" . ($Y !== null || isset($_GET["select"]) ? "" : " checked") . "><i>NULL</i></label> " : "") . enum_input("radio", $wa, $l, $Y, 0); return""; }function |
|
431 | +processInput($l, $Y, $q = "") {if ($q == "SQL")return$Y; $F = $l["field"]; $K = q($Y); if (preg_match('~^(now|getdate|uuid)$~', $q))$K = "$q()"; elseif (preg_match('~^current_(date|timestamp)$~', $q))$K = $q; elseif (preg_match('~^([+-]|\\|\\|)$~', $q))$K = idf_escape($F) . " $q $K"; elseif (preg_match('~^[+-] interval$~', $q))$K = idf_escape($F) . " $q " . (preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i", $Y) ? $Y : $K); elseif (preg_match('~^(addtime|subtime|concat)$~', $q))$K = "$q(" . idf_escape($F) . ", $K)"; elseif (preg_match('~^(md5|sha1|password|encrypt)$~', $q))$K = "$q($K)"; return |
|
432 | +unconvert_field($l, $K); }function |
|
433 | +dumpOutput() {$K = array('text'=>'open', 'file'=>'save'); if (function_exists('gzencode'))$K['gz'] = 'gzip'; return$K; }function |
|
434 | +dumpFormat() {return |
|
435 | +array('sql'=>'SQL', 'csv'=>'CSV,', 'csv;'=>'CSV;', 'tsv'=>'TSV'); }function |
|
436 | +dumpDatabase($i) {}function |
|
437 | +dumpTable($Q, $If, $Yc = 0) {if ($_POST["format"] != "sql") {echo"\xef\xbb\xbf"; if ($If)dump_csv(array_keys(fields($Q))); } else {if ($Yc == 2) {$m = array(); foreach (fields($Q)as$F=>$l)$m[] = idf_escape($F) . " $l[full_type]"; $g = "CREATE TABLE " . table($Q) . " (" . implode(", ", $m) . ")"; } else$g = create_sql($Q, $_POST["auto_increment"]); set_utf8mb4($g); if ($If && $g) {if ($If == "DROP+CREATE" || $Yc == 1)echo"DROP " . ($Yc == 2 ? "VIEW" : "TABLE") . " IF EXISTS " . table($Q) . ";\n"; if ($Yc == 1)$g = remove_definer($g); echo"$g;\n\n"; }}}function |
|
438 | +dumpData($Q, $If, $I) {global$e, $y; $td = ($y == "sqlite" ? 0 : 1048576); if ($If) {if ($_POST["format"] == "sql") {if ($If == "TRUNCATE+INSERT")echo |
|
439 | +truncate_sql($Q) . ";\n"; $m = fields($Q); }$J = $e->query($I, 1); if ($J) {$Qc = ""; $Ia = ""; $ad = array(); $Kf = ""; $lc = ($Q != '' ? 'fetch_assoc' : 'fetch_row'); while ($L = $J->$lc()) {if (!$ad) {$Hg = array(); foreach ($L |
|
440 | +as$X) {$l = $J->fetch_field(); $ad[] = $l->name; $z = idf_escape($l->name); $Hg[] = "$z = VALUES($z)"; }$Kf = ($If == "INSERT+UPDATE" ? "\nON DUPLICATE KEY UPDATE " . implode(", ", $Hg) : "") . ";\n"; }if ($_POST["format"] != "sql") {if ($If == "table") {dump_csv($ad); $If = "INSERT"; }dump_csv($L); } else {if (!$Qc)$Qc = "INSERT INTO " . table($Q) . " (" . implode(", ", array_map('idf_escape', $ad)) . ") VALUES"; foreach ($L |
|
441 | +as$z=>$X) {$l = $m[$z]; $L[$z] = ($X !== null ? unconvert_field($l, preg_match('~(^|[^o])int|float|double|decimal~', $l["type"]) && $X != '' ? $X : q($X)) : "NULL"); }$lf = ($td ? "\n" : " ") . "(" . implode(",\t", $L) . ")"; if (!$Ia)$Ia = $Qc . $lf; elseif (strlen($Ia) + 4 + strlen($lf) + strlen($Kf) < $td)$Ia .= ",$lf"; else {echo$Ia . $Kf; $Ia = $Qc . $lf; }}}if ($Ia)echo$Ia . $Kf; }elseif ($_POST["format"] == "sql")echo"-- " . str_replace("\n", " ", $e->error) . "\n"; }}function |
|
442 | +dumpFilename($Ic) {return |
|
443 | +friendly_url($Ic != "" ? $Ic : (SERVER != "" ? SERVER : "localhost")); }function |
|
444 | +dumpHeaders($Ic, $Ed = false) {$me = $_POST["output"]; $gc = (preg_match('~sql~', $_POST["format"]) ? "sql" : ($Ed ? "tar" : "csv")); header("Content-Type: " . ($me == "gz" ? "application/x-gzip" : ($gc == "tar" ? "application/x-tar" : ($gc == "sql" || $me != "file" ? "text/plain" : "text/csv") . "; charset=utf-8"))); if ($me == "gz")ob_start('ob_gzencode', 1e6); return$gc; }function |
|
445 | +homepage() {echo'<p class="links">' . ($_GET["ns"] == "" && support("database") ? '<a href="' . h(ME) . 'database=">' . 'Alter database' . "</a>\n" : ""), (support("scheme") ? "<a href='" . h(ME) . "scheme='>" . ($_GET["ns"] != "" ? 'Alter schema' : 'Create schema') . "</a>\n" : ""), ($_GET["ns"] !== "" ? '<a href="' . h(ME) . 'schema=">' . 'Database schema' . "</a>\n" : ""), (support("privileges") ? "<a href='" . h(ME) . "privileges='>" . 'Privileges' . "</a>\n" : ""); return |
|
446 | +true; }function |
|
447 | +navigation($Dd) {global$ga, $y, $Eb, $e; echo'<h1> |
|
448 | +',$this->name(), ' <span class="version">', $ga, '</span> |
|
449 | +<a href="https://www.adminer.org/#download" target="_blank" id="version">',(version_compare($ga, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""), '</a> |
|
450 | 450 | </h1> |
451 | -';if($Dd=="auth"){$pc=true;foreach((array)$_SESSION["pwds"]as$Jg=>$vf){foreach($vf |
|
452 | -as$O=>$Fg){foreach($Fg |
|
453 | -as$V=>$we){if($we!==null){if($pc){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$pc=false;}$tb=$_SESSION["db"][$Jg][$O][$V];foreach(($tb?array_keys($tb):array(""))as$i)echo"<a href='".h(auth_url($Jg,$O,$V,$i))."'>($Eb[$Jg]) ".h($V.($O!=""?"@$O":"").($i!=""?" - $i":""))."</a><br>\n";}}}}}else{if($_GET["ns"]!==""&&!$Dd&&DB!=""){$e->select_db(DB);$S=table_status('',true);}if(support("sql")){echo'<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=jush.js&version=4.2.5&driver=mysql",'"></script> |
|
451 | +';if ($Dd == "auth") {$pc = true; foreach ((array) $_SESSION["pwds"]as$Jg=>$vf) {foreach ($vf |
|
452 | +as$O=>$Fg) {foreach ($Fg |
|
453 | +as$V=>$we) {if ($we !== null) {if ($pc) {echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n"; $pc = false; }$tb = $_SESSION["db"][$Jg][$O][$V]; foreach (($tb ? array_keys($tb) : array(""))as$i)echo"<a href='" . h(auth_url($Jg, $O, $V, $i)) . "'>($Eb[$Jg]) " . h($V . ($O != "" ? "@$O" : "") . ($i != "" ? " - $i" : "")) . "</a><br>\n"; }}}}} else {if ($_GET["ns"] !== "" && !$Dd && DB != "") {$e->select_db(DB); $S = table_status('', true); }if (support("sql")) {echo'<script type="text/javascript" src="', h(preg_replace("~\\?.*~", "", ME)) . "?file=jush.js&version=4.2.5&driver=mysql", '"></script> |
|
454 | 454 | <script type="text/javascript"> |
455 | -';if($S){$od=array();foreach($S |
|
456 | -as$Q=>$U)$od[]=preg_quote($Q,'/');echo"var jushLinks = { $y: [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$od).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$y;\n";}echo'bodyLoad(\'',(is_object($e)?substr($e->server_info,0,3):""),'\'); |
|
455 | +';if ($S) {$od = array(); foreach ($S |
|
456 | +as$Q=>$U)$od[] = preg_quote($Q, '/'); echo"var jushLinks = { $y: [ '" . js_escape(ME) . (support("table") ? "table=" : "select=") . "\$&', /\\b(" . implode("|", $od) . ")\\b/g ] };\n"; foreach (array("bac", "bra", "sqlite_quo", "mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$y;\n"; }echo'bodyLoad(\'', (is_object($e) ? substr($e->server_info, 0, 3) : ""), '\'); |
|
457 | 457 | </script> |
458 | -';}$this->databasesPrint($Dd);if(DB==""||!$Dd){echo"<p class='links'>".(support("sql")?"<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".'SQL command'."</a>\n<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".'Import'."</a>\n":"")."";if(support("dump"))echo"<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".'Export'."</a>\n";}if($_GET["ns"]!==""&&!$Dd&&DB!=""){echo'<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Create table'."</a>\n";if(!$S)echo"<p class='message'>".'No tables.'."\n";else$this->tablesPrint($S);}}}function |
|
459 | -databasesPrint($Dd){global$b,$e;$h=$this->databases();echo'<form action=""> |
|
458 | +';}$this->databasesPrint($Dd); if (DB == "" || !$Dd) {echo"<p class='links'>" . (support("sql") ? "<a href='" . h(ME) . "sql='" . bold(isset($_GET["sql"]) && !isset($_GET["import"])) . ">" . 'SQL command' . "</a>\n<a href='" . h(ME) . "import='" . bold(isset($_GET["import"])) . ">" . 'Import' . "</a>\n" : "") . ""; if (support("dump"))echo"<a href='" . h(ME) . "dump=" . urlencode(isset($_GET["table"]) ? $_GET["table"] : $_GET["select"]) . "' id='dump'" . bold(isset($_GET["dump"])) . ">" . 'Export' . "</a>\n"; }if ($_GET["ns"] !== "" && !$Dd && DB != "") {echo'<a href="' . h(ME) . 'create="' . bold($_GET["create"] === "") . ">" . 'Create table' . "</a>\n"; if (!$S)echo"<p class='message'>" . 'No tables.' . "\n"; else$this->tablesPrint($S); }}}function |
|
459 | +databasesPrint($Dd) {global$b, $e; $h = $this->databases(); echo'<form action=""> |
|
460 | 460 | <p id="dbs"> |
461 | -';hidden_fields_get();$rb=" onmousedown='dbMouseDown(event, this);' onchange='dbChange(this);'";echo"<span title='".'database'."'>DB</span>: ".($h?"<select name='db'$rb>".optionlist(array(""=>"")+$h,DB)."</select>":'<input name="db" value="'.h(DB).'" autocapitalize="off">'),"<input type='submit' value='".'Use'."'".($h?" class='hidden'":"").">\n";if($Dd!="db"&&DB!=""&&$e->select_db(DB)){}echo(isset($_GET["sql"])?'<input type="hidden" name="sql" value="">':(isset($_GET["schema"])?'<input type="hidden" name="schema" value="">':(isset($_GET["dump"])?'<input type="hidden" name="dump" value="">':(isset($_GET["privileges"])?'<input type="hidden" name="privileges" value="">':"")))),"</p></form>\n";}function |
|
462 | -tablesPrint($S){echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";foreach($S |
|
463 | -as$Q=>$Df){echo'<a href="'.h(ME).'select='.urlencode($Q).'"'.bold($_GET["select"]==$Q||$_GET["edit"]==$Q,"select").">".'select'."</a> ";$F=$this->tableName($Df);echo(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($Q).'"'.bold(in_array($Q,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"])),(is_view($Df)?"view":""),"structure")." title='".'Show structure'."'>$F</a>":"<span>$F</span>")."<br>\n";}}}$b=(function_exists('adminer_object')?adminer_object():new |
|
464 | -Adminer);if($b->operators===null)$b->operators=$Zd;function |
|
465 | -page_header($eg,$k="",$Ha=array(),$fg=""){global$ca,$ga,$b,$Eb,$y;page_headers();if(is_ajax()&&$k){page_messages($k);exit;}$gg=$eg.($fg!=""?": $fg":"");$hg=strip_tags($gg.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html> |
|
461 | +';hidden_fields_get(); $rb = " onmousedown='dbMouseDown(event, this);' onchange='dbChange(this);'"; echo"<span title='" . 'database' . "'>DB</span>: " . ($h ? "<select name='db'$rb>" . optionlist(array(""=>"") + $h, DB) . "</select>" : '<input name="db" value="' . h(DB) . '" autocapitalize="off">'), "<input type='submit' value='" . 'Use' . "'" . ($h ? " class='hidden'" : "") . ">\n"; if ($Dd != "db" && DB != "" && $e->select_db(DB)) {}echo(isset($_GET["sql"]) ? '<input type="hidden" name="sql" value="">' : (isset($_GET["schema"]) ? '<input type="hidden" name="schema" value="">' : (isset($_GET["dump"]) ? '<input type="hidden" name="dump" value="">' : (isset($_GET["privileges"]) ? '<input type="hidden" name="privileges" value="">' : "")))), "</p></form>\n"; }function |
|
462 | +tablesPrint($S) {echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n"; foreach ($S |
|
463 | +as$Q=>$Df) {echo'<a href="' . h(ME) . 'select=' . urlencode($Q) . '"' . bold($_GET["select"] == $Q || $_GET["edit"] == $Q, "select") . ">" . 'select' . "</a> "; $F = $this->tableName($Df); echo(support("table") || support("indexes") ? '<a href="' . h(ME) . 'table=' . urlencode($Q) . '"' . bold(in_array($Q, array($_GET["table"], $_GET["create"], $_GET["indexes"], $_GET["foreign"], $_GET["trigger"])), (is_view($Df) ? "view" : ""), "structure") . " title='" . 'Show structure' . "'>$F</a>" : "<span>$F</span>") . "<br>\n"; }}}$b = (function_exists('adminer_object') ? adminer_object() : new |
|
464 | +Adminer); if ($b->operators === null)$b->operators = $Zd; function |
|
465 | +page_header($eg, $k = "", $Ha = array(), $fg = "") {global$ca, $ga, $b, $Eb, $y; page_headers(); if (is_ajax() && $k) {page_messages($k); exit; }$gg = $eg . ($fg != "" ? ": $fg" : ""); $hg = strip_tags($gg . (SERVER != "" && SERVER != "localhost" ? h(" - " . SERVER) : "") . " - " . $b->name()); echo'<!DOCTYPE html> |
|
466 | 466 | <html lang="en" dir="ltr"> |
467 | 467 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
468 | 468 | <meta http-equiv="Content-Script-Type" content="text/javascript"> |
469 | 469 | <meta name="robots" content="noindex"> |
470 | 470 | <meta name="referrer" content="origin-when-crossorigin"> |
471 | -<title>',$hg,'</title> |
|
472 | -<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~","",ME))."?file=default.css&version=4.2.5&driver=mysql",'"> |
|
473 | -<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=functions.js&version=4.2.5&driver=mysql",'"></script> |
|
474 | -';if($b->head()){echo'<link rel="shortcut icon" type="image/x-icon" href="',h(preg_replace("~\\?.*~","",ME))."?file=favicon.ico&version=4.2.5&driver=mysql",'"> |
|
475 | -<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~","",ME))."?file=favicon.ico&version=4.2.5&driver=mysql",'"> |
|
476 | -';if(file_exists("adminer.css")){echo'<link rel="stylesheet" type="text/css" href="adminer.css"> |
|
471 | +<title>',$hg, '</title> |
|
472 | +<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~", "", ME)) . "?file=default.css&version=4.2.5&driver=mysql", '"> |
|
473 | +<script type="text/javascript" src="',h(preg_replace("~\\?.*~", "", ME)) . "?file=functions.js&version=4.2.5&driver=mysql", '"></script> |
|
474 | +';if ($b->head()) {echo'<link rel="shortcut icon" type="image/x-icon" href="', h(preg_replace("~\\?.*~", "", ME)) . "?file=favicon.ico&version=4.2.5&driver=mysql", '"> |
|
475 | +<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~", "", ME)) . "?file=favicon.ico&version=4.2.5&driver=mysql", '"> |
|
476 | +';if (file_exists("adminer.css")) {echo'<link rel="stylesheet" type="text/css" href="adminer.css"> |
|
477 | 477 | ';}}echo' |
478 | -<body class="ltr nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"',(isset($_COOKIE["adminer_version"])?"":" onload=\"verifyVersion('$ga');\"");?>> |
|
478 | +<body class="ltr nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"',(isset($_COOKIE["adminer_version"]) ? "" : " onload=\"verifyVersion('$ga');\""); ?>> |
|
479 | 479 | <script type="text/javascript"> |
480 | 480 | document.body.className = document.body.className.replace(/ nojs/, ' js'); |
481 | 481 | var offlineMessage = '<?php echo |
482 | -js_escape('You are offline.'),'\'; |
|
482 | +js_escape('You are offline.'), '\'; |
|
483 | 483 | </script> |
484 | 484 | |
485 | -<div id="help" class="jush-',$y,' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div> |
|
485 | +<div id="help" class="jush-',$y, ' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div> |
|
486 | 486 | |
487 | 487 | <div id="content"> |
488 | -';if($Ha!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($A?$A:".").'">'.$Eb[DRIVER].'</a> » ';$A=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ha===false)echo"$O\n";else{echo"<a href='".($A?h($A):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ha)))echo'<a href="'.h($A."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Ha)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Ha |
|
489 | -as$z=>$X){$xb=(is_array($X)?$X[1]:h($X));if($xb!="")echo"<a href='".h(ME."$z=").urlencode(is_array($X)?$X[0]:$X)."'>$xb</a> » ";}}echo"$eg\n";}}echo"<h2>$gg</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$h=&get_session("dbs");if(DB!=""&&$h&&!in_array(DB,$h,true))$h=null;stop_session();define("PAGE_HEADER",1);}function |
|
490 | -page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");if($b->headers()){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");}}function |
|
491 | -page_messages($k){$Bg=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Bd=$_SESSION["messages"][$Bg];if($Bd){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Bd)."</div>\n";unset($_SESSION["messages"][$Bg]);}if($k)echo"<div class='error'>$k</div>\n";}function |
|
492 | -page_footer($Dd=""){global$b,$T;echo'</div> |
|
488 | +';if ($Ha !== null) {$A = substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1); echo'<p id="breadcrumb"><a href="' . h($A ? $A : ".") . '">' . $Eb[DRIVER] . '</a> » '; $A = substr(preg_replace('~\b(db|ns)=[^&]*&~', '', ME), 0, -1); $O = (SERVER != "" ? h(SERVER) : 'Server'); if ($Ha === false)echo"$O\n"; else {echo"<a href='" . ($A ? h($A) : ".") . "' accesskey='1' title='Alt+Shift+1'>$O</a> » "; if ($_GET["ns"] != "" || (DB != "" && is_array($Ha)))echo'<a href="' . h($A . "&db=" . urlencode(DB) . (support("scheme") ? "&ns=" : "")) . '">' . h(DB) . '</a> » '; if (is_array($Ha)) {if ($_GET["ns"] != "")echo'<a href="' . h(substr(ME, 0, -1)) . '">' . h($_GET["ns"]) . '</a> » '; foreach ($Ha |
|
489 | +as$z=>$X) {$xb = (is_array($X) ? $X[1] : h($X)); if ($xb != "")echo"<a href='" . h(ME . "$z=") . urlencode(is_array($X) ? $X[0] : $X) . "'>$xb</a> » "; }}echo"$eg\n"; }}echo"<h2>$gg</h2>\n", "<div id='ajaxstatus' class='jsonly hidden'></div>\n"; restart_session(); page_messages($k); $h = &get_session("dbs"); if (DB != "" && $h && !in_array(DB, $h, true))$h = null; stop_session(); define("PAGE_HEADER", 1); }function |
|
490 | +page_headers() {global$b; header("Content-Type: text/html; charset=utf-8"); header("Cache-Control: no-cache"); if ($b->headers()) {header("X-Frame-Options: deny"); header("X-XSS-Protection: 0"); }}function |
|
491 | +page_messages($k) {$Bg = preg_replace('~^[^?]*~', '', $_SERVER["REQUEST_URI"]); $Bd = $_SESSION["messages"][$Bg]; if ($Bd) {echo"<div class='message'>" . implode("</div>\n<div class='message'>", $Bd) . "</div>\n"; unset($_SESSION["messages"][$Bg]); }if ($k)echo"<div class='error'>$k</div>\n"; }function |
|
492 | +page_footer($Dd = "") {global$b, $T; echo'</div> |
|
493 | 493 | |
494 | -';if($Dd!="auth"){echo'<form action="" method="post"> |
|
494 | +';if ($Dd != "auth") {echo'<form action="" method="post"> |
|
495 | 495 | <p class="logout"> |
496 | 496 | <input type="submit" name="logout" value="Logout" id="logout"> |
497 | -<input type="hidden" name="token" value="',$T,'"> |
|
497 | +<input type="hidden" name="token" value="',$T, '"> |
|
498 | 498 | </p> |
499 | 499 | </form> |
500 | 500 | ';}echo'<div id="menu"> |
501 | -';$b->navigation($Dd);echo'</div> |
|
501 | +';$b->navigation($Dd); echo'</div> |
|
502 | 502 | <script type="text/javascript">setupSubmitHighlight(document);</script> |
503 | 503 | ';}function |
504 | -int32($E){while($E>=2147483648)$E-=4294967296;while($E<=-2147483649)$E+=4294967296;return(int)$E;}function |
|
505 | -long2str($W,$Ng){$lf='';foreach($W |
|
506 | -as$X)$lf.=pack('V',$X);if($Ng)return |
|
507 | -substr($lf,0,end($W));return$lf;}function |
|
508 | -str2long($lf,$Ng){$W=array_values(unpack('V*',str_pad($lf,4*ceil(strlen($lf)/4),"\0")));if($Ng)$W[]=strlen($lf);return$W;}function |
|
509 | -xxtea_mx($Sg,$Rg,$Lf,$Zc){return |
|
510 | -int32((($Sg>>5&0x7FFFFFF)^$Rg<<2)+(($Rg>>3&0x1FFFFFFF)^$Sg<<4))^int32(($Lf^$Rg)+($Zc^$Sg));}function |
|
511 | -encrypt_string($Ff,$z){if($Ff=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Ff,true);$E=count($W)-1;$Sg=$W[$E];$Rg=$W[0];$H=floor(6+52/($E+1));$Lf=0;while($H-->0){$Lf=int32($Lf+0x9E3779B9);$Kb=$Lf>>2&3;for($ne=0;$ne<$E;$ne++){$Rg=$W[$ne+1];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Sg=int32($W[$ne]+$Fd);$W[$ne]=$Sg;}$Rg=$W[0];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Sg=int32($W[$E]+$Fd);$W[$E]=$Sg;}return |
|
512 | -long2str($W,false);}function |
|
513 | -decrypt_string($Ff,$z){if($Ff=="")return"";if(!$z)return |
|
514 | -false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Ff,false);$E=count($W)-1;$Sg=$W[$E];$Rg=$W[0];$H=floor(6+52/($E+1));$Lf=int32($H*0x9E3779B9);while($Lf){$Kb=$Lf>>2&3;for($ne=$E;$ne>0;$ne--){$Sg=$W[$ne-1];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Rg=int32($W[$ne]-$Fd);$W[$ne]=$Rg;}$Sg=$W[$E];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Rg=int32($W[0]-$Fd);$W[0]=$Rg;$Lf=int32($Lf-0x9E3779B9);}return |
|
515 | -long2str($W,true);}$e='';$Dc=$_SESSION["token"];if(!$Dc)$_SESSION["token"]=rand(1,1e6);$T=get_token();$ze=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$ze[$z]=$X;}}function |
|
516 | -add_invalid_login(){global$b;$nc=get_temp_dir()."/adminer.invalid";$p=@fopen($nc,"r+");if(!$p){$p=@fopen($nc,"w");if(!$p)return;}flock($p,LOCK_EX);$Tc=unserialize(stream_get_contents($p));$bg=time();if($Tc){foreach($Tc |
|
517 | -as$Uc=>$X){if($X[0]<$bg)unset($Tc[$Uc]);}}$Sc=&$Tc[$b->bruteForceKey()];if(!$Sc)$Sc=array($bg+30*60,0);$Sc[1]++;$tf=serialize($Tc);rewind($p);fwrite($p,$tf);ftruncate($p,strlen($tf));flock($p,LOCK_UN);fclose($p);}$xa=$_POST["auth"];if($xa){$Tc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$Sc=$Tc[$b->bruteForceKey()];$Kd=($Sc[1]>30?$Sc[0]-time():0);if($Kd>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Kd/60)));session_regenerate_id();$Jg=$xa["driver"];$O=$xa["server"];$V=$xa["username"];$we=(string)$xa["password"];$i=$xa["db"];set_password($Jg,$O,$V,$we);$_SESSION["db"][$Jg][$O][$V][$i]=true;if($xa["permanent"]){$z=base64_encode($Jg)."-".base64_encode($O)."-".base64_encode($V)."-".base64_encode($i);$Je=$b->permanentLogin(true);$ze[$z]="$z:".base64_encode($Je?encrypt_string($we,$Je):"");cookie("adminer_permanent",implode(" ",$ze));}if(count($_POST)==1||DRIVER!=$Jg||SERVER!=$O||$_GET["username"]!==$V||DB!=$i)redirect(auth_url($Jg,$O,$V,$i));}elseif($_POST["logout"]){if($Dc&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}}elseif($ze&&!$_SESSION["pwds"]){session_regenerate_id();$Je=$b->permanentLogin();foreach($ze |
|
518 | -as$z=>$X){list(,$Qa)=explode(":",$X);list($Jg,$O,$V,$i)=array_map('base64_decode',explode("-",$z));set_password($Jg,$O,$V,decrypt_string(base64_decode($Qa),$Je));$_SESSION["db"][$Jg][$O][$V][$i]=true;}}function |
|
519 | -unset_permanent(){global$ze;foreach($ze |
|
520 | -as$z=>$X){list($Jg,$O,$V,$i)=array_map('base64_decode',explode("-",$z));if($Jg==DRIVER&&$O==SERVER&&$V==$_GET["username"]&&$i==DB)unset($ze[$z]);}cookie("adminer_permanent",implode(" ",$ze));}function |
|
521 | -auth_error($k){global$b,$Dc;$k=h($k);$wf=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$wf]||$_GET[$wf])&&!$Dc)$k='Session expired, please login again.';else{add_invalid_login();$we=get_password();if($we!==null){if($we===false)$k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$wf]&&$_GET[$wf]&&ini_bool("session.use_only_cookies"))$k='Session support must be enabled.';$pe=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$pe["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$Ee)),false);page_footer("auth");exit;}$e=connect();}$j=new |
|
522 | -Min_Driver($e);if(!is_object($e)||($pd=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($e)?$e:(is_string($pd)?$pd:'Invalid credentials.')));if($xa&&$_POST["token"])$_POST["token"]=$T;$k='';if($_POST){if(!verify_token()){$Nc="max_input_vars";$xd=ini_get($Nc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$xd||$X<$xd)){$Nc=$z;$xd=$X;}}}$k=(!$_POST["token"]&&$xd?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$Nc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$k.=' '.'You can upload a big SQL file via FTP and import it from server.';}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false)session_write_close();function |
|
523 | -select($J,$f=null,$ge=array(),$_=0){global$y;$od=array();$w=array();$d=array();$Fa=array();$tg=array();$K=array();odd('');for($t=0;(!$_||$t<$_)&&($L=$J->fetch_row());$t++){if(!$t){echo"<table cellspacing='0' class='nowrap'>\n","<thead><tr>";for($x=0;$x<count($L);$x++){$l=$J->fetch_field();$F=$l->name;$fe=$l->orgtable;$ee=$l->orgname;$K[$l->table]=$fe;if($ge&&$y=="sql")$od[$x]=($F=="table"?"table=":($F=="possible_keys"?"indexes=":null));elseif($fe!=""){if(!isset($w[$fe])){$w[$fe]=array();foreach(indexes($fe,$f)as$v){if($v["type"]=="PRIMARY"){$w[$fe]=array_flip($v["columns"]);break;}}$d[$fe]=$w[$fe];}if(isset($d[$fe][$ee])){unset($d[$fe][$ee]);$w[$fe][$ee]=$x;$od[$x]=$fe;}}if($l->charsetnr==63)$Fa[$x]=true;$tg[$x]=$l->type;echo"<th".($fe!=""||$l->name!=$ee?" title='".h(($fe!=""?"$fe.":"").$ee)."'":"").">".h($F).($ge?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($F))):"");}echo"</thead>\n";}echo"<tr".odd().">";foreach($L |
|
524 | -as$z=>$X){if($X===null)$X="<i>NULL</i>";elseif($Fa[$z]&&!is_utf8($X))$X="<i>".lang(array('%d byte','%d bytes'),strlen($X))."</i>";elseif(!strlen($X))$X=" ";else{$X=h($X);if($tg[$z]==254)$X="<code>$X</code>";}if(isset($od[$z])&&!$d[$od[$z]]){if($ge&&$y=="sql"){$Q=$L[array_search("table=",$od)];$A=$od[$z].urlencode($ge[$Q]!=""?$ge[$Q]:$Q);}else{$A="edit=".urlencode($od[$z]);foreach($w[$od[$z]]as$Ua=>$x)$A.="&where".urlencode("[".bracket_escape($Ua)."]")."=".urlencode($L[$x]);}$X="<a href='".h(ME.$A)."'>$X</a>";}echo"<td>$X";}}echo($t?"</table>":"<p class='message'>".'No rows.')."\n";return$K;}function |
|
525 | -referencable_primary($rf){$K=array();foreach(table_status('',true)as$Pf=>$Q){if($Pf!=$rf&&fk_support($Q)){foreach(fields($Pf)as$l){if($l["primary"]){if($K[$Pf]){unset($K[$Pf]);break;}$K[$Pf]=$l;}}}}return$K;}function |
|
526 | -textarea($F,$Y,$M=10,$Ya=80){global$y;echo"<textarea name='$F' rows='$M' cols='$Ya' class='sqlarea jush-$y' spellcheck='false' wrap='off'>";if(is_array($Y)){foreach($Y |
|
504 | +int32($E) {while ($E >= 2147483648)$E -= 4294967296; while ($E <= -2147483649)$E += 4294967296; return(int) $E; }function |
|
505 | +long2str($W, $Ng) {$lf = ''; foreach ($W |
|
506 | +as$X)$lf .= pack('V', $X); if ($Ng)return |
|
507 | +substr($lf, 0, end($W)); return$lf; }function |
|
508 | +str2long($lf, $Ng) {$W = array_values(unpack('V*', str_pad($lf, 4 * ceil(strlen($lf) / 4), "\0"))); if ($Ng)$W[] = strlen($lf); return$W; }function |
|
509 | +xxtea_mx($Sg, $Rg, $Lf, $Zc) {return |
|
510 | +int32((($Sg >> 5 & 0x7FFFFFF) ^ $Rg << 2) + (($Rg >> 3 & 0x1FFFFFFF) ^ $Sg << 4)) ^ int32(($Lf ^ $Rg) + ($Zc ^ $Sg)); }function |
|
511 | +encrypt_string($Ff, $z) {if ($Ff == "")return""; $z = array_values(unpack("V*", pack("H*", md5($z)))); $W = str2long($Ff, true); $E = count($W) - 1; $Sg = $W[$E]; $Rg = $W[0]; $H = floor(6 + 52 / ($E + 1)); $Lf = 0; while ($H-- > 0) {$Lf = int32($Lf + 0x9E3779B9); $Kb = $Lf >> 2 & 3; for ($ne = 0; $ne < $E; $ne++) {$Rg = $W[$ne + 1]; $Fd = xxtea_mx($Sg, $Rg, $Lf, $z[$ne & 3 ^ $Kb]); $Sg = int32($W[$ne] + $Fd); $W[$ne] = $Sg; }$Rg = $W[0]; $Fd = xxtea_mx($Sg, $Rg, $Lf, $z[$ne & 3 ^ $Kb]); $Sg = int32($W[$E] + $Fd); $W[$E] = $Sg; }return |
|
512 | +long2str($W, false); }function |
|
513 | +decrypt_string($Ff, $z) {if ($Ff == "")return""; if (!$z)return |
|
514 | +false; $z = array_values(unpack("V*", pack("H*", md5($z)))); $W = str2long($Ff, false); $E = count($W) - 1; $Sg = $W[$E]; $Rg = $W[0]; $H = floor(6 + 52 / ($E + 1)); $Lf = int32($H * 0x9E3779B9); while ($Lf) {$Kb = $Lf >> 2 & 3; for ($ne = $E; $ne > 0; $ne--) {$Sg = $W[$ne - 1]; $Fd = xxtea_mx($Sg, $Rg, $Lf, $z[$ne & 3 ^ $Kb]); $Rg = int32($W[$ne] - $Fd); $W[$ne] = $Rg; }$Sg = $W[$E]; $Fd = xxtea_mx($Sg, $Rg, $Lf, $z[$ne & 3 ^ $Kb]); $Rg = int32($W[0] - $Fd); $W[0] = $Rg; $Lf = int32($Lf - 0x9E3779B9); }return |
|
515 | +long2str($W, true); }$e = ''; $Dc = $_SESSION["token"]; if (!$Dc)$_SESSION["token"] = rand(1, 1e6); $T = get_token(); $ze = array(); if ($_COOKIE["adminer_permanent"]) {foreach (explode(" ", $_COOKIE["adminer_permanent"])as$X) {list($z) = explode(":", $X); $ze[$z] = $X; }}function |
|
516 | +add_invalid_login() {global$b; $nc = get_temp_dir() . "/adminer.invalid"; $p = @fopen($nc, "r+"); if (!$p) {$p = @fopen($nc, "w"); if (!$p)return; }flock($p, LOCK_EX); $Tc = unserialize(stream_get_contents($p)); $bg = time(); if ($Tc) {foreach ($Tc |
|
517 | +as$Uc=>$X) {if ($X[0] < $bg)unset($Tc[$Uc]); }}$Sc = &$Tc[$b->bruteForceKey()]; if (!$Sc)$Sc = array($bg + 30 * 60, 0); $Sc[1]++; $tf = serialize($Tc); rewind($p); fwrite($p, $tf); ftruncate($p, strlen($tf)); flock($p, LOCK_UN); fclose($p); }$xa = $_POST["auth"]; if ($xa) {$Tc = unserialize(@file_get_contents(get_temp_dir() . "/adminer.invalid")); $Sc = $Tc[$b->bruteForceKey()]; $Kd = ($Sc[1] > 30 ? $Sc[0] - time() : 0); if ($Kd > 0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.', 'Too many unsuccessful logins, try again in %d minutes.'), ceil($Kd / 60))); session_regenerate_id(); $Jg = $xa["driver"]; $O = $xa["server"]; $V = $xa["username"]; $we = (string) $xa["password"]; $i = $xa["db"]; set_password($Jg, $O, $V, $we); $_SESSION["db"][$Jg][$O][$V][$i] = true; if ($xa["permanent"]) {$z = base64_encode($Jg) . "-" . base64_encode($O) . "-" . base64_encode($V) . "-" . base64_encode($i); $Je = $b->permanentLogin(true); $ze[$z] = "$z:" . base64_encode($Je ? encrypt_string($we, $Je) : ""); cookie("adminer_permanent", implode(" ", $ze)); }if (count($_POST) == 1 || DRIVER != $Jg || SERVER != $O || $_GET["username"] !== $V || DB != $i)redirect(auth_url($Jg, $O, $V, $i)); }elseif ($_POST["logout"]) {if ($Dc && !verify_token()) {page_header('Logout', 'Invalid CSRF token. Send the form again.'); page_footer("db"); exit; } else {foreach (array("pwds", "db", "dbs", "queries")as$z)set_session($z, null); unset_permanent(); redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1), 'Logout successful.'); }}elseif ($ze && !$_SESSION["pwds"]) {session_regenerate_id(); $Je = $b->permanentLogin(); foreach ($ze |
|
518 | +as$z=>$X) {list(,$Qa) = explode(":", $X); list($Jg, $O, $V, $i) = array_map('base64_decode', explode("-", $z)); set_password($Jg, $O, $V, decrypt_string(base64_decode($Qa), $Je)); $_SESSION["db"][$Jg][$O][$V][$i] = true; }}function |
|
519 | +unset_permanent() {global$ze; foreach ($ze |
|
520 | +as$z=>$X) {list($Jg, $O, $V, $i) = array_map('base64_decode', explode("-", $z)); if ($Jg == DRIVER && $O == SERVER && $V == $_GET["username"] && $i == DB)unset($ze[$z]); }cookie("adminer_permanent", implode(" ", $ze)); }function |
|
521 | +auth_error($k) {global$b, $Dc; $k = h($k); $wf = session_name(); if (isset($_GET["username"])) {header("HTTP/1.1 403 Forbidden"); if (($_COOKIE[$wf] || $_GET[$wf]) && !$Dc)$k = 'Session expired, please login again.'; else {add_invalid_login(); $we = get_password(); if ($we !== null) {if ($we === false)$k .= '<br>' . sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.', '<code>permanentLogin()</code>'); set_password(DRIVER, SERVER, $_GET["username"], null); }unset_permanent(); }}if (!$_COOKIE[$wf] && $_GET[$wf] && ini_bool("session.use_only_cookies"))$k = 'Session support must be enabled.'; $pe = session_get_cookie_params(); cookie("adminer_key", ($_COOKIE["adminer_key"] ? $_COOKIE["adminer_key"] : rand_string()), $pe["lifetime"]); page_header('Login', $k, null); echo"<form action='' method='post'>\n"; $b->loginForm(); echo"<div>"; hidden_fields($_POST, array("auth")); echo"</div>\n", "</form>\n"; page_footer("auth"); exit; }if (isset($_GET["username"])) {if (!class_exists("Min_DB")) {unset($_SESSION["pwds"][DRIVER]); unset_permanent(); page_header('No extension', sprintf('None of the supported PHP extensions (%s) are available.', implode(", ", $Ee)), false); page_footer("auth"); exit; }$e = connect(); }$j = new |
|
522 | +Min_Driver($e); if (!is_object($e) || ($pd = $b->login($_GET["username"], get_password())) !== true)auth_error((is_string($e) ? $e : (is_string($pd) ? $pd : 'Invalid credentials.'))); if ($xa && $_POST["token"])$_POST["token"] = $T; $k = ''; if ($_POST) {if (!verify_token()) {$Nc = "max_input_vars"; $xd = ini_get($Nc); if (extension_loaded("suhosin")) {foreach (array("suhosin.request.max_vars", "suhosin.post.max_vars")as$z) {$X = ini_get($z); if ($X && (!$xd || $X < $xd)) {$Nc = $z; $xd = $X; }}}$k = (!$_POST["token"] && $xd ? sprintf('Maximum number of allowed fields exceeded. Please increase %s.', "'$Nc'") : 'Invalid CSRF token. Send the form again.' . ' ' . 'If you did not send this request from Adminer then close this page.'); }}elseif ($_SERVER["REQUEST_METHOD"] == "POST") {$k = sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.', "'post_max_size'"); if (isset($_GET["sql"]))$k .= ' ' . 'You can upload a big SQL file via FTP and import it from server.'; }if (!ini_bool("session.use_cookies") || @ini_set("session.use_cookies", false) !== false)session_write_close(); function |
|
523 | +select($J, $f = null, $ge = array(), $_ = 0) {global$y; $od = array(); $w = array(); $d = array(); $Fa = array(); $tg = array(); $K = array(); odd(''); for ($t = 0; (!$_ || $t < $_) && ($L = $J->fetch_row()); $t++) {if (!$t) {echo"<table cellspacing='0' class='nowrap'>\n", "<thead><tr>"; for ($x = 0; $x < count($L); $x++) {$l = $J->fetch_field(); $F = $l->name; $fe = $l->orgtable; $ee = $l->orgname; $K[$l->table] = $fe; if ($ge && $y == "sql")$od[$x] = ($F == "table" ? "table=" : ($F == "possible_keys" ? "indexes=" : null)); elseif ($fe != "") {if (!isset($w[$fe])) {$w[$fe] = array(); foreach (indexes($fe, $f)as$v) {if ($v["type"] == "PRIMARY") {$w[$fe] = array_flip($v["columns"]); break; }}$d[$fe] = $w[$fe]; }if (isset($d[$fe][$ee])) {unset($d[$fe][$ee]); $w[$fe][$ee] = $x; $od[$x] = $fe; }}if ($l->charsetnr == 63)$Fa[$x] = true; $tg[$x] = $l->type; echo"<th" . ($fe != "" || $l->name != $ee ? " title='" . h(($fe != "" ? "$fe." : "") . $ee) . "'" : "") . ">" . h($F) . ($ge ? doc_link(array('sql'=>"explain-output.html#explain_" . strtolower($F))) : ""); }echo"</thead>\n"; }echo"<tr" . odd() . ">"; foreach ($L |
|
524 | +as$z=>$X) {if ($X === null)$X = "<i>NULL</i>"; elseif ($Fa[$z] && !is_utf8($X))$X = "<i>" . lang(array('%d byte', '%d bytes'), strlen($X)) . "</i>"; elseif (!strlen($X))$X = " "; else {$X = h($X); if ($tg[$z] == 254)$X = "<code>$X</code>"; }if (isset($od[$z]) && !$d[$od[$z]]) {if ($ge && $y == "sql") {$Q = $L[array_search("table=", $od)]; $A = $od[$z] . urlencode($ge[$Q] != "" ? $ge[$Q] : $Q); } else {$A = "edit=" . urlencode($od[$z]); foreach ($w[$od[$z]]as$Ua=>$x)$A .= "&where" . urlencode("[" . bracket_escape($Ua) . "]") . "=" . urlencode($L[$x]); }$X = "<a href='" . h(ME . $A) . "'>$X</a>"; }echo"<td>$X"; }}echo($t ? "</table>" : "<p class='message'>" . 'No rows.') . "\n"; return$K; }function |
|
525 | +referencable_primary($rf) {$K = array(); foreach (table_status('', true)as$Pf=>$Q) {if ($Pf != $rf && fk_support($Q)) {foreach (fields($Pf)as$l) {if ($l["primary"]) {if ($K[$Pf]) {unset($K[$Pf]); break; }$K[$Pf] = $l; }}}}return$K; }function |
|
526 | +textarea($F, $Y, $M = 10, $Ya = 80) {global$y; echo"<textarea name='$F' rows='$M' cols='$Ya' class='sqlarea jush-$y' spellcheck='false' wrap='off'>"; if (is_array($Y)) {foreach ($Y |
|
527 | 527 | as$X)echo |
528 | -h($X[0])."\n\n\n";}else |
|
528 | +h($X[0]) . "\n\n\n"; } else |
|
529 | 529 | echo |
530 | -h($Y);echo"</textarea>";}function |
|
531 | -edit_type($z,$l,$Xa,$o=array()){global$Hf,$tg,$_g,$Vd;$U=$l["type"];echo'<td><select name="',h($z),'[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"',on_help("getTarget(event).value",1),'>';if($U&&!isset($tg[$U])&&!isset($o[$U]))array_unshift($Hf,$U);if($o)$Hf['Foreign keys']=$o;echo |
|
532 | -optionlist($Hf,$U),'</select> |
|
533 | -<td><input name="',h($z),'[length]" value="',h($l["length"]),'" size="3" onfocus="editingLengthFocus(this);"',(!$l["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":""),' onchange="editingLengthChange(this);" onkeyup="this.onchange();"><td class="options">';echo"<select name='".h($z)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'").'><option value="">('.'collation'.')'.optionlist($Xa,$l["collation"]).'</select>',($_g?"<select name='".h($z)."[unsigned]'".(!$U||preg_match('~((^|[^o])int|float|double|decimal)$~',$U)?"":" class='hidden'").'><option>'.optionlist($_g,$l["unsigned"]).'</select>':''),(isset($l['on_update'])?"<select name='".h($z)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".'ON UPDATE'.")","CURRENT_TIMESTAMP"),$l["on_update"]).'</select>':''),($o?"<select name='".h($z)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".'ON DELETE'.")".optionlist(explode("|",$Vd),$l["on_delete"])."</select> ":" ");}function |
|
534 | -process_length($ld){global$Vb;return(preg_match("~^\\s*\\(?\\s*$Vb(?:\\s*,\\s*$Vb)*+\\s*\\)?\\s*\$~",$ld)&&preg_match_all("~$Vb~",$ld,$rd)?"(".implode(",",$rd[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$ld)));}function |
|
535 | -process_type($l,$Va="COLLATE"){global$_g;return" $l[type]".process_length($l["length"]).(preg_match('~(^|[^o])int|float|double|decimal~',$l["type"])&&in_array($l["unsigned"],$_g)?" $l[unsigned]":"").(preg_match('~char|text|enum|set~',$l["type"])&&$l["collation"]?" $Va ".q($l["collation"]):"");}function |
|
536 | -process_field($l,$rg){global$y;$vb=$l["default"];return |
|
537 | -array(idf_escape(trim($l["field"])),process_type($rg),($l["null"]?" NULL":" NOT NULL"),(isset($vb)?" DEFAULT ".((preg_match('~time~',$l["type"])&&preg_match('~^CURRENT_TIMESTAMP$~i',$vb))||($y=="sqlite"&&preg_match('~^CURRENT_(TIME|TIMESTAMP|DATE)$~i',$vb))||($l["type"]=="bit"&&preg_match("~^([0-9]+|b'[0-1]+')\$~",$vb))||($y=="pgsql"&&preg_match("~^[a-z]+\\(('[^']*')+\\)\$~",$vb))?$vb:q($vb)):""),(preg_match('~timestamp|datetime~',$l["type"])&&$l["on_update"]?" ON UPDATE $l[on_update]":""),(support("comment")&&$l["comment"]!=""?" COMMENT ".q($l["comment"]):""),($l["auto_increment"]?auto_increment():null),);}function |
|
538 | -type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$z=>$X){if(preg_match("~$z|$X~",$U))return" class='$z'";}}function |
|
539 | -edit_fields($m,$Xa,$U="TABLE",$o=array(),$cb=false){global$e,$Oc;$m=array_values($m);echo'<thead><tr class="wrap"> |
|
540 | -';if($U=="PROCEDURE"){echo'<td> ';}echo'<th>',($U=="TABLE"?'Column name':'Parameter name'),'<td>Type<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea> |
|
530 | +h($Y); echo"</textarea>"; }function |
|
531 | +edit_type($z, $l, $Xa, $o = array()) {global$Hf, $tg, $_g, $Vd; $U = $l["type"]; echo'<td><select name="', h($z), '[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"', on_help("getTarget(event).value", 1), '>'; if ($U && !isset($tg[$U]) && !isset($o[$U]))array_unshift($Hf, $U); if ($o)$Hf['Foreign keys'] = $o; echo |
|
532 | +optionlist($Hf, $U), '</select> |
|
533 | +<td><input name="',h($z), '[length]" value="', h($l["length"]), '" size="3" onfocus="editingLengthFocus(this);"', (!$l["length"] && preg_match('~var(char|binary)$~', $U) ? " class='required'" : ""), ' onchange="editingLengthChange(this);" onkeyup="this.onchange();"><td class="options">'; echo"<select name='" . h($z) . "[collation]'" . (preg_match('~(char|text|enum|set)$~', $U) ? "" : " class='hidden'") . '><option value="">(' . 'collation' . ')' . optionlist($Xa, $l["collation"]) . '</select>', ($_g ? "<select name='" . h($z) . "[unsigned]'" . (!$U || preg_match('~((^|[^o])int|float|double|decimal)$~', $U) ? "" : " class='hidden'") . '><option>' . optionlist($_g, $l["unsigned"]) . '</select>' : ''), (isset($l['on_update']) ? "<select name='" . h($z) . "[on_update]'" . (preg_match('~timestamp|datetime~', $U) ? "" : " class='hidden'") . '>' . optionlist(array(""=>"(" . 'ON UPDATE' . ")", "CURRENT_TIMESTAMP"), $l["on_update"]) . '</select>' : ''), ($o ? "<select name='" . h($z) . "[on_delete]'" . (preg_match("~`~", $U) ? "" : " class='hidden'") . "><option value=''>(" . 'ON DELETE' . ")" . optionlist(explode("|", $Vd), $l["on_delete"]) . "</select> " : " "); }function |
|
534 | +process_length($ld) {global$Vb; return(preg_match("~^\\s*\\(?\\s*$Vb(?:\\s*,\\s*$Vb)*+\\s*\\)?\\s*\$~", $ld) && preg_match_all("~$Vb~", $ld, $rd) ? "(" . implode(",", $rd[0]) . ")" : preg_replace('~^[0-9].*~', '(\0)', preg_replace('~[^-0-9,+()[\]]~', '', $ld))); }function |
|
535 | +process_type($l, $Va = "COLLATE") {global$_g; return" $l[type]" . process_length($l["length"]) . (preg_match('~(^|[^o])int|float|double|decimal~', $l["type"]) && in_array($l["unsigned"], $_g) ? " $l[unsigned]" : "") . (preg_match('~char|text|enum|set~', $l["type"]) && $l["collation"] ? " $Va " . q($l["collation"]) : ""); }function |
|
536 | +process_field($l, $rg) {global$y; $vb = $l["default"]; return |
|
537 | +array(idf_escape(trim($l["field"])), process_type($rg), ($l["null"] ? " NULL" : " NOT NULL"), (isset($vb) ? " DEFAULT " . ((preg_match('~time~', $l["type"]) && preg_match('~^CURRENT_TIMESTAMP$~i', $vb)) || ($y == "sqlite" && preg_match('~^CURRENT_(TIME|TIMESTAMP|DATE)$~i', $vb)) || ($l["type"] == "bit" && preg_match("~^([0-9]+|b'[0-1]+')\$~", $vb)) || ($y == "pgsql" && preg_match("~^[a-z]+\\(('[^']*')+\\)\$~", $vb)) ? $vb : q($vb)) : ""), (preg_match('~timestamp|datetime~', $l["type"]) && $l["on_update"] ? " ON UPDATE $l[on_update]" : ""), (support("comment") && $l["comment"] != "" ? " COMMENT " . q($l["comment"]) : ""), ($l["auto_increment"] ? auto_increment() : null),); }function |
|
538 | +type_class($U) {foreach (array('char'=>'text', 'date'=>'time|year', 'binary'=>'blob', 'enum'=>'set',)as$z=>$X) {if (preg_match("~$z|$X~", $U))return" class='$z'"; }}function |
|
539 | +edit_fields($m, $Xa, $U = "TABLE", $o = array(), $cb = false) {global$e, $Oc; $m = array_values($m); echo'<thead><tr class="wrap"> |
|
540 | +';if ($U == "PROCEDURE") {echo'<td> '; }echo'<th>', ($U == "TABLE" ? 'Column name' : 'Parameter name'), '<td>Type<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea> |
|
541 | 541 | <td>Length |
542 | 542 | <td>Options |
543 | -';if($U=="TABLE"){echo'<td>NULL |
|
544 | -<td><input type="radio" name="auto_increment_col" value=""><acronym title="Auto Increment">AI</acronym>',doc_link(array('sql'=>"example-auto-increment.html",'sqlite'=>"autoinc.html",'pgsql'=>"datatype.html#DATATYPE-SERIAL",'mssql'=>"ms186775.aspx",)),'<td>Default value |
|
545 | -',(support("comment")?"<td".($cb?"":" class='hidden'").">".'Comment':"");}echo'<td>',"<input type='image' class='icon' name='add[".(support("move_col")?0:count($m))."]' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=4.2.5&driver=mysql' alt='+' title='".'Add next'."'>",'<script type="text/javascript">row_count = ',count($m),';</script> |
|
543 | +';if ($U == "TABLE") {echo'<td>NULL |
|
544 | +<td><input type="radio" name="auto_increment_col" value=""><acronym title="Auto Increment">AI</acronym>',doc_link(array('sql'=>"example-auto-increment.html", 'sqlite'=>"autoinc.html", 'pgsql'=>"datatype.html#DATATYPE-SERIAL", 'mssql'=>"ms186775.aspx",)), '<td>Default value |
|
545 | +',(support("comment") ? "<td" . ($cb ? "" : " class='hidden'") . ">" . 'Comment' : ""); }echo'<td>', "<input type='image' class='icon' name='add[" . (support("move_col") ? 0 : count($m)) . "]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=plus.gif&version=4.2.5&driver=mysql' alt='+' title='" . 'Add next' . "'>", '<script type="text/javascript">row_count = ', count($m), ';</script> |
|
546 | 546 | </thead> |
547 | 547 | <tbody onkeydown="return editingKeydown(event);"> |
548 | -';foreach($m |
|
549 | -as$t=>$l){$t++;$he=$l[($_POST?"orig":"field")];$Ab=(isset($_POST["add"][$t-1])||(isset($l["field"])&&!$_POST["drop_col"][$t]))&&(support("drop_col")||$he=="");echo'<tr',($Ab?"":" style='display: none;'"),'> |
|
550 | -',($U=="PROCEDURE"?"<td>".html_select("fields[$t][inout]",explode("|",$Oc),$l["inout"]):""),'<th>';if($Ab){echo'<input name="fields[',$t,'][field]" value="',h($l["field"]),'" onchange="editingNameChange(this);',($l["field"]!=""||count($m)>1?'':' editingAddRow(this);" onkeyup="if (this.value) editingAddRow(this);'),'" maxlength="64" autocapitalize="off">';}echo'<input type="hidden" name="fields[',$t,'][orig]" value="',h($he),'"> |
|
551 | -';edit_type("fields[$t]",$l,$Xa,$o);if($U=="TABLE"){echo'<td>',checkbox("fields[$t][null]",1,$l["null"],"","","block"),'<td><label class="block"><input type="radio" name="auto_increment_col" value="',$t,'"';if($l["auto_increment"]){echo' checked';}?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }"></label><td><?php |
|
548 | +';foreach ($m |
|
549 | +as$t=>$l) {$t++; $he = $l[($_POST ? "orig" : "field")]; $Ab = (isset($_POST["add"][$t - 1]) || (isset($l["field"]) && !$_POST["drop_col"][$t])) && (support("drop_col") || $he == ""); echo'<tr', ($Ab ? "" : " style='display: none;'"), '> |
|
550 | +',($U == "PROCEDURE" ? "<td>" . html_select("fields[$t][inout]", explode("|", $Oc), $l["inout"]) : ""), '<th>'; if ($Ab) {echo'<input name="fields[', $t, '][field]" value="', h($l["field"]), '" onchange="editingNameChange(this);', ($l["field"] != "" || count($m) > 1 ? '' : ' editingAddRow(this);" onkeyup="if (this.value) editingAddRow(this);'), '" maxlength="64" autocapitalize="off">'; }echo'<input type="hidden" name="fields[', $t, '][orig]" value="', h($he), '"> |
|
551 | +';edit_type("fields[$t]", $l, $Xa, $o); if ($U == "TABLE") {echo'<td>', checkbox("fields[$t][null]", 1, $l["null"], "", "", "block"), '<td><label class="block"><input type="radio" name="auto_increment_col" value="', $t, '"'; if ($l["auto_increment"]) {echo' checked'; }?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }"></label><td><?php |
|
552 | 552 | echo |
553 | -checkbox("fields[$t][has_default]",1,$l["has_default"]),'<input name="fields[',$t,'][default]" value="',h($l["default"]),'" onkeyup="keyupChange.call(this);" onchange="this.previousSibling.checked = true;"> |
|
554 | -',(support("comment")?"<td".($cb?"":" class='hidden'")."><input name='fields[$t][comment]' value='".h($l["comment"])."' maxlength='".($e->server_info>=5.5?1024:255)."'>":"");}echo"<td>",(support("move_col")?"<input type='image' class='icon' name='add[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=4.2.5&driver=mysql' alt='+' title='".'Add next'."' onclick='return !editingAddRow(this, 1);'> "."<input type='image' class='icon' name='up[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=up.gif&version=4.2.5&driver=mysql' alt='^' title='".'Move up'."'> "."<input type='image' class='icon' name='down[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=down.gif&version=4.2.5&driver=mysql' alt='v' title='".'Move down'."'> ":""),($he==""||support("drop_col")?"<input type='image' class='icon' name='drop_col[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=cross.gif&version=4.2.5&driver=mysql' alt='x' title='".'Remove'."' onclick=\"return !editingRemoveRow(this, 'fields\$1[field]');\">":""),"\n";}}function |
|
555 | -process_fields(&$m){ksort($m);$Od=0;if($_POST["up"]){$fd=0;foreach($m |
|
556 | -as$z=>$l){if(key($_POST["up"])==$z){unset($m[$z]);array_splice($m,$fd,0,array($l));break;}if(isset($l["field"]))$fd=$Od;$Od++;}}elseif($_POST["down"]){$uc=false;foreach($m |
|
557 | -as$z=>$l){if(isset($l["field"])&&$uc){unset($m[key($_POST["down"])]);array_splice($m,$Od,0,array($uc));break;}if(key($_POST["down"])==$z)$uc=$l;$Od++;}}elseif($_POST["add"]){$m=array_values($m);array_splice($m,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return |
|
558 | -false;return |
|
559 | -true;}function |
|
560 | -normalize_enum($C){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($C[0][0].$C[0][0],$C[0][0],substr($C[0],1,-1))),'\\'))."'";}function |
|
561 | -grant($r,$Le,$d,$Ud){if(!$Le)return |
|
562 | -true;if($Le==array("ALL PRIVILEGES","GRANT OPTION"))return($r=="GRANT"?queries("$r ALL PRIVILEGES$Ud WITH GRANT OPTION"):queries("$r ALL PRIVILEGES$Ud")&&queries("$r GRANT OPTION$Ud"));return |
|
563 | -queries("$r ".preg_replace('~(GRANT OPTION)\\([^)]*\\)~','\\1',implode("$d, ",$Le).$d).$Ud);}function |
|
564 | -drop_create($Fb,$g,$Gb,$Yf,$Hb,$B,$Ad,$zd,$_d,$Rd,$Id){if($_POST["drop"])query_redirect($Fb,$B,$Ad);elseif($Rd=="")query_redirect($g,$B,$_d);elseif($Rd!=$Id){$lb=queries($g);queries_redirect($B,$zd,$lb&&queries($Fb));if($lb)queries($Gb);}else |
|
565 | -queries_redirect($B,$zd,queries($Yf)&&queries($Hb)&&queries($Fb)&&queries($g));}function |
|
566 | -create_trigger($Ud,$L){global$y;$dg=" $L[Timing] $L[Event]".($L["Event"]=="UPDATE OF"?" ".idf_escape($L["Of"]):"");return"CREATE TRIGGER ".idf_escape($L["Trigger"]).($y=="mssql"?$Ud.$dg:$dg.$Ud).rtrim(" $L[Type]\n$L[Statement]",";").";";}function |
|
567 | -create_routine($if,$L){global$Oc;$P=array();$m=(array)$L["fields"];ksort($m);foreach($m |
|
568 | -as$l){if($l["field"]!="")$P[]=(preg_match("~^($Oc)\$~",$l["inout"])?"$l[inout] ":"").idf_escape($l["field"]).process_type($l,"CHARACTER SET");}return"CREATE $if ".idf_escape(trim($L["name"]))." (".implode(", ",$P).")".(isset($_GET["function"])?" RETURNS".process_type($L["returns"],"CHARACTER SET"):"").($L["language"]?" LANGUAGE $L[language]":"").rtrim("\n$L[definition]",";").";";}function |
|
569 | -remove_definer($I){return |
|
570 | -preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\\1)',logged_user()).'`~','\\1',$I);}function |
|
571 | -format_foreign_key($n){global$Vd;return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$n["source"])).") REFERENCES ".table($n["table"])." (".implode(", ",array_map('idf_escape',$n["target"])).")".(preg_match("~^($Vd)\$~",$n["on_delete"])?" ON DELETE $n[on_delete]":"").(preg_match("~^($Vd)\$~",$n["on_update"])?" ON UPDATE $n[on_update]":"");}function |
|
572 | -tar_file($nc,$ig){$K=pack("a100a8a8a8a12a12",$nc,644,0,0,decoct($ig->size),decoct(time()));$Pa=8*32;for($t=0;$t<strlen($K);$t++)$Pa+=ord($K[$t]);$K.=sprintf("%06o",$Pa)."\0 ";echo$K,str_repeat("\0",512-strlen($K));$ig->send();echo |
|
573 | -str_repeat("\0",511-($ig->size+511)%512);}function |
|
574 | -ini_bytes($Nc){$X=ini_get($Nc);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function |
|
575 | -doc_link($xe){global$y,$e;$Cg=array('sql'=>"http://dev.mysql.com/doc/refman/".substr($e->server_info,0,3)."/en/",'sqlite'=>"http://www.sqlite.org/",'pgsql'=>"http://www.postgresql.org/docs/".substr($e->server_info,0,3)."/static/",'mssql'=>"http://msdn.microsoft.com/library/",'oracle'=>"http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/",);return($xe[$y]?"<a href='$Cg[$y]$xe[$y]' target='_blank' rel='noreferrer'><sup>?</sup></a>":"");}function |
|
576 | -ob_gzencode($Gf){return |
|
577 | -gzencode($Gf);}function |
|
578 | -db_size($i){global$e;if(!$e->select_db($i))return"?";$K=0;foreach(table_status()as$R)$K+=$R["Data_length"]+$R["Index_length"];return |
|
579 | -format_number($K);}function |
|
580 | -set_utf8mb4($g){global$e;static$P=false;if(!$P&&preg_match('~\butf8mb4~i',$g)){$P=true;echo"SET NAMES ".charset($e).";\n\n";}}function |
|
581 | -connect_error(){global$b,$e,$T,$k,$Eb;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Database'.": ".h(DB),'Invalid database.',true);}else{if($_POST["db"]&&!$k)queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"]));page_header('Select database',$k,false);echo"<p class='links'>\n";foreach(array('database'=>'Create new database','privileges'=>'Privileges','processlist'=>'Process list','variables'=>'Variables','status'=>'Status',)as$z=>$X){if(support($z))echo"<a href='".h(ME)."$z='>$X</a>\n";}echo"<p>".sprintf('%s version: %s through PHP extension %s',$Eb[DRIVER],"<b>".h($e->server_info)."</b>","<b>$e->extension</b>")."\n","<p>".sprintf('Logged as: %s',"<b>".h(logged_user())."</b>")."\n";$h=$b->databases();if($h){$of=support("scheme");$Xa=collations();echo"<form action='' method='post'>\n","<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n","<thead><tr>".(support("database")?"<td> ":"")."<th>".'Database'." - <a href='".h(ME)."refresh=1'>".'Refresh'."</a>"."<td>".'Collation'."<td>".'Tables'."<td>".'Size'." - <a href='".h(ME)."dbsize=1' onclick=\"return !ajaxSetHtml('".h(js_escape(ME))."script=connect');\">".'Compute'."</a>"."</thead>\n";$h=($_GET["dbsize"]?count_tables($h):array_flip($h));foreach($h |
|
582 | -as$i=>$S){$hf=h(ME)."db=".urlencode($i);echo"<tr".odd().">".(support("database")?"<td>".checkbox("db[]",$i,in_array($i,(array)$_POST["db"])):""),"<th><a href='$hf'>".h($i)."</a>";$Wa=nbsp(db_collation($i,$Xa));echo"<td>".(support("database")?"<a href='$hf".($of?"&ns=":"")."&database=' title='".'Alter database'."'>$Wa</a>":$Wa),"<td align='right'><a href='$hf&schema=' id='tables-".h($i)."' title='".'Database schema'."'>".($_GET["dbsize"]?$S:"?")."</a>","<td align='right' id='size-".h($i)."'>".($_GET["dbsize"]?db_size($i):"?"),"\n";}echo"</table>\n",(support("database")?"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>\n"."<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^db/));\">\n"."<input type='submit' name='drop' value='".'Drop'."'".confirm().">\n"."</div></fieldset>\n":""),"<script type='text/javascript'>tableCheck();</script>\n","<input type='hidden' name='token' value='$T'>\n","</form>\n";}}page_footer("db");}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?$e->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}connect_error();exit;}$Vd="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class |
|
583 | -TmpFile{var$handler;var$size;function |
|
584 | -__construct(){$this->handler=tmpfile();}function |
|
585 | -write($gb){$this->size+=strlen($gb);fwrite($this->handler,$gb);}function |
|
586 | -send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$Vb="'(?:''|[^'\\\\]|\\\\.)*'";$Oc="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$j->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$m=fields($a);if(!$m)$k=error();$R=table_status1($a,true);page_header(($m&&is_view($R)?'View':'Table').": ".h($a),$k);$b->selectLinks($R);$bb=$R["Comment"];if($bb!="")echo"<p>".'Comment'.": ".h($bb)."\n";if($m){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Column'."<td>".'Type'.(support("comment")?"<td>".'Comment':"")."</thead>\n";foreach($m |
|
587 | -as$l){echo"<tr".odd()."><th>".h($l["field"]),"<td><span title='".h($l["collation"])."'>".h($l["full_type"])."</span>",($l["null"]?" <i>NULL</i>":""),($l["auto_increment"]?" <i>".'Auto Increment'."</i>":""),(isset($l["default"])?" <span title='".'Default value'."'>[<b>".h($l["default"])."</b>]</span>":""),(support("comment")?"<td>".nbsp($l["comment"]):""),"\n";}echo"</table>\n";}if(!is_view($R)){if(support("indexes")){echo"<h3 id='indexes'>".'Indexes'."</h3>\n";$w=indexes($a);if($w){echo"<table cellspacing='0'>\n";foreach($w |
|
588 | -as$F=>$v){ksort($v["columns"]);$Ie=array();foreach($v["columns"]as$z=>$X)$Ie[]="<i>".h($X)."</i>".($v["lengths"][$z]?"(".$v["lengths"][$z].")":"").($v["descs"][$z]?" DESC":"");echo"<tr title='".h($F)."'><th>$v[type]<td>".implode(", ",$Ie)."\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.'Alter indexes'."</a>\n";}if(fk_support($R)){echo"<h3 id='foreign-keys'>".'Foreign keys'."</h3>\n";$o=foreign_keys($a);if($o){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Source'."<td>".'Target'."<td>".'ON DELETE'."<td>".'ON UPDATE'."<td> </thead>\n";foreach($o |
|
589 | -as$F=>$n){echo"<tr title='".h($F)."'>","<th><i>".implode("</i>, <i>",array_map('h',$n["source"]))."</i>","<td><a href='".h($n["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($n["db"]),ME):($n["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($n["ns"]),ME):ME))."table=".urlencode($n["table"])."'>".($n["db"]!=""?"<b>".h($n["db"])."</b>.":"").($n["ns"]!=""?"<b>".h($n["ns"])."</b>.":"").h($n["table"])."</a>","(<i>".implode("</i>, <i>",array_map('h',$n["target"]))."</i>)","<td>".nbsp($n["on_delete"])."\n","<td>".nbsp($n["on_update"])."\n",'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($F)).'">'.'Alter'.'</a>';}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.'Add foreign key'."</a>\n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".'Triggers'."</h3>\n";$qg=triggers($a);if($qg){echo"<table cellspacing='0'>\n";foreach($qg |
|
590 | -as$z=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($z)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($z))."'>".'Alter'."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.'Add trigger'."</a>\n";}}elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Qf=array();$Rf=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$rd,PREG_SET_ORDER);foreach($rd |
|
591 | -as$t=>$C){$Qf[$C[1]]=array($C[2],$C[3]);$Rf[]="\n\t'".js_escape($C[1])."': [ $C[2], $C[3] ]";}$kg=0;$Ca=-1;$nf=array();$Ye=array();$jd=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R))continue;$Be=0;$nf[$Q]["fields"]=array();foreach(fields($Q)as$F=>$l){$Be+=1.25;$l["pos"]=$Be;$nf[$Q]["fields"][$F]=$l;}$nf[$Q]["pos"]=($Qf[$Q]?$Qf[$Q]:array($kg,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$hd=$Ca;if($Qf[$Q][1]||$Qf[$X["table"]][1])$hd=min(floatval($Qf[$Q][1]),floatval($Qf[$X["table"]][1]))-1;else$Ca-=.1;while($jd[(string)$hd])$hd-=.0001;$nf[$Q]["references"][$X["table"]][(string)$hd]=array($X["source"],$X["target"]);$Ye[$X["table"]][$Q][(string)$hd]=$X["target"];$jd[(string)$hd]=true;}}$kg=max($kg,$nf[$Q]["pos"][0]+2.5+$Be);}echo'<div id="schema" style="height: ',$kg,'em;" onselectstart="return false;"> |
|
553 | +checkbox("fields[$t][has_default]", 1, $l["has_default"]), '<input name="fields[', $t, '][default]" value="', h($l["default"]), '" onkeyup="keyupChange.call(this);" onchange="this.previousSibling.checked = true;"> |
|
554 | +',(support("comment") ? "<td" . ($cb ? "" : " class='hidden'") . "><input name='fields[$t][comment]' value='" . h($l["comment"]) . "' maxlength='" . ($e->server_info >= 5.5 ? 1024 : 255) . "'>" : ""); }echo"<td>", (support("move_col") ? "<input type='image' class='icon' name='add[$t]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=plus.gif&version=4.2.5&driver=mysql' alt='+' title='" . 'Add next' . "' onclick='return !editingAddRow(this, 1);'> " . "<input type='image' class='icon' name='up[$t]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=up.gif&version=4.2.5&driver=mysql' alt='^' title='" . 'Move up' . "'> " . "<input type='image' class='icon' name='down[$t]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=down.gif&version=4.2.5&driver=mysql' alt='v' title='" . 'Move down' . "'> " : ""), ($he == "" || support("drop_col") ? "<input type='image' class='icon' name='drop_col[$t]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=cross.gif&version=4.2.5&driver=mysql' alt='x' title='" . 'Remove' . "' onclick=\"return !editingRemoveRow(this, 'fields\$1[field]');\">" : ""), "\n"; }}function |
|
555 | +process_fields(&$m) {ksort($m); $Od = 0; if ($_POST["up"]) {$fd = 0; foreach ($m |
|
556 | +as$z=>$l) {if (key($_POST["up"]) == $z) {unset($m[$z]); array_splice($m, $fd, 0, array($l)); break; }if (isset($l["field"]))$fd = $Od; $Od++; }}elseif ($_POST["down"]) {$uc = false; foreach ($m |
|
557 | +as$z=>$l) {if (isset($l["field"]) && $uc) {unset($m[key($_POST["down"])]); array_splice($m, $Od, 0, array($uc)); break; }if (key($_POST["down"]) == $z)$uc = $l; $Od++; }}elseif ($_POST["add"]) {$m = array_values($m); array_splice($m, key($_POST["add"]), 0, array(array())); }elseif (!$_POST["drop_col"])return |
|
558 | +false; return |
|
559 | +true; }function |
|
560 | +normalize_enum($C) {return"'" . str_replace("'", "''", addcslashes(stripcslashes(str_replace($C[0][0] . $C[0][0], $C[0][0], substr($C[0], 1, -1))), '\\')) . "'"; }function |
|
561 | +grant($r, $Le, $d, $Ud) {if (!$Le)return |
|
562 | +true; if ($Le == array("ALL PRIVILEGES", "GRANT OPTION"))return($r == "GRANT" ? queries("$r ALL PRIVILEGES$Ud WITH GRANT OPTION") : queries("$r ALL PRIVILEGES$Ud") && queries("$r GRANT OPTION$Ud")); return |
|
563 | +queries("$r " . preg_replace('~(GRANT OPTION)\\([^)]*\\)~', '\\1', implode("$d, ", $Le) . $d) . $Ud); }function |
|
564 | +drop_create($Fb, $g, $Gb, $Yf, $Hb, $B, $Ad, $zd, $_d, $Rd, $Id) {if ($_POST["drop"])query_redirect($Fb, $B, $Ad); elseif ($Rd == "")query_redirect($g, $B, $_d); elseif ($Rd != $Id) {$lb = queries($g); queries_redirect($B, $zd, $lb && queries($Fb)); if ($lb)queries($Gb); } else |
|
565 | +queries_redirect($B, $zd, queries($Yf) && queries($Hb) && queries($Fb) && queries($g)); }function |
|
566 | +create_trigger($Ud, $L) {global$y; $dg = " $L[Timing] $L[Event]" . ($L["Event"] == "UPDATE OF" ? " " . idf_escape($L["Of"]) : ""); return"CREATE TRIGGER " . idf_escape($L["Trigger"]) . ($y == "mssql" ? $Ud . $dg : $dg . $Ud) . rtrim(" $L[Type]\n$L[Statement]", ";") . ";"; }function |
|
567 | +create_routine($if, $L) {global$Oc; $P = array(); $m = (array) $L["fields"]; ksort($m); foreach ($m |
|
568 | +as$l) {if ($l["field"] != "")$P[] = (preg_match("~^($Oc)\$~", $l["inout"]) ? "$l[inout] " : "") . idf_escape($l["field"]) . process_type($l, "CHARACTER SET"); }return"CREATE $if " . idf_escape(trim($L["name"])) . " (" . implode(", ", $P) . ")" . (isset($_GET["function"]) ? " RETURNS" . process_type($L["returns"], "CHARACTER SET") : "") . ($L["language"] ? " LANGUAGE $L[language]" : "") . rtrim("\n$L[definition]", ";") . ";"; }function |
|
569 | +remove_definer($I) {return |
|
570 | +preg_replace('~^([A-Z =]+) DEFINER=`' . preg_replace('~@(.*)~', '`@`(%|\\1)', logged_user()) . '`~', '\\1', $I); }function |
|
571 | +format_foreign_key($n) {global$Vd; return" FOREIGN KEY (" . implode(", ", array_map('idf_escape', $n["source"])) . ") REFERENCES " . table($n["table"]) . " (" . implode(", ", array_map('idf_escape', $n["target"])) . ")" . (preg_match("~^($Vd)\$~", $n["on_delete"]) ? " ON DELETE $n[on_delete]" : "") . (preg_match("~^($Vd)\$~", $n["on_update"]) ? " ON UPDATE $n[on_update]" : ""); }function |
|
572 | +tar_file($nc, $ig) {$K = pack("a100a8a8a8a12a12", $nc, 644, 0, 0, decoct($ig->size), decoct(time())); $Pa = 8 * 32; for ($t = 0; $t < strlen($K); $t++)$Pa += ord($K[$t]); $K .= sprintf("%06o", $Pa) . "\0 "; echo$K, str_repeat("\0", 512 - strlen($K)); $ig->send(); echo |
|
573 | +str_repeat("\0", 511 - ($ig->size + 511) % 512); }function |
|
574 | +ini_bytes($Nc) {$X = ini_get($Nc); switch (strtolower(substr($X, -1))) {case'g':$X *= 1024; case'm':$X *= 1024; case'k':$X *= 1024; }return$X; }function |
|
575 | +doc_link($xe) {global$y, $e; $Cg = array('sql'=>"http://dev.mysql.com/doc/refman/" . substr($e->server_info, 0, 3) . "/en/", 'sqlite'=>"http://www.sqlite.org/", 'pgsql'=>"http://www.postgresql.org/docs/" . substr($e->server_info, 0, 3) . "/static/", 'mssql'=>"http://msdn.microsoft.com/library/", 'oracle'=>"http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/",); return($xe[$y] ? "<a href='$Cg[$y]$xe[$y]' target='_blank' rel='noreferrer'><sup>?</sup></a>" : ""); }function |
|
576 | +ob_gzencode($Gf) {return |
|
577 | +gzencode($Gf); }function |
|
578 | +db_size($i) {global$e; if (!$e->select_db($i))return"?"; $K = 0; foreach (table_status()as$R)$K += $R["Data_length"] + $R["Index_length"]; return |
|
579 | +format_number($K); }function |
|
580 | +set_utf8mb4($g) {global$e; static$P = false; if (!$P && preg_match('~\butf8mb4~i', $g)) {$P = true; echo"SET NAMES " . charset($e) . ";\n\n"; }}function |
|
581 | +connect_error() {global$b, $e, $T, $k, $Eb; if (DB != "") {header("HTTP/1.1 404 Not Found"); page_header('Database' . ": " . h(DB), 'Invalid database.', true); } else {if ($_POST["db"] && !$k)queries_redirect(substr(ME, 0, -1), 'Databases have been dropped.', drop_databases($_POST["db"])); page_header('Select database', $k, false); echo"<p class='links'>\n"; foreach (array('database'=>'Create new database', 'privileges'=>'Privileges', 'processlist'=>'Process list', 'variables'=>'Variables', 'status'=>'Status',)as$z=>$X) {if (support($z))echo"<a href='" . h(ME) . "$z='>$X</a>\n"; }echo"<p>" . sprintf('%s version: %s through PHP extension %s', $Eb[DRIVER], "<b>" . h($e->server_info) . "</b>", "<b>$e->extension</b>") . "\n", "<p>" . sprintf('Logged as: %s', "<b>" . h(logged_user()) . "</b>") . "\n"; $h = $b->databases(); if ($h) {$of = support("scheme"); $Xa = collations(); echo"<form action='' method='post'>\n", "<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n", "<thead><tr>" . (support("database") ? "<td> " : "") . "<th>" . 'Database' . " - <a href='" . h(ME) . "refresh=1'>" . 'Refresh' . "</a>" . "<td>" . 'Collation' . "<td>" . 'Tables' . "<td>" . 'Size' . " - <a href='" . h(ME) . "dbsize=1' onclick=\"return !ajaxSetHtml('" . h(js_escape(ME)) . "script=connect');\">" . 'Compute' . "</a>" . "</thead>\n"; $h = ($_GET["dbsize"] ? count_tables($h) : array_flip($h)); foreach ($h |
|
582 | +as$i=>$S) {$hf = h(ME) . "db=" . urlencode($i); echo"<tr" . odd() . ">" . (support("database") ? "<td>" . checkbox("db[]", $i, in_array($i, (array) $_POST["db"])) : ""), "<th><a href='$hf'>" . h($i) . "</a>"; $Wa = nbsp(db_collation($i, $Xa)); echo"<td>" . (support("database") ? "<a href='$hf" . ($of ? "&ns=" : "") . "&database=' title='" . 'Alter database' . "'>$Wa</a>" : $Wa), "<td align='right'><a href='$hf&schema=' id='tables-" . h($i) . "' title='" . 'Database schema' . "'>" . ($_GET["dbsize"] ? $S : "?") . "</a>", "<td align='right' id='size-" . h($i) . "'>" . ($_GET["dbsize"] ? db_size($i) : "?"), "\n"; }echo"</table>\n", (support("database") ? "<fieldset><legend>" . 'Selected' . " <span id='selected'></span></legend><div>\n" . "<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^db/));\">\n" . "<input type='submit' name='drop' value='" . 'Drop' . "'" . confirm() . ">\n" . "</div></fieldset>\n" : ""), "<script type='text/javascript'>tableCheck();</script>\n", "<input type='hidden' name='token' value='$T'>\n", "</form>\n"; }}page_footer("db"); }if (isset($_GET["status"]))$_GET["variables"] = $_GET["status"]; if (isset($_GET["import"]))$_GET["sql"] = $_GET["import"]; if (!(DB != "" ? $e->select_db(DB) : isset($_GET["sql"]) || isset($_GET["dump"]) || isset($_GET["database"]) || isset($_GET["processlist"]) || isset($_GET["privileges"]) || isset($_GET["user"]) || isset($_GET["variables"]) || $_GET["script"] == "connect" || $_GET["script"] == "kill")) {if (DB != "" || $_GET["refresh"]) {restart_session(); set_session("dbs", null); }connect_error(); exit; }$Vd = "RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT"; class |
|
583 | +TmpFile {var$handler; var$size; function |
|
584 | +__construct() {$this->handler = tmpfile(); }function |
|
585 | +write($gb) {$this->size += strlen($gb); fwrite($this->handler, $gb); }function |
|
586 | +send() {fseek($this->handler, 0); fpassthru($this->handler); fclose($this->handler); }}$Vb = "'(?:''|[^'\\\\]|\\\\.)*'"; $Oc = "IN|OUT|INOUT"; if (isset($_GET["select"]) && ($_POST["edit"] || $_POST["clone"]) && !$_POST["save"])$_GET["edit"] = $_GET["select"]; if (isset($_GET["callf"]))$_GET["call"] = $_GET["callf"]; if (isset($_GET["function"]))$_GET["procedure"] = $_GET["function"]; if (isset($_GET["download"])) {$a = $_GET["download"]; $m = fields($a); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . friendly_url("$a-" . implode("_", $_GET["where"])) . "." . friendly_url($_GET["field"])); $N = array(idf_escape($_GET["field"])); $J = $j->select($a, $N, array(where($_GET, $m)), $N); $L = ($J ? $J->fetch_row() : array()); echo$L[0]; exit; }elseif (isset($_GET["table"])) {$a = $_GET["table"]; $m = fields($a); if (!$m)$k = error(); $R = table_status1($a, true); page_header(($m && is_view($R) ? 'View' : 'Table') . ": " . h($a), $k); $b->selectLinks($R); $bb = $R["Comment"]; if ($bb != "")echo"<p>" . 'Comment' . ": " . h($bb) . "\n"; if ($m) {echo"<table cellspacing='0'>\n", "<thead><tr><th>" . 'Column' . "<td>" . 'Type' . (support("comment") ? "<td>" . 'Comment' : "") . "</thead>\n"; foreach ($m |
|
587 | +as$l) {echo"<tr" . odd() . "><th>" . h($l["field"]), "<td><span title='" . h($l["collation"]) . "'>" . h($l["full_type"]) . "</span>", ($l["null"] ? " <i>NULL</i>" : ""), ($l["auto_increment"] ? " <i>" . 'Auto Increment' . "</i>" : ""), (isset($l["default"]) ? " <span title='" . 'Default value' . "'>[<b>" . h($l["default"]) . "</b>]</span>" : ""), (support("comment") ? "<td>" . nbsp($l["comment"]) : ""), "\n"; }echo"</table>\n"; }if (!is_view($R)) {if (support("indexes")) {echo"<h3 id='indexes'>" . 'Indexes' . "</h3>\n"; $w = indexes($a); if ($w) {echo"<table cellspacing='0'>\n"; foreach ($w |
|
588 | +as$F=>$v) {ksort($v["columns"]); $Ie = array(); foreach ($v["columns"]as$z=>$X)$Ie[] = "<i>" . h($X) . "</i>" . ($v["lengths"][$z] ? "(" . $v["lengths"][$z] . ")" : "") . ($v["descs"][$z] ? " DESC" : ""); echo"<tr title='" . h($F) . "'><th>$v[type]<td>" . implode(", ", $Ie) . "\n"; }echo"</table>\n"; }echo'<p class="links"><a href="' . h(ME) . 'indexes=' . urlencode($a) . '">' . 'Alter indexes' . "</a>\n"; }if (fk_support($R)) {echo"<h3 id='foreign-keys'>" . 'Foreign keys' . "</h3>\n"; $o = foreign_keys($a); if ($o) {echo"<table cellspacing='0'>\n", "<thead><tr><th>" . 'Source' . "<td>" . 'Target' . "<td>" . 'ON DELETE' . "<td>" . 'ON UPDATE' . "<td> </thead>\n"; foreach ($o |
|
589 | +as$F=>$n) {echo"<tr title='" . h($F) . "'>", "<th><i>" . implode("</i>, <i>", array_map('h', $n["source"])) . "</i>", "<td><a href='" . h($n["db"] != "" ? preg_replace('~db=[^&]*~', "db=" . urlencode($n["db"]), ME) : ($n["ns"] != "" ? preg_replace('~ns=[^&]*~', "ns=" . urlencode($n["ns"]), ME) : ME)) . "table=" . urlencode($n["table"]) . "'>" . ($n["db"] != "" ? "<b>" . h($n["db"]) . "</b>." : "") . ($n["ns"] != "" ? "<b>" . h($n["ns"]) . "</b>." : "") . h($n["table"]) . "</a>", "(<i>" . implode("</i>, <i>", array_map('h', $n["target"])) . "</i>)", "<td>" . nbsp($n["on_delete"]) . "\n", "<td>" . nbsp($n["on_update"]) . "\n", '<td><a href="' . h(ME . 'foreign=' . urlencode($a) . '&name=' . urlencode($F)) . '">' . 'Alter' . '</a>'; }echo"</table>\n"; }echo'<p class="links"><a href="' . h(ME) . 'foreign=' . urlencode($a) . '">' . 'Add foreign key' . "</a>\n"; }}if (support(is_view($R) ? "view_trigger" : "trigger")) {echo"<h3 id='triggers'>" . 'Triggers' . "</h3>\n"; $qg = triggers($a); if ($qg) {echo"<table cellspacing='0'>\n"; foreach ($qg |
|
590 | +as$z=>$X)echo"<tr valign='top'><td>" . h($X[0]) . "<td>" . h($X[1]) . "<th>" . h($z) . "<td><a href='" . h(ME . 'trigger=' . urlencode($a) . '&name=' . urlencode($z)) . "'>" . 'Alter' . "</a>\n"; echo"</table>\n"; }echo'<p class="links"><a href="' . h(ME) . 'trigger=' . urlencode($a) . '">' . 'Add trigger' . "</a>\n"; }}elseif (isset($_GET["schema"])) {page_header('Database schema', "", array(), h(DB . ($_GET["ns"] ? ".$_GET[ns]" : ""))); $Qf = array(); $Rf = array(); $ea = ($_GET["schema"] ? $_GET["schema"] : $_COOKIE["adminer_schema-" . str_replace(".", "_", DB)]); preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~', $ea, $rd, PREG_SET_ORDER); foreach ($rd |
|
591 | +as$t=>$C) {$Qf[$C[1]] = array($C[2], $C[3]); $Rf[] = "\n\t'" . js_escape($C[1]) . "': [ $C[2], $C[3] ]"; }$kg = 0; $Ca = -1; $nf = array(); $Ye = array(); $jd = array(); foreach (table_status('', true)as$Q=>$R) {if (is_view($R))continue; $Be = 0; $nf[$Q]["fields"] = array(); foreach (fields($Q)as$F=>$l) {$Be += 1.25; $l["pos"] = $Be; $nf[$Q]["fields"][$F] = $l; }$nf[$Q]["pos"] = ($Qf[$Q] ? $Qf[$Q] : array($kg, 0)); foreach ($b->foreignKeys($Q)as$X) {if (!$X["db"]) {$hd = $Ca; if ($Qf[$Q][1] || $Qf[$X["table"]][1])$hd = min(floatval($Qf[$Q][1]), floatval($Qf[$X["table"]][1])) - 1; else$Ca -= .1; while ($jd[(string) $hd])$hd -= .0001; $nf[$Q]["references"][$X["table"]][(string) $hd] = array($X["source"], $X["target"]); $Ye[$X["table"]][$Q][(string) $hd] = $X["target"]; $jd[(string) $hd] = true; }}$kg = max($kg, $nf[$Q]["pos"][0] + 2.5 + $Be); }echo'<div id="schema" style="height: ', $kg, 'em;" onselectstart="return false;"> |
|
592 | 592 | <script type="text/javascript"> |
593 | -var tablePos = {',implode(",",$Rf)."\n",'}; |
|
594 | -var em = document.getElementById(\'schema\').offsetHeight / ',$kg,'; |
|
593 | +var tablePos = {',implode(",", $Rf) . "\n", '}; |
|
594 | +var em = document.getElementById(\'schema\').offsetHeight / ',$kg, '; |
|
595 | 595 | document.onmousemove = schemaMousemove; |
596 | 596 | document.onmouseup = function (ev) { |
597 | - schemaMouseup(ev, \'',js_escape(DB),'\'); |
|
597 | + schemaMouseup(ev, \'',js_escape(DB), '\'); |
|
598 | 598 | }; |
599 | 599 | </script> |
600 | -';foreach($nf |
|
601 | -as$F=>$Q){echo"<div class='table' style='top: ".$Q["pos"][0]."em; left: ".$Q["pos"][1]."em;' onmousedown='schemaMousedown(this, event);'>",'<a href="'.h(ME).'table='.urlencode($F).'"><b>'.h($F)."</b></a>";foreach($Q["fields"]as$l){$X='<span'.type_class($l["type"]).' title="'.h($l["full_type"].($l["null"]?" NULL":'')).'">'.h($l["field"]).'</span>';echo"<br>".($l["primary"]?"<i>$X</i>":$X);}foreach((array)$Q["references"]as$Wf=>$Ze){foreach($Ze |
|
602 | -as$hd=>$Ve){$id=$hd-$Qf[$F][1];$t=0;foreach($Ve[0]as$_f)echo"\n<div class='references' title='".h($Wf)."' id='refs$hd-".($t++)."' style='left: $id"."em; top: ".$Q["fields"][$_f]["pos"]."em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: ".(-$id)."em;'></div></div>";}}foreach((array)$Ye[$F]as$Wf=>$Ze){foreach($Ze |
|
603 | -as$hd=>$d){$id=$hd-$Qf[$F][1];$t=0;foreach($d |
|
604 | -as$Vf)echo"\n<div class='references' title='".h($Wf)."' id='refd$hd-".($t++)."' style='left: $id"."em; top: ".$Q["fields"][$Vf]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME))."?file=arrow.gif) no-repeat right center;&version=4.2.5&driver=mysql'><div style='height: .5em; border-bottom: 1px solid Gray; width: ".(-$id)."em;'></div></div>";}}echo"\n</div>\n";}foreach($nf |
|
605 | -as$F=>$Q){foreach((array)$Q["references"]as$Wf=>$Ze){foreach($Ze |
|
606 | -as$hd=>$Ve){$Cd=$kg;$vd=-10;foreach($Ve[0]as$z=>$_f){$Ce=$Q["pos"][0]+$Q["fields"][$_f]["pos"];$De=$nf[$Wf]["pos"][0]+$nf[$Wf]["fields"][$Ve[1][$z]]["pos"];$Cd=min($Cd,$Ce,$De);$vd=max($vd,$Ce,$De);}echo"<div class='references' id='refl$hd' style='left: $hd"."em; top: $Cd"."em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: ".($vd-$Cd)."em;'></div></div>\n";}}}echo'</div> |
|
607 | -<p class="links"><a href="',h(ME."schema=".urlencode($ea)),'" id="schema-link">Permanent link</a> |
|
608 | -';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$k){$jb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$z)$jb.="&$z=".urlencode($_POST[$z]);cookie("adminer_export",substr($jb,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$gc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$Wc=preg_match('~sql~',$_POST["format"]);if($Wc){echo"-- Adminer $ga ".$Eb[DRIVER]." dump\n\n";if($y=="sql"){echo"SET NAMES utf8; |
|
600 | +';foreach ($nf |
|
601 | +as$F=>$Q) {echo"<div class='table' style='top: " . $Q["pos"][0] . "em; left: " . $Q["pos"][1] . "em;' onmousedown='schemaMousedown(this, event);'>", '<a href="' . h(ME) . 'table=' . urlencode($F) . '"><b>' . h($F) . "</b></a>"; foreach ($Q["fields"]as$l) {$X = '<span' . type_class($l["type"]) . ' title="' . h($l["full_type"] . ($l["null"] ? " NULL" : '')) . '">' . h($l["field"]) . '</span>'; echo"<br>" . ($l["primary"] ? "<i>$X</i>" : $X); }foreach ((array) $Q["references"]as$Wf=>$Ze) {foreach ($Ze |
|
602 | +as$hd=>$Ve) {$id = $hd - $Qf[$F][1]; $t = 0; foreach ($Ve[0]as$_f)echo"\n<div class='references' title='" . h($Wf) . "' id='refs$hd-" . ($t++) . "' style='left: $id" . "em; top: " . $Q["fields"][$_f]["pos"] . "em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: " . (-$id) . "em;'></div></div>"; }}foreach ((array) $Ye[$F]as$Wf=>$Ze) {foreach ($Ze |
|
603 | +as$hd=>$d) {$id = $hd - $Qf[$F][1]; $t = 0; foreach ($d |
|
604 | +as$Vf)echo"\n<div class='references' title='" . h($Wf) . "' id='refd$hd-" . ($t++) . "' style='left: $id" . "em; top: " . $Q["fields"][$Vf]["pos"] . "em; height: 1.25em; background: url(" . h(preg_replace("~\\?.*~", "", ME)) . "?file=arrow.gif) no-repeat right center;&version=4.2.5&driver=mysql'><div style='height: .5em; border-bottom: 1px solid Gray; width: " . (-$id) . "em;'></div></div>"; }}echo"\n</div>\n"; }foreach ($nf |
|
605 | +as$F=>$Q) {foreach ((array) $Q["references"]as$Wf=>$Ze) {foreach ($Ze |
|
606 | +as$hd=>$Ve) {$Cd = $kg; $vd = -10; foreach ($Ve[0]as$z=>$_f) {$Ce = $Q["pos"][0] + $Q["fields"][$_f]["pos"]; $De = $nf[$Wf]["pos"][0] + $nf[$Wf]["fields"][$Ve[1][$z]]["pos"]; $Cd = min($Cd, $Ce, $De); $vd = max($vd, $Ce, $De); }echo"<div class='references' id='refl$hd' style='left: $hd" . "em; top: $Cd" . "em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: " . ($vd - $Cd) . "em;'></div></div>\n"; }}}echo'</div> |
|
607 | +<p class="links"><a href="',h(ME . "schema=" . urlencode($ea)), '" id="schema-link">Permanent link</a> |
|
608 | +';}elseif (isset($_GET["dump"])) {$a = $_GET["dump"]; if ($_POST && !$k) {$jb = ""; foreach (array("output", "format", "db_style", "routines", "events", "table_style", "auto_increment", "triggers", "data_style")as$z)$jb .= "&$z=" . urlencode($_POST[$z]); cookie("adminer_export", substr($jb, 1)); $S = array_flip((array) $_POST["tables"]) + array_flip((array) $_POST["data"]); $gc = dump_headers((count($S) == 1 ? key($S) : DB), (DB == "" || count($S) > 1)); $Wc = preg_match('~sql~', $_POST["format"]); if ($Wc) {echo"-- Adminer $ga " . $Eb[DRIVER] . " dump\n\n"; if ($y == "sql") {echo"SET NAMES utf8; |
|
609 | 609 | SET time_zone = '+00:00'; |
610 | -".($_POST["data_style"]?"SET foreign_key_checks = 0; |
|
610 | +".($_POST["data_style"] ? "SET foreign_key_checks = 0; |
|
611 | 611 | SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; |
612 | -":"")." |
|
613 | -";$e->query("SET time_zone = '+00:00';");}}$If=$_POST["db_style"];$h=array(DB);if(DB==""){$h=$_POST["databases"];if(is_string($h))$h=explode("\n",rtrim(str_replace("\r","",$h),"\n"));}foreach((array)$h |
|
614 | -as$i){$b->dumpDatabase($i);if($e->select_db($i)){if($Wc&&preg_match('~CREATE~',$If)&&($g=$e->result("SHOW CREATE DATABASE ".idf_escape($i),1))){set_utf8mb4($g);if($If=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($i).";\n";echo"$g;\n";}if($Wc){if($If)echo |
|
615 | -use_sql($i).";\n\n";$le="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$if){foreach(get_rows("SHOW $if STATUS WHERE Db = ".q($i),null,"-- ")as$L){$g=remove_definer($e->result("SHOW CREATE $if ".idf_escape($L["Name"]),2));set_utf8mb4($g);$le.=($If!='DROP+CREATE'?"DROP $if IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$g;;\n\n";}}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$L){$g=remove_definer($e->result("SHOW CREATE EVENT ".idf_escape($L["Name"]),3));set_utf8mb4($g);$le.=($If!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$g;;\n\n";}}if($le)echo"DELIMITER ;;\n\n$le"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$Lg=array();foreach(table_status('',true)as$F=>$R){$Q=(DB==""||in_array($F,(array)$_POST["tables"]));$ob=(DB==""||in_array($F,(array)$_POST["data"]));if($Q||$ob){if($gc=="tar"){$ig=new |
|
616 | -TmpFile;ob_start(array($ig,'write'),1e5);}$b->dumpTable($F,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R))$Lg[]=$F;elseif($ob){$m=fields($F);$b->dumpData($F,$_POST["data_style"],"SELECT *".convert_fields($m,$m)." FROM ".table($F));}if($Wc&&$_POST["triggers"]&&$Q&&($qg=trigger_sql($F,$_POST["table_style"])))echo"\nDELIMITER ;;\n$qg\nDELIMITER ;\n";if($gc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$i/")."$F.csv",$ig);}elseif($Wc)echo"\n";}}foreach($Lg |
|
617 | -as$Kg)$b->dumpTable($Kg,$_POST["table_style"],1);if($gc=="tar")echo |
|
618 | -pack("x512");}}}if($Wc)echo"-- ".$e->result("SELECT NOW()")."\n";exit;}page_header('Export',$k,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo' |
|
612 | +":"") . " |
|
613 | +";$e->query("SET time_zone = '+00:00';"); }}$If = $_POST["db_style"]; $h = array(DB); if (DB == "") {$h = $_POST["databases"]; if (is_string($h))$h = explode("\n", rtrim(str_replace("\r", "", $h), "\n")); }foreach ((array) $h |
|
614 | +as$i) {$b->dumpDatabase($i); if ($e->select_db($i)) {if ($Wc && preg_match('~CREATE~', $If) && ($g = $e->result("SHOW CREATE DATABASE " . idf_escape($i), 1))) {set_utf8mb4($g); if ($If == "DROP+CREATE")echo"DROP DATABASE IF EXISTS " . idf_escape($i) . ";\n"; echo"$g;\n"; }if ($Wc) {if ($If)echo |
|
615 | +use_sql($i) . ";\n\n"; $le = ""; if ($_POST["routines"]) {foreach (array("FUNCTION", "PROCEDURE")as$if) {foreach (get_rows("SHOW $if STATUS WHERE Db = " . q($i), null, "-- ")as$L) {$g = remove_definer($e->result("SHOW CREATE $if " . idf_escape($L["Name"]), 2)); set_utf8mb4($g); $le .= ($If != 'DROP+CREATE' ? "DROP $if IF EXISTS " . idf_escape($L["Name"]) . ";;\n" : "") . "$g;;\n\n"; }}}if ($_POST["events"]) {foreach (get_rows("SHOW EVENTS", null, "-- ")as$L) {$g = remove_definer($e->result("SHOW CREATE EVENT " . idf_escape($L["Name"]), 3)); set_utf8mb4($g); $le .= ($If != 'DROP+CREATE' ? "DROP EVENT IF EXISTS " . idf_escape($L["Name"]) . ";;\n" : "") . "$g;;\n\n"; }}if ($le)echo"DELIMITER ;;\n\n$le" . "DELIMITER ;\n\n"; }if ($_POST["table_style"] || $_POST["data_style"]) {$Lg = array(); foreach (table_status('', true)as$F=>$R) {$Q = (DB == "" || in_array($F, (array) $_POST["tables"])); $ob = (DB == "" || in_array($F, (array) $_POST["data"])); if ($Q || $ob) {if ($gc == "tar") {$ig = new |
|
616 | +TmpFile; ob_start(array($ig, 'write'), 1e5); }$b->dumpTable($F, ($Q ? $_POST["table_style"] : ""), (is_view($R) ? 2 : 0)); if (is_view($R))$Lg[] = $F; elseif ($ob) {$m = fields($F); $b->dumpData($F, $_POST["data_style"], "SELECT *" . convert_fields($m, $m) . " FROM " . table($F)); }if ($Wc && $_POST["triggers"] && $Q && ($qg = trigger_sql($F, $_POST["table_style"])))echo"\nDELIMITER ;;\n$qg\nDELIMITER ;\n"; if ($gc == "tar") {ob_end_flush(); tar_file((DB != "" ? "" : "$i/") . "$F.csv", $ig); }elseif ($Wc)echo"\n"; }}foreach ($Lg |
|
617 | +as$Kg)$b->dumpTable($Kg, $_POST["table_style"], 1); if ($gc == "tar")echo |
|
618 | +pack("x512"); }}}if ($Wc)echo"-- " . $e->result("SELECT NOW()") . "\n"; exit; }page_header('Export', $k, ($_GET["export"] != "" ? array("table"=>$_GET["export"]) : array()), h(DB)); echo' |
|
619 | 619 | <form action="" method="post"> |
620 | 620 | <table cellspacing="0"> |
621 | -';$sb=array('','USE','DROP+CREATE','CREATE');$Sf=array('','DROP+CREATE','CREATE');$pb=array('','TRUNCATE+INSERT','INSERT');if($y=="sql")$pb[]='INSERT+UPDATE';parse_str($_COOKIE["adminer_export"],$L);if(!$L)$L=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($L["events"])){$L["routines"]=$L["events"]=($_GET["dump"]=="");$L["triggers"]=$L["table_style"];}echo"<tr><th>".'Output'."<td>".html_select("output",$b->dumpOutput(),$L["output"],0)."\n";echo"<tr><th>".'Format'."<td>".html_select("format",$b->dumpFormat(),$L["format"],0)."\n";echo($y=="sqlite"?"":"<tr><th>".'Database'."<td>".html_select('db_style',$sb,$L["db_style"]).(support("routine")?checkbox("routines",1,$L["routines"],'Routines'):"").(support("event")?checkbox("events",1,$L["events"],'Events'):"")),"<tr><th>".'Tables'."<td>".html_select('table_style',$Sf,$L["table_style"]).checkbox("auto_increment",1,$L["auto_increment"],'Auto Increment').(support("trigger")?checkbox("triggers",1,$L["triggers"],'Triggers'):""),"<tr><th>".'Data'."<td>".html_select('data_style',$pb,$L["data_style"]),'</table> |
|
621 | +';$sb = array('', 'USE', 'DROP+CREATE', 'CREATE'); $Sf = array('', 'DROP+CREATE', 'CREATE'); $pb = array('', 'TRUNCATE+INSERT', 'INSERT'); if ($y == "sql")$pb[] = 'INSERT+UPDATE'; parse_str($_COOKIE["adminer_export"], $L); if (!$L)$L = array("output"=>"text", "format"=>"sql", "db_style"=>(DB != "" ? "" : "CREATE"), "table_style"=>"DROP+CREATE", "data_style"=>"INSERT"); if (!isset($L["events"])) {$L["routines"] = $L["events"] = ($_GET["dump"] == ""); $L["triggers"] = $L["table_style"]; }echo"<tr><th>" . 'Output' . "<td>" . html_select("output", $b->dumpOutput(), $L["output"], 0) . "\n"; echo"<tr><th>" . 'Format' . "<td>" . html_select("format", $b->dumpFormat(), $L["format"], 0) . "\n"; echo($y == "sqlite" ? "" : "<tr><th>" . 'Database' . "<td>" . html_select('db_style', $sb, $L["db_style"]) . (support("routine") ? checkbox("routines", 1, $L["routines"], 'Routines') : "") . (support("event") ? checkbox("events", 1, $L["events"], 'Events') : "")), "<tr><th>" . 'Tables' . "<td>" . html_select('table_style', $Sf, $L["table_style"]) . checkbox("auto_increment", 1, $L["auto_increment"], 'Auto Increment') . (support("trigger") ? checkbox("triggers", 1, $L["triggers"], 'Triggers') : ""), "<tr><th>" . 'Data' . "<td>" . html_select('data_style', $pb, $L["data_style"]), '</table> |
|
622 | 622 | <p><input type="submit" value="Export"> |
623 | -<input type="hidden" name="token" value="',$T,'"> |
|
623 | +<input type="hidden" name="token" value="',$T, '"> |
|
624 | 624 | |
625 | 625 | <table cellspacing="0"> |
626 | -';$Ge=array();if(DB!=""){$Na=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Na onclick='formCheck(this, /^tables\\[/);'>".'Tables'."</label>","<th style='text-align: right;'><label class='block'>".'Data'."<input type='checkbox' id='check-data'$Na onclick='formCheck(this, /^data\\[/);'></label>","</thead>\n";$Lg="";$Tf=tables_list();foreach($Tf |
|
627 | -as$F=>$U){$Fe=preg_replace('~_.*~','',$F);$Na=($a==""||$a==(substr($a,-1)=="%"?"$Fe%":$F));$Ie="<tr><td>".checkbox("tables[]",$F,$Na,$F,"checkboxClick(event, this); formUncheck('check-tables');","block");if($U!==null&&!preg_match('~table~i',$U))$Lg.="$Ie\n";else |
|
628 | -echo"$Ie<td align='right'><label class='block'><span id='Rows-".h($F)."'></span>".checkbox("data[]",$F,$Na,"","checkboxClick(event, this); formUncheck('check-data');")."</label>\n";$Ge[$Fe]++;}echo$Lg;if($Tf)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";}else{echo"<thead><tr><th style='text-align: left;'><label class='block'><input type='checkbox' id='check-databases'".($a==""?" checked":"")." onclick='formCheck(this, /^databases\\[/);'>".'Database'."</label></thead>\n";$h=$b->databases();if($h){foreach($h |
|
629 | -as$i){if(!information_schema($i)){$Fe=preg_replace('~_.*~','',$i);echo"<tr><td>".checkbox("databases[]",$i,$a==""||$a=="$Fe%",$i,"formUncheck('check-databases');","block")."\n";$Ge[$Fe]++;}}}else |
|
630 | -echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table> |
|
626 | +';$Ge = array(); if (DB != "") {$Na = ($a != "" ? "" : " checked"); echo"<thead><tr>", "<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Na onclick='formCheck(this, /^tables\\[/);'>" . 'Tables' . "</label>", "<th style='text-align: right;'><label class='block'>" . 'Data' . "<input type='checkbox' id='check-data'$Na onclick='formCheck(this, /^data\\[/);'></label>", "</thead>\n"; $Lg = ""; $Tf = tables_list(); foreach ($Tf |
|
627 | +as$F=>$U) {$Fe = preg_replace('~_.*~', '', $F); $Na = ($a == "" || $a == (substr($a, -1) == "%" ? "$Fe%" : $F)); $Ie = "<tr><td>" . checkbox("tables[]", $F, $Na, $F, "checkboxClick(event, this); formUncheck('check-tables');", "block"); if ($U !== null && !preg_match('~table~i', $U))$Lg .= "$Ie\n"; else |
|
628 | +echo"$Ie<td align='right'><label class='block'><span id='Rows-" . h($F) . "'></span>" . checkbox("data[]", $F, $Na, "", "checkboxClick(event, this); formUncheck('check-data');") . "</label>\n"; $Ge[$Fe]++; }echo$Lg; if ($Tf)echo"<script type='text/javascript'>ajaxSetHtml('" . js_escape(ME) . "script=db');</script>\n"; } else {echo"<thead><tr><th style='text-align: left;'><label class='block'><input type='checkbox' id='check-databases'" . ($a == "" ? " checked" : "") . " onclick='formCheck(this, /^databases\\[/);'>" . 'Database' . "</label></thead>\n"; $h = $b->databases(); if ($h) {foreach ($h |
|
629 | +as$i) {if (!information_schema($i)) {$Fe = preg_replace('~_.*~', '', $i); echo"<tr><td>" . checkbox("databases[]", $i, $a == "" || $a == "$Fe%", $i, "formUncheck('check-databases');", "block") . "\n"; $Ge[$Fe]++; }}} else |
|
630 | +echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>"; }echo'</table> |
|
631 | 631 | </form> |
632 | -';$pc=true;foreach($Ge |
|
633 | -as$z=>$X){if($z!=""&&$X>1){echo($pc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$z%")."'>".h($z)."</a>";$pc=false;}}}elseif(isset($_GET["privileges"])){page_header('Privileges');$J=$e->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$r=$J;if(!$J)$J=$e->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"<form action=''><p>\n";hidden_fields_get();echo"<input type='hidden' name='db' value='".h(DB)."'>\n",($r?"":"<input type='hidden' name='grant' value=''>\n"),"<table cellspacing='0'>\n","<thead><tr><th>".'Username'."<th>".'Server'."<th> </thead>\n";while($L=$J->fetch_assoc())echo'<tr'.odd().'><td>'.h($L["User"])."<td>".h($L["Host"]).'<td><a href="'.h(ME.'user='.urlencode($L["User"]).'&host='.urlencode($L["Host"])).'">'.'Edit'."</a>\n";if(!$r||DB!="")echo"<tr".odd()."><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".'Edit'."'>\n";echo"</table>\n","</form>\n",'<p class="links"><a href="'.h(ME).'user=">'.'Create user'."</a>";}elseif(isset($_GET["sql"])){if(!$k&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$Fc=&get_session("queries");$Ec=&$Fc[DB];if(!$k&&$_POST["clear"]){$Ec=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?'Import':'SQL command'),$k);if(!$k&&$_POST){$p=false;if(!isset($_GET["import"]))$I=$_POST["query"];elseif($_POST["webfile"]){$p=@fopen((file_exists("adminer.sql")?"adminer.sql":"compress.zlib://adminer.sql.gz"),"rb");$I=($p?fread($p,1e6):false);}else$I=get_file("sql_file",true);if(is_string($I)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($I)+memory_get_usage()+8e6));if($I!=""&&strlen($I)<1e6){$H=$I.(preg_match("~;[ \t\r\n]*\$~",$I)?"":";");if(!$Ec||reset(end($Ec))!=$H){restart_session();$Ec[]=array($H,time());set_session("queries",$Fc);stop_session();}}$Af="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$wb=";";$Od=0;$Sb=true;$f=connect();if(is_object($f)&&DB!="")$f->select_db(DB);$ab=0;$Xb=array();$qe='[\'"'.($y=="sql"?'`#':($y=="sqlite"?'`[':($y=="mssql"?'[':''))).']|/\\*|-- |$'.($y=="pgsql"?'|\\$[^$]*\\$':'');$lg=microtime(true);parse_str($_COOKIE["adminer_export"],$la);$Jb=$b->dumpFormat();unset($Jb["sql"]);while($I!=""){if(!$Od&&preg_match("~^$Af*+DELIMITER\\s+(\\S+)~i",$I,$C)){$wb=$C[1];$I=substr($I,strlen($C[0]));}else{preg_match('('.preg_quote($wb)."\\s*|$qe)",$I,$C,PREG_OFFSET_CAPTURE,$Od);list($uc,$Be)=$C[0];if(!$uc&&$p&&!feof($p))$I.=fread($p,1e5);else{if(!$uc&&rtrim($I)=="")break;$Od=$Be+strlen($uc);if($uc&&rtrim($uc)!=$wb){while(preg_match('('.($uc=='/*'?'\\*/':($uc=='['?']':(preg_match('~^-- |^#~',$uc)?"\n":preg_quote($uc)."|\\\\."))).'|$)s',$I,$C,PREG_OFFSET_CAPTURE,$Od)){$lf=$C[0][0];if(!$lf&&$p&&!feof($p))$I.=fread($p,1e5);else{$Od=$C[0][1]+strlen($lf);if($lf[0]!="\\")break;}}}else{$Sb=false;$H=substr($I,0,$Be);$ab++;$Ie="<pre id='sql-$ab'><code class='jush-$y'>".shorten_utf8(trim($H),1000)."</code></pre>\n";if($y=="sqlite"&&preg_match("~^$Af*+ATTACH\\b~i",$H,$C)){echo$Ie,"<p class='error'>".'ATTACH queries are not supported.'."\n";$Xb[]=" <a href='#sql-$ab'>$ab</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Ie;ob_flush();flush();}$Cf=microtime(true);if($e->multi_query($H)&&is_object($f)&&preg_match("~^$Af*+USE\\b~i",$H))$f->query($H);do{$J=$e->store_result();$bg=" <span class='time'>(".format_time($Cf).")</span>".(strlen($H)<1000?" <a href='".h(ME)."sql=".urlencode(trim($H))."'>".'Edit'."</a>":"");if($e->error){echo($_POST["only_errors"]?$Ie:""),"<p class='error'>".'Error in query'.($e->errno?" ($e->errno)":"").": ".error()."\n";$Xb[]=" <a href='#sql-$ab'>$ab</a>";if($_POST["error_stops"])break |
|
634 | -2;}elseif(is_object($J)){$_=$_POST["limit"];$ge=select($J,$f,array(),$_);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$Ld=$J->num_rows;echo"<p>".($Ld?($_&&$Ld>$_?sprintf('%d / ',$_):"").lang(array('%d row','%d rows'),$Ld):""),$bg;$u="export-$ab";$fc=", <a href='#$u' onclick=\"return !toggle('$u');\">".'Export'."</a><span id='$u' class='hidden'>: ".html_select("output",$b->dumpOutput(),$la["output"])." ".html_select("format",$Jb,$la["format"])."<input type='hidden' name='query' value='".h($H)."'>"." <input type='submit' name='export' value='".'Export'."'><input type='hidden' name='token' value='$T'></span>\n";if($f&&preg_match("~^($Af|\\()*+SELECT\\b~i",$H)&&($ec=explain($f,$H))){$u="explain-$ab";echo", <a href='#$u' onclick=\"return !toggle('$u');\">EXPLAIN</a>$fc","<div id='$u' class='hidden'>\n";select($ec,$f,$ge);echo"</div>\n";}else |
|
635 | -echo$fc;echo"</form>\n";}}else{if(preg_match("~^$Af*+(CREATE|DROP|ALTER)$Af++(DATABASE|SCHEMA)\\b~i",$H)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h($e->info)."'>".lang(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$e->affected_rows)."$bg\n";}$Cf=microtime(true);}while($e->next_result());}$I=substr($I,$Od);$Od=0;}}}}if($Sb)echo"<p class='message'>".'No commands to execute.'."\n";elseif($_POST["only_errors"]){echo"<p class='message'>".lang(array('%d query executed OK.','%d queries executed OK.'),$ab-count($Xb))," <span class='time'>(".format_time($lg).")</span>\n";}elseif($Xb&&$ab>1)echo"<p class='error'>".'Error in query'.": ".implode("",$Xb)."\n";}else |
|
636 | -echo"<p class='error'>".upload_error($I)."\n";}echo' |
|
632 | +';$pc = true; foreach ($Ge |
|
633 | +as$z=>$X) {if ($z != "" && $X > 1) {echo($pc ? "<p>" : " ") . "<a href='" . h(ME) . "dump=" . urlencode("$z%") . "'>" . h($z) . "</a>"; $pc = false; }}}elseif (isset($_GET["privileges"])) {page_header('Privileges'); $J = $e->query("SELECT User, Host FROM mysql." . (DB == "" ? "user" : "db WHERE " . q(DB) . " LIKE Db") . " ORDER BY Host, User"); $r = $J; if (!$J)$J = $e->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host"); echo"<form action=''><p>\n"; hidden_fields_get(); echo"<input type='hidden' name='db' value='" . h(DB) . "'>\n", ($r ? "" : "<input type='hidden' name='grant' value=''>\n"), "<table cellspacing='0'>\n", "<thead><tr><th>" . 'Username' . "<th>" . 'Server' . "<th> </thead>\n"; while ($L = $J->fetch_assoc())echo'<tr' . odd() . '><td>' . h($L["User"]) . "<td>" . h($L["Host"]) . '<td><a href="' . h(ME . 'user=' . urlencode($L["User"]) . '&host=' . urlencode($L["Host"])) . '">' . 'Edit' . "</a>\n"; if (!$r || DB != "")echo"<tr" . odd() . "><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='" . 'Edit' . "'>\n"; echo"</table>\n", "</form>\n", '<p class="links"><a href="' . h(ME) . 'user=">' . 'Create user' . "</a>"; }elseif (isset($_GET["sql"])) {if (!$k && $_POST["export"]) {dump_headers("sql"); $b->dumpTable("", ""); $b->dumpData("", "table", $_POST["query"]); exit; }restart_session(); $Fc = &get_session("queries"); $Ec = &$Fc[DB]; if (!$k && $_POST["clear"]) {$Ec = array(); redirect(remove_from_uri("history")); }page_header((isset($_GET["import"]) ? 'Import' : 'SQL command'), $k); if (!$k && $_POST) {$p = false; if (!isset($_GET["import"]))$I = $_POST["query"]; elseif ($_POST["webfile"]) {$p = @fopen((file_exists("adminer.sql") ? "adminer.sql" : "compress.zlib://adminer.sql.gz"), "rb"); $I = ($p ? fread($p, 1e6) : false); } else$I = get_file("sql_file", true); if (is_string($I)) {if (function_exists('memory_get_usage'))@ini_set("memory_limit", max(ini_bytes("memory_limit"), 2 * strlen($I) + memory_get_usage() + 8e6)); if ($I != "" && strlen($I) < 1e6) {$H = $I . (preg_match("~;[ \t\r\n]*\$~", $I) ? "" : ";"); if (!$Ec || reset(end($Ec)) != $H) {restart_session(); $Ec[] = array($H, time()); set_session("queries", $Fc); stop_session(); }}$Af = "(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)"; $wb = ";"; $Od = 0; $Sb = true; $f = connect(); if (is_object($f) && DB != "")$f->select_db(DB); $ab = 0; $Xb = array(); $qe = '[\'"' . ($y == "sql" ? '`#' : ($y == "sqlite" ? '`[' : ($y == "mssql" ? '[' : ''))) . ']|/\\*|-- |$' . ($y == "pgsql" ? '|\\$[^$]*\\$' : ''); $lg = microtime(true); parse_str($_COOKIE["adminer_export"], $la); $Jb = $b->dumpFormat(); unset($Jb["sql"]); while ($I != "") {if (!$Od && preg_match("~^$Af*+DELIMITER\\s+(\\S+)~i", $I, $C)) {$wb = $C[1]; $I = substr($I, strlen($C[0])); } else {preg_match('(' . preg_quote($wb) . "\\s*|$qe)", $I, $C, PREG_OFFSET_CAPTURE, $Od); list($uc, $Be) = $C[0]; if (!$uc && $p && !feof($p))$I .= fread($p, 1e5); else {if (!$uc && rtrim($I) == "")break; $Od = $Be + strlen($uc); if ($uc && rtrim($uc) != $wb) {while (preg_match('(' . ($uc == '/*' ? '\\*/' : ($uc == '[' ? ']' : (preg_match('~^-- |^#~', $uc) ? "\n" : preg_quote($uc) . "|\\\\."))) . '|$)s', $I, $C, PREG_OFFSET_CAPTURE, $Od)) {$lf = $C[0][0]; if (!$lf && $p && !feof($p))$I .= fread($p, 1e5); else {$Od = $C[0][1] + strlen($lf); if ($lf[0] != "\\")break; }}} else {$Sb = false; $H = substr($I, 0, $Be); $ab++; $Ie = "<pre id='sql-$ab'><code class='jush-$y'>" . shorten_utf8(trim($H), 1000) . "</code></pre>\n"; if ($y == "sqlite" && preg_match("~^$Af*+ATTACH\\b~i", $H, $C)) {echo$Ie, "<p class='error'>" . 'ATTACH queries are not supported.' . "\n"; $Xb[] = " <a href='#sql-$ab'>$ab</a>"; if ($_POST["error_stops"])break; } else {if (!$_POST["only_errors"]) {echo$Ie; ob_flush(); flush(); }$Cf = microtime(true); if ($e->multi_query($H) && is_object($f) && preg_match("~^$Af*+USE\\b~i", $H))$f->query($H); do {$J = $e->store_result(); $bg = " <span class='time'>(" . format_time($Cf) . ")</span>" . (strlen($H) < 1000 ? " <a href='" . h(ME) . "sql=" . urlencode(trim($H)) . "'>" . 'Edit' . "</a>" : ""); if ($e->error) {echo($_POST["only_errors"] ? $Ie : ""), "<p class='error'>" . 'Error in query' . ($e->errno ? " ($e->errno)" : "") . ": " . error() . "\n"; $Xb[] = " <a href='#sql-$ab'>$ab</a>"; if ($_POST["error_stops"])break |
|
634 | +2; }elseif (is_object($J)) {$_ = $_POST["limit"]; $ge = select($J, $f, array(), $_); if (!$_POST["only_errors"]) {echo"<form action='' method='post'>\n"; $Ld = $J->num_rows; echo"<p>" . ($Ld ? ($_ && $Ld > $_ ? sprintf('%d / ', $_) : "") . lang(array('%d row', '%d rows'), $Ld) : ""), $bg; $u = "export-$ab"; $fc = ", <a href='#$u' onclick=\"return !toggle('$u');\">" . 'Export' . "</a><span id='$u' class='hidden'>: " . html_select("output", $b->dumpOutput(), $la["output"]) . " " . html_select("format", $Jb, $la["format"]) . "<input type='hidden' name='query' value='" . h($H) . "'>" . " <input type='submit' name='export' value='" . 'Export' . "'><input type='hidden' name='token' value='$T'></span>\n"; if ($f && preg_match("~^($Af|\\()*+SELECT\\b~i", $H) && ($ec = explain($f, $H))) {$u = "explain-$ab"; echo", <a href='#$u' onclick=\"return !toggle('$u');\">EXPLAIN</a>$fc", "<div id='$u' class='hidden'>\n"; select($ec, $f, $ge); echo"</div>\n"; } else |
|
635 | +echo$fc; echo"</form>\n"; }} else {if (preg_match("~^$Af*+(CREATE|DROP|ALTER)$Af++(DATABASE|SCHEMA)\\b~i", $H)) {restart_session(); set_session("dbs", null); stop_session(); }if (!$_POST["only_errors"])echo"<p class='message' title='" . h($e->info) . "'>" . lang(array('Query executed OK, %d row affected.', 'Query executed OK, %d rows affected.'), $e->affected_rows) . "$bg\n"; }$Cf = microtime(true); } while ($e->next_result()); }$I = substr($I, $Od); $Od = 0; }}}}if ($Sb)echo"<p class='message'>" . 'No commands to execute.' . "\n"; elseif ($_POST["only_errors"]) {echo"<p class='message'>" . lang(array('%d query executed OK.', '%d queries executed OK.'), $ab - count($Xb)), " <span class='time'>(" . format_time($lg) . ")</span>\n"; }elseif ($Xb && $ab > 1)echo"<p class='error'>" . 'Error in query' . ": " . implode("", $Xb) . "\n"; } else |
|
636 | +echo"<p class='error'>" . upload_error($I) . "\n"; }echo' |
|
637 | 637 | <form action="" method="post" enctype="multipart/form-data" id="form"> |
638 | -';$cc="<input type='submit' value='".'Execute'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$H=$_GET["sql"];if($_POST)$H=$_POST["query"];elseif($_GET["history"]=="all")$H=$Ec;elseif($_GET["history"]!="")$H=$Ec[$_GET["history"]][0];echo"<p>";textarea("query",$H,20);echo($_POST?"":"<script type='text/javascript'>focus(document.getElementsByTagName('textarea')[0]);</script>\n"),"<p>$cc\n",'Limit rows'.": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{echo"<fieldset><legend>".'File upload'."</legend><div>",(ini_bool("file_uploads")?"SQL (< ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$cc":'File uploads are disabled.'),"</div></fieldset>\n","<fieldset><legend>".'From server'."</legend><div>",sprintf('Webserver file %s',"<code>adminer.sql".(extension_loaded("zlib")?"[.gz]":"")."</code>"),' <input type="submit" name="webfile" value="'.'Run file'.'">',"</div></fieldset>\n","<p>";}echo |
|
639 | -checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])),'Stop on error')."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])),'Show only errors')."\n","<input type='hidden' name='token' value='$T'>\n";if(!isset($_GET["import"])&&$Ec){print_fieldset("history",'History',$_GET["history"]!="");for($X=end($Ec);$X;$X=prev($Ec)){$z=key($Ec);list($H,$bg,$Nb)=$X;echo'<a href="'.h(ME."sql=&history=$z").'">'.'Edit'."</a>"." <span class='time' title='".@date('Y-m-d',$bg)."'>".@date("H:i:s",$bg)."</span>"." <code class='jush-$y'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$H)))),80,"</code>").($Nb?" <span class='time'>($Nb)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".'Clear'."'>\n","<a href='".h(ME."sql=&history=all")."'>".'Edit all'."</a>\n","</div></fieldset>\n";}echo'</form> |
|
640 | -';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Z=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$Ag=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($m |
|
641 | -as$F=>$l){if(!isset($l["privileges"][$Ag?"update":"insert"])||$b->fieldName($l)=="")unset($m[$F]);}if($_POST&&!$k&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"])$B=($Ag?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$B))$B=ME."select=".urlencode($a);$w=indexes($a);$wg=unique_array($_GET["where"],$w);$Re="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($B,'Item has been deleted.',$j->delete($a,$Re,!$wg));else{$P=array();foreach($m |
|
642 | -as$F=>$l){$X=process_input($l);if($X!==false&&$X!==null)$P[idf_escape($F)]=$X;}if($Ag){if(!$P)redirect($B);queries_redirect($B,'Item has been updated.',$j->update($a,$P,$Re,!$wg));if(is_ajax()){page_headers();page_messages($k);exit;}}else{$J=$j->insert($a,$P);$gd=($J?last_id():0);queries_redirect($B,sprintf('Item%s has been inserted.',($gd?" $gd":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Z){$N=array();foreach($m |
|
643 | -as$F=>$l){if(isset($l["privileges"]["select"])){$ua=convert_field($l);if($_POST["clone"]&&$l["auto_increment"])$ua="''";if($y=="sql"&&preg_match("~enum|set~",$l["type"]))$ua="1*".idf_escape($F);$N[]=($ua?"$ua AS ":"").idf_escape($F);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$j->select($a,$N,array($Z),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L)$L=false;if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$m){if(!$Z){$J=$j->select($a,array("*"),$Z,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($j->primary=>"");}if($L){foreach($L |
|
644 | -as$z=>$X){if(!$Z)$L[$z]=null;$m[$z]=array("field"=>$z,"null"=>($z!=$j->primary),"auto_increment"=>($z==$j->primary));}}}edit_form($a,$m,$L,$Ag);}elseif(isset($_GET["create"])){$a=$_GET["create"];$re=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$z)$re[$z]=$z;$Xe=referencable_primary($a);$o=array();foreach($Xe |
|
645 | -as$Pf=>$l)$o[str_replace("`","``",$Pf)."`".str_replace("`","``",$l["field"])]=$Pf;$je=array();$R=array();if($a!=""){$je=fields($a);$R=table_status($a);if(!$R)$k='No tables.';}$L=$_POST;$L["fields"]=(array)$L["fields"];if($L["auto_increment_col"])$L["fields"][$L["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!process_fields($L["fields"])&&!$k){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Table has been dropped.',drop_tables(array($a)));else{$m=array();$ra=array();$Dg=false;$rc=array();ksort($L["fields"]);$ie=reset($je);$pa=" FIRST";foreach($L["fields"]as$z=>$l){$n=$o[$l["type"]];$rg=($n!==null?$Xe[$n]:$l);if($l["field"]!=""){if(!$l["has_default"])$l["default"]=null;if($z==$L["auto_increment_col"])$l["auto_increment"]=true;$Ne=process_field($l,$rg);$ra[]=array($l["orig"],$Ne,$pa);if($Ne!=process_field($ie,$ie)){$m[]=array($l["orig"],$Ne,$pa);if($l["orig"]!=""||$pa)$Dg=true;}if($n!==null)$rc[idf_escape($l["field"])]=($a!=""&&$y!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$o[$l["type"]],'source'=>array($l["field"]),'target'=>array($rg["field"]),'on_delete'=>$l["on_delete"],));$pa=" AFTER ".idf_escape($l["field"]);}elseif($l["orig"]!=""){$Dg=true;$m[]=array($l["orig"]);}if($l["orig"]!=""){$ie=next($je);if(!$ie)$pa="";}}$te="";if($re[$L["partition_by"]]){$ue=array();if($L["partition_by"]=='RANGE'||$L["partition_by"]=='LIST'){foreach(array_filter($L["partition_names"])as$z=>$X){$Y=$L["partition_values"][$z];$ue[]="\n PARTITION ".idf_escape($X)." VALUES ".($L["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$te.="\nPARTITION BY $L[partition_by]($L[partition])".($ue?" (".implode(",",$ue)."\n)":($L["partitions"]?" PARTITIONS ".(+$L["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$R["Create_options"]))$te.="\nREMOVE PARTITIONING";$D='Table has been altered.';if($a==""){cookie("adminer_engine",$L["Engine"]);$D='Table has been created.';}$F=trim($L["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($F),$D,alter_table($a,$F,($y=="sqlite"&&($Dg||$rc)?$ra:$m),$rc,($L["Comment"]!=$R["Comment"]?$L["Comment"]:null),($L["Engine"]&&$L["Engine"]!=$R["Engine"]?$L["Engine"]:""),($L["Collation"]&&$L["Collation"]!=$R["Collation"]?$L["Collation"]:""),($L["Auto_increment"]!=""?number($L["Auto_increment"]):""),$te));}}page_header(($a!=""?'Alter table':'Create table'),$k,array("table"=>$a),h($a));if(!$_POST){$L=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($tg["int"])?"int":(isset($tg["integer"])?"integer":"")))),"partition_names"=>array(""),);if($a!=""){$L=$R;$L["name"]=$a;$L["fields"]=array();if(!$_GET["auto_increment"])$L["Auto_increment"]="";foreach($je |
|
646 | -as$l){$l["has_default"]=isset($l["default"]);$L["fields"][]=$l;}if(support("partitioning")){$wc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$J=$e->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $wc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($L["partition_by"],$L["partitions"],$L["partition"])=$J->fetch_row();$ue=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $wc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$ue[""]="";$L["partition_names"]=array_keys($ue);$L["partition_values"]=array_values($ue);}}}$Xa=collations();$Ub=engines();foreach($Ub |
|
647 | -as$Tb){if(!strcasecmp($Tb,$L["Engine"])){$L["Engine"]=$Tb;break;}}echo' |
|
638 | +';$cc = "<input type='submit' value='" . 'Execute' . "' title='Ctrl+Enter'>"; if (!isset($_GET["import"])) {$H = $_GET["sql"]; if ($_POST)$H = $_POST["query"]; elseif ($_GET["history"] == "all")$H = $Ec; elseif ($_GET["history"] != "")$H = $Ec[$_GET["history"]][0]; echo"<p>"; textarea("query", $H, 20); echo($_POST ? "" : "<script type='text/javascript'>focus(document.getElementsByTagName('textarea')[0]);</script>\n"), "<p>$cc\n", 'Limit rows' . ": <input type='number' name='limit' class='size' value='" . h($_POST ? $_POST["limit"] : $_GET["limit"]) . "'>\n"; } else {echo"<fieldset><legend>" . 'File upload' . "</legend><div>", (ini_bool("file_uploads") ? "SQL (< " . ini_get("upload_max_filesize") . "B): <input type='file' name='sql_file[]' multiple>\n$cc" : 'File uploads are disabled.'), "</div></fieldset>\n", "<fieldset><legend>" . 'From server' . "</legend><div>", sprintf('Webserver file %s', "<code>adminer.sql" . (extension_loaded("zlib") ? "[.gz]" : "") . "</code>"), ' <input type="submit" name="webfile" value="' . 'Run file' . '">', "</div></fieldset>\n", "<p>"; }echo |
|
639 | +checkbox("error_stops", 1, ($_POST ? $_POST["error_stops"] : isset($_GET["import"])), 'Stop on error') . "\n", checkbox("only_errors", 1, ($_POST ? $_POST["only_errors"] : isset($_GET["import"])), 'Show only errors') . "\n", "<input type='hidden' name='token' value='$T'>\n"; if (!isset($_GET["import"]) && $Ec) {print_fieldset("history", 'History', $_GET["history"] != ""); for ($X = end($Ec); $X; $X = prev($Ec)) {$z = key($Ec); list($H, $bg, $Nb) = $X; echo'<a href="' . h(ME . "sql=&history=$z") . '">' . 'Edit' . "</a>" . " <span class='time' title='" . @date('Y-m-d', $bg) . "'>" . @date("H:i:s", $bg) . "</span>" . " <code class='jush-$y'>" . shorten_utf8(ltrim(str_replace("\n", " ", str_replace("\r", "", preg_replace('~^(#|-- ).*~m', '', $H)))), 80, "</code>") . ($Nb ? " <span class='time'>($Nb)</span>" : "") . "<br>\n"; }echo"<input type='submit' name='clear' value='" . 'Clear' . "'>\n", "<a href='" . h(ME . "sql=&history=all") . "'>" . 'Edit all' . "</a>\n", "</div></fieldset>\n"; }echo'</form> |
|
640 | +';}elseif (isset($_GET["edit"])) {$a = $_GET["edit"]; $m = fields($a); $Z = (isset($_GET["select"]) ? (count($_POST["check"]) == 1 ? where_check($_POST["check"][0], $m) : "") : where($_GET, $m)); $Ag = (isset($_GET["select"]) ? $_POST["edit"] : $Z); foreach ($m |
|
641 | +as$F=>$l) {if (!isset($l["privileges"][$Ag ? "update" : "insert"]) || $b->fieldName($l) == "")unset($m[$F]); }if ($_POST && !$k && !isset($_GET["select"])) {$B = $_POST["referer"]; if ($_POST["insert"])$B = ($Ag ? null : $_SERVER["REQUEST_URI"]); elseif (!preg_match('~^.+&select=.+$~', $B))$B = ME . "select=" . urlencode($a); $w = indexes($a); $wg = unique_array($_GET["where"], $w); $Re = "\nWHERE $Z"; if (isset($_POST["delete"]))queries_redirect($B, 'Item has been deleted.', $j->delete($a, $Re, !$wg)); else {$P = array(); foreach ($m |
|
642 | +as$F=>$l) {$X = process_input($l); if ($X !== false && $X !== null)$P[idf_escape($F)] = $X; }if ($Ag) {if (!$P)redirect($B); queries_redirect($B, 'Item has been updated.', $j->update($a, $P, $Re, !$wg)); if (is_ajax()) {page_headers(); page_messages($k); exit; }} else {$J = $j->insert($a, $P); $gd = ($J ? last_id() : 0); queries_redirect($B, sprintf('Item%s has been inserted.', ($gd ? " $gd" : "")), $J); }}}$L = null; if ($_POST["save"])$L = (array) $_POST["fields"]; elseif ($Z) {$N = array(); foreach ($m |
|
643 | +as$F=>$l) {if (isset($l["privileges"]["select"])) {$ua = convert_field($l); if ($_POST["clone"] && $l["auto_increment"])$ua = "''"; if ($y == "sql" && preg_match("~enum|set~", $l["type"]))$ua = "1*" . idf_escape($F); $N[] = ($ua ? "$ua AS " : "") . idf_escape($F); }}$L = array(); if (!support("table"))$N = array("*"); if ($N) {$J = $j->select($a, $N, array($Z), $N, array(), (isset($_GET["select"]) ? 2 : 1)); $L = $J->fetch_assoc(); if (!$L)$L = false; if (isset($_GET["select"]) && (!$L || $J->fetch_assoc()))$L = null; }}if (!support("table") && !$m) {if (!$Z) {$J = $j->select($a, array("*"), $Z, array("*")); $L = ($J ? $J->fetch_assoc() : false); if (!$L)$L = array($j->primary=>""); }if ($L) {foreach ($L |
|
644 | +as$z=>$X) {if (!$Z)$L[$z] = null; $m[$z] = array("field"=>$z, "null"=>($z != $j->primary), "auto_increment"=>($z == $j->primary)); }}}edit_form($a, $m, $L, $Ag); }elseif (isset($_GET["create"])) {$a = $_GET["create"]; $re = array(); foreach (array('HASH', 'LINEAR HASH', 'KEY', 'LINEAR KEY', 'RANGE', 'LIST')as$z)$re[$z] = $z; $Xe = referencable_primary($a); $o = array(); foreach ($Xe |
|
645 | +as$Pf=>$l)$o[str_replace("`", "``", $Pf) . "`" . str_replace("`", "``", $l["field"])] = $Pf; $je = array(); $R = array(); if ($a != "") {$je = fields($a); $R = table_status($a); if (!$R)$k = 'No tables.'; }$L = $_POST; $L["fields"] = (array) $L["fields"]; if ($L["auto_increment_col"])$L["fields"][$L["auto_increment_col"]]["auto_increment"] = true; if ($_POST && !process_fields($L["fields"]) && !$k) {if ($_POST["drop"])queries_redirect(substr(ME, 0, -1), 'Table has been dropped.', drop_tables(array($a))); else {$m = array(); $ra = array(); $Dg = false; $rc = array(); ksort($L["fields"]); $ie = reset($je); $pa = " FIRST"; foreach ($L["fields"]as$z=>$l) {$n = $o[$l["type"]]; $rg = ($n !== null ? $Xe[$n] : $l); if ($l["field"] != "") {if (!$l["has_default"])$l["default"] = null; if ($z == $L["auto_increment_col"])$l["auto_increment"] = true; $Ne = process_field($l, $rg); $ra[] = array($l["orig"], $Ne, $pa); if ($Ne != process_field($ie, $ie)) {$m[] = array($l["orig"], $Ne, $pa); if ($l["orig"] != "" || $pa)$Dg = true; }if ($n !== null)$rc[idf_escape($l["field"])] = ($a != "" && $y != "sqlite" ? "ADD" : " ") . format_foreign_key(array('table'=>$o[$l["type"]], 'source'=>array($l["field"]), 'target'=>array($rg["field"]), 'on_delete'=>$l["on_delete"],)); $pa = " AFTER " . idf_escape($l["field"]); }elseif ($l["orig"] != "") {$Dg = true; $m[] = array($l["orig"]); }if ($l["orig"] != "") {$ie = next($je); if (!$ie)$pa = ""; }}$te = ""; if ($re[$L["partition_by"]]) {$ue = array(); if ($L["partition_by"] == 'RANGE' || $L["partition_by"] == 'LIST') {foreach (array_filter($L["partition_names"])as$z=>$X) {$Y = $L["partition_values"][$z]; $ue[] = "\n PARTITION " . idf_escape($X) . " VALUES " . ($L["partition_by"] == 'RANGE' ? "LESS THAN" : "IN") . ($Y != "" ? " ($Y)" : " MAXVALUE"); }}$te .= "\nPARTITION BY $L[partition_by]($L[partition])" . ($ue ? " (" . implode(",", $ue) . "\n)" : ($L["partitions"] ? " PARTITIONS " . (+$L["partitions"]) : "")); }elseif (support("partitioning") && preg_match("~partitioned~", $R["Create_options"]))$te .= "\nREMOVE PARTITIONING"; $D = 'Table has been altered.'; if ($a == "") {cookie("adminer_engine", $L["Engine"]); $D = 'Table has been created.'; }$F = trim($L["name"]); queries_redirect(ME . (support("table") ? "table=" : "select=") . urlencode($F), $D, alter_table($a, $F, ($y == "sqlite" && ($Dg || $rc) ? $ra : $m), $rc, ($L["Comment"] != $R["Comment"] ? $L["Comment"] : null), ($L["Engine"] && $L["Engine"] != $R["Engine"] ? $L["Engine"] : ""), ($L["Collation"] && $L["Collation"] != $R["Collation"] ? $L["Collation"] : ""), ($L["Auto_increment"] != "" ? number($L["Auto_increment"]) : ""), $te)); }}page_header(($a != "" ? 'Alter table' : 'Create table'), $k, array("table"=>$a), h($a)); if (!$_POST) {$L = array("Engine"=>$_COOKIE["adminer_engine"], "fields"=>array(array("field"=>"", "type"=>(isset($tg["int"]) ? "int" : (isset($tg["integer"]) ? "integer" : "")))), "partition_names"=>array(""),); if ($a != "") {$L = $R; $L["name"] = $a; $L["fields"] = array(); if (!$_GET["auto_increment"])$L["Auto_increment"] = ""; foreach ($je |
|
646 | +as$l) {$l["has_default"] = isset($l["default"]); $L["fields"][] = $l; }if (support("partitioning")) {$wc = "FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = " . q(DB) . " AND TABLE_NAME = " . q($a); $J = $e->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $wc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1"); list($L["partition_by"], $L["partitions"], $L["partition"]) = $J->fetch_row(); $ue = get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $wc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION"); $ue[""] = ""; $L["partition_names"] = array_keys($ue); $L["partition_values"] = array_values($ue); }}}$Xa = collations(); $Ub = engines(); foreach ($Ub |
|
647 | +as$Tb) {if (!strcasecmp($Tb, $L["Engine"])) {$L["Engine"] = $Tb; break; }}echo' |
|
648 | 648 | <form action="" method="post" id="form"> |
649 | 649 | <p> |
650 | -';if(support("columns")||$a==""){echo'Table name: <input name="name" maxlength="64" value="',h($L["name"]),'" autocapitalize="off"> |
|
651 | -';if($a==""&&!$_POST){?><script type='text/javascript'>focus(document.getElementById('form')['name']);</script><?php }echo($Ub?"<select name='Engine' onchange='helpClose();'".on_help("getTarget(event).value",1).">".optionlist(array(""=>"(".'engine'.")")+$Ub,$L["Engine"])."</select>":""),' ',($Xa&&!preg_match("~sqlite|mssql~",$y)?html_select("Collation",array(""=>"(".'collation'.")")+$Xa,$L["Collation"]):""),' <input type="submit" value="Save"> |
|
650 | +';if (support("columns") || $a == "") {echo'Table name: <input name="name" maxlength="64" value="', h($L["name"]), '" autocapitalize="off"> |
|
651 | +';if ($a == "" && !$_POST) {?><script type='text/javascript'>focus(document.getElementById('form')['name']);</script><?php }echo($Ub ? "<select name='Engine' onchange='helpClose();'" . on_help("getTarget(event).value", 1) . ">" . optionlist(array(""=>"(" . 'engine' . ")") + $Ub, $L["Engine"]) . "</select>" : ""), ' ', ($Xa && !preg_match("~sqlite|mssql~", $y) ? html_select("Collation", array(""=>"(" . 'collation' . ")") + $Xa, $L["Collation"]) : ""), ' <input type="submit" value="Save"> |
|
652 | 652 | ';}echo' |
653 | -';if(support("columns")){echo'<table cellspacing="0" id="edit-fields" class="nowrap"> |
|
654 | -';$cb=($_POST?$_POST["comments"]:$L["Comment"]!="");if(!$_POST&&!$cb){foreach($L["fields"]as$l){if($l["comment"]!=""){$cb=true;break;}}}edit_fields($L["fields"],$Xa,"TABLE",$o,$cb);echo'</table> |
|
653 | +';if (support("columns")) {echo'<table cellspacing="0" id="edit-fields" class="nowrap"> |
|
654 | +';$cb = ($_POST ? $_POST["comments"] : $L["Comment"] != ""); if (!$_POST && !$cb) {foreach ($L["fields"]as$l) {if ($l["comment"] != "") {$cb = true; break; }}}edit_fields($L["fields"], $Xa, "TABLE", $o, $cb); echo'</table> |
|
655 | 655 | <p> |
656 | -Auto Increment: <input type="number" name="Auto_increment" size="6" value="',h($L["Auto_increment"]),'"> |
|
657 | -',checkbox("defaults",1,true,'Default values',"columnShow(this.checked, 5)","jsonly");if(!$_POST["defaults"]){echo'<script type="text/javascript">editingHideDefaults()</script>';}echo(support("comment")?"<label><input type='checkbox' name='comments' value='1' class='jsonly' onclick=\"columnShow(this.checked, 6); toggle('Comment'); if (this.checked) this.form['Comment'].focus();\"".($cb?" checked":"").">".'Comment'."</label>".' <input name="Comment" id="Comment" value="'.h($L["Comment"]).'" maxlength="'.($e->server_info>=5.5?2048:60).'"'.($cb?'':' class="hidden"').'>':''),'<p> |
|
656 | +Auto Increment: <input type="number" name="Auto_increment" size="6" value="',h($L["Auto_increment"]), '"> |
|
657 | +',checkbox("defaults", 1, true, 'Default values', "columnShow(this.checked, 5)", "jsonly"); if (!$_POST["defaults"]) {echo'<script type="text/javascript">editingHideDefaults()</script>'; }echo(support("comment") ? "<label><input type='checkbox' name='comments' value='1' class='jsonly' onclick=\"columnShow(this.checked, 6); toggle('Comment'); if (this.checked) this.form['Comment'].focus();\"" . ($cb ? " checked" : "") . ">" . 'Comment' . "</label>" . ' <input name="Comment" id="Comment" value="' . h($L["Comment"]) . '" maxlength="' . ($e->server_info >= 5.5 ? 2048 : 60) . '"' . ($cb ? '' : ' class="hidden"') . '>' : ''), '<p> |
|
658 | 658 | <input type="submit" value="Save"> |
659 | 659 | ';}echo' |
660 | -';if($a!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}if(support("partitioning")){$se=preg_match('~RANGE|LIST~',$L["partition_by"]);print_fieldset("partition",'Partition by',$L["partition_by"]);echo'<p> |
|
661 | -',"<select name='partition_by' onchange='partitionByChange(this);'".on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).">".optionlist(array(""=>"")+$re,$L["partition_by"])."</select>",'(<input name="partition" value="',h($L["partition"]),'">) |
|
662 | -Partitions: <input type="number" name="partitions" class="size',($se||!$L["partition_by"]?" hidden":""),'" value="',h($L["partitions"]),'"> |
|
663 | -<table cellspacing="0" id="partition-table"',($se?"":" class='hidden'"),'> |
|
660 | +';if ($a != "") {echo'<input type="submit" name="drop" value="Drop"', confirm(), '>'; }if (support("partitioning")) {$se = preg_match('~RANGE|LIST~', $L["partition_by"]); print_fieldset("partition", 'Partition by', $L["partition_by"]); echo'<p> |
|
661 | +',"<select name='partition_by' onchange='partitionByChange(this);'" . on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')", 1) . ">" . optionlist(array(""=>"") + $re, $L["partition_by"]) . "</select>", '(<input name="partition" value="', h($L["partition"]), '">) |
|
662 | +Partitions: <input type="number" name="partitions" class="size',($se || !$L["partition_by"] ? " hidden" : ""), '" value="', h($L["partitions"]), '"> |
|
663 | +<table cellspacing="0" id="partition-table"',($se ? "" : " class='hidden'"), '> |
|
664 | 664 | <thead><tr><th>Partition name<th>Values</thead> |
665 | -';foreach($L["partition_names"]as$z=>$X){echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'"'.($z==count($L["partition_names"])-1?' onchange="partitionNameChange(this);"':'').' autocapitalize="off">','<td><input name="partition_values[]" value="'.h($L["partition_values"][$z]).'">';}echo'</table> |
|
665 | +';foreach ($L["partition_names"]as$z=>$X) {echo'<tr>', '<td><input name="partition_names[]" value="' . h($X) . '"' . ($z == count($L["partition_names"]) - 1 ? ' onchange="partitionNameChange(this);"' : '') . ' autocapitalize="off">', '<td><input name="partition_values[]" value="' . h($L["partition_values"][$z]) . '">'; }echo'</table> |
|
666 | 666 | </div></fieldset> |
667 | -';}echo'<input type="hidden" name="token" value="',$T,'"> |
|
667 | +';}echo'<input type="hidden" name="token" value="', $T, '"> |
|
668 | 668 | </form> |
669 | -';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Mc=array("PRIMARY","UNIQUE","INDEX");$R=table_status($a,true);if(preg_match('~MyISAM|M?aria'.($e->server_info>=5.6?'|InnoDB':'').'~i',$R["Engine"]))$Mc[]="FULLTEXT";$w=indexes($a);$He=array();if($y=="mongo"){$He=$w["_id_"];unset($Mc[0]);unset($w["_id_"]);}$L=$_POST;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["drop_col"]){$sa=array();foreach($L["indexes"]as$v){$F=$v["name"];if(in_array($v["type"],$Mc)){$d=array();$md=array();$yb=array();$P=array();ksort($v["columns"]);foreach($v["columns"]as$z=>$c){if($c!=""){$ld=$v["lengths"][$z];$xb=$v["descs"][$z];$P[]=idf_escape($c).($ld?"(".(+$ld).")":"").($xb?" DESC":"");$d[]=$c;$md[]=($ld?$ld:null);$yb[]=$xb;}}if($d){$dc=$w[$F];if($dc){ksort($dc["columns"]);ksort($dc["lengths"]);ksort($dc["descs"]);if($v["type"]==$dc["type"]&&array_values($dc["columns"])===$d&&(!$dc["lengths"]||array_values($dc["lengths"])===$md)&&array_values($dc["descs"])===$yb){unset($w[$F]);continue;}}$sa[]=array($v["type"],$F,$P);}}}foreach($w |
|
670 | -as$F=>$dc)$sa[]=array($dc["type"],$F,"DROP");if(!$sa)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$sa));}page_header('Indexes',$k,array("table"=>$a),h($a));$m=array_keys(fields($a));if($_POST["add"]){foreach($L["indexes"]as$z=>$v){if($v["columns"][count($v["columns"])]!="")$L["indexes"][$z]["columns"][]="";}$v=end($L["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$L["indexes"][]=array("columns"=>array(1=>""));}if(!$L){foreach($w |
|
671 | -as$z=>$v){$w[$z]["name"]=$z;$w[$z]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$L["indexes"]=$w;}?> |
|
669 | +';}elseif (isset($_GET["indexes"])) {$a = $_GET["indexes"]; $Mc = array("PRIMARY", "UNIQUE", "INDEX"); $R = table_status($a, true); if (preg_match('~MyISAM|M?aria' . ($e->server_info >= 5.6 ? '|InnoDB' : '') . '~i', $R["Engine"]))$Mc[] = "FULLTEXT"; $w = indexes($a); $He = array(); if ($y == "mongo") {$He = $w["_id_"]; unset($Mc[0]); unset($w["_id_"]); }$L = $_POST; if ($_POST && !$k && !$_POST["add"] && !$_POST["drop_col"]) {$sa = array(); foreach ($L["indexes"]as$v) {$F = $v["name"]; if (in_array($v["type"], $Mc)) {$d = array(); $md = array(); $yb = array(); $P = array(); ksort($v["columns"]); foreach ($v["columns"]as$z=>$c) {if ($c != "") {$ld = $v["lengths"][$z]; $xb = $v["descs"][$z]; $P[] = idf_escape($c) . ($ld ? "(" . (+$ld) . ")" : "") . ($xb ? " DESC" : ""); $d[] = $c; $md[] = ($ld ? $ld : null); $yb[] = $xb; }}if ($d) {$dc = $w[$F]; if ($dc) {ksort($dc["columns"]); ksort($dc["lengths"]); ksort($dc["descs"]); if ($v["type"] == $dc["type"] && array_values($dc["columns"]) === $d && (!$dc["lengths"] || array_values($dc["lengths"]) === $md) && array_values($dc["descs"]) === $yb) {unset($w[$F]); continue; }}$sa[] = array($v["type"], $F, $P); }}}foreach ($w |
|
670 | +as$F=>$dc)$sa[] = array($dc["type"], $F, "DROP"); if (!$sa)redirect(ME . "table=" . urlencode($a)); queries_redirect(ME . "table=" . urlencode($a), 'Indexes have been altered.', alter_indexes($a, $sa)); }page_header('Indexes', $k, array("table"=>$a), h($a)); $m = array_keys(fields($a)); if ($_POST["add"]) {foreach ($L["indexes"]as$z=>$v) {if ($v["columns"][count($v["columns"])] != "")$L["indexes"][$z]["columns"][] = ""; }$v = end($L["indexes"]); if ($v["type"] || array_filter($v["columns"], 'strlen'))$L["indexes"][] = array("columns"=>array(1=>"")); }if (!$L) {foreach ($w |
|
671 | +as$z=>$v) {$w[$z]["name"] = $z; $w[$z]["columns"][] = ""; }$w[] = array("columns"=>array(1=>"")); $L["indexes"] = $w; }?> |
|
672 | 672 | |
673 | 673 | <form action="" method="post"> |
674 | 674 | <table cellspacing="0" class="nowrap"> |
@@ -679,138 +679,138 @@ discard block |
||
679 | 679 | <th><noscript><input type='image' class='icon' name='add[0]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=plus.gif&version=4.2.5&driver=mysql' alt='+' title='Add next'></noscript> |
680 | 680 | </thead> |
681 | 681 | <?php |
682 | -if($He){echo"<tr><td>PRIMARY<td>";foreach($He["columns"]as$z=>$c){echo |
|
683 | -select_input(" disabled",$m,$c),"<label><input disabled type='checkbox'>".'descending'."</label> ";}echo"<td><td>\n";}$x=1;foreach($L["indexes"]as$v){if(!$_POST["drop_col"]||$x!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$x][type]",array(-1=>"")+$Mc,$v["type"],($x==count($L["indexes"])?"indexesAddRow(this);":1)),"<td>";ksort($v["columns"]);$t=1;foreach($v["columns"]as$z=>$c){echo"<span>".select_input(" name='indexes[$x][columns][$t]' onchange=\"".($t==count($v["columns"])?"indexesAddColumn":"indexesChangeColumn")."(this, '".h(js_escape($y=="sql"?"":$_GET["indexes"]."_"))."');\"",($m?array_combine($m,$m):$m),$c),($y=="sql"||$y=="mssql"?"<input type='number' name='indexes[$x][lengths][$t]' class='size' value='".h($v["lengths"][$z])."'>":""),($y!="sql"?checkbox("indexes[$x][descs][$t]",1,$v["descs"][$z],'descending'):"")," </span>";$t++;}echo"<td><input name='indexes[$x][name]' value='".h($v["name"])."' autocapitalize='off'>\n","<td><input type='image' class='icon' name='drop_col[$x]' src='".h(preg_replace("~\\?.*~","",ME))."?file=cross.gif&version=4.2.5&driver=mysql' alt='x' title='".'Remove'."' onclick=\"return !editingRemoveRow(this, 'indexes\$1[type]');\">\n";}$x++;}echo'</table> |
|
682 | +if ($He) {echo"<tr><td>PRIMARY<td>"; foreach ($He["columns"]as$z=>$c) {echo |
|
683 | +select_input(" disabled", $m, $c), "<label><input disabled type='checkbox'>" . 'descending' . "</label> "; }echo"<td><td>\n"; }$x = 1; foreach ($L["indexes"]as$v) {if (!$_POST["drop_col"] || $x != key($_POST["drop_col"])) {echo"<tr><td>" . html_select("indexes[$x][type]", array(-1=>"") + $Mc, $v["type"], ($x == count($L["indexes"]) ? "indexesAddRow(this);" : 1)), "<td>"; ksort($v["columns"]); $t = 1; foreach ($v["columns"]as$z=>$c) {echo"<span>" . select_input(" name='indexes[$x][columns][$t]' onchange=\"" . ($t == count($v["columns"]) ? "indexesAddColumn" : "indexesChangeColumn") . "(this, '" . h(js_escape($y == "sql" ? "" : $_GET["indexes"] . "_")) . "');\"", ($m ? array_combine($m, $m) : $m), $c), ($y == "sql" || $y == "mssql" ? "<input type='number' name='indexes[$x][lengths][$t]' class='size' value='" . h($v["lengths"][$z]) . "'>" : ""), ($y != "sql" ? checkbox("indexes[$x][descs][$t]", 1, $v["descs"][$z], 'descending') : ""), " </span>"; $t++; }echo"<td><input name='indexes[$x][name]' value='" . h($v["name"]) . "' autocapitalize='off'>\n", "<td><input type='image' class='icon' name='drop_col[$x]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=cross.gif&version=4.2.5&driver=mysql' alt='x' title='" . 'Remove' . "' onclick=\"return !editingRemoveRow(this, 'indexes\$1[type]');\">\n"; }$x++; }echo'</table> |
|
684 | 684 | <p> |
685 | 685 | <input type="submit" value="Save"> |
686 | -<input type="hidden" name="token" value="',$T,'"> |
|
686 | +<input type="hidden" name="token" value="',$T, '"> |
|
687 | 687 | </form> |
688 | -';}elseif(isset($_GET["database"])){$L=$_POST;if($_POST&&!$k&&!isset($_POST["add_x"])){$F=trim($L["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Database has been dropped.',drop_databases(array(DB)));}elseif(DB!==$F){if(DB!=""){$_GET["db"]=$F;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($F),'Database has been renamed.',rename_database($F,$L["collation"]));}else{$h=explode("\n",str_replace("\r","",$F));$Jf=true;$fd="";foreach($h |
|
689 | -as$i){if(count($h)==1||$i!=""){if(!create_database($i,$L["collation"]))$Jf=false;$fd=$i;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($fd),'Database has been created.',$Jf);}}else{if(!$L["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($F).(preg_match('~^[a-z0-9_]+$~i',$L["collation"])?" COLLATE $L[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$k,array(),h(DB));$Xa=collations();$F=DB;if($_POST)$F=$L["name"];elseif(DB!="")$L["collation"]=db_collation(DB,$Xa);elseif($y=="sql"){foreach(get_vals("SHOW GRANTS")as$r){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~',$r,$C)&&$C[1]){$F=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo' |
|
688 | +';}elseif (isset($_GET["database"])) {$L = $_POST; if ($_POST && !$k && !isset($_POST["add_x"])) {$F = trim($L["name"]); if ($_POST["drop"]) {$_GET["db"] = ""; queries_redirect(remove_from_uri("db|database"), 'Database has been dropped.', drop_databases(array(DB))); }elseif (DB !== $F) {if (DB != "") {$_GET["db"] = $F; queries_redirect(preg_replace('~\bdb=[^&]*&~', '', ME) . "db=" . urlencode($F), 'Database has been renamed.', rename_database($F, $L["collation"])); } else {$h = explode("\n", str_replace("\r", "", $F)); $Jf = true; $fd = ""; foreach ($h |
|
689 | +as$i) {if (count($h) == 1 || $i != "") {if (!create_database($i, $L["collation"]))$Jf = false; $fd = $i; }}restart_session(); set_session("dbs", null); queries_redirect(ME . "db=" . urlencode($fd), 'Database has been created.', $Jf); }} else {if (!$L["collation"])redirect(substr(ME, 0, -1)); query_redirect("ALTER DATABASE " . idf_escape($F) . (preg_match('~^[a-z0-9_]+$~i', $L["collation"]) ? " COLLATE $L[collation]" : ""), substr(ME, 0, -1), 'Database has been altered.'); }}page_header(DB != "" ? 'Alter database' : 'Create database', $k, array(), h(DB)); $Xa = collations(); $F = DB; if ($_POST)$F = $L["name"]; elseif (DB != "")$L["collation"] = db_collation(DB, $Xa); elseif ($y == "sql") {foreach (get_vals("SHOW GRANTS")as$r) {if (preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~', $r, $C) && $C[1]) {$F = stripcslashes(idf_unescape("`$C[2]`")); break; }}}echo' |
|
690 | 690 | <form action="" method="post"> |
691 | 691 | <p> |
692 | -',($_POST["add_x"]||strpos($F,"\n")?'<textarea id="name" name="name" rows="10" cols="40">'.h($F).'</textarea><br>':'<input name="name" id="name" value="'.h($F).'" maxlength="64" autocapitalize="off">')."\n".($Xa?html_select("collation",array(""=>"(".'collation'.")")+$Xa,$L["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mssql'=>"ms187963.aspx",)):"");?> |
|
692 | +',($_POST["add_x"] || strpos($F, "\n") ? '<textarea id="name" name="name" rows="10" cols="40">' . h($F) . '</textarea><br>' : '<input name="name" id="name" value="' . h($F) . '" maxlength="64" autocapitalize="off">') . "\n" . ($Xa ? html_select("collation", array(""=>"(" . 'collation' . ")") + $Xa, $L["collation"]) . doc_link(array('sql'=>"charset-charsets.html", 'mssql'=>"ms187963.aspx",)) : ""); ?> |
|
693 | 693 | <script type='text/javascript'>focus(document.getElementById('name'));</script> |
694 | 694 | <input type="submit" value="Save"> |
695 | 695 | <?php |
696 | -if(DB!="")echo"<input type='submit' name='drop' value='".'Drop'."'".confirm().">\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"<input type='image' class='icon' name='add' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=4.2.5&driver=mysql' alt='+' title='".'Add next'."'>\n";echo'<input type="hidden" name="token" value="',$T,'"> |
|
696 | +if (DB != "")echo"<input type='submit' name='drop' value='" . 'Drop' . "'" . confirm() . ">\n"; elseif (!$_POST["add_x"] && $_GET["db"] == "")echo"<input type='image' class='icon' name='add' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=plus.gif&version=4.2.5&driver=mysql' alt='+' title='" . 'Add next' . "'>\n"; echo'<input type="hidden" name="token" value="', $T, '"> |
|
697 | 697 | </form> |
698 | -';}elseif(isset($_GET["call"])){$da=$_GET["call"];page_header('Call'.": ".h($da),$k);$if=routine($da,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Lc=array();$le=array();foreach($if["fields"]as$t=>$l){if(substr($l["inout"],-3)=="OUT")$le[$t]="@".idf_escape($l["field"])." AS ".idf_escape($l["field"]);if(!$l["inout"]||substr($l["inout"],0,2)=="IN")$Lc[]=$t;}if(!$k&&$_POST){$Ja=array();foreach($if["fields"]as$z=>$l){if(in_array($z,$Lc)){$X=process_input($l);if($X===false)$X="''";if(isset($le[$z]))$e->query("SET @".idf_escape($l["field"])." = $X");}$Ja[]=(isset($le[$z])?"@".idf_escape($l["field"]):$X);}$I=(isset($_GET["callf"])?"SELECT":"CALL")." ".idf_escape($da)."(".implode(", ",$Ja).")";echo"<p><code class='jush-$y'>".h($I)."</code> <a href='".h(ME)."sql=".urlencode($I)."'>".'Edit'."</a>\n";if(!$e->multi_query($I))echo"<p class='error'>".error()."\n";else{$f=connect();if(is_object($f))$f->select_db(DB);do{$J=$e->store_result();if(is_object($J))select($J,$f);else |
|
699 | -echo"<p class='message'>".lang(array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),$e->affected_rows)."\n";}while($e->next_result());if($le)select($e->query("SELECT ".implode(", ",$le)));}}echo' |
|
698 | +';}elseif (isset($_GET["call"])) {$da = $_GET["call"]; page_header('Call' . ": " . h($da), $k); $if = routine($da, (isset($_GET["callf"]) ? "FUNCTION" : "PROCEDURE")); $Lc = array(); $le = array(); foreach ($if["fields"]as$t=>$l) {if (substr($l["inout"], -3) == "OUT")$le[$t] = "@" . idf_escape($l["field"]) . " AS " . idf_escape($l["field"]); if (!$l["inout"] || substr($l["inout"], 0, 2) == "IN")$Lc[] = $t; }if (!$k && $_POST) {$Ja = array(); foreach ($if["fields"]as$z=>$l) {if (in_array($z, $Lc)) {$X = process_input($l); if ($X === false)$X = "''"; if (isset($le[$z]))$e->query("SET @" . idf_escape($l["field"]) . " = $X"); }$Ja[] = (isset($le[$z]) ? "@" . idf_escape($l["field"]) : $X); }$I = (isset($_GET["callf"]) ? "SELECT" : "CALL") . " " . idf_escape($da) . "(" . implode(", ", $Ja) . ")"; echo"<p><code class='jush-$y'>" . h($I) . "</code> <a href='" . h(ME) . "sql=" . urlencode($I) . "'>" . 'Edit' . "</a>\n"; if (!$e->multi_query($I))echo"<p class='error'>" . error() . "\n"; else {$f = connect(); if (is_object($f))$f->select_db(DB); do {$J = $e->store_result(); if (is_object($J))select($J, $f); else |
|
699 | +echo"<p class='message'>" . lang(array('Routine has been called, %d row affected.', 'Routine has been called, %d rows affected.'), $e->affected_rows) . "\n"; } while ($e->next_result()); if ($le)select($e->query("SELECT " . implode(", ", $le))); }}echo' |
|
700 | 700 | <form action="" method="post"> |
701 | -';if($Lc){echo"<table cellspacing='0'>\n";foreach($Lc |
|
702 | -as$z){$l=$if["fields"][$z];$F=$l["field"];echo"<tr><th>".$b->fieldName($l);$Y=$_POST["fields"][$F];if($Y!=""){if($l["type"]=="enum")$Y=+$Y;if($l["type"]=="set")$Y=array_sum($Y);}input($l,$Y,(string)$_POST["function"][$F]);echo"\n";}echo"</table>\n";}echo'<p> |
|
701 | +';if ($Lc) {echo"<table cellspacing='0'>\n"; foreach ($Lc |
|
702 | +as$z) {$l = $if["fields"][$z]; $F = $l["field"]; echo"<tr><th>" . $b->fieldName($l); $Y = $_POST["fields"][$F]; if ($Y != "") {if ($l["type"] == "enum")$Y = +$Y; if ($l["type"] == "set")$Y = array_sum($Y); }input($l, $Y, (string) $_POST["function"][$F]); echo"\n"; }echo"</table>\n"; }echo'<p> |
|
703 | 703 | <input type="submit" value="Call"> |
704 | -<input type="hidden" name="token" value="',$T,'"> |
|
704 | +<input type="hidden" name="token" value="',$T, '"> |
|
705 | 705 | </form> |
706 | -';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$F=$_GET["name"];$L=$_POST;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$D=($_POST["drop"]?'Foreign key has been dropped.':($F!=""?'Foreign key has been altered.':'Foreign key has been created.'));$B=ME."table=".urlencode($a);$L["source"]=array_filter($L["source"],'strlen');ksort($L["source"]);$Vf=array();foreach($L["source"]as$z=>$X)$Vf[$z]=$L["target"][$z];$L["target"]=$Vf;if($y=="sqlite")queries_redirect($B,$D,recreate_table($a,$a,array(),array(),array(" $F"=>($_POST["drop"]?"":" ".format_foreign_key($L)))));else{$sa="ALTER TABLE ".table($a);$Fb="\nDROP ".($y=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($F);if($_POST["drop"])query_redirect($sa.$Fb,$B,$D);else{query_redirect($sa.($F!=""?"$Fb,":"")."\nADD".format_foreign_key($L),$B,$D);$k='Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.'."<br>$k";}}}page_header('Foreign key',$k,array("table"=>$a),h($a));if($_POST){ksort($L["source"]);if($_POST["add"])$L["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$L["target"]=array();}elseif($F!=""){$o=foreign_keys($a);$L=$o[$F];$L["source"][]="";}else{$L["table"]=$a;$L["source"]=array("");}$_f=array_keys(fields($a));$Vf=($a===$L["table"]?$_f:array_keys(fields($L["table"])));$We=array_keys(array_filter(table_status('',true),'fk_support'));echo' |
|
706 | +';}elseif (isset($_GET["foreign"])) {$a = $_GET["foreign"]; $F = $_GET["name"]; $L = $_POST; if ($_POST && !$k && !$_POST["add"] && !$_POST["change"] && !$_POST["change-js"]) {$D = ($_POST["drop"] ? 'Foreign key has been dropped.' : ($F != "" ? 'Foreign key has been altered.' : 'Foreign key has been created.')); $B = ME . "table=" . urlencode($a); $L["source"] = array_filter($L["source"], 'strlen'); ksort($L["source"]); $Vf = array(); foreach ($L["source"]as$z=>$X)$Vf[$z] = $L["target"][$z]; $L["target"] = $Vf; if ($y == "sqlite")queries_redirect($B, $D, recreate_table($a, $a, array(), array(), array(" $F"=>($_POST["drop"] ? "" : " " . format_foreign_key($L))))); else {$sa = "ALTER TABLE " . table($a); $Fb = "\nDROP " . ($y == "sql" ? "FOREIGN KEY " : "CONSTRAINT ") . idf_escape($F); if ($_POST["drop"])query_redirect($sa . $Fb, $B, $D); else {query_redirect($sa . ($F != "" ? "$Fb," : "") . "\nADD" . format_foreign_key($L), $B, $D); $k = 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' . "<br>$k"; }}}page_header('Foreign key', $k, array("table"=>$a), h($a)); if ($_POST) {ksort($L["source"]); if ($_POST["add"])$L["source"][] = ""; elseif ($_POST["change"] || $_POST["change-js"])$L["target"] = array(); }elseif ($F != "") {$o = foreign_keys($a); $L = $o[$F]; $L["source"][] = ""; } else {$L["table"] = $a; $L["source"] = array(""); }$_f = array_keys(fields($a)); $Vf = ($a === $L["table"] ? $_f : array_keys(fields($L["table"]))); $We = array_keys(array_filter(table_status('', true), 'fk_support')); echo' |
|
707 | 707 | <form action="" method="post"> |
708 | 708 | <p> |
709 | -';if($L["db"]==""&&$L["ns"]==""){echo'Target table: |
|
710 | -',html_select("table",$We,$L["table"],"this.form['change-js'].value = '1'; this.form.submit();"),'<input type="hidden" name="change-js" value=""> |
|
709 | +';if ($L["db"] == "" && $L["ns"] == "") {echo'Target table: |
|
710 | +',html_select("table", $We, $L["table"], "this.form['change-js'].value = '1'; this.form.submit();"), '<input type="hidden" name="change-js" value=""> |
|
711 | 711 | <noscript><p><input type="submit" name="change" value="Change"></noscript> |
712 | 712 | <table cellspacing="0"> |
713 | 713 | <thead><tr><th>Source<th>Target</thead> |
714 | -';$x=0;foreach($L["source"]as$z=>$X){echo"<tr>","<td>".html_select("source[".(+$z)."]",array(-1=>"")+$_f,$X,($x==count($L["source"])-1?"foreignAddRow(this);":1)),"<td>".html_select("target[".(+$z)."]",$Vf,$L["target"][$z]);$x++;}echo'</table> |
|
714 | +';$x = 0; foreach ($L["source"]as$z=>$X) {echo"<tr>", "<td>" . html_select("source[" . (+$z) . "]", array(-1=>"") + $_f, $X, ($x == count($L["source"]) - 1 ? "foreignAddRow(this);" : 1)), "<td>" . html_select("target[" . (+$z) . "]", $Vf, $L["target"][$z]); $x++; }echo'</table> |
|
715 | 715 | <p> |
716 | -ON DELETE: ',html_select("on_delete",array(-1=>"")+explode("|",$Vd),$L["on_delete"]),' ON UPDATE: ',html_select("on_update",array(-1=>"")+explode("|",$Vd),$L["on_update"]),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"ms174979.aspx",'oracle'=>"clauses002.htm#sthref2903",)),'<p> |
|
716 | +ON DELETE: ',html_select("on_delete", array(-1=>"") + explode("|", $Vd), $L["on_delete"]), ' ON UPDATE: ', html_select("on_update", array(-1=>"") + explode("|", $Vd), $L["on_update"]), doc_link(array('sql'=>"innodb-foreign-key-constraints.html", 'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES", 'mssql'=>"ms174979.aspx", 'oracle'=>"clauses002.htm#sthref2903",)), '<p> |
|
717 | 717 | <input type="submit" value="Save"> |
718 | 718 | <noscript><p><input type="submit" name="add" value="Add column"></noscript> |
719 | -';}if($F!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'"> |
|
719 | +';}if ($F != "") {echo'<input type="submit" name="drop" value="Drop"', confirm(), '>'; }echo'<input type="hidden" name="token" value="', $T, '"> |
|
720 | 720 | </form> |
721 | -';}elseif(isset($_GET["view"])){$a=$_GET["view"];$L=$_POST;if($_POST&&!$k){$F=trim($L["name"]);$ua=" AS\n$L[select]";$B=ME."table=".urlencode($F);$D='View has been altered.';if($_GET["materialized"])$U="MATERIALIZED VIEW";else{$U="VIEW";if($y=="pgsql"){$Df=table_status($F);$U=($Df?strtoupper($Df["Engine"]):$U);}}if(!$_POST["drop"]&&$a==$F&&$y!="sqlite"&&$U!="MATERIALIZED VIEW")query_redirect(($y=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($F).$ua,$B,$D);else{$Xf=$F."_adminer_".uniqid();drop_create("DROP $U ".table($a),"CREATE $U ".table($F).$ua,"DROP $U ".table($F),"CREATE $U ".table($Xf).$ua,"DROP $U ".table($Xf),($_POST["drop"]?substr(ME,0,-1):$B),'View has been dropped.',$D,'View has been created.',$a,$F);}}if(!$_POST&&$a!=""){$L=view($a);$L["name"]=$a;if(!$k)$k=error();}page_header(($a!=""?'Alter view':'Create view'),$k,array("table"=>$a),h($a));echo' |
|
721 | +';}elseif (isset($_GET["view"])) {$a = $_GET["view"]; $L = $_POST; if ($_POST && !$k) {$F = trim($L["name"]); $ua = " AS\n$L[select]"; $B = ME . "table=" . urlencode($F); $D = 'View has been altered.'; if ($_GET["materialized"])$U = "MATERIALIZED VIEW"; else {$U = "VIEW"; if ($y == "pgsql") {$Df = table_status($F); $U = ($Df ? strtoupper($Df["Engine"]) : $U); }}if (!$_POST["drop"] && $a == $F && $y != "sqlite" && $U != "MATERIALIZED VIEW")query_redirect(($y == "mssql" ? "ALTER" : "CREATE OR REPLACE") . " VIEW " . table($F) . $ua, $B, $D); else {$Xf = $F . "_adminer_" . uniqid(); drop_create("DROP $U " . table($a), "CREATE $U " . table($F) . $ua, "DROP $U " . table($F), "CREATE $U " . table($Xf) . $ua, "DROP $U " . table($Xf), ($_POST["drop"] ? substr(ME, 0, -1) : $B), 'View has been dropped.', $D, 'View has been created.', $a, $F); }}if (!$_POST && $a != "") {$L = view($a); $L["name"] = $a; if (!$k)$k = error(); }page_header(($a != "" ? 'Alter view' : 'Create view'), $k, array("table"=>$a), h($a)); echo' |
|
722 | 722 | <form action="" method="post"> |
723 | -<p>Name: <input name="name" value="',h($L["name"]),'" maxlength="64" autocapitalize="off"> |
|
724 | -<p>';textarea("select",$L["select"]);echo'<p> |
|
723 | +<p>Name: <input name="name" value="',h($L["name"]), '" maxlength="64" autocapitalize="off"> |
|
724 | +<p>';textarea("select", $L["select"]); echo'<p> |
|
725 | 725 | <input type="submit" value="Save"> |
726 | -';if($_GET["view"]!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'"> |
|
726 | +';if ($_GET["view"] != "") {echo'<input type="submit" name="drop" value="Drop"', confirm(), '>'; }echo'<input type="hidden" name="token" value="', $T, '"> |
|
727 | 727 | </form> |
728 | -';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Rc=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Ef=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$L=$_POST;if($_POST&&!$k){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Event has been dropped.');elseif(in_array($L["INTERVAL_FIELD"],$Rc)&&isset($Ef[$L["STATUS"]])){$mf="\nON SCHEDULE ".($L["INTERVAL_VALUE"]?"EVERY ".q($L["INTERVAL_VALUE"])." $L[INTERVAL_FIELD]".($L["STARTS"]?" STARTS ".q($L["STARTS"]):"").($L["ENDS"]?" ENDS ".q($L["ENDS"]):""):"AT ".q($L["STARTS"]))." ON COMPLETION".($L["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?'Event has been altered.':'Event has been created.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$mf.($aa!=$L["EVENT_NAME"]?"\nRENAME TO ".idf_escape($L["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($L["EVENT_NAME"]).$mf)."\n".$Ef[$L["STATUS"]]." COMMENT ".q($L["EVENT_COMMENT"]).rtrim(" DO\n$L[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Alter event'.": ".h($aa):'Create event'),$k);if(!$L&&$aa!=""){$M=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$L=reset($M);}echo' |
|
728 | +';}elseif (isset($_GET["event"])) {$aa = $_GET["event"]; $Rc = array("YEAR", "QUARTER", "MONTH", "DAY", "HOUR", "MINUTE", "WEEK", "SECOND", "YEAR_MONTH", "DAY_HOUR", "DAY_MINUTE", "DAY_SECOND", "HOUR_MINUTE", "HOUR_SECOND", "MINUTE_SECOND"); $Ef = array("ENABLED"=>"ENABLE", "DISABLED"=>"DISABLE", "SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE"); $L = $_POST; if ($_POST && !$k) {if ($_POST["drop"])query_redirect("DROP EVENT " . idf_escape($aa), substr(ME, 0, -1), 'Event has been dropped.'); elseif (in_array($L["INTERVAL_FIELD"], $Rc) && isset($Ef[$L["STATUS"]])) {$mf = "\nON SCHEDULE " . ($L["INTERVAL_VALUE"] ? "EVERY " . q($L["INTERVAL_VALUE"]) . " $L[INTERVAL_FIELD]" . ($L["STARTS"] ? " STARTS " . q($L["STARTS"]) : "") . ($L["ENDS"] ? " ENDS " . q($L["ENDS"]) : "") : "AT " . q($L["STARTS"])) . " ON COMPLETION" . ($L["ON_COMPLETION"] ? "" : " NOT") . " PRESERVE"; queries_redirect(substr(ME, 0, -1), ($aa != "" ? 'Event has been altered.' : 'Event has been created.'), queries(($aa != "" ? "ALTER EVENT " . idf_escape($aa) . $mf . ($aa != $L["EVENT_NAME"] ? "\nRENAME TO " . idf_escape($L["EVENT_NAME"]) : "") : "CREATE EVENT " . idf_escape($L["EVENT_NAME"]) . $mf) . "\n" . $Ef[$L["STATUS"]] . " COMMENT " . q($L["EVENT_COMMENT"]) . rtrim(" DO\n$L[EVENT_DEFINITION]", ";") . ";")); }}page_header(($aa != "" ? 'Alter event' . ": " . h($aa) : 'Create event'), $k); if (!$L && $aa != "") {$M = get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = " . q(DB) . " AND EVENT_NAME = " . q($aa)); $L = reset($M); }echo' |
|
729 | 729 | <form action="" method="post"> |
730 | 730 | <table cellspacing="0"> |
731 | -<tr><th>Name<td><input name="EVENT_NAME" value="',h($L["EVENT_NAME"]),'" maxlength="64" autocapitalize="off"> |
|
732 | -<tr><th title="datetime">Start<td><input name="STARTS" value="',h("$L[EXECUTE_AT]$L[STARTS]"),'"> |
|
733 | -<tr><th title="datetime">End<td><input name="ENDS" value="',h($L["ENDS"]),'"> |
|
734 | -<tr><th>Every<td><input type="number" name="INTERVAL_VALUE" value="',h($L["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$Rc,$L["INTERVAL_FIELD"]),'<tr><th>Status<td>',html_select("STATUS",$Ef,$L["STATUS"]),'<tr><th>Comment<td><input name="EVENT_COMMENT" value="',h($L["EVENT_COMMENT"]),'" maxlength="64"> |
|
735 | -<tr><th> <td>',checkbox("ON_COMPLETION","PRESERVE",$L["ON_COMPLETION"]=="PRESERVE",'On completion preserve'),'</table> |
|
736 | -<p>';textarea("EVENT_DEFINITION",$L["EVENT_DEFINITION"]);echo'<p> |
|
731 | +<tr><th>Name<td><input name="EVENT_NAME" value="',h($L["EVENT_NAME"]), '" maxlength="64" autocapitalize="off"> |
|
732 | +<tr><th title="datetime">Start<td><input name="STARTS" value="',h("$L[EXECUTE_AT]$L[STARTS]"), '"> |
|
733 | +<tr><th title="datetime">End<td><input name="ENDS" value="',h($L["ENDS"]), '"> |
|
734 | +<tr><th>Every<td><input type="number" name="INTERVAL_VALUE" value="',h($L["INTERVAL_VALUE"]), '" class="size"> ', html_select("INTERVAL_FIELD", $Rc, $L["INTERVAL_FIELD"]), '<tr><th>Status<td>', html_select("STATUS", $Ef, $L["STATUS"]), '<tr><th>Comment<td><input name="EVENT_COMMENT" value="', h($L["EVENT_COMMENT"]), '" maxlength="64"> |
|
735 | +<tr><th> <td>',checkbox("ON_COMPLETION", "PRESERVE", $L["ON_COMPLETION"] == "PRESERVE", 'On completion preserve'), '</table> |
|
736 | +<p>';textarea("EVENT_DEFINITION", $L["EVENT_DEFINITION"]); echo'<p> |
|
737 | 737 | <input type="submit" value="Save"> |
738 | -';if($aa!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'"> |
|
738 | +';if ($aa != "") {echo'<input type="submit" name="drop" value="Drop"', confirm(), '>'; }echo'<input type="hidden" name="token" value="', $T, '"> |
|
739 | 739 | </form> |
740 | -';}elseif(isset($_GET["procedure"])){$da=$_GET["procedure"];$if=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$L=$_POST;$L["fields"]=(array)$L["fields"];if($_POST&&!process_fields($L["fields"])&&!$k){$Xf="$L[name]_adminer_".uniqid();drop_create("DROP $if ".idf_escape($da),create_routine($if,$L),"DROP $if ".idf_escape($L["name"]),create_routine($if,array("name"=>$Xf)+$L),"DROP $if ".idf_escape($Xf),substr(ME,0,-1),'Routine has been dropped.','Routine has been altered.','Routine has been created.',$da,$L["name"]);}page_header(($da!=""?(isset($_GET["function"])?'Alter function':'Alter procedure').": ".h($da):(isset($_GET["function"])?'Create function':'Create procedure')),$k);if(!$_POST&&$da!=""){$L=routine($da,$if);$L["name"]=$da;}$Xa=get_vals("SHOW CHARACTER SET");sort($Xa);$jf=routine_languages();echo' |
|
740 | +';}elseif (isset($_GET["procedure"])) {$da = $_GET["procedure"]; $if = (isset($_GET["function"]) ? "FUNCTION" : "PROCEDURE"); $L = $_POST; $L["fields"] = (array) $L["fields"]; if ($_POST && !process_fields($L["fields"]) && !$k) {$Xf = "$L[name]_adminer_" . uniqid(); drop_create("DROP $if " . idf_escape($da), create_routine($if, $L), "DROP $if " . idf_escape($L["name"]), create_routine($if, array("name"=>$Xf) + $L), "DROP $if " . idf_escape($Xf), substr(ME, 0, -1), 'Routine has been dropped.', 'Routine has been altered.', 'Routine has been created.', $da, $L["name"]); }page_header(($da != "" ? (isset($_GET["function"]) ? 'Alter function' : 'Alter procedure') . ": " . h($da) : (isset($_GET["function"]) ? 'Create function' : 'Create procedure')), $k); if (!$_POST && $da != "") {$L = routine($da, $if); $L["name"] = $da; }$Xa = get_vals("SHOW CHARACTER SET"); sort($Xa); $jf = routine_languages(); echo' |
|
741 | 741 | <form action="" method="post" id="form"> |
742 | -<p>Name: <input name="name" value="',h($L["name"]),'" maxlength="64" autocapitalize="off"> |
|
743 | -',($jf?'Language'.": ".html_select("language",$jf,$L["language"]):""),'<input type="submit" value="Save"> |
|
742 | +<p>Name: <input name="name" value="',h($L["name"]), '" maxlength="64" autocapitalize="off"> |
|
743 | +',($jf ? 'Language' . ": " . html_select("language", $jf, $L["language"]) : ""), '<input type="submit" value="Save"> |
|
744 | 744 | <table cellspacing="0" class="nowrap"> |
745 | -';edit_fields($L["fields"],$Xa,$if);if(isset($_GET["function"])){echo"<tr><td>".'Return type';edit_type("returns",$L["returns"],$Xa);}echo'</table> |
|
746 | -<p>';textarea("definition",$L["definition"]);echo'<p> |
|
745 | +';edit_fields($L["fields"], $Xa, $if); if (isset($_GET["function"])) {echo"<tr><td>" . 'Return type'; edit_type("returns", $L["returns"], $Xa); }echo'</table> |
|
746 | +<p>';textarea("definition", $L["definition"]); echo'<p> |
|
747 | 747 | <input type="submit" value="Save"> |
748 | -';if($da!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'"> |
|
748 | +';if ($da != "") {echo'<input type="submit" name="drop" value="Drop"', confirm(), '>'; }echo'<input type="hidden" name="token" value="', $T, '"> |
|
749 | 749 | </form> |
750 | -';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$F=$_GET["name"];$pg=trigger_options();$L=(array)trigger($F)+array("Trigger"=>$a."_bi");if($_POST){if(!$k&&in_array($_POST["Timing"],$pg["Timing"])&&in_array($_POST["Event"],$pg["Event"])&&in_array($_POST["Type"],$pg["Type"])){$Ud=" ON ".table($a);$Fb="DROP TRIGGER ".idf_escape($F).($y=="pgsql"?$Ud:"");$B=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($Fb,$B,'Trigger has been dropped.');else{if($F!="")queries($Fb);queries_redirect($B,($F!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($Ud,$_POST)));if($F!="")queries(create_trigger($Ud,$L+array("Type"=>reset($pg["Type"]))));}}$L=$_POST;}page_header(($F!=""?'Alter trigger'.": ".h($F):'Create trigger'),$k,array("table"=>$a));echo' |
|
750 | +';}elseif (isset($_GET["trigger"])) {$a = $_GET["trigger"]; $F = $_GET["name"]; $pg = trigger_options(); $L = (array) trigger($F) + array("Trigger"=>$a . "_bi"); if ($_POST) {if (!$k && in_array($_POST["Timing"], $pg["Timing"]) && in_array($_POST["Event"], $pg["Event"]) && in_array($_POST["Type"], $pg["Type"])) {$Ud = " ON " . table($a); $Fb = "DROP TRIGGER " . idf_escape($F) . ($y == "pgsql" ? $Ud : ""); $B = ME . "table=" . urlencode($a); if ($_POST["drop"])query_redirect($Fb, $B, 'Trigger has been dropped.'); else {if ($F != "")queries($Fb); queries_redirect($B, ($F != "" ? 'Trigger has been altered.' : 'Trigger has been created.'), queries(create_trigger($Ud, $_POST))); if ($F != "")queries(create_trigger($Ud, $L + array("Type"=>reset($pg["Type"])))); }}$L = $_POST; }page_header(($F != "" ? 'Alter trigger' . ": " . h($F) : 'Create trigger'), $k, array("table"=>$a)); echo' |
|
751 | 751 | <form action="" method="post" id="form"> |
752 | 752 | <table cellspacing="0"> |
753 | -<tr><th>Time<td>',html_select("Timing",$pg["Timing"],$L["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>Event<td>',html_select("Event",$pg["Event"],$L["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$pg["Event"])?" <input name='Of' value='".h($L["Of"])."' class='hidden'>":""),'<tr><th>Type<td>',html_select("Type",$pg["Type"],$L["Type"]),'</table> |
|
754 | -<p>Name: <input name="Trigger" value="',h($L["Trigger"]);?>" maxlength="64" autocapitalize="off"> |
|
753 | +<tr><th>Time<td>',html_select("Timing", $pg["Timing"], $L["Timing"], "triggerChange(/^" . preg_quote($a, "/") . "_[ba][iud]$/, '" . js_escape($a) . "', this.form);"), '<tr><th>Event<td>', html_select("Event", $pg["Event"], $L["Event"], "this.form['Timing'].onchange();"), (in_array("UPDATE OF", $pg["Event"]) ? " <input name='Of' value='" . h($L["Of"]) . "' class='hidden'>" : ""), '<tr><th>Type<td>', html_select("Type", $pg["Type"], $L["Type"]), '</table> |
|
754 | +<p>Name: <input name="Trigger" value="',h($L["Trigger"]); ?>" maxlength="64" autocapitalize="off"> |
|
755 | 755 | <script type="text/javascript">document.getElementById('form')['Timing'].onchange();</script> |
756 | -<p><?php textarea("Statement",$L["Statement"]);echo'<p> |
|
756 | +<p><?php textarea("Statement", $L["Statement"]); echo'<p> |
|
757 | 757 | <input type="submit" value="Save"> |
758 | -';if($F!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'"> |
|
758 | +';if ($F != "") {echo'<input type="submit" name="drop" value="Drop"', confirm(), '>'; }echo'<input type="hidden" name="token" value="', $T, '"> |
|
759 | 759 | </form> |
760 | -';}elseif(isset($_GET["user"])){$fa=$_GET["user"];$Le=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$L){foreach(explode(",",($L["Privilege"]=="Grant option"?"":$L["Context"]))as$hb)$Le[$hb][$L["Privilege"]]=$L["Comment"];}$Le["Server Admin"]+=$Le["File access on server"];$Le["Databases"]["Create routine"]=$Le["Procedures"]["Create routine"];unset($Le["Procedures"]["Create routine"]);$Le["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$Le["Columns"][$X]=$Le["Tables"][$X];unset($Le["Server Admin"]["Usage"]);foreach($Le["Tables"]as$z=>$X)unset($Le["Databases"][$z]);$Hd=array();if($_POST){foreach($_POST["objects"]as$z=>$X)$Hd[$X]=(array)$Hd[$X]+(array)$_POST["grants"][$z];}$yc=array();$Sd="";if(isset($_GET["host"])&&($J=$e->query("SHOW GRANTS FOR ".q($fa)."@".q($_GET["host"])))){while($L=$J->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$L[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~',$C[1],$rd,PREG_SET_ORDER)){foreach($rd |
|
761 | -as$X){if($X[1]!="USAGE")$yc["$C[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$L[0]))$yc["$C[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$L[0],$C))$Sd=$C[1];}}if($_POST&&!$k){$Td=(isset($_GET["host"])?q($fa)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $Td",ME."privileges=",'User has been dropped.');else{$Jd=q($_POST["user"])."@".q($_POST["host"]);$ve=$_POST["pass"];if($ve!=''&&!$_POST["hashed"]){$ve=$e->result("SELECT PASSWORD(".q($ve).")");$k=!$ve;}$lb=false;if(!$k){if($Td!=$Jd){$lb=queries(($e->server_info<5?"GRANT USAGE ON *.* TO":"CREATE USER")." $Jd IDENTIFIED BY PASSWORD ".q($ve));$k=!$lb;}elseif($ve!=$Sd)queries("SET PASSWORD FOR $Jd = ".q($ve));}if(!$k){$ff=array();foreach($Hd |
|
762 | -as$Nd=>$r){if(isset($_GET["grant"]))$r=array_filter($r);$r=array_keys($r);if(isset($_GET["grant"]))$ff=array_diff(array_keys(array_filter($Hd[$Nd],'strlen')),$r);elseif($Td==$Jd){$Qd=array_keys((array)$yc[$Nd]);$ff=array_diff($Qd,$r);$r=array_diff($r,$Qd);unset($yc[$Nd]);}if(preg_match('~^(.+)\\s*(\\(.*\\))?$~U',$Nd,$C)&&(!grant("REVOKE",$ff,$C[2]," ON $C[1] FROM $Jd")||!grant("GRANT",$r,$C[2]," ON $C[1] TO $Jd"))){$k=true;break;}}}if(!$k&&isset($_GET["host"])){if($Td!=$Jd)queries("DROP USER $Td");elseif(!isset($_GET["grant"])){foreach($yc |
|
763 | -as$Nd=>$ff){if(preg_match('~^(.+)(\\(.*\\))?$~U',$Nd,$C))grant("REVOKE",array_keys($ff),$C[2]," ON $C[1] FROM $Jd");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$k);if($lb)$e->query("DROP USER $Jd");}}page_header((isset($_GET["host"])?'Username'.": ".h("$fa@$_GET[host]"):'Create user'),$k,array("privileges"=>array('','Privileges')));if($_POST){$L=$_POST;$yc=$Hd;}else{$L=$_GET+array("host"=>$e->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$L["pass"]=$Sd;if($Sd!="")$L["hashed"]=true;$yc[(DB==""||$yc?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post"> |
|
760 | +';}elseif (isset($_GET["user"])) {$fa = $_GET["user"]; $Le = array(""=>array("All privileges"=>"")); foreach (get_rows("SHOW PRIVILEGES")as$L) {foreach (explode(",", ($L["Privilege"] == "Grant option" ? "" : $L["Context"]))as$hb)$Le[$hb][$L["Privilege"]] = $L["Comment"]; }$Le["Server Admin"] += $Le["File access on server"]; $Le["Databases"]["Create routine"] = $Le["Procedures"]["Create routine"]; unset($Le["Procedures"]["Create routine"]); $Le["Columns"] = array(); foreach (array("Select", "Insert", "Update", "References")as$X)$Le["Columns"][$X] = $Le["Tables"][$X]; unset($Le["Server Admin"]["Usage"]); foreach ($Le["Tables"]as$z=>$X)unset($Le["Databases"][$z]); $Hd = array(); if ($_POST) {foreach ($_POST["objects"]as$z=>$X)$Hd[$X] = (array) $Hd[$X] + (array) $_POST["grants"][$z]; }$yc = array(); $Sd = ""; if (isset($_GET["host"]) && ($J = $e->query("SHOW GRANTS FOR " . q($fa) . "@" . q($_GET["host"])))) {while ($L = $J->fetch_row()) {if (preg_match('~GRANT (.*) ON (.*) TO ~', $L[0], $C) && preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~', $C[1], $rd, PREG_SET_ORDER)) {foreach ($rd |
|
761 | +as$X) {if ($X[1] != "USAGE")$yc["$C[2]$X[2]"][$X[1]] = true; if (preg_match('~ WITH GRANT OPTION~', $L[0]))$yc["$C[2]$X[2]"]["GRANT OPTION"] = true; }}if (preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~", $L[0], $C))$Sd = $C[1]; }}if ($_POST && !$k) {$Td = (isset($_GET["host"]) ? q($fa) . "@" . q($_GET["host"]) : "''"); if ($_POST["drop"])query_redirect("DROP USER $Td", ME . "privileges=", 'User has been dropped.'); else {$Jd = q($_POST["user"]) . "@" . q($_POST["host"]); $ve = $_POST["pass"]; if ($ve != '' && !$_POST["hashed"]) {$ve = $e->result("SELECT PASSWORD(" . q($ve) . ")"); $k = !$ve; }$lb = false; if (!$k) {if ($Td != $Jd) {$lb = queries(($e->server_info < 5 ? "GRANT USAGE ON *.* TO" : "CREATE USER") . " $Jd IDENTIFIED BY PASSWORD " . q($ve)); $k = !$lb; }elseif ($ve != $Sd)queries("SET PASSWORD FOR $Jd = " . q($ve)); }if (!$k) {$ff = array(); foreach ($Hd |
|
762 | +as$Nd=>$r) {if (isset($_GET["grant"]))$r = array_filter($r); $r = array_keys($r); if (isset($_GET["grant"]))$ff = array_diff(array_keys(array_filter($Hd[$Nd], 'strlen')), $r); elseif ($Td == $Jd) {$Qd = array_keys((array) $yc[$Nd]); $ff = array_diff($Qd, $r); $r = array_diff($r, $Qd); unset($yc[$Nd]); }if (preg_match('~^(.+)\\s*(\\(.*\\))?$~U', $Nd, $C) && (!grant("REVOKE", $ff, $C[2], " ON $C[1] FROM $Jd") || !grant("GRANT", $r, $C[2], " ON $C[1] TO $Jd"))) {$k = true; break; }}}if (!$k && isset($_GET["host"])) {if ($Td != $Jd)queries("DROP USER $Td"); elseif (!isset($_GET["grant"])) {foreach ($yc |
|
763 | +as$Nd=>$ff) {if (preg_match('~^(.+)(\\(.*\\))?$~U', $Nd, $C))grant("REVOKE", array_keys($ff), $C[2], " ON $C[1] FROM $Jd"); }}}queries_redirect(ME . "privileges=", (isset($_GET["host"]) ? 'User has been altered.' : 'User has been created.'), !$k); if ($lb)$e->query("DROP USER $Jd"); }}page_header((isset($_GET["host"]) ? 'Username' . ": " . h("$fa@$_GET[host]") : 'Create user'), $k, array("privileges"=>array('', 'Privileges'))); if ($_POST) {$L = $_POST; $yc = $Hd; } else {$L = $_GET + array("host"=>$e->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)")); $L["pass"] = $Sd; if ($Sd != "")$L["hashed"] = true; $yc[(DB == "" || $yc ? "" : idf_escape(addcslashes(DB, "%_\\"))) . ".*"] = array(); }echo'<form action="" method="post"> |
|
764 | 764 | <table cellspacing="0"> |
765 | -<tr><th>Server<td><input name="host" maxlength="60" value="',h($L["host"]),'" autocapitalize="off"> |
|
766 | -<tr><th>Username<td><input name="user" maxlength="16" value="',h($L["user"]),'" autocapitalize="off"> |
|
767 | -<tr><th>Password<td><input name="pass" id="pass" value="',h($L["pass"]),'"> |
|
768 | -';if(!$L["hashed"]){echo'<script type="text/javascript">typePassword(document.getElementById(\'pass\'));</script>';}echo |
|
769 | -checkbox("hashed",1,$L["hashed"],'Hashed',"typePassword(this.form['pass'], this.checked);"),'</table> |
|
765 | +<tr><th>Server<td><input name="host" maxlength="60" value="',h($L["host"]), '" autocapitalize="off"> |
|
766 | +<tr><th>Username<td><input name="user" maxlength="16" value="',h($L["user"]), '" autocapitalize="off"> |
|
767 | +<tr><th>Password<td><input name="pass" id="pass" value="',h($L["pass"]), '"> |
|
768 | +';if (!$L["hashed"]) {echo'<script type="text/javascript">typePassword(document.getElementById(\'pass\'));</script>'; }echo |
|
769 | +checkbox("hashed", 1, $L["hashed"], 'Hashed', "typePassword(this.form['pass'], this.checked);"), '</table> |
|
770 | 770 | |
771 | -';echo"<table cellspacing='0'>\n","<thead><tr><th colspan='2'>".'Privileges'.doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($yc |
|
772 | -as$Nd=>$r){echo'<th>'.($Nd!="*.*"?"<input name='objects[$t]' value='".h($Nd)."' size='10' autocapitalize='off'>":"<input type='hidden' name='objects[$t]' value='*.*' size='10'>*.*");$t++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>'Server',"Databases"=>'Database',"Tables"=>'Table',"Columns"=>'Column',"Procedures"=>'Routine',)as$hb=>$xb){foreach((array)$Le[$hb]as$Ke=>$bb){echo"<tr".odd()."><td".($xb?">$xb<td":" colspan='2'").' lang="en" title="'.h($bb).'">'.h($Ke);$t=0;foreach($yc |
|
773 | -as$Nd=>$r){$F="'grants[$t][".h(strtoupper($Ke))."]'";$Y=$r[strtoupper($Ke)];if($hb=="Server Admin"&&$Nd!=(isset($yc["*.*"])?"*.*":".*"))echo"<td> ";elseif(isset($_GET["grant"]))echo"<td><select name=$F><option><option value='1'".($Y?" selected":"").">".'Grant'."<option value='0'".($Y=="0"?" selected":"").">".'Revoke'."</select>";else |
|
774 | -echo"<td align='center'><label class='block'><input type='checkbox' name=$F value='1'".($Y?" checked":"").($Ke=="All privileges"?" id='grants-$t-all'":($Ke=="Grant option"?"":" onclick=\"if (this.checked) formUncheck('grants-$t-all');\""))."></label>";$t++;}}}echo"</table>\n",'<p> |
|
771 | +';echo"<table cellspacing='0'>\n", "<thead><tr><th colspan='2'>" . 'Privileges' . doc_link(array('sql'=>"grant.html#priv_level")); $t = 0; foreach ($yc |
|
772 | +as$Nd=>$r) {echo'<th>' . ($Nd != "*.*" ? "<input name='objects[$t]' value='" . h($Nd) . "' size='10' autocapitalize='off'>" : "<input type='hidden' name='objects[$t]' value='*.*' size='10'>*.*"); $t++; }echo"</thead>\n"; foreach (array(""=>"", "Server Admin"=>'Server', "Databases"=>'Database', "Tables"=>'Table', "Columns"=>'Column', "Procedures"=>'Routine',)as$hb=>$xb) {foreach ((array) $Le[$hb]as$Ke=>$bb) {echo"<tr" . odd() . "><td" . ($xb ? ">$xb<td" : " colspan='2'") . ' lang="en" title="' . h($bb) . '">' . h($Ke); $t = 0; foreach ($yc |
|
773 | +as$Nd=>$r) {$F = "'grants[$t][" . h(strtoupper($Ke)) . "]'"; $Y = $r[strtoupper($Ke)]; if ($hb == "Server Admin" && $Nd != (isset($yc["*.*"]) ? "*.*" : ".*"))echo"<td> "; elseif (isset($_GET["grant"]))echo"<td><select name=$F><option><option value='1'" . ($Y ? " selected" : "") . ">" . 'Grant' . "<option value='0'" . ($Y == "0" ? " selected" : "") . ">" . 'Revoke' . "</select>"; else |
|
774 | +echo"<td align='center'><label class='block'><input type='checkbox' name=$F value='1'" . ($Y ? " checked" : "") . ($Ke == "All privileges" ? " id='grants-$t-all'" : ($Ke == "Grant option" ? "" : " onclick=\"if (this.checked) formUncheck('grants-$t-all');\"")) . "></label>"; $t++; }}}echo"</table>\n", '<p> |
|
775 | 775 | <input type="submit" value="Save"> |
776 | -';if(isset($_GET["host"])){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'"> |
|
776 | +';if (isset($_GET["host"])) {echo'<input type="submit" name="drop" value="Drop"', confirm(), '>'; }echo'<input type="hidden" name="token" value="', $T, '"> |
|
777 | 777 | </form> |
778 | -';}elseif(isset($_GET["processlist"])){if(support("kill")&&$_POST&&!$k){$cd=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$cd++;}queries_redirect(ME."processlist=",lang(array('%d process has been killed.','%d processes have been killed.'),$cd),$cd||!$_POST["kill"]);}page_header('Process list',$k);echo' |
|
778 | +';}elseif (isset($_GET["processlist"])) {if (support("kill") && $_POST && !$k) {$cd = 0; foreach ((array) $_POST["kill"]as$X) {if (kill_process($X))$cd++; }queries_redirect(ME . "processlist=", lang(array('%d process has been killed.', '%d processes have been killed.'), $cd), $cd || !$_POST["kill"]); }page_header('Process list', $k); echo' |
|
779 | 779 | <form action="" method="post"> |
780 | 780 | <table cellspacing="0" onclick="tableClick(event);" ondblclick="tableClick(event, true);" class="nowrap checkable"> |
781 | -';$t=-1;foreach(process_list()as$t=>$L){if(!$t){echo"<thead><tr lang='en'>".(support("kill")?"<th> ":"");foreach($L |
|
782 | -as$z=>$X)echo"<th>$z".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($z),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"../b14237/dynviews_2088.htm",));echo"</thead>\n";}echo"<tr".odd().">".(support("kill")?"<td>".checkbox("kill[]",$L[$y=="sql"?"Id":"pid"],0):"");foreach($L |
|
783 | -as$z=>$X)echo"<td>".(($y=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$L["Command"])&&$X!="")||($y=="pgsql"&&$z=="current_query"&&$X!="<IDLE>")||($y=="oracle"&&$z=="sql_text"&&$X!="")?"<code class='jush-$y'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($L["db"]!=""?"db=".urlencode($L["db"])."&":"")."sql=".urlencode($X)).'">'.'Clone'.'</a>':nbsp($X));echo"\n";}echo'</table> |
|
781 | +';$t = -1; foreach (process_list()as$t=>$L) {if (!$t) {echo"<thead><tr lang='en'>" . (support("kill") ? "<th> " : ""); foreach ($L |
|
782 | +as$z=>$X)echo"<th>$z" . doc_link(array('sql'=>"show-processlist.html#processlist_" . strtolower($z), 'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW", 'oracle'=>"../b14237/dynviews_2088.htm",)); echo"</thead>\n"; }echo"<tr" . odd() . ">" . (support("kill") ? "<td>" . checkbox("kill[]", $L[$y == "sql" ? "Id" : "pid"], 0) : ""); foreach ($L |
|
783 | +as$z=>$X)echo"<td>" . (($y == "sql" && $z == "Info" && preg_match("~Query|Killed~", $L["Command"]) && $X != "") || ($y == "pgsql" && $z == "current_query" && $X != "<IDLE>") || ($y == "oracle" && $z == "sql_text" && $X != "") ? "<code class='jush-$y'>" . shorten_utf8($X, 100, "</code>") . ' <a href="' . h(ME . ($L["db"] != "" ? "db=" . urlencode($L["db"]) . "&" : "") . "sql=" . urlencode($X)) . '">' . 'Clone' . '</a>' : nbsp($X)); echo"\n"; }echo'</table> |
|
784 | 784 | <script type=\'text/javascript\'>tableCheck();</script> |
785 | 785 | <p> |
786 | -';if(support("kill")){echo($t+1)."/".sprintf('%d in total',max_connections()),"<p><input type='submit' value='".'Kill'."'>\n";}echo'<input type="hidden" name="token" value="',$T,'"> |
|
786 | +';if (support("kill")) {echo($t + 1) . "/" . sprintf('%d in total', max_connections()), "<p><input type='submit' value='" . 'Kill' . "'>\n"; }echo'<input type="hidden" name="token" value="', $T, '"> |
|
787 | 787 | </form> |
788 | -';}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$w=indexes($a);$m=fields($a);$o=column_foreign_keys($a);$Pd="";if($R["Oid"]){$Pd=($y=="sqlite"?"rowid":"oid");$w[]=array("type"=>"PRIMARY","columns"=>array($Pd));}parse_str($_COOKIE["adminer_import"],$ma);$gf=array();$d=array();$ag=null;foreach($m |
|
789 | -as$z=>$l){$F=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$F!=""){$d[$z]=html_entity_decode(strip_tags($F),ENT_QUOTES);if(is_shortable($l))$ag=$b->selectLengthProcess();}$gf+=$l["privileges"];}list($N,$s)=$b->selectColumnsProcess($d,$w);$Vc=count($s)<count($N);$Z=$b->selectSearchProcess($m,$w);$de=$b->selectOrderProcess($m,$w);$_=$b->selectLimitProcess();$wc=($N?implode(", ",$N):"*".($Pd?", $Pd":"")).convert_fields($d,$m,$N)."\nFROM ".table($a);$zc=($s&&$Vc?"\nGROUP BY ".implode(", ",$s):"").($de?"\nORDER BY ".implode(", ",$de):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$xg=>$L){$ua=convert_field($m[key($L)]);$N=array($ua?$ua:idf_escape(key($L)));$Z[]=where_check($xg,$m);$K=$j->select($a,$N,$Z,$N);if($K)echo |
|
790 | -reset($K->fetch_row());}exit;}if($_POST&&!$k){$Pg=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Oa=array();foreach($_POST["check"]as$Ma)$Oa[]=where_check($Ma,$m);$Pg[]="((".implode(") OR (",$Oa)."))";}$Pg=($Pg?"\nWHERE ".implode(" AND ",$Pg):"");$He=$zg=null;foreach($w |
|
791 | -as$v){if($v["type"]=="PRIMARY"){$He=array_flip($v["columns"]);$zg=($N?$He:array());break;}}foreach((array)$zg |
|
792 | -as$z=>$X){if(in_array(idf_escape($z),$N))unset($zg[$z]);}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$zg===array())$I="SELECT $wc$Pg$zc";else{$vg=array();foreach($_POST["check"]as$X)$vg[]="(SELECT".limit($wc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$m).$zc,1).")";$I=implode(" UNION ALL ",$vg);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Z,$o)){if($_POST["save"]||$_POST["delete"]){$J=true;$na=0;$P=array();if(!$_POST["delete"]){foreach($d |
|
793 | -as$F=>$X){$X=process_input($m[$F]);if($X!==null&&($_POST["clone"]||$X!==false))$P[idf_escape($F)]=($X!==false?$X:idf_escape($F));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($zg===array()&&is_array($_POST["check"]))||$Vc){$J=($_POST["delete"]?$j->delete($a,$Pg):($_POST["clone"]?queries("INSERT $I$Pg"):$j->update($a,$P,$Pg)));$na=$e->affected_rows;}else{foreach((array)$_POST["check"]as$X){$Og="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$m);$J=($_POST["delete"]?$j->delete($a,$Og,1):($_POST["clone"]?queries("INSERT".limit1($I,$Og)):$j->update($a,$P,$Og)));if(!$J)break;$na+=$e->affected_rows;}}}$D=lang(array('%d item has been affected.','%d items have been affected.'),$na);if($_POST["clone"]&&$J&&$na==1){$gd=last_id();if($gd)$D=sprintf('Item%s has been inserted.'," $gd");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$k='Ctrl+click on a value to modify it.';else{$J=true;$na=0;foreach($_POST["val"]as$xg=>$L){$P=array();foreach($L |
|
794 | -as$z=>$X){$z=bracket_escape($z,1);$P[idf_escape($z)]=(preg_match('~char|text~',$m[$z]["type"])||$X!=""?$b->processInput($m[$z],$X):"NULL");}$J=$j->update($a,$P," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($xg,$m),!($Vc||$zg===array())," ");if(!$J)break;$na+=$e->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$na),$J);}}elseif(!is_string($mc=get_file("csv_file",true)))$k=upload_error($mc);elseif(!preg_match('~~u',$mc))$k='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($ma["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Ya=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$mc,$rd);$na=count($rd[0]);$j->begin();$sf=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($rd[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$sf]*)$sf~",$X.$sf,$sd);if(!$z&&!array_diff($sd[1],$Ya)){$Ya=$sd[1];$na--;}else{$P=array();foreach($sd[1]as$t=>$Ua)$P[idf_escape($Ya[$t])]=($Ua==""&&$m[$Ya[$t]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Ua))));$M[]=$P;}}$J=(!$M||$j->insertUpdate($a,$M,$He));if($J)$j->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$na),$J);$j->rollback();}}}$Pf=$b->tableName($R);if(is_ajax()){page_headers();ob_start();}else |
|
795 | -page_header('Select'.": $Pf",$k);$P=null;if(isset($gf["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$X){if(count($o[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$P.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($R,$P);if(!$d&&support("table"))echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$d);$b->selectSearchPrint($Z,$d,$w);$b->selectOrderPrint($de,$d,$w);$b->selectLimitPrint($_);$b->selectLengthPrint($ag);$b->selectActionPrint($w);echo"</form>\n";$G=$_GET["page"];if($G=="last"){$vc=$e->result(count_rows($a,$Z,$Vc,$s));$G=floor(max(0,$vc-1)/$_);}$pf=$N;if(!$pf){$pf[]="*";if($Pd)$pf[]=$Pd;}$ib=convert_fields($d,$m,$N);if($ib)$pf[]=substr($ib,2);$J=$j->select($a,$pf,$Z,$s,$de,$_,$G,true);if(!$J)echo"<p class='error'>".error()."\n";else{if($y=="mssql"&&$G)$J->seek($_*$G);$Rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($G&&$y=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&+$_&&$s&&$Vc&&$y=="sql")$vc=$e->result(" SELECT FOUND_ROWS()");if(!$M)echo"<p class='message'>".'No rows.'."\n";else{$Ba=$b->backwardKeys($a,$Pf);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$s&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Gd=array();$xc=array();reset($N);$Te=1;foreach($M[0]as$z=>$X){if($z!=$Pd){$X=$_GET["columns"][key($N)];$l=$m[$N?($X?$X["col"]:current($N)):$z];$F=($l?$b->fieldName($l,$Te):($X["fun"]?"*":$z));if($F!=""){$Te++;$Gd[$z]=$F;$c=idf_escape($z);$Hc=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$xb="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($Hc.($de[0]==$c||$de[0]==$z||(!$de&&$Vc&&$s[0]==$c)?$xb:'')).'">';echo |
|
796 | -apply_sql_function($X["fun"],$F)."</a>";echo"<span class='column hidden'>","<a href='".h($Hc.$xb)."' title='".'descending'."' class='text'> ↓</a>";if(!$X["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($z)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>';echo"</span>";}$xc[$z]=$X["fun"];next($N);}}$md=array();if($_GET["modify"]){foreach($M |
|
797 | -as$L){foreach($L |
|
798 | -as$z=>$X)$md[$z]=max($md[$z],min(40,strlen(utf8_decode($X))));}}echo($Ba?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($_%2==1&&$G%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($M,$o)as$E=>$L){$wg=unique_array($M[$E],$w);if(!$wg){$wg=array();foreach($M[$E]as$z=>$X){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$z))$wg[$z]=$X;}}$xg="";foreach($wg |
|
799 | -as$z=>$X){if(($y=="sql"||$y=="pgsql")&&strlen($X)>64){$z=(strpos($z,'(')?$z:idf_escape($z));$z="MD5(".($y=='sql'&&preg_match("~^utf8_~",$m[$z]["collation"])?$z:"CONVERT($z USING ".charset($e).")").")";$X=md5($X);}$xg.="&".($X!==null?urlencode("where[".bracket_escape($z)."]")."=".urlencode($X):"null%5B%5D=".urlencode($z));}echo"<tr".odd().">".(!$s&&$N?"":"<td>".checkbox("check[]",substr($xg,1),in_array(substr($xg,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($Vc||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$xg)."'>".'edit'."</a>"));foreach($L |
|
800 | -as$z=>$X){if(isset($Gd[$z])){$l=$m[$z];if($X!=""&&(!isset($Rb[$z])||$Rb[$z]!=""))$Rb[$z]=(is_mail($X)?$Gd[$z]:"");$A="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$X!="")$A=ME.'download='.urlencode($a).'&field='.urlencode($z).$xg;if(!$A&&$X!==null){foreach((array)$o[$z]as$n){if(count($o[$z])==1||end($n["source"])==$z){$A="";foreach($n["source"]as$t=>$_f)$A.=where_link($t,$n["target"][$t],$M[$E][$_f]);$A=($n["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($n["db"]),ME):ME).'select='.urlencode($n["table"]).$A;if(count($n["source"])==1)break;}}}if($z=="COUNT(*)"){$A=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$wg))$A.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($wg |
|
801 | -as$Zc=>$W)$A.=where_link($t++,$Zc,$W);}$X=select_value($X,$A,$l,$ag);$u=h("val[$xg][".bracket_escape($z)."]");$Y=$_POST["val"][$xg][bracket_escape($z)];$Mb=!is_array($L[$z])&&is_utf8($X)&&$M[$E][$z]==$L[$z]&&!$xc[$z];$Zf=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$Mb)||$Y!==null){$Ac=h($Y!==null?$Y:$L[$z]);echo"<td>".($Zf?"<textarea name='$u' cols='30' rows='".(substr_count($L[$z],"\n")+1)."'>$Ac</textarea>":"<input name='$u' value='$Ac' size='$md[$z]'>");}else{$qd=strpos($X,"<i>...</i>");echo"<td id='$u' onclick=\"selectClick(this, event, ".($qd?2:($Zf?1:0)).($Mb?"":", '".h('Use edit link to modify this value.')."'").");\">$X";}}}if($Ba)echo"<td>";$b->backwardKeysPrint($Ba,$M[$E]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n";}if(($M||$G)&&!is_ajax()){$bc=true;if($_GET["page"]!="last"){if(!+$_)$vc=count($M);elseif($y!="sql"||!$Vc){$vc=($Vc?false:found_rows($R,$Z));if($vc<max(1e4,2*($G+1)*$_))$vc=reset(slow_query(count_rows($a,$Z,$Vc,$s)));else$bc=false;}}if(+$_&&($vc===false||$vc>$_||$G)){echo"<p class='pages'>";$ud=($vc===false?$G+(count($M)>=$_?2:1):floor(($vc-1)/$_));if($y!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($G+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$G).($G>5?" ...":"");for($t=max(1,$G-4);$t<min($ud,$G+5);$t++)echo |
|
802 | -pagination($t,$G);if($ud>0){echo($G+5<$ud?" ...":""),($bc&&$vc!==false?pagination($ud,$G):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$ud'>".'last'."</a>");}echo(($vc===false?count($M)+1:$vc-$G*$_)>$_?' <a href="'.h(remove_from_uri("page")."&page=".($G+1)).'" onclick="return !selectLoadMore(this, '.(+$_).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');}else{echo'Page'.":",pagination(0,$G).($G>1?" ...":""),($G?pagination($G,$G):""),($ud>$G?pagination($G+1,$G).($ud>$G+1?" ...":""):"");}}echo"<p class='count'>\n",($vc!==false?"(".($bc?"":"~ ").lang(array('%d row','%d rows'),$vc).") ":"");$Bb=($bc?"":"~ ").$vc;echo |
|
803 | -checkbox("all",1,0,'whole result',"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Bb' : checked); selectCount('selected2', this.checked || !checked ? '$Bb' : checked);")."\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div> |
|
804 | -<input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'> |
|
788 | +';}elseif (isset($_GET["select"])) {$a = $_GET["select"]; $R = table_status1($a); $w = indexes($a); $m = fields($a); $o = column_foreign_keys($a); $Pd = ""; if ($R["Oid"]) {$Pd = ($y == "sqlite" ? "rowid" : "oid"); $w[] = array("type"=>"PRIMARY", "columns"=>array($Pd)); }parse_str($_COOKIE["adminer_import"], $ma); $gf = array(); $d = array(); $ag = null; foreach ($m |
|
789 | +as$z=>$l) {$F = $b->fieldName($l); if (isset($l["privileges"]["select"]) && $F != "") {$d[$z] = html_entity_decode(strip_tags($F), ENT_QUOTES); if (is_shortable($l))$ag = $b->selectLengthProcess(); }$gf += $l["privileges"]; }list($N, $s) = $b->selectColumnsProcess($d, $w); $Vc = count($s) < count($N); $Z = $b->selectSearchProcess($m, $w); $de = $b->selectOrderProcess($m, $w); $_ = $b->selectLimitProcess(); $wc = ($N ? implode(", ", $N) : "*" . ($Pd ? ", $Pd" : "")) . convert_fields($d, $m, $N) . "\nFROM " . table($a); $zc = ($s && $Vc ? "\nGROUP BY " . implode(", ", $s) : "") . ($de ? "\nORDER BY " . implode(", ", $de) : ""); if ($_GET["val"] && is_ajax()) {header("Content-Type: text/plain; charset=utf-8"); foreach ($_GET["val"]as$xg=>$L) {$ua = convert_field($m[key($L)]); $N = array($ua ? $ua : idf_escape(key($L))); $Z[] = where_check($xg, $m); $K = $j->select($a, $N, $Z, $N); if ($K)echo |
|
790 | +reset($K->fetch_row()); }exit; }if ($_POST && !$k) {$Pg = $Z; if (!$_POST["all"] && is_array($_POST["check"])) {$Oa = array(); foreach ($_POST["check"]as$Ma)$Oa[] = where_check($Ma, $m); $Pg[] = "((" . implode(") OR (", $Oa) . "))"; }$Pg = ($Pg ? "\nWHERE " . implode(" AND ", $Pg) : ""); $He = $zg = null; foreach ($w |
|
791 | +as$v) {if ($v["type"] == "PRIMARY") {$He = array_flip($v["columns"]); $zg = ($N ? $He : array()); break; }}foreach ((array) $zg |
|
792 | +as$z=>$X) {if (in_array(idf_escape($z), $N))unset($zg[$z]); }if ($_POST["export"]) {cookie("adminer_import", "output=" . urlencode($_POST["output"]) . "&format=" . urlencode($_POST["format"])); dump_headers($a); $b->dumpTable($a, ""); if (!is_array($_POST["check"]) || $zg === array())$I = "SELECT $wc$Pg$zc"; else {$vg = array(); foreach ($_POST["check"]as$X)$vg[] = "(SELECT" . limit($wc, "\nWHERE " . ($Z ? implode(" AND ", $Z) . " AND " : "") . where_check($X, $m) . $zc, 1) . ")"; $I = implode(" UNION ALL ", $vg); }$b->dumpData($a, "table", $I); exit; }if (!$b->selectEmailProcess($Z, $o)) {if ($_POST["save"] || $_POST["delete"]) {$J = true; $na = 0; $P = array(); if (!$_POST["delete"]) {foreach ($d |
|
793 | +as$F=>$X) {$X = process_input($m[$F]); if ($X !== null && ($_POST["clone"] || $X !== false))$P[idf_escape($F)] = ($X !== false ? $X : idf_escape($F)); }}if ($_POST["delete"] || $P) {if ($_POST["clone"])$I = "INTO " . table($a) . " (" . implode(", ", array_keys($P)) . ")\nSELECT " . implode(", ", $P) . "\nFROM " . table($a); if ($_POST["all"] || ($zg === array() && is_array($_POST["check"])) || $Vc) {$J = ($_POST["delete"] ? $j->delete($a, $Pg) : ($_POST["clone"] ? queries("INSERT $I$Pg") : $j->update($a, $P, $Pg))); $na = $e->affected_rows; } else {foreach ((array) $_POST["check"]as$X) {$Og = "\nWHERE " . ($Z ? implode(" AND ", $Z) . " AND " : "") . where_check($X, $m); $J = ($_POST["delete"] ? $j->delete($a, $Og, 1) : ($_POST["clone"] ? queries("INSERT" . limit1($I, $Og)) : $j->update($a, $P, $Og))); if (!$J)break; $na += $e->affected_rows; }}}$D = lang(array('%d item has been affected.', '%d items have been affected.'), $na); if ($_POST["clone"] && $J && $na == 1) {$gd = last_id(); if ($gd)$D = sprintf('Item%s has been inserted.', " $gd"); }queries_redirect(remove_from_uri($_POST["all"] && $_POST["delete"] ? "page" : ""), $D, $J); if (!$_POST["delete"]) {edit_form($a, $m, (array) $_POST["fields"], !$_POST["clone"]); page_footer(); exit; }}elseif (!$_POST["import"]) {if (!$_POST["val"])$k = 'Ctrl+click on a value to modify it.'; else {$J = true; $na = 0; foreach ($_POST["val"]as$xg=>$L) {$P = array(); foreach ($L |
|
794 | +as$z=>$X) {$z = bracket_escape($z, 1); $P[idf_escape($z)] = (preg_match('~char|text~', $m[$z]["type"]) || $X != "" ? $b->processInput($m[$z], $X) : "NULL"); }$J = $j->update($a, $P, " WHERE " . ($Z ? implode(" AND ", $Z) . " AND " : "") . where_check($xg, $m), !($Vc || $zg === array()), " "); if (!$J)break; $na += $e->affected_rows; }queries_redirect(remove_from_uri(), lang(array('%d item has been affected.', '%d items have been affected.'), $na), $J); }}elseif (!is_string($mc = get_file("csv_file", true)))$k = upload_error($mc); elseif (!preg_match('~~u', $mc))$k = 'File must be in UTF-8 encoding.'; else {cookie("adminer_import", "output=" . urlencode($ma["output"]) . "&format=" . urlencode($_POST["separator"])); $J = true; $Ya = array_keys($m); preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~', $mc, $rd); $na = count($rd[0]); $j->begin(); $sf = ($_POST["separator"] == "csv" ? "," : ($_POST["separator"] == "tsv" ? "\t" : ";")); $M = array(); foreach ($rd[0]as$z=>$X) {preg_match_all("~((?>\"[^\"]*\")+|[^$sf]*)$sf~", $X . $sf, $sd); if (!$z && !array_diff($sd[1], $Ya)) {$Ya = $sd[1]; $na--; } else {$P = array(); foreach ($sd[1]as$t=>$Ua)$P[idf_escape($Ya[$t])] = ($Ua == "" && $m[$Ya[$t]]["null"] ? "NULL" : q(str_replace('""', '"', preg_replace('~^"|"$~', '', $Ua)))); $M[] = $P; }}$J = (!$M || $j->insertUpdate($a, $M, $He)); if ($J)$j->commit(); queries_redirect(remove_from_uri("page"), lang(array('%d row has been imported.', '%d rows have been imported.'), $na), $J); $j->rollback(); }}}$Pf = $b->tableName($R); if (is_ajax()) {page_headers(); ob_start(); } else |
|
795 | +page_header('Select' . ": $Pf", $k); $P = null; if (isset($gf["insert"]) || !support("table")) {$P = ""; foreach ((array) $_GET["where"]as$X) {if (count($o[$X["col"]]) == 1 && ($X["op"] == "=" || (!$X["op"] && !preg_match('~[_%]~', $X["val"]))))$P .= "&set" . urlencode("[" . bracket_escape($X["col"]) . "]") . "=" . urlencode($X["val"]); }}$b->selectLinks($R, $P); if (!$d && support("table"))echo"<p class='error'>" . 'Unable to select the table' . ($m ? "." : ": " . error()) . "\n"; else {echo"<form action='' id='form'>\n", "<div style='display: none;'>"; hidden_fields_get(); echo(DB != "" ? '<input type="hidden" name="db" value="' . h(DB) . '">' . (isset($_GET["ns"]) ? '<input type="hidden" name="ns" value="' . h($_GET["ns"]) . '">' : "") : ""); echo'<input type="hidden" name="select" value="' . h($a) . '">', "</div>\n"; $b->selectColumnsPrint($N, $d); $b->selectSearchPrint($Z, $d, $w); $b->selectOrderPrint($de, $d, $w); $b->selectLimitPrint($_); $b->selectLengthPrint($ag); $b->selectActionPrint($w); echo"</form>\n"; $G = $_GET["page"]; if ($G == "last") {$vc = $e->result(count_rows($a, $Z, $Vc, $s)); $G = floor(max(0, $vc - 1) / $_); }$pf = $N; if (!$pf) {$pf[] = "*"; if ($Pd)$pf[] = $Pd; }$ib = convert_fields($d, $m, $N); if ($ib)$pf[] = substr($ib, 2); $J = $j->select($a, $pf, $Z, $s, $de, $_, $G, true); if (!$J)echo"<p class='error'>" . error() . "\n"; else {if ($y == "mssql" && $G)$J->seek($_ * $G); $Rb = array(); echo"<form action='' method='post' enctype='multipart/form-data'>\n"; $M = array(); while ($L = $J->fetch_assoc()) {if ($G && $y == "oracle")unset($L["RNUM"]); $M[] = $L; }if ($_GET["page"] != "last" && +$_ && $s && $Vc && $y == "sql")$vc = $e->result(" SELECT FOUND_ROWS()"); if (!$M)echo"<p class='message'>" . 'No rows.' . "\n"; else {$Ba = $b->backwardKeys($a, $Pf); echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n", "<thead><tr>" . (!$s && $N ? "" : "<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='" . h($_GET["modify"] ? remove_from_uri("modify") : $_SERVER["REQUEST_URI"] . "&modify=1") . "'>" . 'Modify' . "</a>"); $Gd = array(); $xc = array(); reset($N); $Te = 1; foreach ($M[0]as$z=>$X) {if ($z != $Pd) {$X = $_GET["columns"][key($N)]; $l = $m[$N ? ($X ? $X["col"] : current($N)) : $z]; $F = ($l ? $b->fieldName($l, $Te) : ($X["fun"] ? "*" : $z)); if ($F != "") {$Te++; $Gd[$z] = $F; $c = idf_escape($z); $Hc = remove_from_uri('(order|desc)[^=]*|page') . '&order%5B0%5D=' . urlencode($z); $xb = "&desc%5B0%5D=1"; echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">', '<a href="' . h($Hc . ($de[0] == $c || $de[0] == $z || (!$de && $Vc && $s[0] == $c) ? $xb : '')) . '">'; echo |
|
796 | +apply_sql_function($X["fun"], $F) . "</a>"; echo"<span class='column hidden'>", "<a href='" . h($Hc . $xb) . "' title='" . 'descending' . "' class='text'> ↓</a>"; if (!$X["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\'' . h(js_escape($z)) . '\'); return false;" title="' . 'Search' . '" class="text jsonly"> =</a>'; echo"</span>"; }$xc[$z] = $X["fun"]; next($N); }}$md = array(); if ($_GET["modify"]) {foreach ($M |
|
797 | +as$L) {foreach ($L |
|
798 | +as$z=>$X)$md[$z] = max($md[$z], min(40, strlen(utf8_decode($X)))); }}echo($Ba ? "<th>" . 'Relations' : "") . "</thead>\n"; if (is_ajax()) {if ($_ % 2 == 1 && $G % 2 == 1)odd(); ob_end_clean(); }foreach ($b->rowDescriptions($M, $o)as$E=>$L) {$wg = unique_array($M[$E], $w); if (!$wg) {$wg = array(); foreach ($M[$E]as$z=>$X) {if (!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~', $z))$wg[$z] = $X; }}$xg = ""; foreach ($wg |
|
799 | +as$z=>$X) {if (($y == "sql" || $y == "pgsql") && strlen($X) > 64) {$z = (strpos($z, '(') ? $z : idf_escape($z)); $z = "MD5(" . ($y == 'sql' && preg_match("~^utf8_~", $m[$z]["collation"]) ? $z : "CONVERT($z USING " . charset($e) . ")") . ")"; $X = md5($X); }$xg .= "&" . ($X !== null ? urlencode("where[" . bracket_escape($z) . "]") . "=" . urlencode($X) : "null%5B%5D=" . urlencode($z)); }echo"<tr" . odd() . ">" . (!$s && $N ? "" : "<td>" . checkbox("check[]", substr($xg, 1), in_array(substr($xg, 1), (array) $_POST["check"]), "", "this.form['all'].checked = false; formUncheck('all-page');") . ($Vc || information_schema(DB) ? "" : " <a href='" . h(ME . "edit=" . urlencode($a) . $xg) . "'>" . 'edit' . "</a>")); foreach ($L |
|
800 | +as$z=>$X) {if (isset($Gd[$z])) {$l = $m[$z]; if ($X != "" && (!isset($Rb[$z]) || $Rb[$z] != ""))$Rb[$z] = (is_mail($X) ? $Gd[$z] : ""); $A = ""; if (preg_match('~blob|bytea|raw|file~', $l["type"]) && $X != "")$A = ME . 'download=' . urlencode($a) . '&field=' . urlencode($z) . $xg; if (!$A && $X !== null) {foreach ((array) $o[$z]as$n) {if (count($o[$z]) == 1 || end($n["source"]) == $z) {$A = ""; foreach ($n["source"]as$t=>$_f)$A .= where_link($t, $n["target"][$t], $M[$E][$_f]); $A = ($n["db"] != "" ? preg_replace('~([?&]db=)[^&]+~', '\\1' . urlencode($n["db"]), ME) : ME) . 'select=' . urlencode($n["table"]) . $A; if (count($n["source"]) == 1)break; }}}if ($z == "COUNT(*)") {$A = ME . "select=" . urlencode($a); $t = 0; foreach ((array) $_GET["where"]as$W) {if (!array_key_exists($W["col"], $wg))$A .= where_link($t++, $W["col"], $W["val"], $W["op"]); }foreach ($wg |
|
801 | +as$Zc=>$W)$A .= where_link($t++, $Zc, $W); }$X = select_value($X, $A, $l, $ag); $u = h("val[$xg][" . bracket_escape($z) . "]"); $Y = $_POST["val"][$xg][bracket_escape($z)]; $Mb = !is_array($L[$z]) && is_utf8($X) && $M[$E][$z] == $L[$z] && !$xc[$z]; $Zf = preg_match('~text|lob~', $l["type"]); if (($_GET["modify"] && $Mb) || $Y !== null) {$Ac = h($Y !== null ? $Y : $L[$z]); echo"<td>" . ($Zf ? "<textarea name='$u' cols='30' rows='" . (substr_count($L[$z], "\n") + 1) . "'>$Ac</textarea>" : "<input name='$u' value='$Ac' size='$md[$z]'>"); } else {$qd = strpos($X, "<i>...</i>"); echo"<td id='$u' onclick=\"selectClick(this, event, " . ($qd ? 2 : ($Zf ? 1 : 0)) . ($Mb ? "" : ", '" . h('Use edit link to modify this value.') . "'") . ");\">$X"; }}}if ($Ba)echo"<td>"; $b->backwardKeysPrint($Ba, $M[$E]); echo"</tr>\n"; }if (is_ajax())exit; echo"</table>\n"; }if (($M || $G) && !is_ajax()) {$bc = true; if ($_GET["page"] != "last") {if (!+$_)$vc = count($M); elseif ($y != "sql" || !$Vc) {$vc = ($Vc ? false : found_rows($R, $Z)); if ($vc < max(1e4, 2 * ($G + 1) * $_))$vc = reset(slow_query(count_rows($a, $Z, $Vc, $s))); else$bc = false; }}if (+$_ && ($vc === false || $vc > $_ || $G)) {echo"<p class='pages'>"; $ud = ($vc === false ? $G + (count($M) >= $_ ? 2 : 1) : floor(($vc - 1) / $_)); if ($y != "simpledb") {echo'<a href="' . h(remove_from_uri("page")) . "\" onclick=\"pageClick(this.href, +prompt('" . 'Page' . "', '" . ($G + 1) . "'), event); return false;\">" . 'Page' . "</a>:", pagination(0, $G) . ($G > 5 ? " ..." : ""); for ($t = max(1, $G - 4); $t < min($ud, $G + 5); $t++)echo |
|
802 | +pagination($t, $G); if ($ud > 0) {echo($G + 5 < $ud ? " ..." : ""), ($bc && $vc !== false ? pagination($ud, $G) : " <a href='" . h(remove_from_uri("page") . "&page=last") . "' title='~$ud'>" . 'last' . "</a>"); }echo(($vc === false ? count($M) + 1 : $vc - $G * $_) > $_ ? ' <a href="' . h(remove_from_uri("page") . "&page=" . ($G + 1)) . '" onclick="return !selectLoadMore(this, ' . (+$_) . ', \'' . 'Loading' . '...\');" class="loadmore">' . 'Load more data' . '</a>' : ''); } else {echo'Page' . ":", pagination(0, $G) . ($G > 1 ? " ..." : ""), ($G ? pagination($G, $G) : ""), ($ud > $G ? pagination($G + 1, $G) . ($ud > $G + 1 ? " ..." : "") : ""); }}echo"<p class='count'>\n", ($vc !== false ? "(" . ($bc ? "" : "~ ") . lang(array('%d row', '%d rows'), $vc) . ") " : ""); $Bb = ($bc ? "" : "~ ") . $vc; echo |
|
803 | +checkbox("all", 1, 0, 'whole result', "var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Bb' : checked); selectCount('selected2', this.checked || !checked ? '$Bb' : checked);") . "\n"; if ($b->selectCommandPrint()) {echo'<fieldset', ($_GET["modify"] ? '' : ' class="jsonly"'), '><legend>Modify</legend><div> |
|
804 | +<input type="submit" value="Save"',($_GET["modify"] ? '' : ' title="' . 'Ctrl+click on a value to modify it.' . '"'), '> |
|
805 | 805 | </div></fieldset> |
806 | 806 | <fieldset><legend>Selected <span id="selected"></span></legend><div> |
807 | 807 | <input type="submit" name="edit" value="Edit"> |
808 | 808 | <input type="submit" name="clone" value="Clone"> |
809 | -<input type="submit" name="delete" value="Delete"',confirm(),'> |
|
809 | +<input type="submit" name="delete" value="Delete"',confirm(), '> |
|
810 | 810 | </div></fieldset> |
811 | -';}$tc=$b->dumpFormat();foreach((array)$_GET["columns"]as$c){if($c["fun"]){unset($tc['sql']);break;}}if($tc){print_fieldset("export",'Export'." <span id='selected2'></span>");$me=$b->dumpOutput();echo($me?html_select("output",$me,$ma["output"])." ":""),html_select("format",$tc,$ma["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$s&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ma["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($Rb,'strlen'),$d);echo"<p><input type='hidden' name='token' value='$T'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$Df=isset($_GET["status"]);page_header($Df?'Status':'Variables');$Ig=($Df?show_status():show_variables());if(!$Ig)echo"<p class='message'>".'No rows.'."\n";else{echo"<table cellspacing='0'>\n";foreach($Ig |
|
812 | -as$z=>$X){echo"<tr>","<th><code class='jush-".$y.($Df?"status":"set")."'>".h($z)."</code>","<td>".nbsp($X);}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Mf=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$F=>$R){json_row("Comment-$F",nbsp($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$z)json_row("$z-$F",nbsp($R[$z]));foreach($Mf+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($R[$z]!=""){$X=format_number($R[$z]);json_row("$z-$F",($z=="Rows"&&$X&&$R["Engine"]==($Bf=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Mf[$z]))$Mf[$z]+=($R["Engine"]!="InnoDB"||$z!="Data_free"?$R[$z]:0);}elseif(array_key_exists($z,$R))json_row("$z-$F");}}}foreach($Mf |
|
813 | -as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$e->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$i=>$X){json_row("tables-$i",$X);json_row("size-$i",db_size($i));}json_row("");}exit;}else{$Uf=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Uf&&!$k&&!$_POST["search"]){$J=true;$D="";if($y=="sql"&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$J=truncate_tables($_POST["tables"]);$D='Tables have been truncated.';}elseif($_POST["move"]){$J=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tables have been moved.';}elseif($_POST["copy"]){$J=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tables have been copied.';}elseif($_POST["drop"]){if($_POST["views"])$J=drop_views($_POST["views"]);if($J&&$_POST["tables"])$J=drop_tables($_POST["tables"]);$D='Tables have been dropped.';}elseif($y!="sql"){$J=($y=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D='Tables have been optimized.';}elseif(!$_POST["tables"])$D='No tables.';elseif($J=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($L=$J->fetch_assoc())$D.="<b>".h($L["Table"])."</b>: ".h($L["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$D,$J);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$k,true);if($b->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".'Tables and views'."</h3>\n";$Tf=tables_list();if(!$Tf)echo"<p class='message'>".'No tables.'."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".'Search data in tables'." <span id='selected2'></span></legend><div>","<input type='search' name='query' value='".h($_POST["query"])."'> <input type='submit' name='search' value='".'Search'."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!="")search_tables();}echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">';$Cb=doc_link(array('sql'=>'show-table-status.html'));echo'<th>'.'Table','<td>'.'Engine'.doc_link(array('sql'=>'storage-engines.html')),'<td>'.'Collation'.doc_link(array('sql'=>'charset-mysql.html')),'<td>'.'Data Length'.$Cb,'<td>'.'Index Length'.$Cb,'<td>'.'Data Free'.$Cb,'<td>'.'Auto Increment'.doc_link(array('sql'=>'example-auto-increment.html')),'<td>'.'Rows'.$Cb,(support("comment")?'<td>'.'Comment'.$Cb:''),"</thead>\n";$S=0;foreach($Tf |
|
814 | -as$F=>$U){$Kg=($U!==null&&!preg_match('~table~i',$U));echo'<tr'.odd().'><td>'.checkbox(($Kg?"views[]":"tables[]"),$F,in_array($F,$Uf,true),"","formUncheck('check-all');"),'<th>'.(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($F).'" title="'.'Show structure'.'">'.h($F).'</a>':h($F));if($Kg){echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($F).'" title="'.'Alter view'.'">'.(preg_match('~materialized~i',$U)?'Materialized View':'View').'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($F).'" title="'.'Select data'.'">?</a>';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",'Alter table'),"Index_length"=>array("indexes",'Alter indexes'),"Data_free"=>array("edit",'New item'),"Auto_increment"=>array("auto_increment=1&create",'Alter table'),"Rows"=>array("select",'Select data'),)as$z=>$A){$u=" id='$z-".h($F)."'";echo($A?"<td align='right'>".(support("table")||$z=="Rows"||(support("indexes")&&$z!="Data_length")?"<a href='".h(ME."$A[0]=").urlencode($F)."'$u title='$A[1]'>?</a>":"<span$u>?</span>"):"<td id='$z-".h($F)."'> ");}$S++;}echo(support("comment")?"<td id='Comment-".h($F)."'> ":"");}echo"<tr><td> <th>".sprintf('%d in total',count($Tf)),"<td>".nbsp($y=="sql"?$e->result("SELECT @@storage_engine"):""),"<td>".nbsp(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$z)echo"<td align='right' id='sum-$z'> ";echo"</table>\n";if(!information_schema(DB)){$Gg="<input type='submit' value='".'Vacuum'."'".on_help("'VACUUM'")."> ";$ae="<input type='submit' name='optimize' value='".'Optimize'."'".on_help($y=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'")."> ";echo"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>".($y=="sqlite"?$Gg:($y=="pgsql"?$Gg.$ae:($y=="sql"?"<input type='submit' value='".'Analyze'."'".on_help("'ANALYZE TABLE'")."> ".$ae."<input type='submit' name='check' value='".'Check'."'".on_help("'CHECK TABLE'")."> "."<input type='submit' name='repair' value='".'Repair'."'".on_help("'REPAIR TABLE'")."> ":"")))."<input type='submit' name='truncate' value='".'Truncate'."'".confirm().on_help($y=="sqlite"?"'DELETE'":"'TRUNCATE".($y=="pgsql"?"'":" TABLE'"))."> "."<input type='submit' name='drop' value='".'Drop'."'".confirm().on_help("'DROP TABLE'").">\n";$h=(support("scheme")?$b->schemas():$b->databases());if(count($h)!=1&&$y!="sqlite"){$i=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".'Move to other database'.": ",($h?html_select("target",$h,$i):'<input name="target" value="'.h($i).'" autocapitalize="off">')," <input type='submit' name='move' value='".'Move'."'>",(support("copy")?" <input type='submit' name='copy' value='".'Copy'."'>":""),"\n";}echo"<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $S);":"")."\">\n";echo"<input type='hidden' name='token' value='$T'>\n","</div></fieldset>\n";}echo"</form>\n","<script type='text/javascript'>tableCheck();</script>\n";}echo'<p class="links"><a href="'.h(ME).'create=">'.'Create table'."</a>\n",(support("view")?'<a href="'.h(ME).'view=">'.'Create view'."</a>\n":""),(support("materializedview")?'<a href="'.h(ME).'view=&materialized=1">'.'Create materialized view'."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".'Routines'."</h3>\n";$kf=routines();if($kf){echo"<table cellspacing='0'>\n",'<thead><tr><th>'.'Name'.'<td>'.'Type'.'<td>'.'Return type'."<td> </thead>\n";odd('');foreach($kf |
|
815 | -as$L){echo'<tr'.odd().'>','<th><a href="'.h(ME).($L["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($L["ROUTINE_NAME"]).'">'.h($L["ROUTINE_NAME"]).'</a>','<td>'.h($L["ROUTINE_TYPE"]),'<td>'.h($L["DTD_IDENTIFIER"]),'<td><a href="'.h(ME).($L["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($L["ROUTINE_NAME"]).'">'.'Alter'."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.'Create procedure'.'</a>':'').'<a href="'.h(ME).'function=">'.'Create function'."</a>\n";}if(support("event")){echo"<h3 id='events'>".'Events'."</h3>\n";$M=get_rows("SHOW EVENTS");if($M){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Name'."<td>".'Schedule'."<td>".'Start'."<td>".'End'."<td></thead>\n";foreach($M |
|
816 | -as$L){echo"<tr>","<th>".h($L["Name"]),"<td>".($L["Execute at"]?'At given time'."<td>".$L["Execute at"]:'Every'." ".$L["Interval value"]." ".$L["Interval field"]."<td>$L[Starts]"),"<td>$L[Ends]",'<td><a href="'.h(ME).'event='.urlencode($L["Name"]).'">'.'Alter'.'</a>';}echo"</table>\n";$Zb=$e->result("SELECT @@event_scheduler");if($Zb&&$Zb!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Zb)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.'Create event'."</a>\n";}if($Tf)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";}}}page_footer(); |
|
817 | 811 | \ No newline at end of file |
812 | +';}$tc = $b->dumpFormat(); foreach ((array) $_GET["columns"]as$c) {if ($c["fun"]) {unset($tc['sql']); break; }}if ($tc) {print_fieldset("export", 'Export' . " <span id='selected2'></span>"); $me = $b->dumpOutput(); echo($me ? html_select("output", $me, $ma["output"]) . " " : ""), html_select("format", $tc, $ma["format"]), " <input type='submit' name='export' value='" . 'Export' . "'>\n", "</div></fieldset>\n"; }echo(!$s && $N ? "" : "<script type='text/javascript'>tableCheck();</script>\n"); }if ($b->selectImportPrint()) {print_fieldset("import", 'Import', !$M); echo"<input type='file' name='csv_file'> ", html_select("separator", array("csv"=>"CSV,", "csv;"=>"CSV;", "tsv"=>"TSV"), $ma["format"], 1); echo" <input type='submit' name='import' value='" . 'Import' . "'>", "</div></fieldset>\n"; }$b->selectEmailPrint(array_filter($Rb, 'strlen'), $d); echo"<p><input type='hidden' name='token' value='$T'></p>\n", "</form>\n"; }}if (is_ajax()) {ob_end_clean(); exit; }}elseif (isset($_GET["variables"])) {$Df = isset($_GET["status"]); page_header($Df ? 'Status' : 'Variables'); $Ig = ($Df ? show_status() : show_variables()); if (!$Ig)echo"<p class='message'>" . 'No rows.' . "\n"; else {echo"<table cellspacing='0'>\n"; foreach ($Ig |
|
813 | +as$z=>$X) {echo"<tr>", "<th><code class='jush-" . $y . ($Df ? "status" : "set") . "'>" . h($z) . "</code>", "<td>" . nbsp($X); }echo"</table>\n"; }}elseif (isset($_GET["script"])) {header("Content-Type: text/javascript; charset=utf-8"); if ($_GET["script"] == "db") {$Mf = array("Data_length"=>0, "Index_length"=>0, "Data_free"=>0); foreach (table_status()as$F=>$R) {json_row("Comment-$F", nbsp($R["Comment"])); if (!is_view($R)) {foreach (array("Engine", "Collation")as$z)json_row("$z-$F", nbsp($R[$z])); foreach ($Mf + array("Auto_increment"=>0, "Rows"=>0)as$z=>$X) {if ($R[$z] != "") {$X = format_number($R[$z]); json_row("$z-$F", ($z == "Rows" && $X && $R["Engine"] == ($Bf == "pgsql" ? "table" : "InnoDB") ? "~ $X" : $X)); if (isset($Mf[$z]))$Mf[$z] += ($R["Engine"] != "InnoDB" || $z != "Data_free" ? $R[$z] : 0); }elseif (array_key_exists($z, $R))json_row("$z-$F"); }}}foreach ($Mf |
|
814 | +as$z=>$X)json_row("sum-$z", format_number($X)); json_row(""); }elseif ($_GET["script"] == "kill")$e->query("KILL " . number($_POST["kill"])); else {foreach (count_tables($b->databases())as$i=>$X) {json_row("tables-$i", $X); json_row("size-$i", db_size($i)); }json_row(""); }exit; } else {$Uf = array_merge((array) $_POST["tables"], (array) $_POST["views"]); if ($Uf && !$k && !$_POST["search"]) {$J = true; $D = ""; if ($y == "sql" && count($_POST["tables"]) > 1 && ($_POST["drop"] || $_POST["truncate"] || $_POST["copy"]))queries("SET foreign_key_checks = 0"); if ($_POST["truncate"]) {if ($_POST["tables"])$J = truncate_tables($_POST["tables"]); $D = 'Tables have been truncated.'; }elseif ($_POST["move"]) {$J = move_tables((array) $_POST["tables"], (array) $_POST["views"], $_POST["target"]); $D = 'Tables have been moved.'; }elseif ($_POST["copy"]) {$J = copy_tables((array) $_POST["tables"], (array) $_POST["views"], $_POST["target"]); $D = 'Tables have been copied.'; }elseif ($_POST["drop"]) {if ($_POST["views"])$J = drop_views($_POST["views"]); if ($J && $_POST["tables"])$J = drop_tables($_POST["tables"]); $D = 'Tables have been dropped.'; }elseif ($y != "sql") {$J = ($y == "sqlite" ? queries("VACUUM") : apply_queries("VACUUM" . ($_POST["optimize"] ? "" : " ANALYZE"), $_POST["tables"])); $D = 'Tables have been optimized.'; }elseif (!$_POST["tables"])$D = 'No tables.'; elseif ($J = queries(($_POST["optimize"] ? "OPTIMIZE" : ($_POST["check"] ? "CHECK" : ($_POST["repair"] ? "REPAIR" : "ANALYZE"))) . " TABLE " . implode(", ", array_map('idf_escape', $_POST["tables"])))) {while ($L = $J->fetch_assoc())$D .= "<b>" . h($L["Table"]) . "</b>: " . h($L["Msg_text"]) . "<br>"; }queries_redirect(substr(ME, 0, -1), $D, $J); }page_header(($_GET["ns"] == "" ? 'Database' . ": " . h(DB) : 'Schema' . ": " . h($_GET["ns"])), $k, true); if ($b->homepage()) {if ($_GET["ns"] !== "") {echo"<h3 id='tables-views'>" . 'Tables and views' . "</h3>\n"; $Tf = tables_list(); if (!$Tf)echo"<p class='message'>" . 'No tables.' . "\n"; else {echo"<form action='' method='post'>\n"; if (support("table")) {echo"<fieldset><legend>" . 'Search data in tables' . " <span id='selected2'></span></legend><div>", "<input type='search' name='query' value='" . h($_POST["query"]) . "'> <input type='submit' name='search' value='" . 'Search' . "'>\n", "</div></fieldset>\n"; if ($_POST["search"] && $_POST["query"] != "")search_tables(); }echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n", '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">'; $Cb = doc_link(array('sql'=>'show-table-status.html')); echo'<th>' . 'Table', '<td>' . 'Engine' . doc_link(array('sql'=>'storage-engines.html')), '<td>' . 'Collation' . doc_link(array('sql'=>'charset-mysql.html')), '<td>' . 'Data Length' . $Cb, '<td>' . 'Index Length' . $Cb, '<td>' . 'Data Free' . $Cb, '<td>' . 'Auto Increment' . doc_link(array('sql'=>'example-auto-increment.html')), '<td>' . 'Rows' . $Cb, (support("comment") ? '<td>' . 'Comment' . $Cb : ''), "</thead>\n"; $S = 0; foreach ($Tf |
|
815 | +as$F=>$U) {$Kg = ($U !== null && !preg_match('~table~i', $U)); echo'<tr' . odd() . '><td>' . checkbox(($Kg ? "views[]" : "tables[]"), $F, in_array($F, $Uf, true), "", "formUncheck('check-all');"), '<th>' . (support("table") || support("indexes") ? '<a href="' . h(ME) . 'table=' . urlencode($F) . '" title="' . 'Show structure' . '">' . h($F) . '</a>' : h($F)); if ($Kg) {echo'<td colspan="6"><a href="' . h(ME) . "view=" . urlencode($F) . '" title="' . 'Alter view' . '">' . (preg_match('~materialized~i', $U) ? 'Materialized View' : 'View') . '</a>', '<td align="right"><a href="' . h(ME) . "select=" . urlencode($F) . '" title="' . 'Select data' . '">?</a>'; } else {foreach (array("Engine"=>array(), "Collation"=>array(), "Data_length"=>array("create", 'Alter table'), "Index_length"=>array("indexes", 'Alter indexes'), "Data_free"=>array("edit", 'New item'), "Auto_increment"=>array("auto_increment=1&create", 'Alter table'), "Rows"=>array("select", 'Select data'),)as$z=>$A) {$u = " id='$z-" . h($F) . "'"; echo($A ? "<td align='right'>" . (support("table") || $z == "Rows" || (support("indexes") && $z != "Data_length") ? "<a href='" . h(ME . "$A[0]=") . urlencode($F) . "'$u title='$A[1]'>?</a>" : "<span$u>?</span>") : "<td id='$z-" . h($F) . "'> "); }$S++; }echo(support("comment") ? "<td id='Comment-" . h($F) . "'> " : ""); }echo"<tr><td> <th>" . sprintf('%d in total', count($Tf)), "<td>" . nbsp($y == "sql" ? $e->result("SELECT @@storage_engine") : ""), "<td>" . nbsp(db_collation(DB, collations())); foreach (array("Data_length", "Index_length", "Data_free")as$z)echo"<td align='right' id='sum-$z'> "; echo"</table>\n"; if (!information_schema(DB)) {$Gg = "<input type='submit' value='" . 'Vacuum' . "'" . on_help("'VACUUM'") . "> "; $ae = "<input type='submit' name='optimize' value='" . 'Optimize' . "'" . on_help($y == "sql" ? "'OPTIMIZE TABLE'" : "'VACUUM OPTIMIZE'") . "> "; echo"<fieldset><legend>" . 'Selected' . " <span id='selected'></span></legend><div>" . ($y == "sqlite" ? $Gg : ($y == "pgsql" ? $Gg . $ae : ($y == "sql" ? "<input type='submit' value='" . 'Analyze' . "'" . on_help("'ANALYZE TABLE'") . "> " . $ae . "<input type='submit' name='check' value='" . 'Check' . "'" . on_help("'CHECK TABLE'") . "> " . "<input type='submit' name='repair' value='" . 'Repair' . "'" . on_help("'REPAIR TABLE'") . "> " : ""))) . "<input type='submit' name='truncate' value='" . 'Truncate' . "'" . confirm() . on_help($y == "sqlite" ? "'DELETE'" : "'TRUNCATE" . ($y == "pgsql" ? "'" : " TABLE'")) . "> " . "<input type='submit' name='drop' value='" . 'Drop' . "'" . confirm() . on_help("'DROP TABLE'") . ">\n"; $h = (support("scheme") ? $b->schemas() : $b->databases()); if (count($h) != 1 && $y != "sqlite") {$i = (isset($_POST["target"]) ? $_POST["target"] : (support("scheme") ? $_GET["ns"] : DB)); echo"<p>" . 'Move to other database' . ": ", ($h ? html_select("target", $h, $i) : '<input name="target" value="' . h($i) . '" autocapitalize="off">'), " <input type='submit' name='move' value='" . 'Move' . "'>", (support("copy") ? " <input type='submit' name='copy' value='" . 'Copy' . "'>" : ""), "\n"; }echo"<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^(tables|views)\[/));" . (support("table") ? " selectCount('selected2', formChecked(this, /^tables\[/) || $S);" : "") . "\">\n"; echo"<input type='hidden' name='token' value='$T'>\n", "</div></fieldset>\n"; }echo"</form>\n", "<script type='text/javascript'>tableCheck();</script>\n"; }echo'<p class="links"><a href="' . h(ME) . 'create=">' . 'Create table' . "</a>\n", (support("view") ? '<a href="' . h(ME) . 'view=">' . 'Create view' . "</a>\n" : ""), (support("materializedview") ? '<a href="' . h(ME) . 'view=&materialized=1">' . 'Create materialized view' . "</a>\n" : ""); if (support("routine")) {echo"<h3 id='routines'>" . 'Routines' . "</h3>\n"; $kf = routines(); if ($kf) {echo"<table cellspacing='0'>\n", '<thead><tr><th>' . 'Name' . '<td>' . 'Type' . '<td>' . 'Return type' . "<td> </thead>\n"; odd(''); foreach ($kf |
|
816 | +as$L) {echo'<tr' . odd() . '>', '<th><a href="' . h(ME) . ($L["ROUTINE_TYPE"] != "PROCEDURE" ? 'callf=' : 'call=') . urlencode($L["ROUTINE_NAME"]) . '">' . h($L["ROUTINE_NAME"]) . '</a>', '<td>' . h($L["ROUTINE_TYPE"]), '<td>' . h($L["DTD_IDENTIFIER"]), '<td><a href="' . h(ME) . ($L["ROUTINE_TYPE"] != "PROCEDURE" ? 'function=' : 'procedure=') . urlencode($L["ROUTINE_NAME"]) . '">' . 'Alter' . "</a>"; }echo"</table>\n"; }echo'<p class="links">' . (support("procedure") ? '<a href="' . h(ME) . 'procedure=">' . 'Create procedure' . '</a>' : '') . '<a href="' . h(ME) . 'function=">' . 'Create function' . "</a>\n"; }if (support("event")) {echo"<h3 id='events'>" . 'Events' . "</h3>\n"; $M = get_rows("SHOW EVENTS"); if ($M) {echo"<table cellspacing='0'>\n", "<thead><tr><th>" . 'Name' . "<td>" . 'Schedule' . "<td>" . 'Start' . "<td>" . 'End' . "<td></thead>\n"; foreach ($M |
|
817 | +as$L) {echo"<tr>", "<th>" . h($L["Name"]), "<td>" . ($L["Execute at"] ? 'At given time' . "<td>" . $L["Execute at"] : 'Every' . " " . $L["Interval value"] . " " . $L["Interval field"] . "<td>$L[Starts]"), "<td>$L[Ends]", '<td><a href="' . h(ME) . 'event=' . urlencode($L["Name"]) . '">' . 'Alter' . '</a>'; }echo"</table>\n"; $Zb = $e->result("SELECT @@event_scheduler"); if ($Zb && $Zb != "ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: " . h($Zb) . "\n"; }echo'<p class="links"><a href="' . h(ME) . 'event=">' . 'Create event' . "</a>\n"; }if ($Tf)echo"<script type='text/javascript'>ajaxSetHtml('" . js_escape(ME) . "script=db');</script>\n"; }}}page_footer(); |
|
818 | 818 | \ No newline at end of file |
@@ -6,11 +6,17 @@ discard block |
||
6 | 6 | * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 |
7 | 7 | * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other) |
8 | 8 | * @version 4.2.5 |
9 | -*/error_reporting(6135);$oc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($oc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$yg=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($yg)$$X=$yg;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo |
|
10 | -lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo |
|
11 | -lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8У’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤ l^íZ6˜ej…Á³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxlÖ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù €‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò 'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,EÍ`T¦É6Ûˆ-“Åì¾ÅÚŽT[Ѫz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø •ÿš´hìÁ{Ü£•î ËÔ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØÍ‡Ð¢©‰‚êcâ¡óB’—}Ø&`ˆîr+E“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼ ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡ ³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£Ì]6¦Þ1´!1M±¸@a´/`Û>Ù¸üߣðÕßÈÛC/ì6à´·#p@pá‘óÿ`Zÿôýchý°\0ïë\0oæ€ð4OýOøi\0-\n«îÿ/ý\0£Dð.ÿ ¾ˆ.“Ä\0fiŒÀÈ«£€˜\0Œ”IDüç\0§¬\rïý0f ßoãÿ€ÊGüˆðeJ|\r€¿ýl ¨3ê~ðiP›¦&“É¿/µ\09 ^\0r•0]¯õ ¾Â›oõŽ.ý\" °ÐÑM¥íðvÿP€ZÐÕmpËP°ùÚœÐÞ¹ïô{§†C?²ÀkŽ“Ï¼}ð®þdöïʰ~=‘.Ô- é Ðm1>hûÏÛЕ1;QI‘OPÈ\rºcßpApV«k\rQ*èQ}ÏçŸq>˜Ðu15BqQ[1fûñl«Â€apå¯ü\0Û‘*ŒJ©Q=ñãّGÜäŠÕÁ±Ÿ±_ñ—ñbŒGHF.‚0Ôø = 2P™Àó æòÏçP!ò#(3 \nÙ!1&72fª`Â/å\0°‡\"PÁUõ\$ñ\r0Ìð,QrU&2fšÒ_²Xààò]ð9\"’S'òƒ'²yð8\r¨ú§òkW)Oõ)’*Ra%ã\\i—%ò‰&Ò³+r…’3ðS`…,ñvý¦&2×L–&Pu*›-ð˜0\"Á%HĬԞïÏ@Ø“±°H‰B–P(ÃÉ\$p&ý,1M ªØÃ®;\rnÁ.¯Ê I.Õ',1ò)Ó4ý²å2°u+ó3æ `ÈSŽŠpL\nt§’_*²S3;6r'h35¤55䜋d2q+6ñ8‘O7sC\"pm8Ò³“6³—9òm\n@e0É<8B8©<,( ¨8²Û\0è Ó0šJÙ<@¦ÐI¤«ÀR6pÔmGË\"11¤6ËÐ.\"æÀ‚ï5Ì‚ûÇ:àÜ8bêA1±;ƒ';Â?<*\$È,³Ìo= òTÓÖ/3Û#«ºÒ†¬");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
12 | -lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s> )â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n \ræs<ŒPi2INÆ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(Òm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$ CAÆ ä„¤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AKã¡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…): ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDùÑ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æÚŒÚ‡Ÿ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/ØX ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éï†PÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðÈôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEÐ€Ôøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6↬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F 4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀÎ t]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ 1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*/¹UÖVû‰¤þpì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Æ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·> —BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ ¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6Chº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ß§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)×…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üàå€ ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤ (€\r¹öGFžª@ؼÃúÙÀß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷Ƚà¸à\\P’,\"ª-rCÉrVäæY×·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê ‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rÔ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔÄ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„â¢ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ €ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;SÇ]ãñ@ËÇè:Ââ“÷I~Û‘•ÙùÒÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}Ï:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð‰)¯i4Ñu•sÁLjXÁMP¬‚^«ä5¹O’¥ bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE% dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> “ªÿ'Ó|“#hàÅœ˜6è¦\rñ.=(Ôv±…¥;`\"OøCÜ!âBŠ9ã.B!UEÌDáÄ‚d œ–€)ºKŠ Œ\0Þ» ÆmF~ B{O\0¨Ï©¡¦_éø³u#„–5 =LjÀò7´9 š6¢î£lCV‘€ŒTpÀÚ08± 1ÄÎx'0@gIw€Zã†@9ÇLᎎ\\v\0_(º\".ЯA[sÅ„ä€ê7I(azl_„EЦ<ñ€“tƒUöë7`tèÒ0ø‹(ßà3”=¦ço\$[Ìh×!¸B¦œ[HîR¶œœ) )nxaZ™#=HË8ð뛥 ”’%þ@0w5J’– ¸²A\"F:8NŠÏ\"Xù- èÔ¥?pj@)iUjƒÀ™\$Ìš-EÆ÷”E§´\n/¸œPÓB–P@y8j¾Y¼Kð³9 0ÊH€Ddš&0Œ¡èh“X \\Ñê\$Ë(ÁÐ`d\nEΤÀŽ@ÉJ“b*NRP\"(q.f#“dšGÈæD¾š¦M’n9:*€¶fÐŽt4æò:p½Mí(5%ÊQ\0e”Sb’4ú1¤ÉõeM‡),ŸR‘\"k§m?Ê\0rB¿( è\\èšÅ••de<£\\ÊBMò’i„¢L (Åh›ÚRÁ¿D›e\"r™CÊÖRä•ô¬å)9EJâQÒ˜> õO´ãí`šAÈ#®bh|HNÐ\$™%Z#˜4-® 2=ˆD‰ê„ñ\\´æ0څȆ¶õ\\’\"©aUR Ã-I¨ãk0\0ÛæÙ‚ÊÃæHýH³ ÀÎ~u”]QŽƒFš1')-¡\0'óxüeüˆÑ·ŸÌÕp\$ÆQØeaþ#\"ëRǰÀœ@\\èÂF0ѸÀÕ#\"–˜&<¬1ÎHЃÃ\" BªÂð.ˆþ#h˜ÎÃÀ/ùž…TmA[€ç\rRŒ(̼@%ÙE8ÌÂÙÐ&\$ `Eà€ŠÃ,B]À(a{„@ù6I›¢k3[ˆhÚ ìEw\0¡1®)%檘 @Úªÿ\"ˆ6ˆÙ®aJ¦I8J+4q€Úa¨±0\nBë2É—àa“!{q›•ŽŒÛ„Àgá1!9à:\0¦Š&D8|8Á\0Ë:á5P1ƒ¼›0‹ã:y„ª¨FDHÄÎUk3Á’…USLKôàfŠi‡mB¹Fk§@EPØM-ä;1ˆ¡%Òá82ls1œ´!&û5¼ÍRaÅñ—ÄÂÀú’4’ÏP%¸„eOþ/¹¨ˆ±³ÈE‰I@C=ùùMHÉÓôd°çË8@¹–à9rI¼Ð€£Š*B,› Ã^ð‘Ò\r˜Û€N猗4ˆB“™ZCXÿÂs! *@ENø)»Ð”4àa\n¨Â )¿¸˜?`+¡€&‰C01M¼SqDñ€ÞQŸBð\"ï¡ ‘‰n)ÓM¹¢!x\0€Š5Æüj3w\0⣂ð0!\$\0`a7º¨2Q¶Zì>I4ŒÖ}ÉxÑàÁ½›ÊÏÚZu¶\0´çñWÉdd4J2„†26\n À¶žÙ ŸÅ…æ€OhÜFç0Èš\0=΃š%Ù1Ú\rÊAàih@vM)’\0¼`£&Êa2ù´Kši©KðfhZUÆ\n¶‘AM(iéP€ÈW47¥|ò©ZQ†þ:¨5X>x#5†¡s=0Rªå>„“7úÓÀiü'èÙž\0Ê™£ú)`hþRÁð…š—d`œÑµM‘IQ\\V´ÞV‚ã4T²¦ÓUãåR%9F“aºhÕ47œ]Mà_`>P~_T!¡†ÑN\0ŽÎ.lÔú%ÈC(DZSþqu\0œ¸…in默2¡áÙHéqCÔM`”…AÞMqQ¢~«5p+ŠAZh¾¡3Ÿ‡Å¸\n62¸URbq%B(\nÀTØó‘œ›FåâÌð>œ8¿†GM ‹LpiÈ¢EQf‘M&•.©OQ\"=Z{µºR¥åïl¨aOêïØ«”ýk}° Á-´~+Ê`µewíWêÎT Õ¨º2ߘ’.¤1RÒH8H¤†d€Á†h@0Œ\0[€@réŸ j\"„ý¸êöOZŽ ‘1r#¬tQ@7—V5kÈ+˜ÖÉʽVlï¬ì·\r-å®–¯U„Ý\$\$XÚ¼ž4µ«äF6{à/ˆ‰Ç–P¡óZ¹s½|Œ\rcÓ€f™Á˜f¸? •_«™XՔ𰕆¬@Áë—â0nlŠÜ„Yòg:×°ËSæâä›sª~˜šâ¡9ëî×FŽt\0/Ã\nÅ0']y‰á^ŠÇ#&¹\rHœ†j‡R0ý:æ¤â‡£¦äD7J¡Ÿ~¿Ä52Éælë”D}J‡TàeΜ% ŸÕ}¸è+R#”°k3T¼Ýë¶\0rYuŒh¡‹ÞŒf¼“Þleù„ØAï1S•TØP\"±¾PhŠE¶NœÞVK`2Qò\0e©eK‡›Š>IFÜš-Ã7Sê=Ôù•BÀ¼j¢N5U÷[ñXl'\0 2¡…j\0;ªÍ‘’ìú®J\"\r4hEž±FXômRö\0Q‘Ö·*/X ”K£{hÍWÚ‘ž©”l€êm'j8€ÚŽŽ.êFˆÔsUÔ©µ\"iþ+bÒÊBÚUl1 ¬¼RCGÐ-²3Þ)3å\0ø'ÉNv?³³PeÒÔÀÂZžÕ/óiãOÝ]6b“|1T•ªÉ×jØHÚ¾×@mµà¹-k_TÃÅPè–¯\\©¬\0æÀ69¸°nU¶{‚-±Õ5Â!²“´øGª³çξ5㚺m®S Á´\$룱øm3õÙ%˜`[¯B©/ËešØÎõÉTm§i‚N›o£!âàµ.È\râ÷0¨6 ,lí¬\0äàà:&|\rÖ»\"M¯¡kw*ÛrHVó„Ü5Û‚Ãjàá „YpÒ“ÙX\råw{Uß…qÄ’Ü\$u⨞Ul{‹Û\$×¶þ5mÀ(ü`/¬¢—ù¸4/nIp–j\\-³¶ç_3\\)òës×–çW–·mçt\n†JR—D¹Ñ‚%tŠ\nÝ*‹Rzá2>²°\"®‰a²\0Ö8Š1˜Žè¤/sÄ@Û†Jì'l—Hu®k Zªç©´hÔ8§s}ÈšP§)R*“Übûe%²í·o„Ús– û2aQ¡J†©¤Õ°í‹qkÂ6g. ¼R“/({Ǥ~ÙEŒ©;ö\$ÝÓt†löÃmIêºèGR:iÕ'—àÁApªÞy€üÛDMºŽ/<¦ÜwºÁàp\rÀ\"•Âá}\0ßPS€'éŠß܆“”pý¶k`CìÜqEYÀ3Êd¡èÉ|p{ó DJ;úå÷cHTšÏWnW<)M5~ÆY2÷–t9Š©âkÞR<ý«q#\0¨ýep7Lø+Óc¾ Ú\0u\0\0®mÔW¾‘c}[* <÷ؾÎ+¢ër7Æ@+·Ô^/Ä·ûò_ÀYÆŽ¿ £/yƒ6Ù¾þ«%œXÛKRÒÚoƒÙS¯\\¾ m/ˆg³PþÉV–%D«¡GÄOiuöÝt€åN)®›Î¯&ú†ySô0jn“rrÚT”y×myˆk!É8UšøDn£Bþ\0÷l¥¨PGç.[‡z··|†8bGõx×Ñ\\s[µ#¸?>:£\0Xz f¯´ f.â£4€^ 9‡ |šË\r§·z+G¸Z¸D©È?‰5A¢„A]¹1ϱ5‹7bvæ`|1»èk.‚LUëÍÚ/`Weñ©'âàkû¹†k°ÜŸàÅÐI\0wvu‘]©-˜Ó%OÈb3ó¡j•bŠÍ™T½A%¯à&êIÊÜP£ŽcBã9Í‹{yBßLtVÖ?ØÊF:hªUd[ËÑ ük±–8OSV« káZÑ|â€*ÑU¾Gû˜-k¦&ˆÚI–‘žÈÝ”ðO9\0®€Åˆ˜ÕeQ>7ŠÉp¶e[¶<¯¿RæÝ h\$®?Ïöäúª¾AñÇ‘ÿ-×!–iÈ|¿Ö¿…ä[UγïfEƧ‘’SätF™RUÎHÁ?¡Z¡¶¨I@â¢Ã‘‚šÖEY*–½Y²‘YúÔZEÐöÂÂ=–ì:Û+Ù@¾VÐ6„·^ÃÚ½NÖ8VK2‡’ê ¼#èbÉŠ[2ç- ñ…k2&*äENškV¶2Áy¼ùW8+Öœq°Œ&9„1åøù+Z“Dªã\",¥œ““‹Êƒ#-šÉÈ4ÿ5•µ—‘cãxPŸæÌ•ÓÅlXó Ös-P”χBÂßÕkFŒ¸ÖŒ\$5m€W@º¨\0›Ò—!úÌ`@ð¼ß©²\"áOõa7œš†Ï14yo®us,|d*+É¢ee7ž<Åœó:Çߘ¸Ôá]œbg!™ùÎbsŸH\nr˜„nÕ–É@Ø@ör Ÿæâr€)0 €’à\"\0\"΀òO4]ªÞaÄH*•o–,뀬.CpÉÒÉ3>Šu©Åx5™äúž‘ Åæš³ÓÊVZ–Ò€,,\ršfáHl÷e£êè:Úe™Z@Î]ò¼½\rs@¨%Ë\"\n!ìk‰úhÊ´ËeÈ´?åÄji: ˆ>{ÉšÞËŸ½! W.ºEBV‘åË \0002Ï9©¦ËæšC¼Ñ\r4íÌûóP+.Ÿ‹=5\$KbÍÂùËh(5\0©I¤CŸèì“ U«ÅÇ4'V”°(-¢!0 À¨ÀÈ•:eñÔn¥Ã›©’:¥”-F®‚µ;/¥#”‡T<¢ÐùMVH/O¦½±´Û¹ÂûQ®€Åž4h-âDþ5ÀU€\0‚@\"€€ àFavœ@à€y ëé'‰;.HnrzxPô^€ÿ[áªûbEÐÖD;SYãåÚ Pôï :1¬ÇN‰iâ€wfíw»Ü1ÀY½¨ù™| FâDiZ×¶D|{q”RÁà0\"³Íç(åO³ÕDîƒ —z`Ò)Þ`-ˆ Ä|è5Ql_c.øküö<Ù5¤0§zÏÒ–Ñü›Ûßкe˜†dí\$’©\"þJè÷ÓSÝÑû\n\rHK¿_Ó„”tà4ç€s›A\njVð´ñŒ!oÚ[l¶œOPÀQª©¬‹wÑÓ†Q¥9ÛÑ!…5€ì¥\0¶Ym‹g„õÛ(@u¶§ƒXO_éÝa~ÉÔ&Ðó#( =:ã Ã\0½µ×k4WñÏ\0]IàŒ+šf FÕÈj¥C#Ûn7ˆ?µöô×N Ní’´)Ï&zÝŠ‹“o»Ž¿h¤·BlM½TU)5ÜËp¾t€¦µ›¥tÁä¶ùºî¨\rµV.è]û¹Í‹†Ð»¡nç†JÑív… ضï·t(ÍÉn¸Ñ»±ÝœD2)mÛž([Ïr©˜Åë³2z eŒ¿¦ñ¾=Òn*Ìvûw8ÝÄàx+§<` 2½GFííTBÛ=væh=ºì};L/wîþ÷£¿÷v[«cîØßîã÷)¦ÀnL¦*§¡¹ê¡ã7`7ôÞ‘þ÷©_øˆ\næ{˜æ‚B%Q\0ǃ@pyæ÷\0ûÁȈnè'Š^î庾&‡Ó6Þ\0•È¿‘Ôð†û»Þ̃%¾EKÔÈ;,á‰â·PeÍîl-•:ÙþïgÄKüëXTØEPVP. èP ´¼RØl²ë±sìOmtâ•êhô’ô ñÀ¬#”Uv…ϲ=}ì”a>\"‡õàÆ½Žˆøo|RØt£Më¢û<fM SòãZ˜QBà¡È*¡o^ð&ÍÞ5Æþµ€*D²QþN»\$*¦ ä¯ BrD`Íòe¡Ó=äç'¹?Ê•T MxkkÓZúŒ}Q²‰[~ùŸÕŒš(qmQ:ü{Þ‹µè¿ó×Ͳ°f}N@±lCaùðˆê\"N`ˆùAP“cÔ€V0\0ÍB’fÝÙÀž…ø„P\0Iu†5ª4›³ì÷ÿ©Ð`°:*†`þQ¢wRó(º¸éœêÆÊÉû7È»™jj÷gçdc°™ð6,É/%ñç2ç¦#³òûiÉ»8\\nϧ‘—ðqö‘SuÛ³nu4?W7\$»>-0ϵЦ-7d}y¼…[áx‡ñ~»¸0òSükó«y{!©sü°ö(@6p\$a:ʨ€Z5}\0üç]BßøŸgŒÔÀuTT\"K@€uÑþ<Ìž.ªugGø›±n¢¿ÚŠ|aâx¡ÔÀÇ窱ÿX5é‡EØõØó@tçVw¿ü?\0½ç„ruY둹Ï.Å?[ŽfèÈ9Îñ9ô3£® I\0—ذš)±OuɈz*ð’ãbí+\$Sª9ÇØ~‚vŒú}+–Ññ„«Ùtwøµ‹\0\\€");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
13 | -lzw_decompress("v0œF£©ÌÐ==˜ÎFS ÐÊ_6MƳ˜èèr:™E‡CI´Êo:C„”Xc‚\ræØ„J(:=ŸE†¦a28¡xð¸?Ä'ƒi°SANN‘ùðxs…NBáÌVl0›ŒçS œËUl(D|Ò„çÊP¦À>šE†ã©¶yHchäÂ-3Eb“å ¸b½ßpEÁpÿ9.Š˜Ì~\nŽ?Kb±iw|È`Ç÷d.¼x8EN¦ã!”Í2™‡3©ˆá\r‡ÑYŽÌèy6GFmYŽ8o7\n\r³0¤÷\0DbcÓ!¾Q7Шd8‹Áì~‘¬N)ùEг`ôNsßð`ÆS)ÐOé—·ç/º<xÆ9Žo»ÔåµÁì3n«®2»!r¼:;ã+Â9ˆCȨ®‰Ã\n<ñ`Èó¯bè\\š?`†4\r#`È<¯BeãB#¤N Üã\r.D`¬«jê4ÿŽŽpéar°øã¢º÷>ò8Ó\$Éc ¾1Écœ ¡c êÝê{n7ÀáƒAðNÊRLi\r1À¾ø!£(æj´®+Âê62ÀXÊ8+Êâàä.\rÍÎôƒÎ!x¼åƒhù'ãâˆ6Sð\0RïÔôñOÒ\n¼…1(W0…ãœÇ7qœë:NÃE:68n+ŽäÕ´5_(®s \rã”ê‰/m6PÔ@ÃEQàÄ9\n¨V-‹Áó\"¦.:åJÏ8weÎq½|؇³XÐ]µÝY XÁeåzWâü Ž7âûZ1íhQfÙãu£jÑ4Z{p\\AUËJ<õ†káÁ@¼ÉÃà@„}&„ˆL7U°wuYhÔ2¸È@ûu Pà7ËA†hèÌò°Þ3ÛêçXEÍ…Zˆ]lá@MplvÂ)æ ÁÁHW‘‘Ôy>Y-øYŸè/«›ªÁî hC [*‹ûFã#~†!Ð`ô\r#0PïCË—f ·¶¡îÃ\\î›¶‡É^Ã%B<\\½fˆÞ±ÅáÐÝã&/¦O‚ðL\\jF¨jZ£1«\\:Æ´>N¹¯XaFÃAÀ³²ðÃØÍf…h{\"s\n×64‡ÜøÒ…¼?Ä8Ü^p\"ë°ñȸ\\Úe(¸PƒNµìq[g¸Árÿ&Â}PhÊà¡ÀWÙí*Þír_sËP‡hà¼àÐ\nÛËÃomõ¿¥Ãê—Ó#§¡.Á\0@épdW ²\$Òº°QÛ½Tl0† ¾ÃHdHë)š‡ÛÙÀ)PÓÜØHgàýUþ„ªBèe\r†t:‡Õ\0)\"Åtô,´œ’ÛÇ[(DøO\nR8!†Æ¬ÖšðÜlAüV…¨4 hà£Sq<žà@}ÃëÊgK±]®àè]â=90°'€åâøwA<‚ƒÐÑaÁ~€òWšæƒD|A´††2ÓXÙU2àéyÅŠŠ=¡p)«\0P ˜s€µn…3îr„f\0¢F…·ºvÒÌG®ÁI@é%¤”Ÿ+Àö_I`¶ÌôÅ\r.ƒ N²ºËKI…[”Ê–SJò©¾aUf›Szûƒ«M§ô„%¬·\"Q|9€¨Bc§aÁq\0©8Ÿ#Ò<a„³:z1Ufª·>îZ¹l‰‰¹ÓÀe5#U@iUG‚™©n¨%Ò°s¦„Ë;gxL´pPš?BçŒÊQ\\—b„ÿé¾’Q„=7:¸¯Ý¡Qº\r:ƒtì¥:y(Å ×\nÛd)¹ÐÒ\nÁX; ‹ìŽêCaA¬\ráÝñŸP¨GHù!¡ ¢@È9\n\nAl~H úªV\nsªÉիƯÕbBr£ªö„’²ßû3ƒ\ržP¿%¢Ñ„\r}b/‰Î‘\$“5§PëCä\"wÌB_çŽÉUÕgAtë¤ô…夅é^QÄåUÉÄÖj™Áí Bvhì¡„4‡)¹ã+ª)<–j^<Lóà4U* õBg ëÐæè*nÊ–è-ÿÜõÓ 9O\$´‰Ø·zyM™3„\\9Üè˜.oжšÌë¸E(iåàžœÄÓ7 tßšé-&¢\nj!\rÀyœyàD1gðÒö]«ÜyRÔ7\"ðæ§·ƒˆ~ÀíàÜ)TZ0E9MåYZtXe!Ýf†@ç{Ȭyl 8‡;¦ƒR{„ë8‡Ä®ÁeØ+ULñ'‚F²1ýøæ8PE5- Ð_!Ô7…ó [2‰JËÁ;‡HR²éǹ€8p痲݇@™£0,Õ®psK0\r¿4”¢\$sJ¾Ã4ÉDZ©ÕI¢™'\$cL”R–MpY&ü½Íiçz3GÍzÒšJ%ÁÌPÜ-„[É/xç³T¾{p¶§z‹CÖvµ¥Ó:ƒV'\\–’KJa¨ÃMƒ&º°£Ó¾\"à²eo^Q+h^âÐiTð1ªORäl«,5[ݘ\$¹·)¬ôNô\n«ž[Ðb÷ƒà|;‘éîp»74Íܔ¢¨ÐIŠCË\\ÞX°ç\n%øhØIäç4Ïg‹P:< ôõk¦1Q™+\\ÚÈ^å’ ™VèøCàòôWàÃ`83B-9F@ànÃT>»ÞÀlj-–¿öÊ&âÜ`9q¦…Çßä‘“PÜy6Üå\r.yñ&£ñ´ÎảÍÃE8Ÿ0 êÀõkAÁ×VÛT7ñpïÆxØ)Þ¡~¤M½ûÎß!áEt§ÐùP\\èÄÏ—m~c½Bð\\\nímŠv{µÎù9`G[·¾~xsLî\\±Iõ®ïâXwy\nà¨çu¯áÁ™S£c»¬€1?A¼*‡ùÍ{œã½ÿ´óÍ¿á|9Þ¾/–òþ¯Eúï4æÊ/¿Wÿ[ȳ>–á]ÄržÊý¯v¹~B£ PB`T¡H>0¤BÒ)ð >¸N!4\"‡À¦xW-ÅX)„0BhA0à½J2P@>ÈAA)„SÎôn¼ìnìO˜Q¢¬ÇÎÊb®rõŽÔÒ¦âöàøïhèí@È‹’î®(–ð\nì†Fì˜ñÏ–øÆ™…(ìγ¤ÛP\0÷NÂõo}¯‚l«<ønÞø®ˆâîlëoq\0/Q\0of*Ê‘NѽP\r/îpA°Y\0p\\ãï~³ÐbÐLh °!Îã ÐPöîd÷.¿ïy\no\0áÌËжöPptùP¡ovЂknޏ\0z+æ›l6÷°©¬Êø0’äð¹P½oF€NìÏFô¯OpýàN`ÜÐÖ\rogðá0}PÍ\n¬–@°”ö15\r±9\$M\r \\©\nggìÀ Ø\$Q \r‘“Dd‰ÆÊ8\$¶ªkþDâjÖ¢Ô†ö&€ÓÀÊ ¶àbѬ˜ê°¿‰› ñ=\n0ÊÕÀúºÀPØ ~ج6eö½¬2%Íx\"pß@Xб~«æ’?¬Ñ†Zelf\0ÒZ), ,^Ê`ß\0è8&´ì¨Ù©‘Ñr€© ©ÃkFJÂÂP>VÆœÔp¨²8%2>ÂBmÎóØ@ä’G(²ä¨s\$Ž dÕÌœv†\"Èp°wÇÆ6§æ}(VÌKË ‚K¬L ¾¤éÄWñöqú\r‘þÃ̤ʀQòL%’PÔdJ¨¦HÀNxK:\n ¤ †%fn‹ã³%ÒŒ¿DÌMü À[#¢T\r©ÀrÂ.¦LLè&W/>h6@êE ÈãLP‚vÆC’ß6O:Yh^mn6£n¼j>7`z`Ní\\Ùj\rgô\rÈi2I\$\"@¾[`¢hMý3q3d’þ\0ÖµÈúys\$`ÖDÀæ\$\0äQOf1ƒ&‚\"~0€¸`ø£\"@ZG¼) Y:S¨ê†D.S%͈’ Ð3¾à d¹ÀmÓU5‹æ¬ó<£SÒSZ3â%r “ÎãÆ{óe3Cu6³o73î—³ÀdÀL\"àc7ÄLN ÜY Ê÷k‘>²Ž‚Ç.æpäì2øQôÐ÷“¼åÓ3ÀVذWBðDtCq#C@½I”P÷DT_D´:ÔQ<”UF²=’1ô@\$‚‰6Â<cÆrÅf%Ô¬,|“27#w7ÌTq´6sþl-1cPÕmðqªÊ\n@ÊàŠ5\0P!`\\\r@Þ\"CÆ-\0RRˆtFH8µ|NíÆ-€Ædòg€‡Ò\rÀ¾)FÆ*h—`ö €CK4Ã1‹ÊkMKCRf@w4BßJÁ2\"䌴Ó\r1Q4É2,\"ô¤'¼êx§Œy—R‚%RÄ“SÓ5K”¦IFz #XP‡>¨âfÉ-WX\ršÜê¤pU´ÕDÔt&7@¶ÂÑô?’©ÀÑ ªµ£}O1½2†‡2Õ#UK*¤)ô긋Œ0o<> ]HŽš„Æ¿rè›LGNª›ê˜W%–™M^’Õ9X:ÕÉ¥N”òÕêÔséE¥@xy’(HêÆ™Md×5<52B– ð–k!>\r^J`‹IžS N¡¥4'Æš*œ*`ø>€—`|¢0,™DJ£Fxbèµí4lTØ•û[¨§[é•\\‡¦¨Ô –\\{Ò6\\Þ–’ öß(#mJÔ£,ý`©I³ûJ‚ÕÊÜèlß ûj…jÖŸ?Ö£kG»k¬T9ÀÛ]3ohuJ©ê¢®ÑW•\rkÕÏ)\0Ý3Õ€@xè¹,³-Ê 5B”¡¶˜=ÂÔà£#–gf¢¡&Üß·Z`ä#ÄoíæXf È\r ìJhô˜“À´5rqnzõ§sÁ,6’oÓtD´y‡äÂb´àhþ—Ctn˜9n‘ í`§X&¨\r'tpLž7²Î—¤&—¨¼l¬Z-ͬw£{r—¤@iUzM¿{rx×—mÒSBÀ\r@ H*BD.7¹(‘3XCV Ç<WÔуÝ|d‡q*@”þ@ÞÀÊ+xø÷̼`á€Ï^™Ì˜ß¬__•NDX\0Q_D]}tõYÅúp¦f€wÔÚ\"â3øz¦n«MYñùZR\0÷¬Q¤?¸{†M3†•£*×1 ,¨\"Øg*U¡*²¯ˆÌ«zÒŒW5NV2O-|€¾ÉÓñ,×]‚B×dí\rŠñ/OâtÎøÃï‚Ì0‹xƆðŽ½Ð®OCë8Þ-0Ò\r”ÿ0à·õ„@]¤XÌŠÐÎð\\\0¾0NÈï£Ñƒ4ëi¨;ƒØAtê¼8X—x¤\r†…Š“‘ìÁ‡øÝŠ×Ê7¬<ö@SlÈ'LÒø9WŽ ÊθòϬÖËì¢Íı•ùRçÌðÌ\r¾Ï ÂÏò|ÜXÐÖa÷ø7y€Ù\rwe¸Œù„Y!ƒ˜Eƒù’´šÂcRIdBOkË28[‡mÌJŒ+L ÈÅÙ¸OXpføÓ9ÑDÏ›·¦ßªw“@Ë“—Y—…¢Õ÷\\yäAcÙ£ƒXgš™%šôó’Â1“ï“j œX†9Cc݇àR¡¹‡”QFÇpdÒ= C˜÷ýš\n\r¥Õ‘ÔóšdjŽÙ«’xE¡Â2FX§¢x_¢ØÅ£Ú5£™—}q¨Åí¿¤M%¦ZM™:\nÏzWšX7¥åí¦:ÐZi¢npY;Žù>ʘí£ÙɆ:6Ú;£ZÎX0ƒ“Ì¢#ùýcàMyU…i2,q¹FËšÈbJ @ÓgGè|4ógÈÒmzWõäÊ ¬)™Èr|àX`Sc‚Õ§ÀË™„óc—¥‡û!²B²—±”»/}{4JÂ\0ÒÃn»Kuz @ÌmÚÑ®€ßyÍžÒyÖ\"º)u¹ÊÂÙã¶Yç˜s·c¶yë‘¶š‡··y¼—޹7Á|·±|—Å{Ϙ*)°Ê4Y`ϵ[v¹‡¤‡û^NX•†¸‰†ò‡W”©û·‚7†;¾_‚‹*x™ˆ¹Ú\rù߼߉xm+¾mû¨Ú™ ´»¹‹\$\n¾l˜);™²„|Ù ßÚ™¡:œNÚ :„‚Š_È8N³¸Uœ5;¨p+U–L‡ò\\‡9í¦Ùñ“›¡»ýO:I’šû zQºœ¡ƒ¡TëšÜ)ªXG¡æ»ÅJ{w8“¾ûʼn¸UÆù\$ôàÃøü›PxTY¾pjh·¾J×À›˜JÙ{‹Âð@îÇ‚³ øðZ‡ÌÙs•¹h˘ç–XÌ\0Û–lÓ–ÌàÌÈθÎçìó‚Y}˜Ÿ®ü^Ð@u2ÀSÚ#U‰ˆ;È|¼¼•¥¼™P\\ŸÊ#ùÊ|ª<®Ý\\³À›žJÛ‚,öœÀ•\\ÅÌšEÌú…‚]WÍlÁÎ,£ÍìÉ–<åÎŒÛ>YnÎ),ΙrÎüûÔ¼å—âº]Èý ª\$õÐç½Íq„DJí=•Ù÷•XI-ðÅ€äÅÌa‡llõ]\\“w(iÜCÄ׃tƒ‘<i-u[uVŽDÖ“¸Q¸€xb€kæLI.kú›@ÞÀ„ÜN‹“[ñ¼l<o=-]1`蔼ªdš ÜMÌ7‡@Û%C=]ú›êÀ/|-à܈¾ÉÞáqÃã•âíùâ*¾C¾òO~ÊQâòså`·ç(âòãDÉßɲ¿à[ãþæ>Éká¾R™uéÞ\\+>)3íûPÊßP§Óí6ÓËM%º¡¾pÔŒœÅAÐ3qmu2ÖfzƒÛ¯ì4s‹ ´í`ÛŽ‘ì°-kÊS%6\"IT5½‹~Òì\"™íÂUt_ TuvàÖ½ä¶Yw¤†0I7¤’L‡\$ú¿1Mí?íe@3Ûq{,çÀÏó\"&Vi·àžÔIŸ?¾µmõˆ™¯UWR¾´\"uiT‹‘uƒqŸj\"•GÃËõßò(™ï-½‚Byîê5øcÝõ?Œàwñ®°ëTúî’`ei¾½Jtb‰gðU‹3ËëÉå@öá~ê+¾Íï\0MïGè7`ùïÍ\0¢_Ô-ùñ?\rîVÿµ?øFOÔ6á`\no†ÏšInª¼*pà™öeÙí\"T{[Гp^÷ä\nlh@l0[/ö„poóJKÖX“ñ€ü<ª=€9{Ǿ6ç–<eßAxãÀùÇ‚¼Éá4x[ÍžLò“~>!åOQxš{ZVFÔŽ`½éÈ~Ižß–“øL)Q[ëTûôM›àþT²*BC¤~ æâ‚ä\nƒò¡gÈŅp9zKÉ–ówzO9di^›'‰+¹ßïDz4ägHAº¯Lyô¡\nr€<IêjKQó¸Snô==\r.Âo7½Êé%a;‰kÏãmX¿›Zi%P¨iÏ\r€¾ýµ/©…L`pR0¤Ž&õ—I (Øá\\.£*m„*Ž(ÚÖŽõ—\$䆯À÷\nw׊Х…8a“\n&´Â‘žÍUmª MÖ¨P+\"Ly„ó?¡M\n€2’ L\nbS ¥NäùÇr¶!w¥jw`¼Â\$îôƒráè…Êaáv±^ÃqF‰Ü6•Ó¨i*™Ÿæ„ì_xõØ\n‰fðIê:B&ù6@É“KED¡úú·QD(V`.1\0Q\$íøF¹H®’Tþ€zІ‹Ì\rªjkzM€ÐÀ®Y™À(61€”x‘+®%dj¸Æo\n¦¬\rg°ï\"ÉŒ´ˆ—?Œ1- 3hÏXÖÁ)åyjÃ5r¢N±#Q¾¼Š¸w{_þ¡øG)ÂÎÙ1i‹Ì íç¤<Z‹ºpX³¡Ö\$â?¥=%.´€Ò®&¾%\\±8w!¤µa4œ<JB[Ðĺ¦u4‡%êŠ×47‹Ä%gÑä&¸€Z(@ €E¢{@’Ð#¥–2Šh@Œ#ñŸø™ÑŸ¥£@\$8\n\0UŒìjãA(מ2ÀO€Š8Ú€ž5‘¸Œ¨@†ð&'´\n€DŽ\$i#ŽÀ#Ÿt\n PŽTs#]P* àDÌuc› PÀO|pc—øËP ÞŽ¼i#Ô}ˆæ:<ñí\0\0¥ÀˆÅ¥lo#}ÏFÜR‰Tp@„À' `Q¬ycTp(ÆŠ@€eh\0‹˜Õ8\nrx› cþ<`NŽˆã:)DY\n*Dý‘2{dZ)A‹Ú4±²¤€cZLð2ÈÊ<ñò\\Œ\$r#ˆþÆö7ñÁŽ¥°!û€´ü€Nª{O¼@\$< Ñ¢ðVƒZÒÆž52.Aù#D0 \0´ÀI¸û\"P'H ²_)¼x@Š€*úàAOh£hI)I²L1¦’ìƒäµ%áJI‚B‘þ’g¤i\"p÷§K2}’ä–Å(CËÉÍ=²t”xCøÐ&FÄ r“ÒoÙÉ@@'”ñ€% ÛHÞT±áˆ ãÔ˜:=¾)\0.ñ°]Îâ5 .ðæõ(pÈÀL!à8\0ˆ¹ éR\0L‹YaÔbkÔ°ˆ6Ä)Y·éˆî •Ô®£ h³zZ¦õ±’IgÎVO3oœLgà3ËY2ãÛ‰ÜDoPË`3̸ec-‰r7í‡2Ô—Dº‚Þç‘B¼‰Z•¼¼%å/I{MÃ\0pÐÀÌ.`äÊÝo*•Ô¯%T€ý\0 &–iR\n™+Éo€ì©–\rÀ^2q”Ë©\0\\¨I@‚ KÀ#peC*!>€/á%|È…Ì’ÁÞŽüô\$è)çÀ§1P30(\r¢+\nZÆzž„))\0*®\0kà€ÙÅ2¼–Ï…(–E86å¶s—tºf&”™Š¡´“+;”Ø76&ãK–_Ž(›9fÓ,@-ÃÉ4l\$Û‚e7\0ù±:l“LÝæM7.\0ˆ³|›ðo–JÛ©ÀÎZ³u•̺Š'Èy{ÅH,#\0vU@9!¼¥ Ñ'†¨&„òGôøß@_-Ù¿³ºt;Üê¡:©µ€²u¡<—ˆL†iÙΚ_ê€Ø£@U6°Îù#ä_€L'~ùæ/Öm`\\Të']=Iäât°Çž¸Âà)ÔÏqùsÉ9Âa<RPº|tžút&5°äs©lî@¾ ÞKÆwS®èlÍ:9úN®wSø|·göÉØOùAП<ë‰BÈ€\0/àz@´ ÍÏÁ•Òå†=?=iÞO‘ŽkÓŸ=\0E@iâÐ\$B× hO\0Á>DÖP´ó‹Uäçцj¥HìÂ9F¬BcCi‰éBwMާtÓx€PÀÙM‚?p“®=—äì8ÜÔý‘Ïlg~¨˜tÁa©€%]b\$àØ\rˆr„èÄa,6ÅtŒàW)Ž\0U¨›F˜ |æì“¢ˆvh¦Qú*¥Oƒl.C\$À\\ ÐÖRRÌ<lcù™&Cj3Ñý%ôZM¨öÀz9GpY’â¹£\0i\$Dµ‡d‡ñzt[')[)Q¤ØêÞkÁpi0·#cþ‹ôNE¨ô(ºC2L Æ@9hÑEJ5Ò,šh{&Jzö0n€vª©>[€j“£Û[œ]ƒK•ýRîJë>.;ù¨íF=RÚŒŽ<råÓM¡=—Ô’¤ÜhØ^Y\\RmnËÐð Nn*g‘¦ôÒÅB¬·5^QÒ‰@O¢°x¨¡HIÊT ´â9½)(‘œ&µ‡}A)PÊ\\/êô…_Õ!ÌH þÚ‘¥¤ù\0éBá\$z4ÓTYu‚J’v\0ꃔ¨…%@æ32\0Sôm€--Gi@¸úQÅ%Ñj©YÝ+FuzlSž—”ÜW3ØÅ·OrŠU\$EÔè;¹M©¢\\€Ô±Äu/£õjeQªš¦§,#J¡ªXPÔ<UH•TVVé#Uê™ÔUbˆOU´DZ‘⢵£Í8êÕUJuS «À‘g)XDZK‚•¢Bî\n¼@2Š©ìx@d&ü ½eÜ«Ià@ÊFwì¬8“©\$Ù'IºV‚V†U\$²ETÎ_ð*ˆd¸/áFCÓYdp§vGƒ‰3‰ ‹Ñš‹L^(ù`áj”÷2S¸ºcÛW¨ÜJQYiÖHB”£ckœRè\nþ²U\$jê\n„ZAi€î»¢U*wKDRxW‰LÂòˆ€+fÚŒ@ã¨A4¢àGz…R\n²5‚b¬\\_²Ÿ ô‡¡á0¼C@¤\$X\0+Å]¤ÑÂè\"?‡n¦€+QIj\n»x\r€ôB`S¸âM‚ÈÑûŠ\r o°@‚À6XÀ\"{±\0µãb ¯)–ÁM¨cMðW ä¶D_áαÐv@{cÐ:¤®%[%‰C²þ1¼Ù;AƈÌTn› \0º a²pážóe~ÙU5 s©V†Ýe|M9‡€9 hË@æ¦\0êÙ~É@.³ l€· Jv]©ºD§f€7¨FÌá±³ËùŒ,/+:¾‹íÚXIi\0U¢â@Nµá´\r Ê¢,².½i¶‡ª³m_ûFŒàÖõäÀYiUÔÓJ¯!©gûLj‹ãÑú¬D“iKAà6²õª-U«KfÖ_N€\0ö-3©ìÀã3+¥dãiûD \"ö¯µM¥ml‹L…XÜã㯸Œ>‹&|UÕÑõ`Ïh¾ù2¦ÑÐn6Ý…·ÉI+Øné-nDÃ×`„µ†®°É”°@ã¬B!;X™smȯ·†pC`‘p5Á°¬¡O‰%Z/Õè5”³é#CK`‚XˆªÂcb°Q#«§Qa»–Ž…ƒ¸q…èpÚÝ÷)™®G+~Û–ß÷\"ðlM_^zò©šæ!ÌÉàE«”Ð¥’®šÀ‡ïa úØp86ì„åˆn+oì’Jâ¶ö¥¾,¹¡ó‡¢ºw\n¢]̓pëŠÛRÁõ'§eÖJÕqµ'ܨ%£'€nlO‹h@>NBÈŠX5,ˆ‡‹¢ÊrGr¹ Z l\r(ªË‘jIù†±lŸ¬%b‡;s+±× ¤Wg7¨)’*e…¸1µ•ÞÑ3“L e@(»p\0 ÐÃŽèds®AñÖD\0Ã\\bD§\nuê/&1¬ÞXR×¥E楂5¡Tœ\r§}7õ§”ªîÔþ”AÙ¬áÉkâ\\–øö͵´ŸÇqà2Ü€öZ-wo´“tßZùƒ‹¯]ó-yq2j+Õ†¾Õ묀n¾XA«Û\0†\0º¾+S•+ïY6_BúV7z®nZ@̆²Ô·Æ´]´-UMJc*¢ü¸´®í¢s\"ß+\0·ï¯x´B3^«öà0\r÷ÜÀÎïÁcðÖ\\jÆÆ*¬P-\\Q8ˆÊŽ·…l•cË%XþÉVB‡}‘,€þ;(‰`*Qú \$áïÛrßÂ{ÁKøìCúÖ%¬\r¥ˆx ÞøQû…,¶Ø¾¥×/‰vàä\" pÁã¶ð~ Óáã ÅJ5eãü®Eš-^âX;c²\\©¶×¬m‹´7£?˜6C*庮†,7®HfÄ/Â9eÌ0[@ñ¤!bê®íÅþUБ=›Äi.Jocñj;ø—B³\0¼ƒï]Õ”ÑúvÙGÃÜ8àO\\\0ÀÇŠüO©›\$Ž•.& p‘\\‹H1bØpø’:F\"8Ŷ…þ‰ŠøVx©ÅýµR®–xä=À3Æf1Š+|Ò»\0ÂBÀ¼kbÌPÇLÑ’£ô\$zÌáàÎc ¢ÇÐi,Pcb,pÃn(¥Æ,¸ì`'/»~êÙkÖµ‚Îp€q-›Áȱ¹VÀÜ܆Ü\rÙž \0á‘‹dSˆÓÈÚÍ+º\"Šéˆ1\0(Ä-’Ì1~útcªþfý¸àBÛ‘b}Ø ’Ã0<1\r°¨¨L’€»\$¸ˆ2d\"1ž&ì™Æ€BóN…Ô\ràB\rrƒ«\"?vädäZá±.\".\0?wä¼9€oÃà\rÄ0¥Ñœ!¢ÍdR€‚뤶\0‘ÃÇHëÜra%ЊØ+\0yrƒH¾sÏ’4W#œ,\$èô \0„*xBó\nPÌòü|„ 8@/ \0ø2U’°ábíÝè¢ÂÎΪxÀ!¨d§°óúNÿ3SÔ?£ÑP»…€(òg\n8·‡ppŸˆü€S9õ@‘' Ç\0úyµÿ\0¦y46¡H<‚öÌ×ô\n`S’ˆ…¼ÈûCY¹’„”³jp:\0N(ÓŒáX4ŒkÌÈÓgßDy‹<–n4™£ØrS<ÒÏýˆó¯?¥\nÀÇBãúf('™Ì~dgÓ™SËÏ?<³ÓVg(1™éãæƒ2ù£ž—²)ÕôŸf`éZ€¼a“>t{ÀœÉŸô’>ñø\0ŠìPû`O¼\\sŒ<õ?4äwÞ~³ÜÇf@z™ÿÍ~hBW Ìø³á´ŠxhA¡¡ÜO'=úP֌ײÜö±ë=óúc[ysèÌûgâ|¹‹Ï掳%™Mè,Q³ÆÒ8'X žhlUs®…§Ù¢ú é4ËÃqDýÂx*8g§NLšBÈ–¨;§}%eû@YìŸv ho!\$æ›NcCXì³@Ð;YH'Á°@^ à·Rf^x„\0^osÜ_fª—“;¨Ópj]²:’Ô¤ïõ.mLêl\rš®V¨\0ó@Ü€¶Ê\"ÓÕÄ1%Œ!_êô@-]8f¤ç -Õþ±äa]Y¯WšÏˆh`(‘¬äJë@…ÁÖ\rˆ—õ€Y kB(€xÖÂ:5˜B\\QkO[:Õ0˜Â¼¡uk›X¥\\×P\0ë[öx¹ÀÅ®`ŠRIGÕÐk5°ðª§YzÍ×PÒ™¬=†l=áõÖe€\0ç•2=k` Å[K¼‡Bê½Ìû8ž¶C±Í}k«c{#ÖØ¢„ølŸdfF.̵ü-›AºÿÙ6º†K’•¤ÐÖ×Pàv„'¢lHiAÝÚ8C¶“® G„`GbyÙ¾·Í- 0•Ĭ;[*_ˆ¡ãmlH{(;Uo¶ÕÑ*Ä]Š,Ä‹åŒÖÆÈþôXË“¡80Cµ°K !N¼õÔ(I`¨³ V¾Dv½§íšwá·rpc,ðåŒÃÓ\0ää 9~s»Xn㦇¢žŸr[ec·4dçpÅi \\…Èe2âãl±ÄaZCk»gl÷bB„™¶7x%¿ê轞í€Å»Ùk`ì\nÁ(@ź«®„5åݘ¥Ïċ#t›–Ü–éãE½}Å„sñ–Lvö÷E¹ï\nQQÛ”Þæú76}õ‹Or»çj§b¯%@7‹˜àÛµßh³w͹÷n£kÙ`Víq·±Íòï³~›™ß~ø„4{Œßþå÷ë¾óË;òßï8p2mP+ dÖaX8&,=Òn›}ü!/øK&\rŠÿt´H™Ó)/øYÜ”†6@å¯=}ðŠðEU§lKÃü\\kÓb[×â1Gø®M)™J¨xXÚEïTä¾ /¸\"-‘ë…<4ßxDˆ¥ÅíÐpÄ(¼3ÞÊŸ·ß´'È+Û\$\r†¶<rí×n`H\\t\"þ¶70=ä·Y×Wéhsð\rÏw¼~°!ù0@6l‹\\† •§/þBò7’¼‰–ßÏ>Fÿ‘܉\\¶¼RÙ¾-Çn‡€þܧ\n¸?F~†œaÞ×+xÉÁýëñ¨\rœl,fúCß+Žîw•i¢GøÛËî.X!¼_à71ymÌ~ñ„œDå¦È7åÊé ÷š¼ÆåîûÅG;gówƒàb/89¯ËxÑ@!R–9¸eÍJq˜Y¼hß'3¹ÏÍĬ*÷ñXw‹Ë®^—ÛË ¾7ŸÎî5óÀûåÖ`ö:î#È+Û0˜ž·œS¯ˆ@0óo7:&~r(Z·‘G1zÐþˆ€·¢pÝÎñdNŒï“£›`ç¿/Fz@8Ñt0ŠZÌ_ ‰ªÎ0³™{Úè¿Lén•‡×‡oEËÃÑâ=rû¡‚Gj]õ H•¥›²Ò·…»ÞAf+ªÈèVº•ºmžœ7ýåßB‹ÛÓî*q‚þ}cãwس=Û„g¥»wE¢-H·°€»·¦½&Rh4—ªMêžZÕ_L½©]WV'ÁÕ¦§Íñ\"uŒ@-ÜaMÃsº@9êL:ÈÕ’]ù#‚ÝaëoybÝ\n\0[Øêrðp*}Qí‚bwßÛÓ¦?†ºâÿ;Vc¾Ê°›» «.Ûsç´¢XíÖ°ûy·R=§&d”ã·rûO«žçõ2Åj!Ïux¥ÜÎÔ§R{NÖ&øµÑ»®5ö„}£ßvyÛ°Ž1o8Z#žþ{ÛNärû½ÝÑï‡Q:BÕHzW{òïW{:ìržÞ÷ó¶}D\$§j7)àP€÷ëÁÐÝCvV¬X—¾ýdí¨D7óᮀ·¼,Ôh»÷á_ø]·^í—qσܟxO»]ïŠö¬?p{Æ\"ˆðOŠ8Qáµ?xw}ùJâ?9kâÞüx½5buÛ&÷øÏo›ÅÆ^ñ†õ¼Ÿ¬>õw“g]çíh¼#ä?+÷‹ mï(³¼¹àÿ/ngŒ é5â5<ù;‡ñüòÈ…¼Ë³½œxÍ%‡³‘;ì(³ÞVóŸ–;Çço-ìó˽ëòÿ.eänkpËÂÀ_ËFäXõ9ÓWjQ¥ÓàCBاåv3R=°ì†¦;aÙ][yËÈ»4Þ/¢|óÃ##v @_Ç}UçM>ùßÌþ1§»\rC£MúqƒCÞÄÆädĘU#[ÓɦŸm\n\\Ä\r6ô'Ï>‰ôÃiI;€R\0X€ç<rW0[ÀE°dHSèH\n^×\\”¥3ÂTû´ÀF÷xB™îÀ\$ Òi÷´-‚'ûÛÝÕ÷Xf¼}\0#ɤ 1êo·BÆ€*;Û1±(\0ø~@)ü§Òh>³ª{³â~Ûøw·ÉH/vL\n9È?doÒÑð°,‹x)#>˜#b`',úgTð¤È~¯tˆ €YÐ}Ùï°/]-'Òüž\0¾(ØÈ þñ@Ï¡î/Ÿëä…>¶Š~ðolH‹âžÜöÿ·½À/qû–DƒTúéö~¾¡o|ÓìaÉþ°°#|F8ÍûdœÏ¥ò/±|“ì¿u÷¿€Vîâ©hø\n>Û÷ÿ°{´ Þõ÷ˆýçï_{þGâ IaùE½÷&{VNñžod¡õÃFÆBÀXûï×½ÙñÀ(I¦N@Yû¿Çÿøÿ·ýÇð9»üÉ¿\n-èû{çã@RýoÛ½Ù&‘o^3Y¹÷ï»>ð¯†|”òŸø—îþ-ñóö¶ùä~åý/»ò?*ù`\nÏú?—Sæ!VùŸîÏ©óœüïîÿ>ÎèÕ¸}ïãþO⟕ü¿Å>îýRMïûºƒõãø?b@\nOÚ?þà0¯s\0ˆ¢IèÏ€’ú+èà'¾’úX¯¦À,úƒò`'¾¦óê¯Ô?€úÓñ¯å\0‚K௸¬úCéO…À2út©>¨LO¬¾¢Lïv3ŠàúÒ\0ŠÎ[ï£PΛïlë¬H\nhä²Îlr\$/Àý\0+½Øý\0 »£ž¨ ©\r@ ?Kå)<#PøÓîïs\0Žø ” ÂÎ?Kæ@Ì@\0ÃæÏꀱø\0²%,p)?#£îïÄ\$ø\niL€¦¤°3è[Ìå3˜’“îð?²¬ @Ï´O¼\0ªýö°A|P\0™ôD?²N@\$Á,£Ý/ÞÀÿ€\$B?0ýÃø\0‚\$¯²\0Vú’LhÍ…¼Žˆ èé€ùŒ£é½Ê>¤#6ý+ù€>öR:p¾>«7#÷…½\\гlΓãAoãüÉ<3lø pe#7ÚA@)À±ðü¯Ü@ÒÔ#ýAV?hýãøƒ 0*ÐZ\0“°*Ð\\AuƒüÐ_>kÃöÐb?>«ïÀ\"…½cæ©#6>ÒBÃö’Òü \"\0ž>Ü\0psÁÒ?ÛDPvA\\#þà(>Ò÷3EPŒ¿>ûÓ:Â<\n´OÅ\0ˆüd\"ï@A\0ô°AêŽûð‘Áò”ð”Â5ìÞÁÿ “ø #¿‡ ´ cþ© “þ€+´@ÃùhØ€ø÷¤€\$\0øŽ‹:M3nø’3cêÞ`ûèØÂ„ÑT+I8¿Bò3@*ÀÆÐø @'”\\pM¤8Olòüøû¯†‚»ÝM€Ÿcî#üÂíÄð7B÷h`, àâ6oŒÂ\\\\.S>¤›DÌÙCù˜ÿ0ŠË´ÐÆ£S\$2ÃòB‚ù«ù@&AŠ>ºLðkù¬4ÎAóÜ3˜÷Ô°Ð@½;öÍ>pùÐüɤ‡\r¨\n°3|Î\0\nO‹Aø:6ƒô\0¥d7à«@8ýœ%`#Ɉ[ÐÀ=ÚDåÀÐ\n°ýÌÜ3u’LãóC™¢9ÏBCÔ:`£Ž‘\$!hÚ\$Ó“;ÐêB”20uÁ[¬8°ñC× Ä<ôÃäúó篟ÃëdPŠÃß|=q€2pí€V>˜û°áÃ÷ |*1\0Âç\rÐE\0©dAov´PÎt'?d,PD*ü@ /Ÿ#6øÔCP‹BO\n¬©8Ä',5ÃÑüE€ ½ËLq\r?m¤Eq\nÂzþC@+¤är60åCê?3ß/¡Ì“ˆ\nPÜÙlHð•D—ü¯Í¤5\nóü°°ÂÆãói)D°„1(ú£Dƒï£7ƒæÏu>Üà\nà\$Aæüj4Í\0˜?ê4Áª?”ÑLK Aæ¢>Ͻ?Œü‹û€ÀqDI@³£\$;ð†D®Ž8 &¾?;°c€—ÄJØ£bÑPû¯ÐÅþ\0 ðBÅ#3í`‚øˆ)ªÁ»ÌOÐ3CMZ50âEO6èÔC¯ì\0ÂÀŒ\\\$èÍÔûp[Ð9BãíÁª#cj<‘1Ä1B;còÅDBhÔ?Ëô@`*€ƒ¬.qbÄÐøX o?;\0KÜp¤3¥8 ÐRCÌú6/®¤—ˆ\$>lͤpIÀª,!€*\0®+ÜÀ>=÷]±wÅã\nT^pgźú#ó\0ž?\$J@Ä \0*CÈ*É7Æh\nñj?“ê:pArø”]Y€’ùÔL‹ËDbÑŒàúïBÑ4d@(Dä”ÌcÀEçÛâ@>\$Òà 4¾Ø‘þц©</¶Ð?\n€/ĺ>¬gpŽ>šŒü± ¤I6i8¾;³êÃèÆ‰cÝ1¢AZ6€!Æ}<j±¤D¢¤jÉ(F’?dÀÂÅ'óêït\0†üTeÂØø´1– ú ü£þAv?lnos3˜’„50†#Æ>¼Èòœ_¯«Ûd°©¿³¬UкÁZPú©4DŽ|;Ðr£‘ÃCðñ€ˆø[9£ê¤¥ú5IÇ5²I‘É\0ûEOÜB\0{9q C‡|\"pUÇZÎPû` €²øý´GcœQCëGPúJO‹ñÂ6(ÚBïóÇz>Ú7ðÏFøöÈ0IÂ:¼vOŠÇ‘¢BÏuEäµ·,\\0ŽÇ¸r8îÂÈûqgA6>ÀýÑ74D÷0qÇG¥ûêÍ>-SE@# ÑÈÎGÒ÷¤.à*\0i\n\\-`*\0q\n\\eñ½Áÿر\"—Œ)qu¤ýÃï³nùô@`>DÔ8 \0/Ä@þ„_±Ú€¤üw#îÇlƒÒG‚>Ô„²¾-+ß6¿Wl%°6½·l0®\$5´sÔÅ&Œ\r *\0e!èrÇÿœ€qI” \"ÀæÑ> Ș3EILÅ\"‹â‰94G\$/ñ¦\0—´‚©\0¯ Ñ-2>/„ƒì倘üèÓGg\nà/¿LŒq®BP€\"#7ôzñáHMÔ…O‹ÈO\0Ì &£¶2L‘ƒÁT^P@Zúd¨À=”]Q—=çÌKCïEã\0ŒQO¢Æ\\øôs0¤¤>ƒèq—Czù¬†±—G„>¤†²¿ü ÌÄ@?Œ0Â?ü\\o¿³–èø4Md1‰9€‰\0¼ÍGò?m\rDÆÑü(Ô´LdòÃ\\KJ8\rE’Ðù-24U 0VAÛ”…R=ÈEäe£þ¤5!Ì2m³qðüÏÓAEÛô²V\$ÆüÏ•ÉâŒØÅI9Óü‘ C&ù\\GÀ)D «ü§½òü4çIç#pú«#ÆøŒ—ññCˆù\\x£ø¿C(\$òƒHÍ:NI(J\0΋ß\"w\0¿,)PØÇ¬‹íÏ‹4<þÔ!òŽ=ÞúœGošÄó‹âP‡¿6üìN±QDë\r[;‹A|KÒ'AAäP\0¥C:šÊ„̉Ñ4Åã*To‘†£ÕD˜F^ÈûÉ‘\$)Ï¢»¬\n«É’àÍ)’(Sà‰\0ò’È(ý\$:ä@à‚²Y8’‹JÐà#ÅЂë+œ¯\nQ5ß+`a+ ¸iþ`6x𑤪†è: ÚŒà.ÐT‚:‰þa˜\0øŸcv(ƒ^X¨€Â¼H˜O.\"JÊðO\rÎË>ex-¾¨J¸€èKPïû¤rÔ‚-`2²€ÜË_à7€Å-!\"JØô¶òÝJêH.²ÚËo-ø.²Ý\$ª<¸BOЀ`> ©dáµ\nêH\"ò؆o+›“§s‚Øè 3ƒ‘+¢± ©6¿/¡ƒa.Ð\r²ð†nd»²ï˨é’?ˆô£z1\0¥àð‚?‰¨ 7€ˆâà<À?âãø\$Ó\n`+Aw*MQ¼Ã<Pýo¿°?,)#P>”à€šøÌ„\0¦?jŒÞÄ“ÄVqÀ?“£ñ³\$¡ 9¯õÆ-üÄ2ŒÌIÄÐîD9̳Lg1h[ÌÛÏ1ŒÄsC1sÞ©9Lz?à LWdÈovLŠþ#ðÐ9`ͨ0æ€Þ‰É¦W·–ˆh>\0>¦¢Å/)Dáü²·Lº¢¡ÀÌÀ\$ÍaÀ†¨9*ƒ<:C+àJËìKPJ¸\"—L\\Ã*bÌò 1ÔÀä6ë4ja+\0î%Qf ;KœE¬¹ÀÔš`è> >7¦tÒHw€¾MPn3I:fàD <LÄÊRÈ'¾.\$ðíBO\\²\nû Ðø5ã86Ä̹D1‰<\r¼³\$Z…œð’ƒ„ï4Š%r̃¬²×àúÌþ\$€ƒË¶§»éo™^Ú\\°È\0øf[z“e…í6|Ö“gŒ&ñ8+M=6È5ˆ³\0Ò1Idì{™^fqd趈s7(|©tM.]HSó[€ø¬Ô ÕÍ;7yC„—šÎ¸mÎÌÞI|A‚Ê:`c †Êß8\rÒ…iÔɃ¤ßÓ@¬‚P`È~\rlËa=M3ã€áf‰<ëÀRå\0Ï!ûÀ@’ØeØ«ríÍdO‘t ¬‰T°³-æXY9A“˜:38áOÊÞadÐ¥ö’gL³fxË=4K\n&€ôu0KòͨÇ,ô³o7¤€ëĆÓ,à½Î3Ë:h|’ÎKbá)AN¬úÄ`ì€Ñ:ØÎŒ€×;´ €Í»*sI&”á«Rsµ>\rX\r!\0\nÀàBsVM63˜KâO×:Ä®ƒƒc5„× úÎæ‰X!AœQ9z%`º{:èHòºDëE€îcv!‚Î,Èôá“:Xƒ)¬(üº%˜Ë2a&Œ«,ðl3Ó8j1è|’͇É=CRrÍË<â\$óŽ\"KB3äöÁ'9…:|÷)`Oj+îÀ9 }-õSÒ>2¬ëUU5ÜôBUNàóô÷²ÑNÄäìS¾NÄüì«ÈO²äû3±KNìÐŽˆ†¨ ×@:/ç7£ÄQ†¨ç!Ô@.’(&v9ÔédÓøŒ^þ“‡’ج!ï¦[.pGc K#?¸füÐpÃe“Oæçd®€2\0k6)„,\rÿ65GmOFV™dåiÈx,ÿa=O@s³þc6…`¤Ø\rJ\0å;‰³H†(ù*ŽrÅ-Œ¾.íMÛ[ BÎ !(àóM¸LP«bUèÛpJÔ:î1úÞE“»¦º!:¢,ô:‚YB‚ò*KRÞ¤¾rÍ0جLî“a6Å;6+2Æí)èUB`JsV0È:Ô0_B14/ÎúíAOáœNeúÈ)A~\rÚÈ öÃÌ –NPów“,È´C„î3œæ®¹ÌÞ°T3öq9}SQ\$ÄãA‚P“DÐ;!:À!îæ¸YŒÐsÄÎû6Ø“ÑÑRÔŒFt›#C¨Ï€øQ\\`rXr…<í'ò×72ؼ´O-„w9Ó¤ùËb8à5€Å3{¡\0Ä7ø\ra\"ƒ\nh[j·ŸåFÛa)”Ñ+€2Ï<%’´M¢ê|®m¸|\nÀ54pˆþ &bUQ¨8\0EŽÑ¥4AAN,ËàìËFØ•To(ÉG`šO•GA›³êËGlý`:†=è\0<\0Ðëꔃ²ŒTÌNϬ=.û´ 6Ζ(ûSBİô\0,Jð?”.º(é†%“…,Ê?B.<2ðhM΃I`éÎŒá4ô¶*é˯G°ëì'ÙI¸ÛíÊÑ9š¾ôžRX—E%,O\r,ʈs³Ï*•(”}<Ú—@c©öRœj]Dþ`UR÷γ,˜.²÷·d£¥rø¦’ \\·N•ÒÆl¸ÀØRÏ-󓴵˚Üëkô·Q•K„½”¹,ƒIå.ÒíÒêšT·@1\0ÉK 4¼Òý/]04¾K›K\nC¨&•F,¶ô³SF0“ÔµS.-´ÉÊéKÅ2ÔÀRÏLe'ÀìÓ7L…0”ÏËoKõ3TËS.å4T‘:X̾4‰Î9/:WRò9.Í62ôËËJ6ÀŽS .ðc´¡Sv^ 0®»ËèO|L±MD%3î 4z3Id\n»ö•áú#tPq5h{!7Z‘Û»2 „ÆthÊ !îK€Ñ7YÝó1S³<»áh‹µ©½Ç-<ÎÍpÆø€jéÍÖà<4øÓ¹O˜%@‰OKBø°ôS¶!10Ô‡SÚÒëôõ‚YF…?UR4ÏÁ›ÓÜÇ!•õŒ~ÂXl´=¨ÇH|¶5QHýC&¸\"1M'µ8¯5a`Å?¢SPlõ`0—\\ÝmËÈTM,8'1eQaA& \nÇTRèI¡ÑGÌ¿´ýÍZxôâ6yQôôñ¼aÀJÀ‹¼üûkU&ÿOXHá‚ÔphQEN†â=Cµ\"ˆLÉ›( ÚçQe@\0;ÐñQ®ÓPÔÅD\"€/—ú\rB༖tãµTžì\r<eÐÔeS}Om¾—EPP\rüÓ«P5B•4U\rR==õBSÏR}Hã“Tè#µE\0Îô¥U‚=QE‚J<ýSð` Û‚¼1x\0ãU:óéOá/‚¼€+µN J`P!t8Õ\rT¥µ7 SõR58\nc>ÇÆºÈâ!ÊõŒ1{ÀúÓ¼uE€ÚM4{Ö”4TÞíGa;Ž|ðñà5\"SÎÕýNkSä8»DÄÔ?JcU0Õ¯RtB¸{ð5qSåB„Ï,±\0ÆpÐàÔj†!‡\0006K¼1å ƒX@¦D¨Vå_ .Ô(¥_`-Öð`ÆD¼àua .‹•X\rFÃÕöðõRõ…ÐFD½•‚S÷RxhÁª<mXjïbÖWù_G\nVšÄ©èS¸ï\00074Ù\0ÒLRÁ\$QíX›pˆÄÓðù ×ê\$°Nó¡Ö&83&a+²€|l³Õ‰ÏÉQsÀA£…CXšú]Î_X]‚\0á+8+UzƒsRPΨQ\0Ü\08Õ™PóOÝMU¶ÔH6!ªVX¤5†˜X…a¤ÇV/kÓVF”ý`‰TŸZ\0D5FÑOS½nákÖóTMSÕ¾U\rTMZÒºBðÍìoÓîÜEgÿWGµfµÅ„-YÁ(µ}V7T0BÀ©œ4Úð’Âòƒ[9‘5ÖX´åm¯ÿXhét>×LU`4\nÍŒTÑõ††o9vÓ×FÊUm®Ö\"ýu†DÕ€ \rw+Ö˜\r`©V(ýVÏãPËÆÓjô]Kâœ4°ìoT.\$mDĵ¶ S’à‚e@3ÿ×;@7mŒ:È륥“´dðÈ!õâ¥Zð£ôá»Q[œåõÑ5P•µ7;Sôº/BÖ!McÃG¹ÉT»Wõå(V–ÖÔò䯕<7ó[lÓt…‡^Êô×ø\ri0ÁPÕÐÍa£|VX‰•á̃a[x9Hˆõ]¿õ¬^&m¹‚¼ƒÒ¤ù\0ÙXl㤫Ìú•‚•Þ€»T‹ÐáOXl0£öØ(ô,Ï`€ØoaÈÕu€×ø3½‡U#Îô'0+Ó½8ñ]HT!XX\ryW@è¡\$ÛMQb¹‘-ä)ÓX oõ†‚\n|Å`-qÎ-bÙ¶U‘VcŠÇÒÖ ‘3N=5vAg\rýŒÀ8<IGPBÔ9O^8. Xk®ö;+\"Cµü×Z/åÂUUo[i`Ö\$×ïd].âÙ(s¼Ñå“ÔèÕ`-•Öâ½€óqªûe‘-ÂN¿=#[ÖMÙPè…ÅÑO^(B †”6ÍÏ_u–¶2:0mx Yg^5”-‘YG8”´AØÝc¯VVßÉdô6Í\">\raè™^íÈЮ0õ\"䱿R¤¬–,·3Dä¯Åøß¡2iGÈ5§Í?:\rT!ƒwg„óM[7;[v{ÖªCs\rU9d×`ØÈyh\0h@ØÈ~ŸqT4Ì×_QVÍvÃø•F5ÔPƒs*ÄMc]Ió9Ú1T0m†V)S•ÓXÖ[üâÍ*Œ¨c“dA+Œ1hóbõ:×IhõM@Ýs>P¬ÛÍÞ9ûvuTË>¥Ž‚Ö½` O5ÙccÛÍöjÏ?QëTmq\$¼¹—=(VÏ6F\rTr¶®~¥šÃ\0Ø|m•CÚ)[Õ‚N¨ÖÆ,dÐ+;µQm™-Ňðê\$µo²B-žsšÚÇRˆÕàN›:’È/8‰>øb.°Û40>‡ÆÚñ,‹.tÚºJ¶\rÛ\rk®•6Û WMmØ3[Ñx5œËêqÕÉÑìLb´6Í;`•Lm‹ÿ4•Iµ6^d!5`7¤:aOÕh4õµÀÐ-3üÒHÈUm˜€¶Ú’³^_ÀÔNTê±²[PHðÙØa=UH\rE µ\rjM¶•”SåPsN6ºMXQ 5Œæ Ã\r’ÛYKqsþ[¾s-\0Öé®ï]¼aN³d5?ó+—Cf¼ÍÀRe^ø+@Ø[ÓP€5ËÐGa‹öôÒµoM@w\0QyoKŽõUÛøe}¼Õ[¶_oK’Ž@Ûán»wxVýpEºäùPuo5öR“ñ8c·.¥ Uo5Áw\0ò\n(%ÓNp¤ëVÖ®ˆJàˆ AqtÏ×Zæ#Õˆ³òÜk6””ÜiEÜØV‹R{qü×fØ{3l@äPqH‹r!VS]úÈ6¥Ú'q«Ð@>R=E\0ùêSñ+UjõÊ”øYÓ[źuUÕ¸Õ»rÌÜÇp»6Öõs]h'tË mJ ¬8ñQUUuD’m2z›Ð„àˆB¡K”ßÜÝv'P¿l]AAfËchÈ\"RåV«p´ÓXÌü;UË5öÜŽÆåÒcƒÖ°zPTuUQYëõíZ¯5åU¹…ýJen5ÀÜnÞÕovÅs=Hu½ÙÅZõoa‚itÝoUÀÚ»uuH5nÝ=jSÐÀUPZMNÄàˆÿQmobF·A>´]i\\¨G\rTŸvÏÖ‚Ôâ\"•Ä2Ø×v4γ=]¶2åz\n=:¢\rh*s¯×fÅÓw_ÔäÊUt8Å[Ý„8]Ÿ+=•ÐëGÕ×7z=n…Û—JÝòßuè8|«Å4u]ô caÈÝzà×€YwíÊt]ܪÔÕáÅä^€ˆÎrÌÞ)w]Œ%‚i,˜¦õí¤e}w—0<Õ3ÕäµnÛLr½å.³Ýiy-Þ7(K&‡\r_;f‰[̈\\\rXÃ+Hï…çÔøa=ܳbÞnôc€ ,c’!£Õ8\$m“VõvRæJ]g -†W¹OsˆôŽƒR( êÞ5]WHVC\\5@DÝ!s%Î’²^×sdñ%NÐÞ9úÈ7·Öƒ{U™¡+ÜÙI-îÕ¼€ïP\0\"FЈS5…ÒFÞÏ[Òâµz¶Åsk(7ÄEz•Ÿ÷ÇÖ1-å@Ýxñ̹Ú>M³g‡ïWM£âjÔ»n\nÈ ƒ^«tLµ·ÓUc}AÃVRÜúõ™@;ÕX-<sÔ<×t…¹C8^!P}Ì3q´d·\\ζLÄ3uÀÖúÛû\\-\rSlX{sàLÅNlÙåïL™ßŸnà‹¶&ZÅpút6_[\r±¢°¬ƒVÅV÷è„C~ÈIªE…?W%üUöÜ«u…[ÓATAW\rü÷•¦\rdáwøßÅV½ÛkÝù¶þÏh,8£ÅŠÏ”Üí×D×ÈØ»¦Ë|añ¸6-_1O×Ã`j…ýo?7>\nÀXsôY‘nã^cÑÙ{jÈ7®ÚÄÚÊ:ÈÜ]E\"JVJe~×.ÙQHgžT3r…cÆÙVßBceø“3e^Õ€…9®8¤\nò ™Zð(ä䇪½ ;tæzôãÕ# üq#à\0V.\nÂS/DkÈ");}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&ٜƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function |
|
9 | +*/error_reporting(6135);$oc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($oc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$yg=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($yg) { |
|
10 | + $$X=$yg; |
|
11 | +} |
|
12 | +}}if(function_exists("mb_internal_encoding")) { |
|
13 | + mb_internal_encoding("8bit"); |
|
14 | +} |
|
15 | +if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo |
|
16 | +lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");} elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo |
|
17 | +lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8У’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤ l^íZ6˜ej…Á³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxlÖ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù €‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò 'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,EÍ`T¦É6Ûˆ-“Åì¾ÅÚŽT[Ѫz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø •ÿš´hìÁ{Ü£•î ËÔ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØÍ‡Ð¢©‰‚êcâ¡óB’—}Ø&`ˆîr+E“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼ ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡ ³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£Ì]6¦Þ1´!1M±¸@a´/`Û>Ù¸üߣðÕßÈÛC/ì6à´·#p@pá‘óÿ`Zÿôýchý°\0ïë\0oæ€ð4OýOøi\0-\n«îÿ/ý\0£Dð.ÿ ¾ˆ.“Ä\0fiŒÀÈ«£€˜\0Œ”IDüç\0§¬\rïý0f ßoãÿ€ÊGüˆðeJ|\r€¿ýl ¨3ê~ðiP›¦&“É¿/µ\09 ^\0r•0]¯õ ¾Â›oõŽ.ý\" °ÐÑM¥íðvÿP€ZÐÕmpËP°ùÚœÐÞ¹ïô{§†C?²ÀkŽ“Ï¼}ð®þdöïʰ~=‘.Ô- é Ðm1>hûÏÛЕ1;QI‘OPÈ\rºcßpApV«k\rQ*èQ}ÏçŸq>˜Ðu15BqQ[1fûñl«Â€apå¯ü\0Û‘*ŒJ©Q=ñãّGÜäŠÕÁ±Ÿ±_ñ—ñbŒGHF.‚0Ôø = 2P™Àó æòÏçP!ò#(3 \nÙ!1&72fª`Â/å\0°‡\"PÁUõ\$ñ\r0Ìð,QrU&2fšÒ_²Xààò]ð9\"’S'òƒ'²yð8\r¨ú§òkW)Oõ)’*Ra%ã\\i—%ò‰&Ò³+r…’3ðS`…,ñvý¦&2×L–&Pu*›-ð˜0\"Á%HĬԞïÏ@Ø“±°H‰B–P(ÃÉ\$p&ý,1M ªØÃ®;\rnÁ.¯Ê I.Õ',1ò)Ó4ý²å2°u+ó3æ `ÈSŽŠpL\nt§’_*²S3;6r'h35¤55䜋d2q+6ñ8‘O7sC\"pm8Ò³“6³—9òm\n@e0É<8B8©<,( ¨8²Û\0è Ó0šJÙ<@¦ÐI¤«ÀR6pÔmGË\"11¤6ËÐ.\"æÀ‚ï5Ì‚ûÇ:àÜ8bêA1±;ƒ';Â?<*\$È,³Ìo= òTÓÖ/3Û#«ºÒ†¬");} elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
18 | +lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s> )â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n \ræs<ŒPi2INÆ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(Òm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$ CAÆ ä„¤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AKã¡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…): ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDùÑ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æÚŒÚ‡Ÿ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/ØX ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éï†PÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðÈôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEÐ€Ôøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6↬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F 4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀÎ t]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ 1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*/¹UÖVû‰¤þpì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Æ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·> —BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ ¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6Chº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ß§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)×…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üàå€ ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤ (€\r¹öGFžª@ؼÃúÙÀß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷Ƚà¸à\\P’,\"ª-rCÉrVäæY×·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê ‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rÔ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔÄ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„â¢ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ €ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;SÇ]ãñ@ËÇè:Ââ“÷I~Û‘•ÙùÒÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}Ï:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð‰)¯i4Ñu•sÁLjXÁMP¬‚^«ä5¹O’¥ bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE% dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> “ªÿ'Ó|“#hàÅœ˜6è¦\rñ.=(Ôv±…¥;`\"OøCÜ!âBŠ9ã.B!UEÌDáÄ‚d œ–€)ºKŠ Œ\0Þ» ÆmF~ B{O\0¨Ï©¡¦_éø³u#„–5 =LjÀò7´9 š6¢î£lCV‘€ŒTpÀÚ08± 1ÄÎx'0@gIw€Zã†@9ÇLᎎ\\v\0_(º\".ЯA[sÅ„ä€ê7I(azl_„EЦ<ñ€“tƒUöë7`tèÒ0ø‹(ßà3”=¦ço\$[Ìh×!¸B¦œ[HîR¶œœ) )nxaZ™#=HË8ð뛥 ”’%þ@0w5J’– ¸²A\"F:8NŠÏ\"Xù- èÔ¥?pj@)iUjƒÀ™\$Ìš-EÆ÷”E§´\n/¸œPÓB–P@y8j¾Y¼Kð³9 0ÊH€Ddš&0Œ¡èh“X \\Ñê\$Ë(ÁÐ`d\nEΤÀŽ@ÉJ“b*NRP\"(q.f#“dšGÈæD¾š¦M’n9:*€¶fÐŽt4æò:p½Mí(5%ÊQ\0e”Sb’4ú1¤ÉõeM‡),ŸR‘\"k§m?Ê\0rB¿( è\\èšÅ••de<£\\ÊBMò’i„¢L (Åh›ÚRÁ¿D›e\"r™CÊÖRä•ô¬å)9EJâQÒ˜> õO´ãí`šAÈ#®bh|HNÐ\$™%Z#˜4-® 2=ˆD‰ê„ñ\\´æ0څȆ¶õ\\’\"©aUR Ã-I¨ãk0\0ÛæÙ‚ÊÃæHýH³ ÀÎ~u”]QŽƒFš1')-¡\0'óxüeüˆÑ·ŸÌÕp\$ÆQØeaþ#\"ëRǰÀœ@\\èÂF0ѸÀÕ#\"–˜&<¬1ÎHЃÃ\" BªÂð.ˆþ#h˜ÎÃÀ/ùž…TmA[€ç\rRŒ(̼@%ÙE8ÌÂÙÐ&\$ `Eà€ŠÃ,B]À(a{„@ù6I›¢k3[ˆhÚ ìEw\0¡1®)%檘 @Úªÿ\"ˆ6ˆÙ®aJ¦I8J+4q€Úa¨±0\nBë2É—àa“!{q›•ŽŒÛ„Àgá1!9à:\0¦Š&D8|8Á\0Ë:á5P1ƒ¼›0‹ã:y„ª¨FDHÄÎUk3Á’…USLKôàfŠi‡mB¹Fk§@EPØM-ä;1ˆ¡%Òá82ls1œ´!&û5¼ÍRaÅñ—ÄÂÀú’4’ÏP%¸„eOþ/¹¨ˆ±³ÈE‰I@C=ùùMHÉÓôd°çË8@¹–à9rI¼Ð€£Š*B,› Ã^ð‘Ò\r˜Û€N猗4ˆB“™ZCXÿÂs! *@ENø)»Ð”4àa\n¨Â )¿¸˜?`+¡€&‰C01M¼SqDñ€ÞQŸBð\"ï¡ ‘‰n)ÓM¹¢!x\0€Š5Æüj3w\0⣂ð0!\$\0`a7º¨2Q¶Zì>I4ŒÖ}ÉxÑàÁ½›ÊÏÚZu¶\0´çñWÉdd4J2„†26\n À¶žÙ ŸÅ…æ€OhÜFç0Èš\0=΃š%Ù1Ú\rÊAàih@vM)’\0¼`£&Êa2ù´Kši©KðfhZUÆ\n¶‘AM(iéP€ÈW47¥|ò©ZQ†þ:¨5X>x#5†¡s=0Rªå>„“7úÓÀiü'èÙž\0Ê™£ú)`hþRÁð…š—d`œÑµM‘IQ\\V´ÞV‚ã4T²¦ÓUãåR%9F“aºhÕ47œ]Mà_`>P~_T!¡†ÑN\0ŽÎ.lÔú%ÈC(DZSþqu\0œ¸…in默2¡áÙHéqCÔM`”…AÞMqQ¢~«5p+ŠAZh¾¡3Ÿ‡Å¸\n62¸URbq%B(\nÀTØó‘œ›FåâÌð>œ8¿†GM ‹LpiÈ¢EQf‘M&•.©OQ\"=Z{µºR¥åïl¨aOêïØ«”ýk}° Á-´~+Ê`µewíWêÎT Õ¨º2ߘ’.¤1RÒH8H¤†d€Á†h@0Œ\0[€@réŸ j\"„ý¸êöOZŽ ‘1r#¬tQ@7—V5kÈ+˜ÖÉʽVlï¬ì·\r-å®–¯U„Ý\$\$XÚ¼ž4µ«äF6{à/ˆ‰Ç–P¡óZ¹s½|Œ\rcÓ€f™Á˜f¸? •_«™XՔ𰕆¬@Áë—â0nlŠÜ„Yòg:×°ËSæâä›sª~˜šâ¡9ëî×FŽt\0/Ã\nÅ0']y‰á^ŠÇ#&¹\rHœ†j‡R0ý:æ¤â‡£¦äD7J¡Ÿ~¿Ä52Éælë”D}J‡TàeΜ% ŸÕ}¸è+R#”°k3T¼Ýë¶\0rYuŒh¡‹ÞŒf¼“Þleù„ØAï1S•TØP\"±¾PhŠE¶NœÞVK`2Qò\0e©eK‡›Š>IFÜš-Ã7Sê=Ôù•BÀ¼j¢N5U÷[ñXl'\0 2¡…j\0;ªÍ‘’ìú®J\"\r4hEž±FXômRö\0Q‘Ö·*/X ”K£{hÍWÚ‘ž©”l€êm'j8€ÚŽŽ.êFˆÔsUÔ©µ\"iþ+bÒÊBÚUl1 ¬¼RCGÐ-²3Þ)3å\0ø'ÉNv?³³PeÒÔÀÂZžÕ/óiãOÝ]6b“|1T•ªÉ×jØHÚ¾×@mµà¹-k_TÃÅPè–¯\\©¬\0æÀ69¸°nU¶{‚-±Õ5Â!²“´øGª³çξ5㚺m®S Á´\$룱øm3õÙ%˜`[¯B©/ËešØÎõÉTm§i‚N›o£!âàµ.È\râ÷0¨6 ,lí¬\0äàà:&|\rÖ»\"M¯¡kw*ÛrHVó„Ü5Û‚Ãjàá „YpÒ“ÙX\råw{Uß…qÄ’Ü\$u⨞Ul{‹Û\$×¶þ5mÀ(ü`/¬¢—ù¸4/nIp–j\\-³¶ç_3\\)òës×–çW–·mçt\n†JR—D¹Ñ‚%tŠ\nÝ*‹Rzá2>²°\"®‰a²\0Ö8Š1˜Žè¤/sÄ@Û†Jì'l—Hu®k Zªç©´hÔ8§s}ÈšP§)R*“Übûe%²í·o„Ús– û2aQ¡J†©¤Õ°í‹qkÂ6g. ¼R“/({Ǥ~ÙEŒ©;ö\$ÝÓt†löÃmIêºèGR:iÕ'—àÁApªÞy€üÛDMºŽ/<¦ÜwºÁàp\rÀ\"•Âá}\0ßPS€'éŠß܆“”pý¶k`CìÜqEYÀ3Êd¡èÉ|p{ó DJ;úå÷cHTšÏWnW<)M5~ÆY2÷–t9Š©âkÞR<ý«q#\0¨ýep7Lø+Óc¾ Ú\0u\0\0®mÔW¾‘c}[* <÷ؾÎ+¢ër7Æ@+·Ô^/Ä·ûò_ÀYÆŽ¿ £/yƒ6Ù¾þ«%œXÛKRÒÚoƒÙS¯\\¾ m/ˆg³PþÉV–%D«¡GÄOiuöÝt€åN)®›Î¯&ú†ySô0jn“rrÚT”y×myˆk!É8UšøDn£Bþ\0÷l¥¨PGç.[‡z··|†8bGõx×Ñ\\s[µ#¸?>:£\0Xz f¯´ f.â£4€^ 9‡ |šË\r§·z+G¸Z¸D©È?‰5A¢„A]¹1ϱ5‹7bvæ`|1»èk.‚LUëÍÚ/`Weñ©'âàkû¹†k°ÜŸàÅÐI\0wvu‘]©-˜Ó%OÈb3ó¡j•bŠÍ™T½A%¯à&êIÊÜP£ŽcBã9Í‹{yBßLtVÖ?ØÊF:hªUd[ËÑ ük±–8OSV« káZÑ|â€*ÑU¾Gû˜-k¦&ˆÚI–‘žÈÝ”ðO9\0®€Åˆ˜ÕeQ>7ŠÉp¶e[¶<¯¿RæÝ h\$®?Ïöäúª¾AñÇ‘ÿ-×!–iÈ|¿Ö¿…ä[UγïfEƧ‘’SätF™RUÎHÁ?¡Z¡¶¨I@â¢Ã‘‚šÖEY*–½Y²‘YúÔZEÐöÂÂ=–ì:Û+Ù@¾VÐ6„·^ÃÚ½NÖ8VK2‡’ê ¼#èbÉŠ[2ç- ñ…k2&*äENškV¶2Áy¼ùW8+Öœq°Œ&9„1åøù+Z“Dªã\",¥œ““‹Êƒ#-šÉÈ4ÿ5•µ—‘cãxPŸæÌ•ÓÅlXó Ös-P”χBÂßÕkFŒ¸ÖŒ\$5m€W@º¨\0›Ò—!úÌ`@ð¼ß©²\"áOõa7œš†Ï14yo®us,|d*+É¢ee7ž<Åœó:Çߘ¸Ôá]œbg!™ùÎbsŸH\nr˜„nÕ–É@Ø@ör Ÿæâr€)0 €’à\"\0\"΀òO4]ªÞaÄH*•o–,뀬.CpÉÒÉ3>Šu©Åx5™äúž‘ Åæš³ÓÊVZ–Ò€,,\ršfáHl÷e£êè:Úe™Z@Î]ò¼½\rs@¨%Ë\"\n!ìk‰úhÊ´ËeÈ´?åÄji: ˆ>{ÉšÞËŸ½! W.ºEBV‘åË \0002Ï9©¦ËæšC¼Ñ\r4íÌûóP+.Ÿ‹=5\$KbÍÂùËh(5\0©I¤CŸèì“ U«ÅÇ4'V”°(-¢!0 À¨ÀÈ•:eñÔn¥Ã›©’:¥”-F®‚µ;/¥#”‡T<¢ÐùMVH/O¦½±´Û¹ÂûQ®€Åž4h-âDþ5ÀU€\0‚@\"€€ àFavœ@à€y ëé'‰;.HnrzxPô^€ÿ[áªûbEÐÖD;SYãåÚ Pôï :1¬ÇN‰iâ€wfíw»Ü1ÀY½¨ù™| FâDiZ×¶D|{q”RÁà0\"³Íç(åO³ÕDîƒ —z`Ò)Þ`-ˆ Ä|è5Ql_c.øküö<Ù5¤0§zÏÒ–Ñü›Ûßкe˜†dí\$’©\"þJè÷ÓSÝÑû\n\rHK¿_Ó„”tà4ç€s›A\njVð´ñŒ!oÚ[l¶œOPÀQª©¬‹wÑÓ†Q¥9ÛÑ!…5€ì¥\0¶Ym‹g„õÛ(@u¶§ƒXO_éÝa~ÉÔ&Ðó#( =:ã Ã\0½µ×k4WñÏ\0]IàŒ+šf FÕÈj¥C#Ûn7ˆ?µöô×N Ní’´)Ï&zÝŠ‹“o»Ž¿h¤·BlM½TU)5ÜËp¾t€¦µ›¥tÁä¶ùºî¨\rµV.è]û¹Í‹†Ð»¡nç†JÑív… ضï·t(ÍÉn¸Ñ»±ÝœD2)mÛž([Ïr©˜Åë³2z eŒ¿¦ñ¾=Òn*Ìvûw8ÝÄàx+§<` 2½GFííTBÛ=væh=ºì};L/wîþ÷£¿÷v[«cîØßîã÷)¦ÀnL¦*§¡¹ê¡ã7`7ôÞ‘þ÷©_øˆ\næ{˜æ‚B%Q\0ǃ@pyæ÷\0ûÁȈnè'Š^î庾&‡Ó6Þ\0•È¿‘Ôð†û»Þ̃%¾EKÔÈ;,á‰â·PeÍîl-•:ÙþïgÄKüëXTØEPVP. èP ´¼RØl²ë±sìOmtâ•êhô’ô ñÀ¬#”Uv…ϲ=}ì”a>\"‡õàÆ½Žˆøo|RØt£Më¢û<fM SòãZ˜QBà¡È*¡o^ð&ÍÞ5Æþµ€*D²QþN»\$*¦ ä¯ BrD`Íòe¡Ó=äç'¹?Ê•T MxkkÓZúŒ}Q²‰[~ùŸÕŒš(qmQ:ü{Þ‹µè¿ó×Ͳ°f}N@±lCaùðˆê\"N`ˆùAP“cÔ€V0\0ÍB’fÝÙÀž…ø„P\0Iu†5ª4›³ì÷ÿ©Ð`°:*†`þQ¢wRó(º¸éœêÆÊÉû7È»™jj÷gçdc°™ð6,É/%ñç2ç¦#³òûiÉ»8\\nϧ‘—ðqö‘SuÛ³nu4?W7\$»>-0ϵЦ-7d}y¼…[áx‡ñ~»¸0òSükó«y{!©sü°ö(@6p\$a:ʨ€Z5}\0üç]BßøŸgŒÔÀuTT\"K@€uÑþ<Ìž.ªugGø›±n¢¿ÚŠ|aâx¡ÔÀÇ窱ÿX5é‡EØõØó@tçVw¿ü?\0½ç„ruY둹Ï.Å?[ŽfèÈ9Îñ9ô3£® I\0—ذš)±OuɈz*ð’ãbí+\$Sª9ÇØ~‚vŒú}+–Ññ„«Ùtwøµ‹\0\\€");} elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
19 | +lzw_decompress("v0œF£©ÌÐ==˜ÎFS ÐÊ_6MƳ˜èèr:™E‡CI´Êo:C„”Xc‚\ræØ„J(:=ŸE†¦a28¡xð¸?Ä'ƒi°SANN‘ùðxs…NBáÌVl0›ŒçS œËUl(D|Ò„çÊP¦À>šE†ã©¶yHchäÂ-3Eb“å ¸b½ßpEÁpÿ9.Š˜Ì~\nŽ?Kb±iw|È`Ç÷d.¼x8EN¦ã!”Í2™‡3©ˆá\r‡ÑYŽÌèy6GFmYŽ8o7\n\r³0¤÷\0DbcÓ!¾Q7Шd8‹Áì~‘¬N)ùEг`ôNsßð`ÆS)ÐOé—·ç/º<xÆ9Žo»ÔåµÁì3n«®2»!r¼:;ã+Â9ˆCȨ®‰Ã\n<ñ`Èó¯bè\\š?`†4\r#`È<¯BeãB#¤N Üã\r.D`¬«jê4ÿŽŽpéar°øã¢º÷>ò8Ó\$Éc ¾1Écœ ¡c êÝê{n7ÀáƒAðNÊRLi\r1À¾ø!£(æj´®+Âê62ÀXÊ8+Êâàä.\rÍÎôƒÎ!x¼åƒhù'ãâˆ6Sð\0RïÔôñOÒ\n¼…1(W0…ãœÇ7qœë:NÃE:68n+ŽäÕ´5_(®s \rã”ê‰/m6PÔ@ÃEQàÄ9\n¨V-‹Áó\"¦.:åJÏ8weÎq½|؇³XÐ]µÝY XÁeåzWâü Ž7âûZ1íhQfÙãu£jÑ4Z{p\\AUËJ<õ†káÁ@¼ÉÃà@„}&„ˆL7U°wuYhÔ2¸È@ûu Pà7ËA†hèÌò°Þ3ÛêçXEÍ…Zˆ]lá@MplvÂ)æ ÁÁHW‘‘Ôy>Y-øYŸè/«›ªÁî hC [*‹ûFã#~†!Ð`ô\r#0PïCË—f ·¶¡îÃ\\î›¶‡É^Ã%B<\\½fˆÞ±ÅáÐÝã&/¦O‚ðL\\jF¨jZ£1«\\:Æ´>N¹¯XaFÃAÀ³²ðÃØÍf…h{\"s\n×64‡ÜøÒ…¼?Ä8Ü^p\"ë°ñȸ\\Úe(¸PƒNµìq[g¸Árÿ&Â}PhÊà¡ÀWÙí*Þír_sËP‡hà¼àÐ\nÛËÃomõ¿¥Ãê—Ó#§¡.Á\0@épdW ²\$Òº°QÛ½Tl0† ¾ÃHdHë)š‡ÛÙÀ)PÓÜØHgàýUþ„ªBèe\r†t:‡Õ\0)\"Åtô,´œ’ÛÇ[(DøO\nR8!†Æ¬ÖšðÜlAüV…¨4 hà£Sq<žà@}ÃëÊgK±]®àè]â=90°'€åâøwA<‚ƒÐÑaÁ~€òWšæƒD|A´††2ÓXÙU2àéyÅŠŠ=¡p)«\0P ˜s€µn…3îr„f\0¢F…·ºvÒÌG®ÁI@é%¤”Ÿ+Àö_I`¶ÌôÅ\r.ƒ N²ºËKI…[”Ê–SJò©¾aUf›Szûƒ«M§ô„%¬·\"Q|9€¨Bc§aÁq\0©8Ÿ#Ò<a„³:z1Ufª·>îZ¹l‰‰¹ÓÀe5#U@iUG‚™©n¨%Ò°s¦„Ë;gxL´pPš?BçŒÊQ\\—b„ÿé¾’Q„=7:¸¯Ý¡Qº\r:ƒtì¥:y(Å ×\nÛd)¹ÐÒ\nÁX; ‹ìŽêCaA¬\ráÝñŸP¨GHù!¡ ¢@È9\n\nAl~H úªV\nsªÉիƯÕbBr£ªö„’²ßû3ƒ\ržP¿%¢Ñ„\r}b/‰Î‘\$“5§PëCä\"wÌB_çŽÉUÕgAtë¤ô…夅é^QÄåUÉÄÖj™Áí Bvhì¡„4‡)¹ã+ª)<–j^<Lóà4U* õBg ëÐæè*nÊ–è-ÿÜõÓ 9O\$´‰Ø·zyM™3„\\9Üè˜.oжšÌë¸E(iåàžœÄÓ7 tßšé-&¢\nj!\rÀyœyàD1gðÒö]«ÜyRÔ7\"ðæ§·ƒˆ~ÀíàÜ)TZ0E9MåYZtXe!Ýf†@ç{Ȭyl 8‡;¦ƒR{„ë8‡Ä®ÁeØ+ULñ'‚F²1ýøæ8PE5- Ð_!Ô7…ó [2‰JËÁ;‡HR²éǹ€8p痲݇@™£0,Õ®psK0\r¿4”¢\$sJ¾Ã4ÉDZ©ÕI¢™'\$cL”R–MpY&ü½Íiçz3GÍzÒšJ%ÁÌPÜ-„[É/xç³T¾{p¶§z‹CÖvµ¥Ó:ƒV'\\–’KJa¨ÃMƒ&º°£Ó¾\"à²eo^Q+h^âÐiTð1ªORäl«,5[ݘ\$¹·)¬ôNô\n«ž[Ðb÷ƒà|;‘éîp»74Íܔ¢¨ÐIŠCË\\ÞX°ç\n%øhØIäç4Ïg‹P:< ôõk¦1Q™+\\ÚÈ^å’ ™VèøCàòôWàÃ`83B-9F@ànÃT>»ÞÀlj-–¿öÊ&âÜ`9q¦…Çßä‘“PÜy6Üå\r.yñ&£ñ´ÎảÍÃE8Ÿ0 êÀõkAÁ×VÛT7ñpïÆxØ)Þ¡~¤M½ûÎß!áEt§ÐùP\\èÄÏ—m~c½Bð\\\nímŠv{µÎù9`G[·¾~xsLî\\±Iõ®ïâXwy\nà¨çu¯áÁ™S£c»¬€1?A¼*‡ùÍ{œã½ÿ´óÍ¿á|9Þ¾/–òþ¯Eúï4æÊ/¿Wÿ[ȳ>–á]ÄržÊý¯v¹~B£ PB`T¡H>0¤BÒ)ð >¸N!4\"‡À¦xW-ÅX)„0BhA0à½J2P@>ÈAA)„SÎôn¼ìnìO˜Q¢¬ÇÎÊb®rõŽÔÒ¦âöàøïhèí@È‹’î®(–ð\nì†Fì˜ñÏ–øÆ™…(ìγ¤ÛP\0÷NÂõo}¯‚l«<ønÞø®ˆâîlëoq\0/Q\0of*Ê‘NѽP\r/îpA°Y\0p\\ãï~³ÐbÐLh °!Îã ÐPöîd÷.¿ïy\no\0áÌËжöPptùP¡ovЂknޏ\0z+æ›l6÷°©¬Êø0’äð¹P½oF€NìÏFô¯OpýàN`ÜÐÖ\rogðá0}PÍ\n¬–@°”ö15\r±9\$M\r \\©\nggìÀ Ø\$Q \r‘“Dd‰ÆÊ8\$¶ªkþDâjÖ¢Ô†ö&€ÓÀÊ ¶àbѬ˜ê°¿‰› ñ=\n0ÊÕÀúºÀPØ ~ج6eö½¬2%Íx\"pß@Xб~«æ’?¬Ñ†Zelf\0ÒZ), ,^Ê`ß\0è8&´ì¨Ù©‘Ñr€© ©ÃkFJÂÂP>VÆœÔp¨²8%2>ÂBmÎóØ@ä’G(²ä¨s\$Ž dÕÌœv†\"Èp°wÇÆ6§æ}(VÌKË ‚K¬L ¾¤éÄWñöqú\r‘þÃ̤ʀQòL%’PÔdJ¨¦HÀNxK:\n ¤ †%fn‹ã³%ÒŒ¿DÌMü À[#¢T\r©ÀrÂ.¦LLè&W/>h6@êE ÈãLP‚vÆC’ß6O:Yh^mn6£n¼j>7`z`Ní\\Ùj\rgô\rÈi2I\$\"@¾[`¢hMý3q3d’þ\0ÖµÈúys\$`ÖDÀæ\$\0äQOf1ƒ&‚\"~0€¸`ø£\"@ZG¼) Y:S¨ê†D.S%͈’ Ð3¾à d¹ÀmÓU5‹æ¬ó<£SÒSZ3â%r “ÎãÆ{óe3Cu6³o73î—³ÀdÀL\"àc7ÄLN ÜY Ê÷k‘>²Ž‚Ç.æpäì2øQôÐ÷“¼åÓ3ÀVذWBðDtCq#C@½I”P÷DT_D´:ÔQ<”UF²=’1ô@\$‚‰6Â<cÆrÅf%Ô¬,|“27#w7ÌTq´6sþl-1cPÕmðqªÊ\n@ÊàŠ5\0P!`\\\r@Þ\"CÆ-\0RRˆtFH8µ|NíÆ-€Ædòg€‡Ò\rÀ¾)FÆ*h—`ö €CK4Ã1‹ÊkMKCRf@w4BßJÁ2\"䌴Ó\r1Q4É2,\"ô¤'¼êx§Œy—R‚%RÄ“SÓ5K”¦IFz #XP‡>¨âfÉ-WX\ršÜê¤pU´ÕDÔt&7@¶ÂÑô?’©ÀÑ ªµ£}O1½2†‡2Õ#UK*¤)ô긋Œ0o<> ]HŽš„Æ¿rè›LGNª›ê˜W%–™M^’Õ9X:ÕÉ¥N”òÕêÔséE¥@xy’(HêÆ™Md×5<52B– ð–k!>\r^J`‹IžS N¡¥4'Æš*œ*`ø>€—`|¢0,™DJ£Fxbèµí4lTØ•û[¨§[é•\\‡¦¨Ô –\\{Ò6\\Þ–’ öß(#mJÔ£,ý`©I³ûJ‚ÕÊÜèlß ûj…jÖŸ?Ö£kG»k¬T9ÀÛ]3ohuJ©ê¢®ÑW•\rkÕÏ)\0Ý3Õ€@xè¹,³-Ê 5B”¡¶˜=ÂÔà£#–gf¢¡&Üß·Z`ä#ÄoíæXf È\r ìJhô˜“À´5rqnzõ§sÁ,6’oÓtD´y‡äÂb´àhþ—Ctn˜9n‘ í`§X&¨\r'tpLž7²Î—¤&—¨¼l¬Z-ͬw£{r—¤@iUzM¿{rx×—mÒSBÀ\r@ H*BD.7¹(‘3XCV Ç<WÔуÝ|d‡q*@”þ@ÞÀÊ+xø÷̼`á€Ï^™Ì˜ß¬__•NDX\0Q_D]}tõYÅúp¦f€wÔÚ\"â3øz¦n«MYñùZR\0÷¬Q¤?¸{†M3†•£*×1 ,¨\"Øg*U¡*²¯ˆÌ«zÒŒW5NV2O-|€¾ÉÓñ,×]‚B×dí\rŠñ/OâtÎøÃï‚Ì0‹xƆðŽ½Ð®OCë8Þ-0Ò\r”ÿ0à·õ„@]¤XÌŠÐÎð\\\0¾0NÈï£Ñƒ4ëi¨;ƒØAtê¼8X—x¤\r†…Š“‘ìÁ‡øÝŠ×Ê7¬<ö@SlÈ'LÒø9WŽ ÊθòϬÖËì¢Íı•ùRçÌðÌ\r¾Ï ÂÏò|ÜXÐÖa÷ø7y€Ù\rwe¸Œù„Y!ƒ˜Eƒù’´šÂcRIdBOkË28[‡mÌJŒ+L ÈÅÙ¸OXpføÓ9ÑDÏ›·¦ßªw“@Ë“—Y—…¢Õ÷\\yäAcÙ£ƒXgš™%šôó’Â1“ï“j œX†9Cc݇àR¡¹‡”QFÇpdÒ= C˜÷ýš\n\r¥Õ‘ÔóšdjŽÙ«’xE¡Â2FX§¢x_¢ØÅ£Ú5£™—}q¨Åí¿¤M%¦ZM™:\nÏzWšX7¥åí¦:ÐZi¢npY;Žù>ʘí£ÙɆ:6Ú;£ZÎX0ƒ“Ì¢#ùýcàMyU…i2,q¹FËšÈbJ @ÓgGè|4ógÈÒmzWõäÊ ¬)™Èr|àX`Sc‚Õ§ÀË™„óc—¥‡û!²B²—±”»/}{4JÂ\0ÒÃn»Kuz @ÌmÚÑ®€ßyÍžÒyÖ\"º)u¹ÊÂÙã¶Yç˜s·c¶yë‘¶š‡··y¼—޹7Á|·±|—Å{Ϙ*)°Ê4Y`ϵ[v¹‡¤‡û^NX•†¸‰†ò‡W”©û·‚7†;¾_‚‹*x™ˆ¹Ú\rù߼߉xm+¾mû¨Ú™ ´»¹‹\$\n¾l˜);™²„|Ù ßÚ™¡:œNÚ :„‚Š_È8N³¸Uœ5;¨p+U–L‡ò\\‡9í¦Ùñ“›¡»ýO:I’šû zQºœ¡ƒ¡TëšÜ)ªXG¡æ»ÅJ{w8“¾ûʼn¸UÆù\$ôàÃøü›PxTY¾pjh·¾J×À›˜JÙ{‹Âð@îÇ‚³ øðZ‡ÌÙs•¹h˘ç–XÌ\0Û–lÓ–ÌàÌÈθÎçìó‚Y}˜Ÿ®ü^Ð@u2ÀSÚ#U‰ˆ;È|¼¼•¥¼™P\\ŸÊ#ùÊ|ª<®Ý\\³À›žJÛ‚,öœÀ•\\ÅÌšEÌú…‚]WÍlÁÎ,£ÍìÉ–<åÎŒÛ>YnÎ),ΙrÎüûÔ¼å—âº]Èý ª\$õÐç½Íq„DJí=•Ù÷•XI-ðÅ€äÅÌa‡llõ]\\“w(iÜCÄ׃tƒ‘<i-u[uVŽDÖ“¸Q¸€xb€kæLI.kú›@ÞÀ„ÜN‹“[ñ¼l<o=-]1`蔼ªdš ÜMÌ7‡@Û%C=]ú›êÀ/|-à܈¾ÉÞáqÃã•âíùâ*¾C¾òO~ÊQâòså`·ç(âòãDÉßɲ¿à[ãþæ>Éká¾R™uéÞ\\+>)3íûPÊßP§Óí6ÓËM%º¡¾pÔŒœÅAÐ3qmu2ÖfzƒÛ¯ì4s‹ ´í`ÛŽ‘ì°-kÊS%6\"IT5½‹~Òì\"™íÂUt_ TuvàÖ½ä¶Yw¤†0I7¤’L‡\$ú¿1Mí?íe@3Ûq{,çÀÏó\"&Vi·àžÔIŸ?¾µmõˆ™¯UWR¾´\"uiT‹‘uƒqŸj\"•GÃËõßò(™ï-½‚Byîê5øcÝõ?Œàwñ®°ëTúî’`ei¾½Jtb‰gðU‹3ËëÉå@öá~ê+¾Íï\0MïGè7`ùïÍ\0¢_Ô-ùñ?\rîVÿµ?øFOÔ6á`\no†ÏšInª¼*pà™öeÙí\"T{[Гp^÷ä\nlh@l0[/ö„poóJKÖX“ñ€ü<ª=€9{Ǿ6ç–<eßAxãÀùÇ‚¼Éá4x[ÍžLò“~>!åOQxš{ZVFÔŽ`½éÈ~Ižß–“øL)Q[ëTûôM›àþT²*BC¤~ æâ‚ä\nƒò¡gÈŅp9zKÉ–ówzO9di^›'‰+¹ßïDz4ägHAº¯Lyô¡\nr€<IêjKQó¸Snô==\r.Âo7½Êé%a;‰kÏãmX¿›Zi%P¨iÏ\r€¾ýµ/©…L`pR0¤Ž&õ—I (Øá\\.£*m„*Ž(ÚÖŽõ—\$䆯À÷\nw׊Х…8a“\n&´Â‘žÍUmª MÖ¨P+\"Ly„ó?¡M\n€2’ L\nbS ¥NäùÇr¶!w¥jw`¼Â\$îôƒráè…Êaáv±^ÃqF‰Ü6•Ó¨i*™Ÿæ„ì_xõØ\n‰fðIê:B&ù6@É“KED¡úú·QD(V`.1\0Q\$íøF¹H®’Tþ€zІ‹Ì\rªjkzM€ÐÀ®Y™À(61€”x‘+®%dj¸Æo\n¦¬\rg°ï\"ÉŒ´ˆ—?Œ1- 3hÏXÖÁ)åyjÃ5r¢N±#Q¾¼Š¸w{_þ¡øG)ÂÎÙ1i‹Ì íç¤<Z‹ºpX³¡Ö\$â?¥=%.´€Ò®&¾%\\±8w!¤µa4œ<JB[Ðĺ¦u4‡%êŠ×47‹Ä%gÑä&¸€Z(@ €E¢{@’Ð#¥–2Šh@Œ#ñŸø™ÑŸ¥£@\$8\n\0UŒìjãA(מ2ÀO€Š8Ú€ž5‘¸Œ¨@†ð&'´\n€DŽ\$i#ŽÀ#Ÿt\n PŽTs#]P* àDÌuc› PÀO|pc—øËP ÞŽ¼i#Ô}ˆæ:<ñí\0\0¥ÀˆÅ¥lo#}ÏFÜR‰Tp@„À' `Q¬ycTp(ÆŠ@€eh\0‹˜Õ8\nrx› cþ<`NŽˆã:)DY\n*Dý‘2{dZ)A‹Ú4±²¤€cZLð2ÈÊ<ñò\\Œ\$r#ˆþÆö7ñÁŽ¥°!û€´ü€Nª{O¼@\$< Ñ¢ðVƒZÒÆž52.Aù#D0 \0´ÀI¸û\"P'H ²_)¼x@Š€*úàAOh£hI)I²L1¦’ìƒäµ%áJI‚B‘þ’g¤i\"p÷§K2}’ä–Å(CËÉÍ=²t”xCøÐ&FÄ r“ÒoÙÉ@@'”ñ€% ÛHÞT±áˆ ãÔ˜:=¾)\0.ñ°]Îâ5 .ðæõ(pÈÀL!à8\0ˆ¹ éR\0L‹YaÔbkÔ°ˆ6Ä)Y·éˆî •Ô®£ h³zZ¦õ±’IgÎVO3oœLgà3ËY2ãÛ‰ÜDoPË`3̸ec-‰r7í‡2Ô—Dº‚Þç‘B¼‰Z•¼¼%å/I{MÃ\0pÐÀÌ.`äÊÝo*•Ô¯%T€ý\0 &–iR\n™+Éo€ì©–\rÀ^2q”Ë©\0\\¨I@‚ KÀ#peC*!>€/á%|È…Ì’ÁÞŽüô\$è)çÀ§1P30(\r¢+\nZÆzž„))\0*®\0kà€ÙÅ2¼–Ï…(–E86å¶s—tºf&”™Š¡´“+;”Ø76&ãK–_Ž(›9fÓ,@-ÃÉ4l\$Û‚e7\0ù±:l“LÝæM7.\0ˆ³|›ðo–JÛ©ÀÎZ³u•̺Š'Èy{ÅH,#\0vU@9!¼¥ Ñ'†¨&„òGôøß@_-Ù¿³ºt;Üê¡:©µ€²u¡<—ˆL†iÙΚ_ê€Ø£@U6°Îù#ä_€L'~ùæ/Öm`\\Të']=Iäât°Çž¸Âà)ÔÏqùsÉ9Âa<RPº|tžút&5°äs©lî@¾ ÞKÆwS®èlÍ:9úN®wSø|·göÉØOùAП<ë‰BÈ€\0/àz@´ ÍÏÁ•Òå†=?=iÞO‘ŽkÓŸ=\0E@iâÐ\$B× hO\0Á>DÖP´ó‹Uäçцj¥HìÂ9F¬BcCi‰éBwMާtÓx€PÀÙM‚?p“®=—äì8ÜÔý‘Ïlg~¨˜tÁa©€%]b\$àØ\rˆr„èÄa,6ÅtŒàW)Ž\0U¨›F˜ |æì“¢ˆvh¦Qú*¥Oƒl.C\$À\\ ÐÖRRÌ<lcù™&Cj3Ñý%ôZM¨öÀz9GpY’â¹£\0i\$Dµ‡d‡ñzt[')[)Q¤ØêÞkÁpi0·#cþ‹ôNE¨ô(ºC2L Æ@9hÑEJ5Ò,šh{&Jzö0n€vª©>[€j“£Û[œ]ƒK•ýRîJë>.;ù¨íF=RÚŒŽ<råÓM¡=—Ô’¤ÜhØ^Y\\RmnËÐð Nn*g‘¦ôÒÅB¬·5^QÒ‰@O¢°x¨¡HIÊT ´â9½)(‘œ&µ‡}A)PÊ\\/êô…_Õ!ÌH þÚ‘¥¤ù\0éBá\$z4ÓTYu‚J’v\0ꃔ¨…%@æ32\0Sôm€--Gi@¸úQÅ%Ñj©YÝ+FuzlSž—”ÜW3ØÅ·OrŠU\$EÔè;¹M©¢\\€Ô±Äu/£õjeQªš¦§,#J¡ªXPÔ<UH•TVVé#Uê™ÔUbˆOU´DZ‘⢵£Í8êÕUJuS «À‘g)XDZK‚•¢Bî\n¼@2Š©ìx@d&ü ½eÜ«Ià@ÊFwì¬8“©\$Ù'IºV‚V†U\$²ETÎ_ð*ˆd¸/áFCÓYdp§vGƒ‰3‰ ‹Ñš‹L^(ù`áj”÷2S¸ºcÛW¨ÜJQYiÖHB”£ckœRè\nþ²U\$jê\n„ZAi€î»¢U*wKDRxW‰LÂòˆ€+fÚŒ@ã¨A4¢àGz…R\n²5‚b¬\\_²Ÿ ô‡¡á0¼C@¤\$X\0+Å]¤ÑÂè\"?‡n¦€+QIj\n»x\r€ôB`S¸âM‚ÈÑûŠ\r o°@‚À6XÀ\"{±\0µãb ¯)–ÁM¨cMðW ä¶D_áαÐv@{cÐ:¤®%[%‰C²þ1¼Ù;AƈÌTn› \0º a²pážóe~ÙU5 s©V†Ýe|M9‡€9 hË@æ¦\0êÙ~É@.³ l€· Jv]©ºD§f€7¨FÌá±³ËùŒ,/+:¾‹íÚXIi\0U¢â@Nµá´\r Ê¢,².½i¶‡ª³m_ûFŒàÖõäÀYiUÔÓJ¯!©gûLj‹ãÑú¬D“iKAà6²õª-U«KfÖ_N€\0ö-3©ìÀã3+¥dãiûD \"ö¯µM¥ml‹L…XÜã㯸Œ>‹&|UÕÑõ`Ïh¾ù2¦ÑÐn6Ý…·ÉI+Øné-nDÃ×`„µ†®°É”°@ã¬B!;X™smȯ·†pC`‘p5Á°¬¡O‰%Z/Õè5”³é#CK`‚XˆªÂcb°Q#«§Qa»–Ž…ƒ¸q…èpÚÝ÷)™®G+~Û–ß÷\"ðlM_^zò©šæ!ÌÉàE«”Ð¥’®šÀ‡ïa úØp86ì„åˆn+oì’Jâ¶ö¥¾,¹¡ó‡¢ºw\n¢]̓pëŠÛRÁõ'§eÖJÕqµ'ܨ%£'€nlO‹h@>NBÈŠX5,ˆ‡‹¢ÊrGr¹ Z l\r(ªË‘jIù†±lŸ¬%b‡;s+±× ¤Wg7¨)’*e…¸1µ•ÞÑ3“L e@(»p\0 ÐÃŽèds®AñÖD\0Ã\\bD§\nuê/&1¬ÞXR×¥E楂5¡Tœ\r§}7õ§”ªîÔþ”AÙ¬áÉkâ\\–øö͵´ŸÇqà2Ü€öZ-wo´“tßZùƒ‹¯]ó-yq2j+Õ†¾Õ묀n¾XA«Û\0†\0º¾+S•+ïY6_BúV7z®nZ@̆²Ô·Æ´]´-UMJc*¢ü¸´®í¢s\"ß+\0·ï¯x´B3^«öà0\r÷ÜÀÎïÁcðÖ\\jÆÆ*¬P-\\Q8ˆÊŽ·…l•cË%XþÉVB‡}‘,€þ;(‰`*Qú \$áïÛrßÂ{ÁKøìCúÖ%¬\r¥ˆx ÞøQû…,¶Ø¾¥×/‰vàä\" pÁã¶ð~ Óáã ÅJ5eãü®Eš-^âX;c²\\©¶×¬m‹´7£?˜6C*庮†,7®HfÄ/Â9eÌ0[@ñ¤!bê®íÅþUБ=›Äi.Jocñj;ø—B³\0¼ƒï]Õ”ÑúvÙGÃÜ8àO\\\0ÀÇŠüO©›\$Ž•.& p‘\\‹H1bØpø’:F\"8Ŷ…þ‰ŠøVx©ÅýµR®–xä=À3Æf1Š+|Ò»\0ÂBÀ¼kbÌPÇLÑ’£ô\$zÌáàÎc ¢ÇÐi,Pcb,pÃn(¥Æ,¸ì`'/»~êÙkÖµ‚Îp€q-›Áȱ¹VÀÜ܆Ü\rÙž \0á‘‹dSˆÓÈÚÍ+º\"Šéˆ1\0(Ä-’Ì1~útcªþfý¸àBÛ‘b}Ø ’Ã0<1\r°¨¨L’€»\$¸ˆ2d\"1ž&ì™Æ€BóN…Ô\ràB\rrƒ«\"?vädäZá±.\".\0?wä¼9€oÃà\rÄ0¥Ñœ!¢ÍdR€‚뤶\0‘ÃÇHëÜra%ЊØ+\0yrƒH¾sÏ’4W#œ,\$èô \0„*xBó\nPÌòü|„ 8@/ \0ø2U’°ábíÝè¢ÂÎΪxÀ!¨d§°óúNÿ3SÔ?£ÑP»…€(òg\n8·‡ppŸˆü€S9õ@‘' Ç\0úyµÿ\0¦y46¡H<‚öÌ×ô\n`S’ˆ…¼ÈûCY¹’„”³jp:\0N(ÓŒáX4ŒkÌÈÓgßDy‹<–n4™£ØrS<ÒÏýˆó¯?¥\nÀÇBãúf('™Ì~dgÓ™SËÏ?<³ÓVg(1™éãæƒ2ù£ž—²)ÕôŸf`éZ€¼a“>t{ÀœÉŸô’>ñø\0ŠìPû`O¼\\sŒ<õ?4äwÞ~³ÜÇf@z™ÿÍ~hBW Ìø³á´ŠxhA¡¡ÜO'=úP֌ײÜö±ë=óúc[ysèÌûgâ|¹‹Ï掳%™Mè,Q³ÆÒ8'X žhlUs®…§Ù¢ú é4ËÃqDýÂx*8g§NLšBÈ–¨;§}%eû@YìŸv ho!\$æ›NcCXì³@Ð;YH'Á°@^ à·Rf^x„\0^osÜ_fª—“;¨Ópj]²:’Ô¤ïõ.mLêl\rš®V¨\0ó@Ü€¶Ê\"ÓÕÄ1%Œ!_êô@-]8f¤ç -Õþ±äa]Y¯WšÏˆh`(‘¬äJë@…ÁÖ\rˆ—õ€Y kB(€xÖÂ:5˜B\\QkO[:Õ0˜Â¼¡uk›X¥\\×P\0ë[öx¹ÀÅ®`ŠRIGÕÐk5°ðª§YzÍ×PÒ™¬=†l=áõÖe€\0ç•2=k` Å[K¼‡Bê½Ìû8ž¶C±Í}k«c{#ÖØ¢„ølŸdfF.̵ü-›AºÿÙ6º†K’•¤ÐÖ×Pàv„'¢lHiAÝÚ8C¶“® G„`GbyÙ¾·Í- 0•Ĭ;[*_ˆ¡ãmlH{(;Uo¶ÕÑ*Ä]Š,Ä‹åŒÖÆÈþôXË“¡80Cµ°K !N¼õÔ(I`¨³ V¾Dv½§íšwá·rpc,ðåŒÃÓ\0ää 9~s»Xn㦇¢žŸr[ec·4dçpÅi \\…Èe2âãl±ÄaZCk»gl÷bB„™¶7x%¿ê轞í€Å»Ùk`ì\nÁ(@ź«®„5åݘ¥Ïċ#t›–Ü–éãE½}Å„sñ–Lvö÷E¹ï\nQQÛ”Þæú76}õ‹Or»çj§b¯%@7‹˜àÛµßh³w͹÷n£kÙ`Víq·±Íòï³~›™ß~ø„4{Œßþå÷ë¾óË;òßï8p2mP+ dÖaX8&,=Òn›}ü!/øK&\rŠÿt´H™Ó)/øYÜ”†6@å¯=}ðŠðEU§lKÃü\\kÓb[×â1Gø®M)™J¨xXÚEïTä¾ /¸\"-‘ë…<4ßxDˆ¥ÅíÐpÄ(¼3ÞÊŸ·ß´'È+Û\$\r†¶<rí×n`H\\t\"þ¶70=ä·Y×Wéhsð\rÏw¼~°!ù0@6l‹\\† •§/þBò7’¼‰–ßÏ>Fÿ‘܉\\¶¼RÙ¾-Çn‡€þܧ\n¸?F~†œaÞ×+xÉÁýëñ¨\rœl,fúCß+Žîw•i¢GøÛËî.X!¼_à71ymÌ~ñ„œDå¦È7åÊé ÷š¼ÆåîûÅG;gówƒàb/89¯ËxÑ@!R–9¸eÍJq˜Y¼hß'3¹ÏÍĬ*÷ñXw‹Ë®^—ÛË ¾7ŸÎî5óÀûåÖ`ö:î#È+Û0˜ž·œS¯ˆ@0óo7:&~r(Z·‘G1zÐþˆ€·¢pÝÎñdNŒï“£›`ç¿/Fz@8Ñt0ŠZÌ_ ‰ªÎ0³™{Úè¿Lén•‡×‡oEËÃÑâ=rû¡‚Gj]õ H•¥›²Ò·…»ÞAf+ªÈèVº•ºmžœ7ýåßB‹ÛÓî*q‚þ}cãwس=Û„g¥»wE¢-H·°€»·¦½&Rh4—ªMêžZÕ_L½©]WV'ÁÕ¦§Íñ\"uŒ@-ÜaMÃsº@9êL:ÈÕ’]ù#‚ÝaëoybÝ\n\0[Øêrðp*}Qí‚bwßÛÓ¦?†ºâÿ;Vc¾Ê°›» «.Ûsç´¢XíÖ°ûy·R=§&d”ã·rûO«žçõ2Åj!Ïux¥ÜÎÔ§R{NÖ&øµÑ»®5ö„}£ßvyÛ°Ž1o8Z#žþ{ÛNärû½ÝÑï‡Q:BÕHzW{òïW{:ìržÞ÷ó¶}D\$§j7)àP€÷ëÁÐÝCvV¬X—¾ýdí¨D7óᮀ·¼,Ôh»÷á_ø]·^í—qσܟxO»]ïŠö¬?p{Æ\"ˆðOŠ8Qáµ?xw}ùJâ?9kâÞüx½5buÛ&÷øÏo›ÅÆ^ñ†õ¼Ÿ¬>õw“g]çíh¼#ä?+÷‹ mï(³¼¹àÿ/ngŒ é5â5<ù;‡ñüòÈ…¼Ë³½œxÍ%‡³‘;ì(³ÞVóŸ–;Çço-ìó˽ëòÿ.eänkpËÂÀ_ËFäXõ9ÓWjQ¥ÓàCBاåv3R=°ì†¦;aÙ][yËÈ»4Þ/¢|óÃ##v @_Ç}UçM>ùßÌþ1§»\rC£MúqƒCÞÄÆädĘU#[ÓɦŸm\n\\Ä\r6ô'Ï>‰ôÃiI;€R\0X€ç<rW0[ÀE°dHSèH\n^×\\”¥3ÂTû´ÀF÷xB™îÀ\$ Òi÷´-‚'ûÛÝÕ÷Xf¼}\0#ɤ 1êo·BÆ€*;Û1±(\0ø~@)ü§Òh>³ª{³â~Ûøw·ÉH/vL\n9È?doÒÑð°,‹x)#>˜#b`',úgTð¤È~¯tˆ €YÐ}Ùï°/]-'Òüž\0¾(ØÈ þñ@Ï¡î/Ÿëä…>¶Š~ðolH‹âžÜöÿ·½À/qû–DƒTúéö~¾¡o|ÓìaÉþ°°#|F8ÍûdœÏ¥ò/±|“ì¿u÷¿€Vîâ©hø\n>Û÷ÿ°{´ Þõ÷ˆýçï_{þGâ IaùE½÷&{VNñžod¡õÃFÆBÀXûï×½ÙñÀ(I¦N@Yû¿Çÿøÿ·ýÇð9»üÉ¿\n-èû{çã@RýoÛ½Ù&‘o^3Y¹÷ï»>ð¯†|”òŸø—îþ-ñóö¶ùä~åý/»ò?*ù`\nÏú?—Sæ!VùŸîÏ©óœüïîÿ>ÎèÕ¸}ïãþO⟕ü¿Å>îýRMïûºƒõãø?b@\nOÚ?þà0¯s\0ˆ¢IèÏ€’ú+èà'¾’úX¯¦À,úƒò`'¾¦óê¯Ô?€úÓñ¯å\0‚K௸¬úCéO…À2út©>¨LO¬¾¢Lïv3ŠàúÒ\0ŠÎ[ï£PΛïlë¬H\nhä²Îlr\$/Àý\0+½Øý\0 »£ž¨ ©\r@ ?Kå)<#PøÓîïs\0Žø ” ÂÎ?Kæ@Ì@\0ÃæÏꀱø\0²%,p)?#£îïÄ\$ø\niL€¦¤°3è[Ìå3˜’“îð?²¬ @Ï´O¼\0ªýö°A|P\0™ôD?²N@\$Á,£Ý/ÞÀÿ€\$B?0ýÃø\0‚\$¯²\0Vú’LhÍ…¼Žˆ èé€ùŒ£é½Ê>¤#6ý+ù€>öR:p¾>«7#÷…½\\гlΓãAoãüÉ<3lø pe#7ÚA@)À±ðü¯Ü@ÒÔ#ýAV?hýãøƒ 0*ÐZ\0“°*Ð\\AuƒüÐ_>kÃöÐb?>«ïÀ\"…½cæ©#6>ÒBÃö’Òü \"\0ž>Ü\0psÁÒ?ÛDPvA\\#þà(>Ò÷3EPŒ¿>ûÓ:Â<\n´OÅ\0ˆüd\"ï@A\0ô°AêŽûð‘Áò”ð”Â5ìÞÁÿ “ø #¿‡ ´ cþ© “þ€+´@ÃùhØ€ø÷¤€\$\0øŽ‹:M3nø’3cêÞ`ûèØÂ„ÑT+I8¿Bò3@*ÀÆÐø @'”\\pM¤8Olòüøû¯†‚»ÝM€Ÿcî#üÂíÄð7B÷h`, àâ6oŒÂ\\\\.S>¤›DÌÙCù˜ÿ0ŠË´ÐÆ£S\$2ÃòB‚ù«ù@&AŠ>ºLðkù¬4ÎAóÜ3˜÷Ô°Ð@½;öÍ>pùÐüɤ‡\r¨\n°3|Î\0\nO‹Aø:6ƒô\0¥d7à«@8ýœ%`#Ɉ[ÐÀ=ÚDåÀÐ\n°ýÌÜ3u’LãóC™¢9ÏBCÔ:`£Ž‘\$!hÚ\$Ó“;ÐêB”20uÁ[¬8°ñC× Ä<ôÃäúó篟ÃëdPŠÃß|=q€2pí€V>˜û°áÃ÷ |*1\0Âç\rÐE\0©dAov´PÎt'?d,PD*ü@ /Ÿ#6øÔCP‹BO\n¬©8Ä',5ÃÑüE€ ½ËLq\r?m¤Eq\nÂzþC@+¤är60åCê?3ß/¡Ì“ˆ\nPÜÙlHð•D—ü¯Í¤5\nóü°°ÂÆãói)D°„1(ú£Dƒï£7ƒæÏu>Üà\nà\$Aæüj4Í\0˜?ê4Áª?”ÑLK Aæ¢>Ͻ?Œü‹û€ÀqDI@³£\$;ð†D®Ž8 &¾?;°c€—ÄJØ£bÑPû¯ÐÅþ\0 ðBÅ#3í`‚øˆ)ªÁ»ÌOÐ3CMZ50âEO6èÔC¯ì\0ÂÀŒ\\\$èÍÔûp[Ð9BãíÁª#cj<‘1Ä1B;còÅDBhÔ?Ëô@`*€ƒ¬.qbÄÐøX o?;\0KÜp¤3¥8 ÐRCÌú6/®¤—ˆ\$>lͤpIÀª,!€*\0®+ÜÀ>=÷]±wÅã\nT^pgźú#ó\0ž?\$J@Ä \0*CÈ*É7Æh\nñj?“ê:pArø”]Y€’ùÔL‹ËDbÑŒàúïBÑ4d@(Dä”ÌcÀEçÛâ@>\$Òà 4¾Ø‘þц©</¶Ð?\n€/ĺ>¬gpŽ>šŒü± ¤I6i8¾;³êÃèÆ‰cÝ1¢AZ6€!Æ}<j±¤D¢¤jÉ(F’?dÀÂÅ'óêït\0†üTeÂØø´1– ú ü£þAv?lnos3˜’„50†#Æ>¼Èòœ_¯«Ûd°©¿³¬UкÁZPú©4DŽ|;Ðr£‘ÃCðñ€ˆø[9£ê¤¥ú5IÇ5²I‘É\0ûEOÜB\0{9q C‡|\"pUÇZÎPû` €²øý´GcœQCëGPúJO‹ñÂ6(ÚBïóÇz>Ú7ðÏFøöÈ0IÂ:¼vOŠÇ‘¢BÏuEäµ·,\\0ŽÇ¸r8îÂÈûqgA6>ÀýÑ74D÷0qÇG¥ûêÍ>-SE@# ÑÈÎGÒ÷¤.à*\0i\n\\-`*\0q\n\\eñ½Áÿر\"—Œ)qu¤ýÃï³nùô@`>DÔ8 \0/Ä@þ„_±Ú€¤üw#îÇlƒÒG‚>Ô„²¾-+ß6¿Wl%°6½·l0®\$5´sÔÅ&Œ\r *\0e!èrÇÿœ€qI” \"ÀæÑ> Ș3EILÅ\"‹â‰94G\$/ñ¦\0—´‚©\0¯ Ñ-2>/„ƒì倘üèÓGg\nà/¿LŒq®BP€\"#7ôzñáHMÔ…O‹ÈO\0Ì &£¶2L‘ƒÁT^P@Zúd¨À=”]Q—=çÌKCïEã\0ŒQO¢Æ\\øôs0¤¤>ƒèq—Czù¬†±—G„>¤†²¿ü ÌÄ@?Œ0Â?ü\\o¿³–èø4Md1‰9€‰\0¼ÍGò?m\rDÆÑü(Ô´LdòÃ\\KJ8\rE’Ðù-24U 0VAÛ”…R=ÈEäe£þ¤5!Ì2m³qðüÏÓAEÛô²V\$ÆüÏ•ÉâŒØÅI9Óü‘ C&ù\\GÀ)D «ü§½òü4çIç#pú«#ÆøŒ—ññCˆù\\x£ø¿C(\$òƒHÍ:NI(J\0΋ß\"w\0¿,)PØÇ¬‹íÏ‹4<þÔ!òŽ=ÞúœGošÄó‹âP‡¿6üìN±QDë\r[;‹A|KÒ'AAäP\0¥C:šÊ„̉Ñ4Åã*To‘†£ÕD˜F^ÈûÉ‘\$)Ï¢»¬\n«É’àÍ)’(Sà‰\0ò’È(ý\$:ä@à‚²Y8’‹JÐà#ÅЂë+œ¯\nQ5ß+`a+ ¸iþ`6x𑤪†è: ÚŒà.ÐT‚:‰þa˜\0øŸcv(ƒ^X¨€Â¼H˜O.\"JÊðO\rÎË>ex-¾¨J¸€èKPïû¤rÔ‚-`2²€ÜË_à7€Å-!\"JØô¶òÝJêH.²ÚËo-ø.²Ý\$ª<¸BOЀ`> ©dáµ\nêH\"ò؆o+›“§s‚Øè 3ƒ‘+¢± ©6¿/¡ƒa.Ð\r²ð†nd»²ï˨é’?ˆô£z1\0¥àð‚?‰¨ 7€ˆâà<À?âãø\$Ó\n`+Aw*MQ¼Ã<Pýo¿°?,)#P>”à€šøÌ„\0¦?jŒÞÄ“ÄVqÀ?“£ñ³\$¡ 9¯õÆ-üÄ2ŒÌIÄÐîD9̳Lg1h[ÌÛÏ1ŒÄsC1sÞ©9Lz?à LWdÈovLŠþ#ðÐ9`ͨ0æ€Þ‰É¦W·–ˆh>\0>¦¢Å/)Dáü²·Lº¢¡ÀÌÀ\$ÍaÀ†¨9*ƒ<:C+àJËìKPJ¸\"—L\\Ã*bÌò 1ÔÀä6ë4ja+\0î%Qf ;KœE¬¹ÀÔš`è> >7¦tÒHw€¾MPn3I:fàD <LÄÊRÈ'¾.\$ðíBO\\²\nû Ðø5ã86Ä̹D1‰<\r¼³\$Z…œð’ƒ„ï4Š%r̃¬²×àúÌþ\$€ƒË¶§»éo™^Ú\\°È\0øf[z“e…í6|Ö“gŒ&ñ8+M=6È5ˆ³\0Ò1Idì{™^fqd趈s7(|©tM.]HSó[€ø¬Ô ÕÍ;7yC„—šÎ¸mÎÌÞI|A‚Ê:`c †Êß8\rÒ…iÔɃ¤ßÓ@¬‚P`È~\rlËa=M3ã€áf‰<ëÀRå\0Ï!ûÀ@’ØeØ«ríÍdO‘t ¬‰T°³-æXY9A“˜:38áOÊÞadÐ¥ö’gL³fxË=4K\n&€ôu0KòͨÇ,ô³o7¤€ëĆÓ,à½Î3Ë:h|’ÎKbá)AN¬úÄ`ì€Ñ:ØÎŒ€×;´ €Í»*sI&”á«Rsµ>\rX\r!\0\nÀàBsVM63˜KâO×:Ä®ƒƒc5„× úÎæ‰X!AœQ9z%`º{:èHòºDëE€îcv!‚Î,Èôá“:Xƒ)¬(üº%˜Ë2a&Œ«,ðl3Ó8j1è|’͇É=CRrÍË<â\$óŽ\"KB3äöÁ'9…:|÷)`Oj+îÀ9 }-õSÒ>2¬ëUU5ÜôBUNàóô÷²ÑNÄäìS¾NÄüì«ÈO²äû3±KNìÐŽˆ†¨ ×@:/ç7£ÄQ†¨ç!Ô@.’(&v9ÔédÓøŒ^þ“‡’ج!ï¦[.pGc K#?¸füÐpÃe“Oæçd®€2\0k6)„,\rÿ65GmOFV™dåiÈx,ÿa=O@s³þc6…`¤Ø\rJ\0å;‰³H†(ù*ŽrÅ-Œ¾.íMÛ[ BÎ !(àóM¸LP«bUèÛpJÔ:î1úÞE“»¦º!:¢,ô:‚YB‚ò*KRÞ¤¾rÍ0جLî“a6Å;6+2Æí)èUB`JsV0È:Ô0_B14/ÎúíAOáœNeúÈ)A~\rÚÈ öÃÌ –NPów“,È´C„î3œæ®¹ÌÞ°T3öq9}SQ\$ÄãA‚P“DÐ;!:À!îæ¸YŒÐsÄÎû6Ø“ÑÑRÔŒFt›#C¨Ï€øQ\\`rXr…<í'ò×72ؼ´O-„w9Ó¤ùËb8à5€Å3{¡\0Ä7ø\ra\"ƒ\nh[j·ŸåFÛa)”Ñ+€2Ï<%’´M¢ê|®m¸|\nÀ54pˆþ &bUQ¨8\0EŽÑ¥4AAN,ËàìËFØ•To(ÉG`šO•GA›³êËGlý`:†=è\0<\0Ðëꔃ²ŒTÌNϬ=.û´ 6Ζ(ûSBİô\0,Jð?”.º(é†%“…,Ê?B.<2ðhM΃I`éÎŒá4ô¶*é˯G°ëì'ÙI¸ÛíÊÑ9š¾ôžRX—E%,O\r,ʈs³Ï*•(”}<Ú—@c©öRœj]Dþ`UR÷γ,˜.²÷·d£¥rø¦’ \\·N•ÒÆl¸ÀØRÏ-󓴵˚Üëkô·Q•K„½”¹,ƒIå.ÒíÒêšT·@1\0ÉK 4¼Òý/]04¾K›K\nC¨&•F,¶ô³SF0“ÔµS.-´ÉÊéKÅ2ÔÀRÏLe'ÀìÓ7L…0”ÏËoKõ3TËS.å4T‘:X̾4‰Î9/:WRò9.Í62ôËËJ6ÀŽS .ðc´¡Sv^ 0®»ËèO|L±MD%3î 4z3Id\n»ö•áú#tPq5h{!7Z‘Û»2 „ÆthÊ !îK€Ñ7YÝó1S³<»áh‹µ©½Ç-<ÎÍpÆø€jéÍÖà<4øÓ¹O˜%@‰OKBø°ôS¶!10Ô‡SÚÒëôõ‚YF…?UR4ÏÁ›ÓÜÇ!•õŒ~ÂXl´=¨ÇH|¶5QHýC&¸\"1M'µ8¯5a`Å?¢SPlõ`0—\\ÝmËÈTM,8'1eQaA& \nÇTRèI¡ÑGÌ¿´ýÍZxôâ6yQôôñ¼aÀJÀ‹¼üûkU&ÿOXHá‚ÔphQEN†â=Cµ\"ˆLÉ›( ÚçQe@\0;ÐñQ®ÓPÔÅD\"€/—ú\rB༖tãµTžì\r<eÐÔeS}Om¾—EPP\rüÓ«P5B•4U\rR==õBSÏR}Hã“Tè#µE\0Îô¥U‚=QE‚J<ýSð` Û‚¼1x\0ãU:óéOá/‚¼€+µN J`P!t8Õ\rT¥µ7 SõR58\nc>ÇÆºÈâ!ÊõŒ1{ÀúÓ¼uE€ÚM4{Ö”4TÞíGa;Ž|ðñà5\"SÎÕýNkSä8»DÄÔ?JcU0Õ¯RtB¸{ð5qSåB„Ï,±\0ÆpÐàÔj†!‡\0006K¼1å ƒX@¦D¨Vå_ .Ô(¥_`-Öð`ÆD¼àua .‹•X\rFÃÕöðõRõ…ÐFD½•‚S÷RxhÁª<mXjïbÖWù_G\nVšÄ©èS¸ï\00074Ù\0ÒLRÁ\$QíX›pˆÄÓðù ×ê\$°Nó¡Ö&83&a+²€|l³Õ‰ÏÉQsÀA£…CXšú]Î_X]‚\0á+8+UzƒsRPΨQ\0Ü\08Õ™PóOÝMU¶ÔH6!ªVX¤5†˜X…a¤ÇV/kÓVF”ý`‰TŸZ\0D5FÑOS½nákÖóTMSÕ¾U\rTMZÒºBðÍìoÓîÜEgÿWGµfµÅ„-YÁ(µ}V7T0BÀ©œ4Úð’Âòƒ[9‘5ÖX´åm¯ÿXhét>×LU`4\nÍŒTÑõ††o9vÓ×FÊUm®Ö\"ýu†DÕ€ \rw+Ö˜\r`©V(ýVÏãPËÆÓjô]Kâœ4°ìoT.\$mDĵ¶ S’à‚e@3ÿ×;@7mŒ:È륥“´dðÈ!õâ¥Zð£ôá»Q[œåõÑ5P•µ7;Sôº/BÖ!McÃG¹ÉT»Wõå(V–ÖÔò䯕<7ó[lÓt…‡^Êô×ø\ri0ÁPÕÐÍa£|VX‰•á̃a[x9Hˆõ]¿õ¬^&m¹‚¼ƒÒ¤ù\0ÙXl㤫Ìú•‚•Þ€»T‹ÐáOXl0£öØ(ô,Ï`€ØoaÈÕu€×ø3½‡U#Îô'0+Ó½8ñ]HT!XX\ryW@è¡\$ÛMQb¹‘-ä)ÓX oõ†‚\n|Å`-qÎ-bÙ¶U‘VcŠÇÒÖ ‘3N=5vAg\rýŒÀ8<IGPBÔ9O^8. Xk®ö;+\"Cµü×Z/åÂUUo[i`Ö\$×ïd].âÙ(s¼Ñå“ÔèÕ`-•Öâ½€óqªûe‘-ÂN¿=#[ÖMÙPè…ÅÑO^(B †”6ÍÏ_u–¶2:0mx Yg^5”-‘YG8”´AØÝc¯VVßÉdô6Í\">\raè™^íÈЮ0õ\"䱿R¤¬–,·3Dä¯Åøß¡2iGÈ5§Í?:\rT!ƒwg„óM[7;[v{ÖªCs\rU9d×`ØÈyh\0h@ØÈ~ŸqT4Ì×_QVÍvÃø•F5ÔPƒs*ÄMc]Ió9Ú1T0m†V)S•ÓXÖ[üâÍ*Œ¨c“dA+Œ1hóbõ:×IhõM@Ýs>P¬ÛÍÞ9ûvuTË>¥Ž‚Ö½` O5ÙccÛÍöjÏ?QëTmq\$¼¹—=(VÏ6F\rTr¶®~¥šÃ\0Ø|m•CÚ)[Õ‚N¨ÖÆ,dÐ+;µQm™-Ňðê\$µo²B-žsšÚÇRˆÕàN›:’È/8‰>øb.°Û40>‡ÆÚñ,‹.tÚºJ¶\rÛ\rk®•6Û WMmØ3[Ñx5œËêqÕÉÑìLb´6Í;`•Lm‹ÿ4•Iµ6^d!5`7¤:aOÕh4õµÀÐ-3üÒHÈUm˜€¶Ú’³^_ÀÔNTê±²[PHðÙØa=UH\rE µ\rjM¶•”SåPsN6ºMXQ 5Œæ Ã\r’ÛYKqsþ[¾s-\0Öé®ï]¼aN³d5?ó+—Cf¼ÍÀRe^ø+@Ø[ÓP€5ËÐGa‹öôÒµoM@w\0QyoKŽõUÛøe}¼Õ[¶_oK’Ž@Ûán»wxVýpEºäùPuo5öR“ñ8c·.¥ Uo5Áw\0ò\n(%ÓNp¤ëVÖ®ˆJàˆ AqtÏ×Zæ#Õˆ³òÜk6””ÜiEÜØV‹R{qü×fØ{3l@äPqH‹r!VS]úÈ6¥Ú'q«Ð@>R=E\0ùêSñ+UjõÊ”øYÓ[źuUÕ¸Õ»rÌÜÇp»6Öõs]h'tË mJ ¬8ñQUUuD’m2z›Ð„àˆB¡K”ßÜÝv'P¿l]AAfËchÈ\"RåV«p´ÓXÌü;UË5öÜŽÆåÒcƒÖ°zPTuUQYëõíZ¯5åU¹…ýJen5ÀÜnÞÕovÅs=Hu½ÙÅZõoa‚itÝoUÀÚ»uuH5nÝ=jSÐÀUPZMNÄàˆÿQmobF·A>´]i\\¨G\rTŸvÏÖ‚Ôâ\"•Ä2Ø×v4γ=]¶2åz\n=:¢\rh*s¯×fÅÓw_ÔäÊUt8Å[Ý„8]Ÿ+=•ÐëGÕ×7z=n…Û—JÝòßuè8|«Å4u]ô caÈÝzà×€YwíÊt]ܪÔÕáÅä^€ˆÎrÌÞ)w]Œ%‚i,˜¦õí¤e}w—0<Õ3ÕäµnÛLr½å.³Ýiy-Þ7(K&‡\r_;f‰[̈\\\rXÃ+Hï…çÔøa=ܳbÞnôc€ ,c’!£Õ8\$m“VõvRæJ]g -†W¹OsˆôŽƒR( êÞ5]WHVC\\5@DÝ!s%Î’²^×sdñ%NÐÞ9úÈ7·Öƒ{U™¡+ÜÙI-îÕ¼€ïP\0\"FЈS5…ÒFÞÏ[Òâµz¶Åsk(7ÄEz•Ÿ÷ÇÖ1-å@Ýxñ̹Ú>M³g‡ïWM£âjÔ»n\nÈ ƒ^«tLµ·ÓUc}AÃVRÜúõ™@;ÕX-<sÔ<×t…¹C8^!P}Ì3q´d·\\ζLÄ3uÀÖúÛû\\-\rSlX{sàLÅNlÙåïL™ßŸnà‹¶&ZÅpút6_[\r±¢°¬ƒVÅV÷è„C~ÈIªE…?W%üUöÜ«u…[ÓATAW\rü÷•¦\rdáwøßÅV½ÛkÝù¶þÏh,8£ÅŠÏ”Üí×D×ÈØ»¦Ë|añ¸6-_1O×Ã`j…ýo?7>\nÀXsôY‘nã^cÑÙ{jÈ7®ÚÄÚÊ:ÈÜ]E\"JVJe~×.ÙQHgžT3r…cÆÙVßBceø“3e^Õ€…9®8¤\nò ™Zð(ä䇪½ ;tæzôãÕ# üq#à\0V.\nÂS/DkÈ");} else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&ٜƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function |
|
14 | 20 | connection(){global$e;return$e;}function |
15 | 21 | adminer(){global$b;return$b;}function |
16 | 22 | idf_unescape($Jc){$fd=substr($Jc,-1);return |
@@ -20,7 +26,10 @@ discard block |
||
20 | 26 | number($X){return |
21 | 27 | preg_replace('~[^0-9]+~','',$X);}function |
22 | 28 | remove_slashes($Me,$oc=false){if(get_magic_quotes_gpc()){while(list($z,$X)=each($Me)){foreach($X |
23 | -as$Zc=>$W){unset($Me[$z][$Zc]);if(is_array($W)){$Me[$z][stripslashes($Zc)]=$W;$Me[]=&$Me[$z][stripslashes($Zc)];}else$Me[$z][stripslashes($Zc)]=($oc?$W:stripslashes($W));}}}}function |
|
29 | +as$Zc=>$W){unset($Me[$z][$Zc]);if(is_array($W)){$Me[$z][stripslashes($Zc)]=$W;$Me[]=&$Me[$z][stripslashes($Zc)];} else { |
|
30 | + $Me[$z][stripslashes($Zc)]=($oc?$W:stripslashes($W)); |
|
31 | +} |
|
32 | +}}}}function |
|
24 | 33 | bracket_escape($Jc,$_a=false){static$mg=array(':'=>':1',']'=>':2','['=>':3');return |
25 | 34 | strtr($Jc,($_a?array_flip($mg):$mg));}function |
26 | 35 | charset($e){return(version_compare($e->server_info,"5.5.3")>=0?"utf8mb4":"utf8");}function |
@@ -32,53 +41,137 @@ discard block |
||
32 | 41 | checkbox($F,$Y,$Na,$dd="",$Xd="",$Ra=""){$K="<input type='checkbox' name='$F' value='".h($Y)."'".($Na?" checked":"").($Xd?' onclick="'.h($Xd).'"':'').">";return($dd!=""||$Ra?"<label".($Ra?" class='$Ra'":"").">$K".h($dd)."</label>":$K);}function |
33 | 42 | optionlist($be,$qf=null,$Eg=false){$K="";foreach($be |
34 | 43 | as$Zc=>$W){$ce=array($Zc=>$W);if(is_array($W)){$K.='<optgroup label="'.h($Zc).'">';$ce=$W;}foreach($ce |
35 | -as$z=>$X)$K.='<option'.($Eg||is_string($z)?' value="'.h($z).'"':'').(($Eg||is_string($z)?(string)$z:$X)===$qf?' selected':'').'>'.h($X);if(is_array($W))$K.='</optgroup>';}return$K;}function |
|
36 | -html_select($F,$be,$Y="",$Wd=true){if($Wd)return"<select name='".h($F)."'".(is_string($Wd)?' onchange="'.h($Wd).'"':"").">".optionlist($be,$Y)."</select>";$K="";foreach($be |
|
37 | -as$z=>$X)$K.="<label><input type='radio' name='".h($F)."' value='".h($z)."'".($z==$Y?" checked":"").">".h($X)."</label>";return$K;}function |
|
44 | +as$z=>$X) { |
|
45 | + $K.='<option'.($Eg||is_string($z)?' value="'.h($z).'"':'').(($Eg||is_string($z)?(string)$z:$X)===$qf?' selected':'').'>'.h($X); |
|
46 | +} |
|
47 | +if(is_array($W)) { |
|
48 | + $K.='</optgroup>'; |
|
49 | +} |
|
50 | +}return$K;}function |
|
51 | +html_select($F,$be,$Y="",$Wd=true){if($Wd) { |
|
52 | + return"<select name='".h($F)."'".(is_string($Wd)?' onchange="'.h($Wd).'"':"").">".optionlist($be,$Y)."</select>"; |
|
53 | +} |
|
54 | +$K="";foreach($be |
|
55 | +as$z=>$X) { |
|
56 | + $K.="<label><input type='radio' name='".h($F)."' value='".h($z)."'".($z==$Y?" checked":"").">".h($X)."</label>"; |
|
57 | +} |
|
58 | +return$K;}function |
|
38 | 59 | select_input($wa,$be,$Y="",$_e=""){return($be?"<select$wa><option value=''>$_e".optionlist($be,$Y,true)."</select>":"<input$wa size='10' value='".h($Y)."' placeholder='$_e'>");}function |
39 | 60 | confirm(){return" onclick=\"return confirm('".'Are you sure?'."');\"";}function |
40 | 61 | print_fieldset($u,$kd,$Mg=false,$Xd=""){echo"<fieldset><legend><a href='#fieldset-$u' onclick=\"".h($Xd)."return !toggle('fieldset-$u');\">$kd</a></legend><div id='fieldset-$u'".($Mg?"":" class='hidden'").">\n";}function |
41 | 62 | bold($Ga,$Ra=""){return($Ga?" class='active $Ra'":($Ra?" class='$Ra'":""));}function |
42 | -odd($K=' class="odd"'){static$t=0;if(!$K)$t=-1;return($t++%2?$K:'');}function |
|
63 | +odd($K=' class="odd"'){static$t=0;if(!$K) { |
|
64 | + $t=-1; |
|
65 | +} |
|
66 | +return($t++%2?$K:'');}function |
|
43 | 67 | js_escape($Gf){return |
44 | 68 | addcslashes($Gf,"\r\n'\\/");}function |
45 | -json_row($z,$X=null){static$pc=true;if($pc)echo"{";if($z!=""){echo($pc?"":",")."\n\t\"".addcslashes($z,"\r\n\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'undefined');$pc=false;}else{echo"\n}\n";$pc=true;}}function |
|
69 | +json_row($z,$X=null){static$pc=true;if($pc) { |
|
70 | + echo"{"; |
|
71 | +} |
|
72 | +if($z!=""){echo($pc?"":",")."\n\t\"".addcslashes($z,"\r\n\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'undefined');$pc=false;} else{echo"\n}\n";$pc=true;}}function |
|
46 | 73 | ini_bool($Nc){$X=ini_get($Nc);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function |
47 | -sid(){static$K;if($K===null)$K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$K;}function |
|
74 | +sid(){static$K;if($K===null) { |
|
75 | + $K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies"))); |
|
76 | +} |
|
77 | +return$K;}function |
|
48 | 78 | set_password($Jg,$O,$V,$we){$_SESSION["pwds"][$Jg][$O][$V]=($_COOKIE["adminer_key"]&&is_string($we)?array(encrypt_string($we,$_COOKIE["adminer_key"])):$we);}function |
49 | -get_password(){$K=get_session("pwds");if(is_array($K))$K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false);return$K;}function |
|
79 | +get_password(){$K=get_session("pwds");if(is_array($K)) { |
|
80 | + $K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false); |
|
81 | +} |
|
82 | +return$K;}function |
|
50 | 83 | q($Gf){global$e;return$e->quote($Gf);}function |
51 | -get_vals($I,$c=0){global$e;$K=array();$J=$e->query($I);if(is_object($J)){while($L=$J->fetch_row())$K[]=$L[$c];}return$K;}function |
|
52 | -get_key_vals($I,$f=null,$cg=0){global$e;if(!is_object($f))$f=$e;$K=array();$f->timeout=$cg;$J=$f->query($I);$f->timeout=0;if(is_object($J)){while($L=$J->fetch_row())$K[$L[0]]=$L[1];}return$K;}function |
|
53 | -get_rows($I,$f=null,$k="<p class='error'>"){global$e;$eb=(is_object($f)?$f:$e);$K=array();$J=$eb->query($I);if(is_object($J)){while($L=$J->fetch_assoc())$K[]=$L;}elseif(!$J&&!is_object($f)&&$k&&defined("PAGE_HEADER"))echo$k.error()."\n";return$K;}function |
|
84 | +get_vals($I,$c=0){global$e;$K=array();$J=$e->query($I);if(is_object($J)){while($L=$J->fetch_row()) { |
|
85 | + $K[]=$L[$c]; |
|
86 | +} |
|
87 | +}return$K;}function |
|
88 | +get_key_vals($I,$f=null,$cg=0){global$e;if(!is_object($f)) { |
|
89 | + $f=$e; |
|
90 | +} |
|
91 | +$K=array();$f->timeout=$cg;$J=$f->query($I);$f->timeout=0;if(is_object($J)){while($L=$J->fetch_row()) { |
|
92 | + $K[$L[0]]=$L[1]; |
|
93 | +} |
|
94 | +}return$K;}function |
|
95 | +get_rows($I,$f=null,$k="<p class='error'>"){global$e;$eb=(is_object($f)?$f:$e);$K=array();$J=$eb->query($I);if(is_object($J)){while($L=$J->fetch_assoc()) { |
|
96 | + $K[]=$L; |
|
97 | +} |
|
98 | +} elseif(!$J&&!is_object($f)&&$k&&defined("PAGE_HEADER")) { |
|
99 | + echo$k.error()."\n"; |
|
100 | +} |
|
101 | +return$K;}function |
|
54 | 102 | unique_array($L,$w){foreach($w |
55 | -as$v){if(preg_match("~PRIMARY|UNIQUE~",$v["type"])){$K=array();foreach($v["columns"]as$z){if(!isset($L[$z]))continue |
|
56 | -2;$K[$z]=$L[$z];}return$K;}}}function |
|
57 | -escape_key($z){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$z,$C))return$C[1].idf_escape(idf_unescape($C[2])).$C[3];return |
|
103 | +as$v){if(preg_match("~PRIMARY|UNIQUE~",$v["type"])){$K=array();foreach($v["columns"]as$z){if(!isset($L[$z])) { |
|
104 | + continue |
|
105 | +2; |
|
106 | +} |
|
107 | +$K[$z]=$L[$z];}return$K;}}}function |
|
108 | +escape_key($z){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$z,$C)) { |
|
109 | + return$C[1].idf_escape(idf_unescape($C[2])).$C[3]; |
|
110 | +} |
|
111 | +return |
|
58 | 112 | idf_escape($z);}function |
59 | -where($Z,$m=array()){global$e,$y;$K=array();foreach((array)$Z["where"]as$z=>$X){$z=bracket_escape($z,1);$c=escape_key($z);$K[]=$c.(($y=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$X))||$y=="mssql"?" LIKE ".q(addcslashes($X,"%_\\")):" = ".unconvert_field($m[$z],q($X)));if($y=="sql"&&preg_match('~char|text~',$m[$z]["type"])&&preg_match("~[^ -@]~",$X))$K[]="$c = ".q($X)." COLLATE ".charset($e)."_bin";}foreach((array)$Z["null"]as$z)$K[]=escape_key($z)." IS NULL";return |
|
113 | +where($Z,$m=array()){global$e,$y;$K=array();foreach((array)$Z["where"]as$z=>$X){$z=bracket_escape($z,1);$c=escape_key($z);$K[]=$c.(($y=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$X))||$y=="mssql"?" LIKE ".q(addcslashes($X,"%_\\")):" = ".unconvert_field($m[$z],q($X)));if($y=="sql"&&preg_match('~char|text~',$m[$z]["type"])&&preg_match("~[^ -@]~",$X)) { |
|
114 | + $K[]="$c = ".q($X)." COLLATE ".charset($e)."_bin"; |
|
115 | +} |
|
116 | +}foreach((array)$Z["null"]as$z) { |
|
117 | + $K[]=escape_key($z)." IS NULL"; |
|
118 | +} |
|
119 | +return |
|
60 | 120 | implode(" AND ",$K);}function |
61 | 121 | where_check($X,$m=array()){parse_str($X,$Ma);remove_slashes(array(&$Ma));return |
62 | 122 | where($Ma,$m);}function |
63 | 123 | where_link($t,$c,$Y,$Yd="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($c)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$Yd:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function |
64 | 124 | convert_fields($d,$m,$N=array()){$K="";foreach($d |
65 | -as$z=>$X){if($N&&!in_array(idf_escape($z),$N))continue;$ua=convert_field($m[$z]);if($ua)$K.=", $ua AS ".idf_escape($z);}return$K;}function |
|
66 | -cookie($F,$Y,$nd=2592000){global$ba;$pe=array($F,(preg_match("~\n~",$Y)?"":$Y),($nd?time()+$nd:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$pe[]=true;return |
|
125 | +as$z=>$X){if($N&&!in_array(idf_escape($z),$N)) { |
|
126 | + continue; |
|
127 | +} |
|
128 | +$ua=convert_field($m[$z]);if($ua) { |
|
129 | + $K.=", $ua AS ".idf_escape($z); |
|
130 | +} |
|
131 | +}return$K;}function |
|
132 | +cookie($F,$Y,$nd=2592000){global$ba;$pe=array($F,(preg_match("~\n~",$Y)?"":$Y),($nd?time()+$nd:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0) { |
|
133 | + $pe[]=true; |
|
134 | +} |
|
135 | +return |
|
67 | 136 | call_user_func_array('setcookie',$pe);}function |
68 | -restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function |
|
69 | -stop_session(){if(!ini_bool("session.use_cookies"))session_write_close();}function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]];}function |
|
137 | +restart_session(){if(!ini_bool("session.use_cookies")) { |
|
138 | + session_start(); |
|
139 | +} |
|
140 | +}function |
|
141 | +stop_session(){if(!ini_bool("session.use_cookies")) { |
|
142 | + session_write_close(); |
|
143 | +} |
|
144 | +}function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]];}function |
|
70 | 145 | set_session($z,$X){$_SESSION[$z][DRIVER][SERVER][$_GET["username"]]=$X;}function |
71 | 146 | auth_url($Jg,$O,$V,$i=null){global$Eb;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($Eb))."|username|".($i!==null?"db|":"").session_name()),$C);return"$C[1]?".(sid()?SID."&":"").($Jg!="server"||$O!=""?urlencode($Jg)."=".urlencode($O)."&":"")."username=".urlencode($V).($i!=""?"&db=".urlencode($i):"").($C[2]?"&$C[2]":"");}function |
72 | 147 | is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function |
73 | -redirect($B,$D=null){if($D!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($B!==null?$B:$_SERVER["REQUEST_URI"]))][]=$D;}if($B!==null){if($B=="")$B=".";header("Location: $B");exit;}}function |
|
74 | -query_redirect($I,$B,$D,$Ue=true,$cc=true,$ic=false,$bg=""){global$e,$k,$b;if($cc){$Cf=microtime(true);$ic=!$e->query($I);$bg=format_time($Cf);}$Bf="";if($I)$Bf=$b->messageQuery($I,$bg);if($ic){$k=error().$Bf;return |
|
75 | -false;}if($Ue)redirect($B,$D.$Bf);return |
|
148 | +redirect($B,$D=null){if($D!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($B!==null?$B:$_SERVER["REQUEST_URI"]))][]=$D;}if($B!==null){if($B=="") { |
|
149 | + $B="."; |
|
150 | +} |
|
151 | +header("Location: $B");exit;}}function |
|
152 | +query_redirect($I,$B,$D,$Ue=true,$cc=true,$ic=false,$bg=""){global$e,$k,$b;if($cc){$Cf=microtime(true);$ic=!$e->query($I);$bg=format_time($Cf);}$Bf="";if($I) { |
|
153 | + $Bf=$b->messageQuery($I,$bg); |
|
154 | +} |
|
155 | +if($ic){$k=error().$Bf;return |
|
156 | +false;}if($Ue) { |
|
157 | + redirect($B,$D.$Bf); |
|
158 | +} |
|
159 | +return |
|
76 | 160 | true;}function |
77 | -queries($I){global$e;static$Pe=array();static$Cf;if(!$Cf)$Cf=microtime(true);if($I===null)return |
|
78 | -array(implode("\n",$Pe),format_time($Cf));$Pe[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$e->query($I);}function |
|
161 | +queries($I){global$e;static$Pe=array();static$Cf;if(!$Cf) { |
|
162 | + $Cf=microtime(true); |
|
163 | +} |
|
164 | +if($I===null) { |
|
165 | + return |
|
166 | +array(implode("\n",$Pe),format_time($Cf)); |
|
167 | +} |
|
168 | +$Pe[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$e->query($I);}function |
|
79 | 169 | apply_queries($I,$S,$Yb='table'){foreach($S |
80 | -as$Q){if(!queries("$I ".$Yb($Q)))return |
|
81 | -false;}return |
|
170 | +as$Q){if(!queries("$I ".$Yb($Q))) { |
|
171 | + return |
|
172 | +false; |
|
173 | +} |
|
174 | +}return |
|
82 | 175 | true;}function |
83 | 176 | queries_redirect($B,$D,$Ue){list($Pe,$bg)=queries(null);return |
84 | 177 | query_redirect($Pe,$B,$D,$Ue,false,!$Ue,$bg);}function |
@@ -87,50 +180,159 @@ discard block |
||
87 | 180 | remove_from_uri($oe=""){return |
88 | 181 | substr(preg_replace("~(?<=[?&])($oe".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function |
89 | 182 | pagination($G,$nb){return" ".($G==$nb?$G+1:'<a href="'.h(remove_from_uri("page").($G?"&page=$G".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($G+1)."</a>");}function |
90 | -get_file($z,$ub=false){$mc=$_FILES[$z];if(!$mc)return |
|
91 | -null;foreach($mc |
|
92 | -as$z=>$X)$mc[$z]=(array)$X;$K='';foreach($mc["error"]as$z=>$k){if($k)return$k;$F=$mc["name"][$z];$jg=$mc["tmp_name"][$z];$fb=file_get_contents($ub&&preg_match('~\\.gz$~',$F)?"compress.zlib://$jg":$jg);if($ub){$Cf=substr($fb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Cf,$af))$fb=iconv("utf-16","utf-8",$fb);elseif($Cf=="\xEF\xBB\xBF")$fb=substr($fb,3);$K.=$fb."\n\n";}else$K.=$fb;}return$K;}function |
|
183 | +get_file($z,$ub=false){$mc=$_FILES[$z];if(!$mc) { |
|
184 | + return |
|
185 | +null; |
|
186 | +} |
|
187 | +foreach($mc |
|
188 | +as$z=>$X) { |
|
189 | + $mc[$z]=(array)$X; |
|
190 | +} |
|
191 | +$K='';foreach($mc["error"]as$z=>$k){if($k) { |
|
192 | + return$k; |
|
193 | +} |
|
194 | +$F=$mc["name"][$z];$jg=$mc["tmp_name"][$z];$fb=file_get_contents($ub&&preg_match('~\\.gz$~',$F)?"compress.zlib://$jg":$jg);if($ub){$Cf=substr($fb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Cf,$af)) { |
|
195 | + $fb=iconv("utf-16","utf-8",$fb); |
|
196 | +} elseif($Cf=="\xEF\xBB\xBF") { |
|
197 | + $fb=substr($fb,3); |
|
198 | +} |
|
199 | +$K.=$fb."\n\n";} else { |
|
200 | + $K.=$fb; |
|
201 | +} |
|
202 | +}return$K;}function |
|
93 | 203 | upload_error($k){$wd=($k==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($k?'Unable to upload a file.'.($wd?" ".sprintf('Maximum allowed file size is %sB.',$wd):""):'File does not exist.');}function |
94 | 204 | repeat_pattern($ye,$ld){return |
95 | 205 | str_repeat("$ye{0,65535}",$ld/65535)."$ye{0,".($ld%65535)."}";}function |
96 | 206 | is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$X));}function |
97 | -shorten_utf8($Gf,$ld=80,$Kf=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$ld).")($)?)u",$Gf,$C))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$ld).")($)?)",$Gf,$C);return |
|
207 | +shorten_utf8($Gf,$ld=80,$Kf=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$ld).")($)?)u",$Gf,$C)) { |
|
208 | + preg_match("(^(".repeat_pattern("[\t\r\n -~]",$ld).")($)?)",$Gf,$C); |
|
209 | +} |
|
210 | +return |
|
98 | 211 | h($C[1]).$Kf.(isset($C[2])?"":"<i>...</i>");}function |
99 | 212 | format_number($X){return |
100 | 213 | strtr(number_format($X,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function |
101 | 214 | friendly_url($X){return |
102 | 215 | preg_replace('~[^a-z0-9_]~i','-',$X);}function |
103 | 216 | hidden_fields($Me,$Kc=array()){while(list($z,$X)=each($Me)){if(!in_array($z,$Kc)){if(is_array($X)){foreach($X |
104 | -as$Zc=>$W)$Me[$z."[$Zc]"]=$W;}else |
|
105 | -echo'<input type="hidden" name="'.h($z).'" value="'.h($X).'">';}}}function |
|
217 | +as$Zc=>$W) { |
|
218 | + $Me[$z."[$Zc]"]=$W; |
|
219 | +} |
|
220 | +} else { |
|
221 | + echo'<input type="hidden" name="'.h($z).'" value="'.h($X).'">'; |
|
222 | +} |
|
223 | +}}}function |
|
106 | 224 | hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function |
107 | 225 | table_status1($Q,$jc=false){$K=table_status($Q,$jc);return($K?$K:array("Name"=>$Q));}function |
108 | -column_foreign_keys($Q){global$b;$K=array();foreach($b->foreignKeys($Q)as$n){foreach($n["source"]as$X)$K[$X][]=$n;}return$K;}function |
|
226 | +column_foreign_keys($Q){global$b;$K=array();foreach($b->foreignKeys($Q)as$n){foreach($n["source"]as$X) { |
|
227 | + $K[$X][]=$n; |
|
228 | +} |
|
229 | +}return$K;}function |
|
109 | 230 | enum_input($U,$wa,$l,$Y,$Sb=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$rd);$K=($Sb!==null?"<label><input type='$U'$wa value='$Sb'".((is_array($Y)?in_array($Sb,$Y):$Y===0)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($rd[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Na=(is_int($Y)?$Y==$t+1:(is_array($Y)?in_array($t+1,$Y):$Y===$X));$K.=" <label><input type='$U'$wa value='".($t+1)."'".($Na?' checked':'').'>'.h($b->editVal($X,$l)).'</label>';}return$K;}function |
110 | -input($l,$Y,$q){global$e,$tg,$b,$y;$F=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($Y)&&!$q){$ta=array($Y);if(version_compare(PHP_VERSION,5.4)>=0)$ta[]=JSON_PRETTY_PRINT;$Y=call_user_func_array('json_encode',$ta);$q="json";}$cf=($y=="mssql"&&$l["auto_increment"]);if($cf&&!$_POST["save"])$q=null;$xc=(isset($_GET["select"])||$cf?array("orig"=>'original'):array())+$b->editFunctions($l);$wa=" name='fields[$F]'";if($l["type"]=="enum")echo |
|
111 | -nbsp($xc[""])."<td>".$b->editInput($_GET["edit"],$l,$wa,$Y);else{$pc=0;foreach($xc |
|
112 | -as$z=>$X){if($z===""||!$X)break;$pc++;}$Wd=($pc?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($pc > f.selectedIndex) f.selectedIndex = $pc;\" onkeyup='keyupChange.call(this);'":"");$wa.=$Wd;$Cc=(in_array($q,$xc)||isset($xc[$q]));echo(count($xc)>1?"<select name='function[$F]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($xc,$q===null||$Cc?$q:"")."</select>":nbsp(reset($xc))).'<td>';$Pc=$b->editInput($_GET["edit"],$l,$wa,$Y);if($Pc!="")echo$Pc;elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$rd);foreach($rd[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Na=(is_int($Y)?($Y>>$t)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$F][$t]' value='".(1<<$t)."'".($Na?' checked':'')."$Wd>".h($b->editVal($X,$l)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$F'$Wd>";elseif(($Zf=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$Y)){if($Zf&&$y!="sqlite")$wa.=" cols='50' rows='12'";else{$M=min(12,substr_count($Y,"\n")+1);$wa.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$wa>".h($Y).'</textarea>';}elseif($q=="json")echo"<textarea$wa cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';else{$yd=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$C)?((preg_match("~binary~",$l["type"])?2:1)*$C[1]+($C[3]?1:0)+($C[2]&&!$l["unsigned"]?1:0)):($tg[$l["type"]]?$tg[$l["type"]]+($l["unsigned"]?0:1):0));if($y=='sql'&&$e->server_info>=5.6&&preg_match('~time~',$l["type"]))$yd+=7;echo"<input".((!$Cc||$q==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($Y)."'".($yd?" maxlength='$yd'":"").(preg_match('~char|binary~',$l["type"])&&$yd>20?" size='40'":"")."$wa>";}}}function |
|
113 | -process_input($l){global$b;$Jc=bracket_escape($l["field"]);$q=$_POST["function"][$Jc];$Y=$_POST["fields"][$Jc];if($l["type"]=="enum"){if($Y==-1)return |
|
114 | -false;if($Y=="")return"NULL";return+$Y;}if($l["auto_increment"]&&$Y=="")return |
|
115 | -null;if($q=="orig")return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false);if($q=="NULL")return"NULL";if($l["type"]=="set")return |
|
116 | -array_sum((array)$Y);if($q=="json"){$q="";$Y=json_decode($Y,true);if(!is_array($Y))return |
|
117 | -false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$mc=get_file("fields-$Jc");if(!is_string($mc))return |
|
118 | -false;return |
|
231 | +input($l,$Y,$q){global$e,$tg,$b,$y;$F=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($Y)&&!$q){$ta=array($Y);if(version_compare(PHP_VERSION,5.4)>=0) { |
|
232 | + $ta[]=JSON_PRETTY_PRINT; |
|
233 | +} |
|
234 | +$Y=call_user_func_array('json_encode',$ta);$q="json";}$cf=($y=="mssql"&&$l["auto_increment"]);if($cf&&!$_POST["save"]) { |
|
235 | + $q=null; |
|
236 | +} |
|
237 | +$xc=(isset($_GET["select"])||$cf?array("orig"=>'original'):array())+$b->editFunctions($l);$wa=" name='fields[$F]'";if($l["type"]=="enum") { |
|
238 | + echo |
|
239 | +nbsp($xc[""])."<td>".$b->editInput($_GET["edit"],$l,$wa,$Y); |
|
240 | +} else{$pc=0;foreach($xc |
|
241 | +as$z=>$X){if($z===""||!$X) { |
|
242 | + break; |
|
243 | +} |
|
244 | +$pc++;}$Wd=($pc?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($pc > f.selectedIndex) f.selectedIndex = $pc;\" onkeyup='keyupChange.call(this);'":"");$wa.=$Wd;$Cc=(in_array($q,$xc)||isset($xc[$q]));echo(count($xc)>1?"<select name='function[$F]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($xc,$q===null||$Cc?$q:"")."</select>":nbsp(reset($xc))).'<td>';$Pc=$b->editInput($_GET["edit"],$l,$wa,$Y);if($Pc!="") { |
|
245 | + echo$Pc; |
|
246 | +} elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$rd);foreach($rd[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Na=(is_int($Y)?($Y>>$t)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$F][$t]' value='".(1<<$t)."'".($Na?' checked':'')."$Wd>".h($b->editVal($X,$l)).'</label>';}} elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")) { |
|
247 | + echo"<input type='file' name='fields-$F'$Wd>"; |
|
248 | +} elseif(($Zf=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$Y)){if($Zf&&$y!="sqlite") { |
|
249 | + $wa.=" cols='50' rows='12'"; |
|
250 | +} else{$M=min(12,substr_count($Y,"\n")+1);$wa.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$wa>".h($Y).'</textarea>';} elseif($q=="json") { |
|
251 | + echo"<textarea$wa cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>'; |
|
252 | +} else{$yd=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$C)?((preg_match("~binary~",$l["type"])?2:1)*$C[1]+($C[3]?1:0)+($C[2]&&!$l["unsigned"]?1:0)):($tg[$l["type"]]?$tg[$l["type"]]+($l["unsigned"]?0:1):0));if($y=='sql'&&$e->server_info>=5.6&&preg_match('~time~',$l["type"])) { |
|
253 | + $yd+=7; |
|
254 | +} |
|
255 | +echo"<input".((!$Cc||$q==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($Y)."'".($yd?" maxlength='$yd'":"").(preg_match('~char|binary~',$l["type"])&&$yd>20?" size='40'":"")."$wa>";}}}function |
|
256 | +process_input($l){global$b;$Jc=bracket_escape($l["field"]);$q=$_POST["function"][$Jc];$Y=$_POST["fields"][$Jc];if($l["type"]=="enum"){if($Y==-1) { |
|
257 | + return |
|
258 | +false; |
|
259 | +} |
|
260 | +if($Y=="") { |
|
261 | + return"NULL"; |
|
262 | +} |
|
263 | +return+$Y;}if($l["auto_increment"]&&$Y=="") { |
|
264 | + return |
|
265 | +null; |
|
266 | +} |
|
267 | +if($q=="orig") { |
|
268 | + return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false); |
|
269 | +} |
|
270 | +if($q=="NULL") { |
|
271 | + return"NULL"; |
|
272 | +} |
|
273 | +if($l["type"]=="set") { |
|
274 | + return |
|
275 | +array_sum((array)$Y); |
|
276 | +} |
|
277 | +if($q=="json"){$q="";$Y=json_decode($Y,true);if(!is_array($Y)) { |
|
278 | + return |
|
279 | +false; |
|
280 | +} |
|
281 | +return$Y;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$mc=get_file("fields-$Jc");if(!is_string($mc)) { |
|
282 | + return |
|
283 | +false; |
|
284 | +} |
|
285 | +return |
|
119 | 286 | q($mc);}return$b->processInput($l,$Y,$q);}function |
120 | 287 | fields_from_edit(){global$j;$K=array();foreach((array)$_POST["field_keys"]as$z=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$z];$_POST["fields"][$X]=$_POST["field_vals"][$z];}}foreach((array)$_POST["fields"]as$z=>$X){$F=bracket_escape($z,1);$K[$F]=array("field"=>$F,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($z==$j->primary),);}return$K;}function |
121 | 288 | search_tables(){global$b,$e;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$uc=false;foreach(table_status('',true)as$Q=>$R){$F=$b->tableName($R);if(isset($R["Engine"])&&$F!=""&&(!$_POST["tables"]||in_array($Q,$_POST["tables"]))){$J=$e->query("SELECT".limit("1 FROM ".table($Q)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($Q),array())),1));if(!$J||$J->fetch_row()){if(!$uc){echo"<ul>\n";$uc=true;}echo"<li>".($J?"<a href='".h(ME."select=".urlencode($Q)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$F</a>\n":"$F: <span class='error'>".error()."</span>\n");}}}echo($uc?"</ul>":"<p class='message'>".'No tables.')."\n";}function |
122 | -dump_headers($Ic,$Ed=false){global$b;$K=$b->dumpHeaders($Ic,$Ed);$me=$_POST["output"];if($me!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Ic).".$K".($me!="file"&&!preg_match('~[^0-9a-z]~',$me)?".$me":""));session_write_close();ob_flush();flush();return$K;}function |
|
289 | +dump_headers($Ic,$Ed=false){global$b;$K=$b->dumpHeaders($Ic,$Ed);$me=$_POST["output"];if($me!="text") { |
|
290 | + header("Content-Disposition: attachment; filename=".$b->dumpFilename($Ic).".$K".($me!="file"&&!preg_match('~[^0-9a-z]~',$me)?".$me":"")); |
|
291 | +} |
|
292 | +session_write_close();ob_flush();flush();return$K;}function |
|
123 | 293 | dump_csv($L){foreach($L |
124 | -as$z=>$X){if(preg_match("~[\"\n,;\t]~",$X)||$X==="")$L[$z]='"'.str_replace('"','""',$X).'"';}echo |
|
294 | +as$z=>$X){if(preg_match("~[\"\n,;\t]~",$X)||$X==="") { |
|
295 | + $L[$z]='"'.str_replace('"','""',$X).'"'; |
|
296 | +} |
|
297 | +}echo |
|
125 | 298 | implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$L)."\r\n";}function |
126 | 299 | apply_sql_function($q,$c){return($q?($q=="unixepoch"?"DATETIME($c, '$q')":($q=="count distinct"?"COUNT(DISTINCT ":strtoupper("$q("))."$c)"):$c);}function |
127 | -get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir'))$K=sys_get_temp_dir();else{$nc=@tempnam("","");if(!$nc)return |
|
128 | -false;$K=dirname($nc);unlink($nc);}}return$K;}function |
|
129 | -password_file($g){$nc=get_temp_dir()."/adminer.key";$K=@file_get_contents($nc);if($K||!$g)return$K;$p=@fopen($nc,"w");if($p){chmod($nc,0660);$K=rand_string();fwrite($p,$K);fclose($p);}return$K;}function |
|
300 | +get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir')) { |
|
301 | + $K=sys_get_temp_dir(); |
|
302 | +} else{$nc=@tempnam("","");if(!$nc) { |
|
303 | + return |
|
304 | +false; |
|
305 | +} |
|
306 | +$K=dirname($nc);unlink($nc);}}return$K;}function |
|
307 | +password_file($g){$nc=get_temp_dir()."/adminer.key";$K=@file_get_contents($nc);if($K||!$g) { |
|
308 | + return$K; |
|
309 | +} |
|
310 | +$p=@fopen($nc,"w");if($p){chmod($nc,0660);$K=rand_string();fwrite($p,$K);fclose($p);}return$K;}function |
|
130 | 311 | rand_string(){return |
131 | 312 | md5(uniqid(mt_rand(),true));}function |
132 | 313 | select_value($X,$A,$l,$ag){global$b,$ba;if(is_array($X)){$K="";foreach($X |
133 | -as$Zc=>$W)$K.="<tr>".($X!=array_values($X)?"<th>".h($Zc):"")."<td>".select_value($W,$A,$l,$ag);return"<table cellspacing='0'>$K</table>";}if(!$A)$A=$b->selectLink($X,$l);if($A===null){if(is_mail($X))$A="mailto:$X";if($Oe=is_url($X))$A=(($Oe=="http"&&$ba)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$X:"https://www.adminer.org/redirect/?url=".urlencode($X));}$K=$b->editVal($X,$l);if($K!==null){if($K==="")$K=" ";elseif(!is_utf8($K))$K="\0";elseif($ag!=""&&is_shortable($l))$K=shorten_utf8($K,max(0,+$ag));else$K=h($K);}return$b->selectVal($K,$A,$l,$X);}function |
|
314 | +as$Zc=>$W) { |
|
315 | + $K.="<tr>".($X!=array_values($X)?"<th>".h($Zc):"")."<td>".select_value($W,$A,$l,$ag); |
|
316 | +} |
|
317 | +return"<table cellspacing='0'>$K</table>";}if(!$A) { |
|
318 | + $A=$b->selectLink($X,$l); |
|
319 | +} |
|
320 | +if($A===null){if(is_mail($X)) { |
|
321 | + $A="mailto:$X"; |
|
322 | +} |
|
323 | +if($Oe=is_url($X)) { |
|
324 | + $A=(($Oe=="http"&&$ba)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$X:"https://www.adminer.org/redirect/?url=".urlencode($X)); |
|
325 | +} |
|
326 | +}$K=$b->editVal($X,$l);if($K!==null){if($K==="") { |
|
327 | + $K=" "; |
|
328 | +} elseif(!is_utf8($K)) { |
|
329 | + $K="\0"; |
|
330 | +} elseif($ag!=""&&is_shortable($l)) { |
|
331 | + $K=shorten_utf8($K,max(0,+$ag)); |
|
332 | +} else { |
|
333 | + $K=h($K); |
|
334 | +} |
|
335 | +}return$b->selectVal($K,$A,$l,$X);}function |
|
134 | 336 | is_mail($Pb){$va='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Db='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$ye="$va+(\\.$va+)*@($Db?\\.)+$Db";return |
135 | 337 | is_string($Pb)&&preg_match("(^$ye(,\\s*$ye)*\$)i",$Pb);}function |
136 | 338 | is_url($Gf){$Db='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($Db?\\.)+$Db(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Gf,$C)?strtolower($C[1]):"");}function |
@@ -143,38 +345,94 @@ discard block |
||
143 | 345 | }, \'token=',$T,'&kill=',$bd,'\'); |
144 | 346 | }, ',1000*$cg,'); |
145 | 347 | </script> |
146 | -';}else$f=null;ob_flush();flush();$K=@get_key_vals($I,$f,$cg);if($f){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return |
|
348 | +';} else { |
|
349 | + $f=null; |
|
350 | +} |
|
351 | +ob_flush();flush();$K=@get_key_vals($I,$f,$cg);if($f){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return |
|
147 | 352 | array_keys($K);}function |
148 | 353 | get_token(){$Se=rand(1,1e6);return($Se^$_SESSION["token"]).":$Se";}function |
149 | 354 | verify_token(){list($T,$Se)=explode(":",$_POST["token"]);return($Se^$_SESSION["token"])==$T;}function |
150 | -lzw_decompress($Da){$_b=256;$Ea=8;$Ta=array();$df=0;$ef=0;for($t=0;$t<strlen($Da);$t++){$df=($df<<8)+ord($Da[$t]);$ef+=8;if($ef>=$Ea){$ef-=$Ea;$Ta[]=$df>>$ef;$df&=(1<<$ef)-1;$_b++;if($_b>>$Ea)$Ea++;}}$zb=range("\0","\xFF");$K="";foreach($Ta |
|
151 | -as$t=>$Sa){$Ob=$zb[$Sa];if(!isset($Ob))$Ob=$Qg.$Qg[0];$K.=$Ob;if($t)$zb[]=$Qg.$Ob[0];$Qg=$Ob;}return$K;}function |
|
355 | +lzw_decompress($Da){$_b=256;$Ea=8;$Ta=array();$df=0;$ef=0;for($t=0;$t<strlen($Da);$t++){$df=($df<<8)+ord($Da[$t]);$ef+=8;if($ef>=$Ea){$ef-=$Ea;$Ta[]=$df>>$ef;$df&=(1<<$ef)-1;$_b++;if($_b>>$Ea) { |
|
356 | + $Ea++; |
|
357 | +} |
|
358 | +}}$zb=range("\0","\xFF");$K="";foreach($Ta |
|
359 | +as$t=>$Sa){$Ob=$zb[$Sa];if(!isset($Ob)) { |
|
360 | + $Ob=$Qg.$Qg[0]; |
|
361 | +} |
|
362 | +$K.=$Ob;if($t) { |
|
363 | + $zb[]=$Qg.$Ob[0]; |
|
364 | +} |
|
365 | +$Qg=$Ob;}return$K;}function |
|
152 | 366 | on_help($Za,$xf=0){return" onmouseover='helpMouseover(this, event, ".h($Za).", $xf);' onmouseout='helpMouseout(this, event);'";}function |
153 | -edit_form($a,$m,$L,$Ag){global$b,$y,$T,$k;$Pf=$b->tableName(table_status1($a,true));page_header(($Ag?'Edit':'Insert'),$k,array("select"=>array($a,$Pf)),$Pf);if($L===false)echo"<p class='error'>".'No rows.'."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form"> |
|
154 | -';if(!$m)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m |
|
155 | -as$F=>$l){echo"<tr><th>".$b->fieldName($l);$vb=$_GET["set"][bracket_escape($F)];if($vb===null){$vb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$vb,$af))$vb=$af[1];}$Y=($L!==null?($L[$F]!=""&&$y=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$F])?array_sum($L[$F]):+$L[$F]):$L[$F]):(!$Ag&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$vb)));if(!$_POST["save"]&&is_string($Y))$Y=$b->editVal($Y,$l);$q=($_POST["save"]?(string)$_POST["function"][$F]:($Ag&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$Y=="CURRENT_TIMESTAMP"){$Y="";$q="now";}input($l,$Y,$q);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($Ag?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n";}echo($Ag?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'"> |
|
367 | +edit_form($a,$m,$L,$Ag){global$b,$y,$T,$k;$Pf=$b->tableName(table_status1($a,true));page_header(($Ag?'Edit':'Insert'),$k,array("select"=>array($a,$Pf)),$Pf);if($L===false) { |
|
368 | + echo"<p class='error'>".'No rows.'."\n"; |
|
369 | +} |
|
370 | +echo'<form action="" method="post" enctype="multipart/form-data" id="form"> |
|
371 | +';if(!$m) { |
|
372 | + echo"<p class='error'>".'You have no privileges to update this table.'."\n"; |
|
373 | +} else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m |
|
374 | +as$F=>$l){echo"<tr><th>".$b->fieldName($l);$vb=$_GET["set"][bracket_escape($F)];if($vb===null){$vb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$vb,$af)) { |
|
375 | + $vb=$af[1]; |
|
376 | +} |
|
377 | +}$Y=($L!==null?($L[$F]!=""&&$y=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$F])?array_sum($L[$F]):+$L[$F]):$L[$F]):(!$Ag&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$vb)));if(!$_POST["save"]&&is_string($Y)) { |
|
378 | + $Y=$b->editVal($Y,$l); |
|
379 | +} |
|
380 | +$q=($_POST["save"]?(string)$_POST["function"][$F]:($Ag&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$Y=="CURRENT_TIMESTAMP"){$Y="";$q="now";}input($l,$Y,$q);echo"\n";}if(!support("table")) { |
|
381 | + echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n"; |
|
382 | +} |
|
383 | +echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"])) { |
|
384 | + echo"<input type='submit' name='insert' value='".($Ag?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n"; |
|
385 | +} |
|
386 | +}echo($Ag?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"])) { |
|
387 | + hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"])); |
|
388 | +} |
|
389 | +echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'"> |
|
156 | 390 | <input type="hidden" name="save" value="1"> |
157 | 391 | <input type="hidden" name="token" value="',$T,'"> |
158 | 392 | </form> |
159 | -';}global$b,$e,$Eb,$Lb,$Vb,$k,$xc,$_c,$ba,$Oc,$y,$ca,$ed,$Vd,$ze,$Hf,$Dc,$T,$og,$tg,$_g,$ga;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";$ba=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$pe=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$pe[]=true;call_user_func_array('session_set_cookie_params',$pe);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$oc);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function |
|
393 | +';}global$b,$e,$Eb,$Lb,$Vb,$k,$xc,$_c,$ba,$Oc,$y,$ca,$ed,$Vd,$ze,$Hf,$Dc,$T,$og,$tg,$_g,$ga;if(!$_SERVER["REQUEST_URI"]) { |
|
394 | + $_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"]; |
|
395 | +} |
|
396 | +if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="") { |
|
397 | + $_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]"; |
|
398 | +} |
|
399 | +$ba=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$pe=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0) { |
|
400 | + $pe[]=true; |
|
401 | +} |
|
402 | +call_user_func_array('session_set_cookie_params',$pe);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$oc);if(get_magic_quotes_runtime()) { |
|
403 | + set_magic_quotes_runtime(false); |
|
404 | +} |
|
405 | +@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function |
|
160 | 406 | get_lang(){return'en';}function |
161 | 407 | lang($ng,$Md=null){if(is_array($ng)){$Be=($Md==1?0:1);$ng=$ng[$Be];}$ng=str_replace("%d","%s",$ng);$Md=format_number($Md);return |
162 | 408 | sprintf($ng,$Md);}if(extension_loaded('pdo')){class |
163 | 409 | Min_PDO |
164 | 410 | extends |
165 | 411 | PDO{var$_result,$server_info,$affected_rows,$errno,$error;function |
166 | -__construct(){global$b;$Be=array_search("SQL",$b->operators);if($Be!==false)unset($b->operators[$Be]);}function |
|
167 | -dsn($Ib,$V,$we){try{parent::__construct($Ib,$V,$we);}catch(Exception$ac){auth_error($ac->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function |
|
412 | +__construct(){global$b;$Be=array_search("SQL",$b->operators);if($Be!==false) { |
|
413 | + unset($b->operators[$Be]); |
|
414 | +} |
|
415 | +}function |
|
416 | +dsn($Ib,$V,$we){try{parent::__construct($Ib,$V,$we);} catch(Exception$ac){auth_error($ac->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function |
|
168 | 417 | query($I,$ug=false){$J=parent::query($I);$this->error="";if(!$J){list(,$this->errno,$this->error)=$this->errorInfo();return |
169 | 418 | false;}$this->store_result($J);return$J;}function |
170 | 419 | multi_query($I){return$this->_result=$this->query($I);}function |
171 | -store_result($J=null){if(!$J){$J=$this->_result;if(!$J)return |
|
172 | -false;}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return |
|
420 | +store_result($J=null){if(!$J){$J=$this->_result;if(!$J) { |
|
421 | + return |
|
422 | +false; |
|
423 | +} |
|
424 | +}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return |
|
173 | 425 | true;}function |
174 | -next_result(){if(!$this->_result)return |
|
175 | -false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function |
|
176 | -result($I,$l=0){$J=$this->query($I);if(!$J)return |
|
177 | -false;$L=$J->fetch();return$L[$l];}}class |
|
426 | +next_result(){if(!$this->_result) { |
|
427 | + return |
|
428 | +false; |
|
429 | +} |
|
430 | +$this->_result->_offset=0;return@$this->_result->nextRowset();}function |
|
431 | +result($I,$l=0){$J=$this->query($I);if(!$J) { |
|
432 | + return |
|
433 | +false; |
|
434 | +} |
|
435 | +$L=$J->fetch();return$L[$l];}}class |
|
178 | 436 | Min_PDOStatement |
179 | 437 | extends |
180 | 438 | PDOStatement{var$_offset=0,$num_rows;function |
@@ -183,11 +441,20 @@ discard block |
||
183 | 441 | fetch_field(){$L=(object)$this->getColumnMeta($this->_offset++);$L->orgtable=$L->table;$L->orgname=$L->name;$L->charsetnr=(in_array("blob",(array)$L->flags)?63:0);return$L;}}}$Eb=array();class |
184 | 442 | Min_SQL{var$_conn;function |
185 | 443 | __construct($e){$this->_conn=$e;}function |
186 | -select($Q,$N,$Z,$s,$de=array(),$_=1,$G=0,$Ie=false){global$b,$y;$Vc=(count($s)<count($N));$I=$b->selectQueryBuild($N,$Z,$s,$de,$_,$G);if(!$I)$I="SELECT".limit(($_GET["page"]!="last"&&+$_&&$s&&$Vc&&$y=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($s&&$Vc?"\nGROUP BY ".implode(", ",$s):"").($de?"\nORDER BY ".implode(", ",$de):""),($_!=""?+$_:null),($G?$_*$G:0),"\n");$Cf=microtime(true);$K=$this->_conn->query($I);if($Ie)echo$b->selectQuery($I,format_time($Cf));return$K;}function |
|
444 | +select($Q,$N,$Z,$s,$de=array(),$_=1,$G=0,$Ie=false){global$b,$y;$Vc=(count($s)<count($N));$I=$b->selectQueryBuild($N,$Z,$s,$de,$_,$G);if(!$I) { |
|
445 | + $I="SELECT".limit(($_GET["page"]!="last"&&+$_&&$s&&$Vc&&$y=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($s&&$Vc?"\nGROUP BY ".implode(", ",$s):"").($de?"\nORDER BY ".implode(", ",$de):""),($_!=""?+$_:null),($G?$_*$G:0),"\n"); |
|
446 | +} |
|
447 | +$Cf=microtime(true);$K=$this->_conn->query($I);if($Ie) { |
|
448 | + echo$b->selectQuery($I,format_time($Cf)); |
|
449 | +} |
|
450 | +return$K;}function |
|
187 | 451 | delete($Q,$Qe,$_=0){$I="FROM ".table($Q);return |
188 | 452 | queries("DELETE".($_?limit1($I,$Qe):" $I$Qe"));}function |
189 | 453 | update($Q,$P,$Qe,$_=0,$sf="\n"){$Hg=array();foreach($P |
190 | -as$z=>$X)$Hg[]="$z = $X";$I=table($Q)." SET$sf".implode(",$sf",$Hg);return |
|
454 | +as$z=>$X) { |
|
455 | + $Hg[]="$z = $X"; |
|
456 | +} |
|
457 | +$I=table($Q)." SET$sf".implode(",$sf",$Hg);return |
|
191 | 458 | queries("UPDATE".($_?limit1($I,$Qe):" $I$Qe"));}function |
192 | 459 | insert($Q,$P){return |
193 | 460 | queries("INSERT INTO ".table($Q).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function |
@@ -204,15 +471,29 @@ discard block |
||
204 | 471 | MySQLi{var$extension="MySQLi";function |
205 | 472 | __construct(){parent::init();}function |
206 | 473 | connect($O="",$V="",$we="",$qb=null,$Ae=null,$zf=null){mysqli_report(MYSQLI_REPORT_OFF);list($Gc,$Ae)=explode(":",$O,2);$K=@$this->real_connect(($O!=""?$Gc:ini_get("mysqli.default_host")),($O.$V!=""?$V:ini_get("mysqli.default_user")),($O.$V.$we!=""?$we:ini_get("mysqli.default_pw")),$qb,(is_numeric($Ae)?$Ae:ini_get("mysqli.default_port")),(!is_numeric($Ae)?$Ae:$zf));return$K;}function |
207 | -set_charset($La){if(parent::set_charset($La))return |
|
208 | -true;parent::set_charset('utf8');return$this->query("SET NAMES $La");}function |
|
209 | -result($I,$l=0){$J=$this->query($I);if(!$J)return |
|
210 | -false;$L=$J->fetch_array();return$L[$l];}function |
|
211 | -quote($Gf){return"'".$this->escape_string($Gf)."'";}}}elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class |
|
474 | +set_charset($La){if(parent::set_charset($La)) { |
|
475 | + return |
|
476 | +true; |
|
477 | +} |
|
478 | +parent::set_charset('utf8');return$this->query("SET NAMES $La");}function |
|
479 | +result($I,$l=0){$J=$this->query($I);if(!$J) { |
|
480 | + return |
|
481 | +false; |
|
482 | +} |
|
483 | +$L=$J->fetch_array();return$L[$l];}function |
|
484 | +quote($Gf){return"'".$this->escape_string($Gf)."'";}}} elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class |
|
212 | 485 | Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function |
213 | -connect($O,$V,$we){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$V"!=""?$V:ini_get("mysql.default_user")),("$O$V$we"!=""?$we:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function |
|
214 | -set_charset($La){if(function_exists('mysql_set_charset')){if(mysql_set_charset($La,$this->_link))return |
|
215 | -true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $La");}function |
|
486 | +connect($O,$V,$we){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$V"!=""?$V:ini_get("mysql.default_user")),("$O$V$we"!=""?$we:ini_get("mysql.default_password")),true,131072);if($this->_link) { |
|
487 | + $this->server_info=mysql_get_server_info($this->_link); |
|
488 | +} else { |
|
489 | + $this->error=mysql_error(); |
|
490 | +} |
|
491 | +return(bool)$this->_link;}function |
|
492 | +set_charset($La){if(function_exists('mysql_set_charset')){if(mysql_set_charset($La,$this->_link)) { |
|
493 | + return |
|
494 | +true; |
|
495 | +} |
|
496 | +mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $La");}function |
|
216 | 497 | quote($Gf){return"'".mysql_real_escape_string($Gf,$this->_link)."'";}function |
217 | 498 | select_db($qb){return |
218 | 499 | mysql_select_db($qb,$this->_link);}function |
@@ -225,8 +506,11 @@ discard block |
||
225 | 506 | store_result(){return$this->_result;}function |
226 | 507 | next_result(){return |
227 | 508 | false;}function |
228 | -result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows)return |
|
229 | -false;return |
|
509 | +result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows) { |
|
510 | + return |
|
511 | +false; |
|
512 | +} |
|
513 | +return |
|
230 | 514 | mysql_result($J->_result,0,$l);}}class |
231 | 515 | Min_Result{var$num_rows,$_result,$_offset=0;function |
232 | 516 | __construct($J){$this->_result=$J;$this->num_rows=mysql_num_rows($J);}function |
@@ -235,7 +519,7 @@ discard block |
||
235 | 519 | fetch_row(){return |
236 | 520 | mysql_fetch_row($this->_result);}function |
237 | 521 | fetch_field(){$K=mysql_fetch_field($this->_result,$this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=($K->blob?63:0);return$K;}function |
238 | -__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class |
|
522 | +__destruct(){mysql_free_result($this->_result);}}} elseif(extension_loaded("pdo_mysql")){class |
|
239 | 523 | Min_DB |
240 | 524 | extends |
241 | 525 | Min_PDO{var$extension="PDO_MySQL";function |
@@ -250,27 +534,56 @@ discard block |
||
250 | 534 | Min_SQL{function |
251 | 535 | insert($Q,$P){return($P?parent::insert($Q,$P):queries("INSERT INTO ".table($Q)." ()\nVALUES ()"));}function |
252 | 536 | insertUpdate($Q,$M,$He){$d=array_keys(reset($M));$Fe="INSERT INTO ".table($Q)." (".implode(", ",$d).") VALUES\n";$Hg=array();foreach($d |
253 | -as$z)$Hg[$z]="$z = VALUES($z)";$Kf="\nON DUPLICATE KEY UPDATE ".implode(", ",$Hg);$Hg=array();$ld=0;foreach($M |
|
254 | -as$P){$Y="(".implode(", ",$P).")";if($Hg&&(strlen($Fe)+$ld+strlen($Y)+strlen($Kf)>1e6)){if(!queries($Fe.implode(",\n",$Hg).$Kf))return |
|
255 | -false;$Hg=array();$ld=0;}$Hg[]=$Y;$ld+=strlen($Y)+2;}return |
|
537 | +as$z) { |
|
538 | + $Hg[$z]="$z = VALUES($z)"; |
|
539 | +} |
|
540 | +$Kf="\nON DUPLICATE KEY UPDATE ".implode(", ",$Hg);$Hg=array();$ld=0;foreach($M |
|
541 | +as$P){$Y="(".implode(", ",$P).")";if($Hg&&(strlen($Fe)+$ld+strlen($Y)+strlen($Kf)>1e6)){if(!queries($Fe.implode(",\n",$Hg).$Kf)) { |
|
542 | + return |
|
543 | +false; |
|
544 | +} |
|
545 | +$Hg=array();$ld=0;}$Hg[]=$Y;$ld+=strlen($Y)+2;}return |
|
256 | 546 | queries($Fe.implode(",\n",$Hg).$Kf);}}function |
257 | 547 | idf_escape($Jc){return"`".str_replace("`","``",$Jc)."`";}function |
258 | 548 | table($Jc){return |
259 | 549 | idf_escape($Jc);}function |
260 | 550 | connect(){global$b;$e=new |
261 | -Min_DB;$mb=$b->credentials();if($e->connect($mb[0],$mb[1],$mb[2])){$e->set_charset(charset($e));$e->query("SET sql_quote_show_create = 1, autocommit = 1");return$e;}$K=$e->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($lf=iconv("windows-1250","utf-8",$K))>strlen($K))$K=$lf;return$K;}function |
|
551 | +Min_DB;$mb=$b->credentials();if($e->connect($mb[0],$mb[1],$mb[2])){$e->set_charset(charset($e));$e->query("SET sql_quote_show_create = 1, autocommit = 1");return$e;}$K=$e->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($lf=iconv("windows-1250","utf-8",$K))>strlen($K)) { |
|
552 | + $K=$lf; |
|
553 | +} |
|
554 | +return$K;}function |
|
262 | 555 | get_databases($qc){global$e;$K=get_session("dbs");if($K===null){$I=($e->server_info>=5?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");$K=($qc?slow_query($I):get_vals($I));restart_session();set_session("dbs",$K);stop_session();}return$K;}function |
263 | 556 | limit($I,$Z,$_,$Od=0,$sf=" "){return" $I$Z".($_!==null?$sf."LIMIT $_".($Od?" OFFSET $Od":""):"");}function |
264 | 557 | limit1($I,$Z){return |
265 | 558 | limit($I,$Z,1);}function |
266 | -db_collation($i,$Xa){global$e;$K=null;$g=$e->result("SHOW CREATE DATABASE ".idf_escape($i),1);if(preg_match('~ COLLATE ([^ ]+)~',$g,$C))$K=$C[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$g,$C))$K=$Xa[$C[1]][-1];return$K;}function |
|
267 | -engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"]))$K[]=$L["Engine"];}return$K;}function |
|
559 | +db_collation($i,$Xa){global$e;$K=null;$g=$e->result("SHOW CREATE DATABASE ".idf_escape($i),1);if(preg_match('~ COLLATE ([^ ]+)~',$g,$C)) { |
|
560 | + $K=$C[1]; |
|
561 | +} elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$g,$C)) { |
|
562 | + $K=$Xa[$C[1]][-1]; |
|
563 | +} |
|
564 | +return$K;}function |
|
565 | +engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"])) { |
|
566 | + $K[]=$L["Engine"]; |
|
567 | +} |
|
568 | +}return$K;}function |
|
268 | 569 | logged_user(){global$e;return$e->result("SELECT USER()");}function |
269 | 570 | tables_list(){global$e;return |
270 | 571 | get_key_vals($e->server_info>=5?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function |
271 | 572 | count_tables($h){$K=array();foreach($h |
272 | -as$i)$K[$i]=count(get_vals("SHOW TABLES IN ".idf_escape($i)));return$K;}function |
|
273 | -table_status($F="",$jc=false){global$e;$K=array();foreach(get_rows($jc&&$e->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($F!=""?"AND TABLE_NAME = ".q($F):"ORDER BY Name"):"SHOW TABLE STATUS".($F!=""?" LIKE ".q(addcslashes($F,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB")$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]);if(!isset($L["Engine"]))$L["Comment"]="";if($F!="")return$L;$K[$L["Name"]]=$L;}return$K;}function |
|
573 | +as$i) { |
|
574 | + $K[$i]=count(get_vals("SHOW TABLES IN ".idf_escape($i))); |
|
575 | +} |
|
576 | +return$K;}function |
|
577 | +table_status($F="",$jc=false){global$e;$K=array();foreach(get_rows($jc&&$e->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($F!=""?"AND TABLE_NAME = ".q($F):"ORDER BY Name"):"SHOW TABLE STATUS".($F!=""?" LIKE ".q(addcslashes($F,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB") { |
|
578 | + $L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]); |
|
579 | +} |
|
580 | +if(!isset($L["Engine"])) { |
|
581 | + $L["Comment"]=""; |
|
582 | +} |
|
583 | +if($F!="") { |
|
584 | + return$L; |
|
585 | +} |
|
586 | +$K[$L["Name"]]=$L;}return$K;}function |
|
274 | 587 | is_view($R){return$R["Engine"]===null;}function |
275 | 588 | fk_support($R){global$e;return |
276 | 589 | preg_match('~InnoDB|IBMDB2I~i',$R["Engine"])||(preg_match('~NDB~i',$R["Engine"])&&version_compare($e->server_info,'5.6')>=0);}function |
@@ -280,21 +593,53 @@ discard block |
||
280 | 593 | as$C){preg_match_all("~$ye~",$C[2],$_f);preg_match_all("~$ye~",$C[5],$Vf);$K[idf_unescape($C[1])]=array("db"=>idf_unescape($C[4]!=""?$C[3]:$C[4]),"table"=>idf_unescape($C[4]!=""?$C[4]:$C[3]),"source"=>array_map('idf_unescape',$_f[0]),"target"=>array_map('idf_unescape',$Vf[0]),"on_delete"=>($C[6]?$C[6]:"RESTRICT"),"on_update"=>($C[7]?$C[7]:"RESTRICT"),);}}return$K;}function |
281 | 594 | view($F){global$e;return |
282 | 595 | array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$e->result("SHOW CREATE VIEW ".table($F),1)));}function |
283 | -collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"])$K[$L["Charset"]][-1]=$L["Collation"];else$K[$L["Charset"]][]=$L["Collation"];}ksort($K);foreach($K |
|
284 | -as$z=>$X)asort($K[$z]);return$K;}function |
|
596 | +collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"]) { |
|
597 | + $K[$L["Charset"]][-1]=$L["Collation"]; |
|
598 | +} else { |
|
599 | + $K[$L["Charset"]][]=$L["Collation"]; |
|
600 | +} |
|
601 | +}ksort($K);foreach($K |
|
602 | +as$z=>$X) { |
|
603 | + asort($K[$z]); |
|
604 | +} |
|
605 | +return$K;}function |
|
285 | 606 | information_schema($i){global$e;return($e->server_info>=5&&$i=="information_schema")||($e->server_info>=5.5&&$i=="performance_schema");}function |
286 | 607 | error(){global$e;return |
287 | 608 | h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$e->error));}function |
288 | 609 | create_database($i,$Wa){return |
289 | 610 | queries("CREATE DATABASE ".idf_escape($i).($Wa?" COLLATE ".q($Wa):""));}function |
290 | 611 | drop_databases($h){$K=apply_queries("DROP DATABASE",$h,'idf_escape');restart_session();set_session("dbs",null);return$K;}function |
291 | -rename_database($F,$Wa){$K=false;if(create_database($F,$Wa)){$bf=array();foreach(tables_list()as$Q=>$U)$bf[]=table($Q)." TO ".idf_escape($F).".".table($Q);$K=(!$bf||queries("RENAME TABLE ".implode(", ",$bf)));if($K)queries("DROP DATABASE ".idf_escape(DB));restart_session();set_session("dbs",null);}return$K;}function |
|
292 | -auto_increment(){$za=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$za="";break;}if($v["type"]=="PRIMARY")$za=" UNIQUE";}}return" AUTO_INCREMENT$za";}function |
|
612 | +rename_database($F,$Wa){$K=false;if(create_database($F,$Wa)){$bf=array();foreach(tables_list()as$Q=>$U) { |
|
613 | + $bf[]=table($Q)." TO ".idf_escape($F).".".table($Q); |
|
614 | +} |
|
615 | +$K=(!$bf||queries("RENAME TABLE ".implode(", ",$bf)));if($K) { |
|
616 | + queries("DROP DATABASE ".idf_escape(DB)); |
|
617 | +} |
|
618 | +restart_session();set_session("dbs",null);}return$K;}function |
|
619 | +auto_increment(){$za=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$za="";break;}if($v["type"]=="PRIMARY") { |
|
620 | + $za=" UNIQUE"; |
|
621 | +} |
|
622 | +}}return" AUTO_INCREMENT$za";}function |
|
293 | 623 | alter_table($Q,$F,$m,$rc,$bb,$Tb,$Wa,$ya,$te){$sa=array();foreach($m |
294 | -as$l)$sa[]=($l[1]?($Q!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($Q!=""?$l[2]:""):"DROP ".idf_escape($l[0]));$sa=array_merge($sa,$rc);$Df=($bb!==null?" COMMENT=".q($bb):"").($Tb?" ENGINE=".q($Tb):"").($Wa?" COLLATE ".q($Wa):"").($ya!=""?" AUTO_INCREMENT=$ya":"");if($Q=="")return |
|
295 | -queries("CREATE TABLE ".table($F)." (\n".implode(",\n",$sa)."\n)$Df$te");if($Q!=$F)$sa[]="RENAME TO ".table($F);if($Df)$sa[]=ltrim($Df);return($sa||$te?queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$sa).$te):true);}function |
|
624 | +as$l) { |
|
625 | + $sa[]=($l[1]?($Q!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($Q!=""?$l[2]:""):"DROP ".idf_escape($l[0])); |
|
626 | +} |
|
627 | +$sa=array_merge($sa,$rc);$Df=($bb!==null?" COMMENT=".q($bb):"").($Tb?" ENGINE=".q($Tb):"").($Wa?" COLLATE ".q($Wa):"").($ya!=""?" AUTO_INCREMENT=$ya":"");if($Q=="") { |
|
628 | + return |
|
629 | +queries("CREATE TABLE ".table($F)." (\n".implode(",\n",$sa)."\n)$Df$te"); |
|
630 | +} |
|
631 | +if($Q!=$F) { |
|
632 | + $sa[]="RENAME TO ".table($F); |
|
633 | +} |
|
634 | +if($Df) { |
|
635 | + $sa[]=ltrim($Df); |
|
636 | +} |
|
637 | +return($sa||$te?queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$sa).$te):true);}function |
|
296 | 638 | alter_indexes($Q,$sa){foreach($sa |
297 | -as$z=>$X)$sa[$z]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return |
|
639 | +as$z=>$X) { |
|
640 | + $sa[$z]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")"); |
|
641 | +} |
|
642 | +return |
|
298 | 643 | queries("ALTER TABLE ".table($Q).implode(",",$sa));}function |
299 | 644 | truncate_tables($S){return |
300 | 645 | apply_queries("TRUNCATE TABLE",$S);}function |
@@ -302,23 +647,41 @@ discard block |
||
302 | 647 | queries("DROP VIEW ".implode(", ",array_map('table',$Lg)));}function |
303 | 648 | drop_tables($S){return |
304 | 649 | queries("DROP TABLE ".implode(", ",array_map('table',$S)));}function |
305 | -move_tables($S,$Lg,$Vf){$bf=array();foreach(array_merge($S,$Lg)as$Q)$bf[]=table($Q)." TO ".idf_escape($Vf).".".table($Q);return |
|
650 | +move_tables($S,$Lg,$Vf){$bf=array();foreach(array_merge($S,$Lg)as$Q) { |
|
651 | + $bf[]=table($Q)." TO ".idf_escape($Vf).".".table($Q); |
|
652 | +} |
|
653 | +return |
|
306 | 654 | queries("RENAME TABLE ".implode(", ",$bf));}function |
307 | 655 | copy_tables($S,$Lg,$Vf){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($S |
308 | -as$Q){$F=($Vf==DB?table("copy_$Q"):idf_escape($Vf).".".table($Q));if(!queries("\nDROP TABLE IF EXISTS $F")||!queries("CREATE TABLE $F LIKE ".table($Q))||!queries("INSERT INTO $F SELECT * FROM ".table($Q)))return |
|
309 | -false;}foreach($Lg |
|
310 | -as$Q){$F=($Vf==DB?table("copy_$Q"):idf_escape($Vf).".".table($Q));$Kg=view($Q);if(!queries("DROP VIEW IF EXISTS $F")||!queries("CREATE VIEW $F AS $Kg[select]"))return |
|
311 | -false;}return |
|
656 | +as$Q){$F=($Vf==DB?table("copy_$Q"):idf_escape($Vf).".".table($Q));if(!queries("\nDROP TABLE IF EXISTS $F")||!queries("CREATE TABLE $F LIKE ".table($Q))||!queries("INSERT INTO $F SELECT * FROM ".table($Q))) { |
|
657 | + return |
|
658 | +false; |
|
659 | +} |
|
660 | +}foreach($Lg |
|
661 | +as$Q){$F=($Vf==DB?table("copy_$Q"):idf_escape($Vf).".".table($Q));$Kg=view($Q);if(!queries("DROP VIEW IF EXISTS $F")||!queries("CREATE VIEW $F AS $Kg[select]")) { |
|
662 | + return |
|
663 | +false; |
|
664 | +} |
|
665 | +}return |
|
312 | 666 | true;}function |
313 | -trigger($F){if($F=="")return |
|
314 | -array();$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($F));return |
|
667 | +trigger($F){if($F=="") { |
|
668 | + return |
|
669 | +array(); |
|
670 | +} |
|
671 | +$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($F));return |
|
315 | 672 | reset($M);}function |
316 | -triggers($Q){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$L)$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);return$K;}function |
|
673 | +triggers($Q){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$L) { |
|
674 | + $K[$L["Trigger"]]=array($L["Timing"],$L["Event"]); |
|
675 | +} |
|
676 | +return$K;}function |
|
317 | 677 | trigger_options(){return |
318 | 678 | array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function |
319 | 679 | routine($F,$U){global$e,$Vb,$Oc,$tg;$qa=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$sg="((".implode("|",array_merge(array_keys($tg),$qa)).")\\b(?:\\s*\\(((?:[^'\")]|$Vb)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$ye="\\s*(".($U=="FUNCTION"?"":$Oc).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$sg";$g=$e->result("SHOW CREATE $U ".idf_escape($F),2);preg_match("~\\(((?:$ye\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$sg\\s+":"")."(.*)~is",$g,$C);$m=array();preg_match_all("~$ye\\s*,?~is",$C[1],$rd,PREG_SET_ORDER);foreach($rd |
320 | -as$oe){$F=str_replace("``","`",$oe[2]).$oe[3];$m[]=array("field"=>$F,"type"=>strtolower($oe[5]),"length"=>preg_replace_callback("~$Vb~s",'normalize_enum',$oe[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$oe[8] $oe[7]"))),"null"=>1,"full_type"=>$oe[4],"inout"=>strtoupper($oe[1]),"collation"=>strtolower($oe[9]),);}if($U!="FUNCTION")return |
|
321 | -array("fields"=>$m,"definition"=>$C[11]);return |
|
680 | +as$oe){$F=str_replace("``","`",$oe[2]).$oe[3];$m[]=array("field"=>$F,"type"=>strtolower($oe[5]),"length"=>preg_replace_callback("~$Vb~s",'normalize_enum',$oe[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$oe[8] $oe[7]"))),"null"=>1,"full_type"=>$oe[4],"inout"=>strtoupper($oe[1]),"collation"=>strtolower($oe[9]),);}if($U!="FUNCTION") { |
|
681 | + return |
|
682 | +array("fields"=>$m,"definition"=>$C[11]); |
|
683 | +} |
|
684 | +return |
|
322 | 685 | array("fields"=>$m,"returns"=>array("type"=>$C[12],"length"=>$C[13],"unsigned"=>$C[15],"collation"=>$C[16]),"definition"=>$C[17],"language"=>"SQL",);}function |
323 | 686 | routines(){return |
324 | 687 | get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function |
@@ -334,18 +697,42 @@ discard block |
||
334 | 697 | get_schema(){return"";}function |
335 | 698 | set_schema($nf){return |
336 | 699 | true;}function |
337 | -create_sql($Q,$ya){global$e;$K=$e->result("SHOW CREATE TABLE ".table($Q),1);if(!$ya)$K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K);return$K;}function |
|
700 | +create_sql($Q,$ya){global$e;$K=$e->result("SHOW CREATE TABLE ".table($Q),1);if(!$ya) { |
|
701 | + $K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K); |
|
702 | +} |
|
703 | +return$K;}function |
|
338 | 704 | truncate_sql($Q){return"TRUNCATE ".table($Q);}function |
339 | 705 | use_sql($qb){return"USE ".idf_escape($qb);}function |
340 | -trigger_sql($Q,$If){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$L)$K.="\n".($If=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";return$K;}function |
|
706 | +trigger_sql($Q,$If){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$L) { |
|
707 | + $K.="\n".($If=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n"; |
|
708 | +} |
|
709 | +return$K;}function |
|
341 | 710 | show_variables(){return |
342 | 711 | get_key_vals("SHOW VARIABLES");}function |
343 | 712 | process_list(){return |
344 | 713 | get_rows("SHOW FULL PROCESSLIST");}function |
345 | 714 | show_status(){return |
346 | 715 | get_key_vals("SHOW STATUS");}function |
347 | -convert_field($l){if(preg_match("~binary~",$l["type"]))return"HEX(".idf_escape($l["field"]).")";if($l["type"]=="bit")return"BIN(".idf_escape($l["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))return"AsWKT(".idf_escape($l["field"]).")";}function |
|
348 | -unconvert_field($l,$K){if(preg_match("~binary~",$l["type"]))$K="UNHEX($K)";if($l["type"]=="bit")$K="CONV($K, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))$K="GeomFromText($K)";return$K;}function |
|
716 | +convert_field($l){if(preg_match("~binary~",$l["type"])) { |
|
717 | + return"HEX(".idf_escape($l["field"]).")"; |
|
718 | +} |
|
719 | +if($l["type"]=="bit") { |
|
720 | + return"BIN(".idf_escape($l["field"])." + 0)"; |
|
721 | +} |
|
722 | +if(preg_match("~geometry|point|linestring|polygon~",$l["type"])) { |
|
723 | + return"AsWKT(".idf_escape($l["field"]).")"; |
|
724 | +} |
|
725 | +}function |
|
726 | +unconvert_field($l,$K){if(preg_match("~binary~",$l["type"])) { |
|
727 | + $K="UNHEX($K)"; |
|
728 | +} |
|
729 | +if($l["type"]=="bit") { |
|
730 | + $K="CONV($K, 2, 10) + 0"; |
|
731 | +} |
|
732 | +if(preg_match("~geometry|point|linestring|polygon~",$l["type"])) { |
|
733 | + $K="GeomFromText($K)"; |
|
734 | +} |
|
735 | +return$K;}function |
|
349 | 736 | support($kc){global$e;return!preg_match("~scheme|sequence|type|view_trigger".($e->server_info<5.1?"|event|partitioning".($e->server_info<5?"|routine|trigger|view":""):"")."~",$kc);}function |
350 | 737 | kill_process($X){return |
351 | 738 | queries("KILL ".number($X));}function |
@@ -379,14 +766,31 @@ discard block |
||
379 | 766 | focus(document.getElementById(\'username\')); |
380 | 767 | </script> |
381 | 768 | ',"<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function |
382 | -login($pd,$we){global$y;if($y=="sqlite")return |
|
383 | -sprintf('Implement %s method to use SQLite.','login()');return |
|
769 | +login($pd,$we){global$y;if($y=="sqlite") { |
|
770 | + return |
|
771 | +sprintf('Implement %s method to use SQLite.','login()'); |
|
772 | +} |
|
773 | +return |
|
384 | 774 | true;}function |
385 | 775 | tableName($Of){return |
386 | 776 | h($Of["Name"]);}function |
387 | 777 | fieldName($l,$de=0){return'<span title="'.h($l["full_type"]).'">'.h($l["field"]).'</span>';}function |
388 | -selectLinks($Of,$P=""){echo'<p class="links">';$od=array("select"=>'Select data');if(support("table")||support("indexes"))$od["table"]='Show structure';if(support("table")){if(is_view($Of))$od["view"]='Alter view';else$od["create"]='Alter table';}if($P!==null)$od["edit"]='New item';foreach($od |
|
389 | -as$z=>$X)echo" <a href='".h(ME)."$z=".urlencode($Of["Name"]).($z=="edit"?$P:"")."'".bold(isset($_GET[$z])).">$X</a>";echo"\n";}function |
|
778 | +selectLinks($Of,$P=""){echo'<p class="links">';$od=array("select"=>'Select data');if(support("table")||support("indexes")) { |
|
779 | + $od["table"]='Show structure'; |
|
780 | +} |
|
781 | +if(support("table")){if(is_view($Of)) { |
|
782 | + $od["view"]='Alter view'; |
|
783 | +} else { |
|
784 | + $od["create"]='Alter table'; |
|
785 | +} |
|
786 | +}if($P!==null) { |
|
787 | + $od["edit"]='New item'; |
|
788 | +} |
|
789 | +foreach($od |
|
790 | +as$z=>$X) { |
|
791 | + echo" <a href='".h(ME)."$z=".urlencode($Of["Name"]).($z=="edit"?$P:"")."'".bold(isset($_GET[$z])).">$X</a>"; |
|
792 | +} |
|
793 | +echo"\n";}function |
|
390 | 794 | foreignKeys($Q){return |
391 | 795 | foreign_keys($Q);}function |
392 | 796 | backwardKeys($Q,$Nf){return |
@@ -396,7 +800,10 @@ discard block |
||
396 | 800 | rowDescription($Q){return"";}function |
397 | 801 | rowDescriptions($M,$sc){return$M;}function |
398 | 802 | selectLink($X,$l){}function |
399 | -selectVal($X,$A,$l,$ke){$K=($X===null?"<i>NULL</i>":(preg_match("~char|binary~",$l["type"])&&!preg_match("~var~",$l["type"])?"<code>$X</code>":$X));if(preg_match('~blob|bytea|raw|file~',$l["type"])&&!is_utf8($X))$K=lang(array('%d byte','%d bytes'),strlen($ke));return($A?"<a href='".h($A)."'".(is_url($A)?" rel='noreferrer'":"").">$K</a>":$K);}function |
|
803 | +selectVal($X,$A,$l,$ke){$K=($X===null?"<i>NULL</i>":(preg_match("~char|binary~",$l["type"])&&!preg_match("~var~",$l["type"])?"<code>$X</code>":$X));if(preg_match('~blob|bytea|raw|file~',$l["type"])&&!is_utf8($X)) { |
|
804 | + $K=lang(array('%d byte','%d bytes'),strlen($ke)); |
|
805 | +} |
|
806 | +return($A?"<a href='".h($A)."'".(is_url($A)?" rel='noreferrer'":"").">$K</a>":$K);}function |
|
400 | 807 | editVal($X,$l){return$X;}function |
401 | 808 | selectColumnsPrint($N,$d){global$xc,$_c;print_fieldset("select",'Select',$N);$t=0;$N[""]=array();foreach($N |
402 | 809 | as$z=>$X){$X=$_GET["columns"][$z];$c=select_input(" name='columns[$t][col]' onchange='".($z!==""?"selectFieldChange(this.form)":"selectAddRow(this)").";'",$d,$X["col"]);echo"<div>".($xc||$_c?"<select name='columns[$t][fun]' onchange='helpClose();".($z!==""?"":" this.nextSibling.nextSibling.onchange();")."'".on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).">".optionlist(array(-1=>"")+array_filter(array('Functions'=>$xc,'Aggregation'=>$_c)),$X["fun"])."</select>"."($c)":$c)."</div>\n";$t++;}echo"</div></fieldset>\n";}function |
@@ -406,42 +813,136 @@ discard block |
||
406 | 813 | selectLimitPrint($_){echo"<fieldset><legend>".'Limit'."</legend><div>";echo"<input type='number' name='limit' class='size' value='".h($_)."' onchange='selectFieldChange(this.form);'>","</div></fieldset>\n";}function |
407 | 814 | selectLengthPrint($ag){if($ag!==null){echo"<fieldset><legend>".'Text length'."</legend><div>","<input type='number' name='text_length' class='size' value='".h($ag)."'>","</div></fieldset>\n";}}function |
408 | 815 | selectActionPrint($w){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>"," <span id='noindex' title='".'Full table scan'."'></span>","<script type='text/javascript'>\n","var indexColumns = ";$d=array();foreach($w |
409 | -as$v){if($v["type"]!="FULLTEXT")$d[reset($v["columns"])]=1;}$d[""]=1;foreach($d |
|
410 | -as$z=>$X)json_row($z);echo";\n","selectFieldChange(document.getElementById('form'));\n","</script>\n","</div></fieldset>\n";}function |
|
816 | +as$v){if($v["type"]!="FULLTEXT") { |
|
817 | + $d[reset($v["columns"])]=1; |
|
818 | +} |
|
819 | +}$d[""]=1;foreach($d |
|
820 | +as$z=>$X) { |
|
821 | + json_row($z); |
|
822 | +} |
|
823 | +echo";\n","selectFieldChange(document.getElementById('form'));\n","</script>\n","</div></fieldset>\n";}function |
|
411 | 824 | selectCommandPrint(){return!information_schema(DB);}function |
412 | 825 | selectImportPrint(){return!information_schema(DB);}function |
413 | 826 | selectEmailPrint($Qb,$d){}function |
414 | -selectColumnsProcess($d,$w){global$xc,$_c;$N=array();$s=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$xc)||in_array($X["fun"],$_c)))){$N[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$_c))$s[]=$N[$z];}}return |
|
827 | +selectColumnsProcess($d,$w){global$xc,$_c;$N=array();$s=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$xc)||in_array($X["fun"],$_c)))){$N[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$_c)) { |
|
828 | + $s[]=$N[$z]; |
|
829 | +} |
|
830 | +}}return |
|
415 | 831 | array($N,$s);}function |
416 | 832 | selectSearchProcess($m,$w){global$e,$y;$K=array();foreach($w |
417 | -as$t=>$v){if($v["type"]=="FULLTEXT"&&$_GET["fulltext"][$t]!="")$K[]="MATCH (".implode(", ",array_map('idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$db=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Lc=process_length($X["val"]);$db.=" ".($Lc!=""?$Lc:"(NULL)");}elseif($X["op"]=="SQL")$db=" $X[val]";elseif($X["op"]=="LIKE %%")$db=" LIKE ".$this->processInput($m[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$db=" ILIKE ".$this->processInput($m[$X["col"]],"%$X[val]%");elseif(!preg_match('~NULL$~',$X["op"]))$db.=" ".$this->processInput($m[$X["col"]],$X["val"]);if($X["col"]!="")$K[]=idf_escape($X["col"]).$db;else{$Ya=array();foreach($m |
|
833 | +as$t=>$v){if($v["type"]=="FULLTEXT"&&$_GET["fulltext"][$t]!="") { |
|
834 | + $K[]="MATCH (".implode(", ",array_map('idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")"; |
|
835 | +} |
|
836 | +}foreach((array)$_GET["where"]as$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$db=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Lc=process_length($X["val"]);$db.=" ".($Lc!=""?$Lc:"(NULL)");} elseif($X["op"]=="SQL") { |
|
837 | + $db=" $X[val]"; |
|
838 | +} elseif($X["op"]=="LIKE %%") { |
|
839 | + $db=" LIKE ".$this->processInput($m[$X["col"]],"%$X[val]%"); |
|
840 | +} elseif($X["op"]=="ILIKE %%") { |
|
841 | + $db=" ILIKE ".$this->processInput($m[$X["col"]],"%$X[val]%"); |
|
842 | +} elseif(!preg_match('~NULL$~',$X["op"])) { |
|
843 | + $db.=" ".$this->processInput($m[$X["col"]],$X["val"]); |
|
844 | +} |
|
845 | +if($X["col"]!="") { |
|
846 | + $K[]=idf_escape($X["col"]).$db; |
|
847 | +} else{$Ya=array();foreach($m |
|
418 | 848 | as$F=>$l){$Xc=preg_match('~char|text|enum|set~',$l["type"]);if((is_numeric($X["val"])||!preg_match('~(^|[^o])int|float|double|decimal|bit~',$l["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||$Xc)){$F=idf_escape($F);$Ya[]=($y=="sql"&&$Xc&&!preg_match("~^utf8_~",$l["collation"])?"CONVERT($F USING ".charset($e).")":$F);}}$K[]=($Ya?"(".implode("$db OR ",$Ya)."$db)":"0");}}}return$K;}function |
419 | -selectOrderProcess($m,$w){$K=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="")$K[]=(preg_match('~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");}return$K;}function |
|
849 | +selectOrderProcess($m,$w){$K=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="") { |
|
850 | + $K[]=(preg_match('~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":""); |
|
851 | +} |
|
852 | +}return$K;}function |
|
420 | 853 | selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function |
421 | 854 | selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function |
422 | 855 | selectEmailProcess($Z,$sc){return |
423 | 856 | false;}function |
424 | 857 | selectQueryBuild($N,$Z,$s,$de,$_,$G){return"";}function |
425 | -messageQuery($I,$bg){global$y;restart_session();$Ec=&get_session("queries");$u="sql-".count($Ec[$_GET["db"]]);if(strlen($I)>1e6)$I=preg_replace('~[\x80-\xFF]+$~','',substr($I,0,1e6))."\n...";$Ec[$_GET["db"]][]=array($I,time(),$bg);return" <span class='time'>".@date("H:i:s")."</span> <a href='#$u' onclick=\"return !toggle('$u');\">".'SQL command'."</a>"."<div id='$u' class='hidden'><pre><code class='jush-$y'>".shorten_utf8($I,1000).'</code></pre>'.($bg?" <span class='time'>($bg)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Ec[$_GET["db"]])-1)).'">'.'Edit'.'</a>':'').'</div>';}function |
|
858 | +messageQuery($I,$bg){global$y;restart_session();$Ec=&get_session("queries");$u="sql-".count($Ec[$_GET["db"]]);if(strlen($I)>1e6) { |
|
859 | + $I=preg_replace('~[\x80-\xFF]+$~','',substr($I,0,1e6))."\n..."; |
|
860 | +} |
|
861 | +$Ec[$_GET["db"]][]=array($I,time(),$bg);return" <span class='time'>".@date("H:i:s")."</span> <a href='#$u' onclick=\"return !toggle('$u');\">".'SQL command'."</a>"."<div id='$u' class='hidden'><pre><code class='jush-$y'>".shorten_utf8($I,1000).'</code></pre>'.($bg?" <span class='time'>($bg)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Ec[$_GET["db"]])-1)).'">'.'Edit'.'</a>':'').'</div>';}function |
|
426 | 862 | editFunctions($l){global$Lb;$K=($l["null"]?"NULL/":"");foreach($Lb |
427 | 863 | as$z=>$xc){if(!$z||(!isset($_GET["call"])&&(isset($_GET["select"])||where($_GET)))){foreach($xc |
428 | -as$ye=>$X){if(!$ye||preg_match("~$ye~",$l["type"]))$K.="/$X";}if($z&&!preg_match('~set|blob|bytea|raw|file~',$l["type"]))$K.="/SQL";}}if($l["auto_increment"]&&!isset($_GET["select"])&&!where($_GET))$K='Auto Increment';return |
|
864 | +as$ye=>$X){if(!$ye||preg_match("~$ye~",$l["type"])) { |
|
865 | + $K.="/$X"; |
|
866 | +} |
|
867 | +}if($z&&!preg_match('~set|blob|bytea|raw|file~',$l["type"])) { |
|
868 | + $K.="/SQL"; |
|
869 | +} |
|
870 | +}}if($l["auto_increment"]&&!isset($_GET["select"])&&!where($_GET)) { |
|
871 | + $K='Auto Increment'; |
|
872 | +} |
|
873 | +return |
|
429 | 874 | explode("/",$K);}function |
430 | -editInput($Q,$l,$wa,$Y){if($l["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$wa value='-1' checked><i>".'original'."</i></label> ":"").($l["null"]?"<label><input type='radio'$wa value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$wa,$l,$Y,0);return"";}function |
|
431 | -processInput($l,$Y,$q=""){if($q=="SQL")return$Y;$F=$l["field"];$K=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$q))$K="$q()";elseif(preg_match('~^current_(date|timestamp)$~',$q))$K=$q;elseif(preg_match('~^([+-]|\\|\\|)$~',$q))$K=idf_escape($F)." $q $K";elseif(preg_match('~^[+-] interval$~',$q))$K=idf_escape($F)." $q ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i",$Y)?$Y:$K);elseif(preg_match('~^(addtime|subtime|concat)$~',$q))$K="$q(".idf_escape($F).", $K)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$q))$K="$q($K)";return |
|
875 | +editInput($Q,$l,$wa,$Y){if($l["type"]=="enum") { |
|
876 | + return(isset($_GET["select"])?"<label><input type='radio'$wa value='-1' checked><i>".'original'."</i></label> ":"").($l["null"]?"<label><input type='radio'$wa value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$wa,$l,$Y,0); |
|
877 | +} |
|
878 | +return"";}function |
|
879 | +processInput($l,$Y,$q=""){if($q=="SQL") { |
|
880 | + return$Y; |
|
881 | +} |
|
882 | +$F=$l["field"];$K=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$q)) { |
|
883 | + $K="$q()"; |
|
884 | +} elseif(preg_match('~^current_(date|timestamp)$~',$q)) { |
|
885 | + $K=$q; |
|
886 | +} elseif(preg_match('~^([+-]|\\|\\|)$~',$q)) { |
|
887 | + $K=idf_escape($F)." $q $K"; |
|
888 | +} elseif(preg_match('~^[+-] interval$~',$q)) { |
|
889 | + $K=idf_escape($F)." $q ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i",$Y)?$Y:$K); |
|
890 | +} elseif(preg_match('~^(addtime|subtime|concat)$~',$q)) { |
|
891 | + $K="$q(".idf_escape($F).", $K)"; |
|
892 | +} elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$q)) { |
|
893 | + $K="$q($K)"; |
|
894 | +} |
|
895 | +return |
|
432 | 896 | unconvert_field($l,$K);}function |
433 | -dumpOutput(){$K=array('text'=>'open','file'=>'save');if(function_exists('gzencode'))$K['gz']='gzip';return$K;}function |
|
897 | +dumpOutput(){$K=array('text'=>'open','file'=>'save');if(function_exists('gzencode')) { |
|
898 | + $K['gz']='gzip'; |
|
899 | +} |
|
900 | +return$K;}function |
|
434 | 901 | dumpFormat(){return |
435 | 902 | array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function |
436 | 903 | dumpDatabase($i){}function |
437 | -dumpTable($Q,$If,$Yc=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($If)dump_csv(array_keys(fields($Q)));}else{if($Yc==2){$m=array();foreach(fields($Q)as$F=>$l)$m[]=idf_escape($F)." $l[full_type]";$g="CREATE TABLE ".table($Q)." (".implode(", ",$m).")";}else$g=create_sql($Q,$_POST["auto_increment"]);set_utf8mb4($g);if($If&&$g){if($If=="DROP+CREATE"||$Yc==1)echo"DROP ".($Yc==2?"VIEW":"TABLE")." IF EXISTS ".table($Q).";\n";if($Yc==1)$g=remove_definer($g);echo"$g;\n\n";}}}function |
|
438 | -dumpData($Q,$If,$I){global$e,$y;$td=($y=="sqlite"?0:1048576);if($If){if($_POST["format"]=="sql"){if($If=="TRUNCATE+INSERT")echo |
|
439 | -truncate_sql($Q).";\n";$m=fields($Q);}$J=$e->query($I,1);if($J){$Qc="";$Ia="";$ad=array();$Kf="";$lc=($Q!=''?'fetch_assoc':'fetch_row');while($L=$J->$lc()){if(!$ad){$Hg=array();foreach($L |
|
440 | -as$X){$l=$J->fetch_field();$ad[]=$l->name;$z=idf_escape($l->name);$Hg[]="$z = VALUES($z)";}$Kf=($If=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Hg):"").";\n";}if($_POST["format"]!="sql"){if($If=="table"){dump_csv($ad);$If="INSERT";}dump_csv($L);}else{if(!$Qc)$Qc="INSERT INTO ".table($Q)." (".implode(", ",array_map('idf_escape',$ad)).") VALUES";foreach($L |
|
441 | -as$z=>$X){$l=$m[$z];$L[$z]=($X!==null?unconvert_field($l,preg_match('~(^|[^o])int|float|double|decimal~',$l["type"])&&$X!=''?$X:q($X)):"NULL");}$lf=($td?"\n":" ")."(".implode(",\t",$L).")";if(!$Ia)$Ia=$Qc.$lf;elseif(strlen($Ia)+4+strlen($lf)+strlen($Kf)<$td)$Ia.=",$lf";else{echo$Ia.$Kf;$Ia=$Qc.$lf;}}}if($Ia)echo$Ia.$Kf;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$e->error)."\n";}}function |
|
904 | +dumpTable($Q,$If,$Yc=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($If) { |
|
905 | + dump_csv(array_keys(fields($Q))); |
|
906 | +} |
|
907 | +} else{if($Yc==2){$m=array();foreach(fields($Q)as$F=>$l) { |
|
908 | + $m[]=idf_escape($F)." $l[full_type]"; |
|
909 | +} |
|
910 | +$g="CREATE TABLE ".table($Q)." (".implode(", ",$m).")";} else { |
|
911 | + $g=create_sql($Q,$_POST["auto_increment"]); |
|
912 | +} |
|
913 | +set_utf8mb4($g);if($If&&$g){if($If=="DROP+CREATE"||$Yc==1) { |
|
914 | + echo"DROP ".($Yc==2?"VIEW":"TABLE")." IF EXISTS ".table($Q).";\n"; |
|
915 | +} |
|
916 | +if($Yc==1) { |
|
917 | + $g=remove_definer($g); |
|
918 | +} |
|
919 | +echo"$g;\n\n";}}}function |
|
920 | +dumpData($Q,$If,$I){global$e,$y;$td=($y=="sqlite"?0:1048576);if($If){if($_POST["format"]=="sql"){if($If=="TRUNCATE+INSERT") { |
|
921 | + echo |
|
922 | +truncate_sql($Q).";\n"; |
|
923 | +} |
|
924 | +$m=fields($Q);}$J=$e->query($I,1);if($J){$Qc="";$Ia="";$ad=array();$Kf="";$lc=($Q!=''?'fetch_assoc':'fetch_row');while($L=$J->$lc()){if(!$ad){$Hg=array();foreach($L |
|
925 | +as$X){$l=$J->fetch_field();$ad[]=$l->name;$z=idf_escape($l->name);$Hg[]="$z = VALUES($z)";}$Kf=($If=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Hg):"").";\n";}if($_POST["format"]!="sql"){if($If=="table"){dump_csv($ad);$If="INSERT";}dump_csv($L);} else{if(!$Qc) { |
|
926 | + $Qc="INSERT INTO ".table($Q)." (".implode(", ",array_map('idf_escape',$ad)).") VALUES"; |
|
927 | +} |
|
928 | +foreach($L |
|
929 | +as$z=>$X){$l=$m[$z];$L[$z]=($X!==null?unconvert_field($l,preg_match('~(^|[^o])int|float|double|decimal~',$l["type"])&&$X!=''?$X:q($X)):"NULL");}$lf=($td?"\n":" ")."(".implode(",\t",$L).")";if(!$Ia) { |
|
930 | + $Ia=$Qc.$lf; |
|
931 | +} elseif(strlen($Ia)+4+strlen($lf)+strlen($Kf)<$td) { |
|
932 | + $Ia.=",$lf"; |
|
933 | +} else{echo$Ia.$Kf;$Ia=$Qc.$lf;}}}if($Ia) { |
|
934 | + echo$Ia.$Kf; |
|
935 | +} |
|
936 | +} elseif($_POST["format"]=="sql") { |
|
937 | + echo"-- ".str_replace("\n"," ",$e->error)."\n"; |
|
938 | +} |
|
939 | +}}function |
|
442 | 940 | dumpFilename($Ic){return |
443 | 941 | friendly_url($Ic!=""?$Ic:(SERVER!=""?SERVER:"localhost"));}function |
444 | -dumpHeaders($Ic,$Ed=false){$me=$_POST["output"];$gc=(preg_match('~sql~',$_POST["format"])?"sql":($Ed?"tar":"csv"));header("Content-Type: ".($me=="gz"?"application/x-gzip":($gc=="tar"?"application/x-tar":($gc=="sql"||$me!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($me=="gz")ob_start('ob_gzencode',1e6);return$gc;}function |
|
942 | +dumpHeaders($Ic,$Ed=false){$me=$_POST["output"];$gc=(preg_match('~sql~',$_POST["format"])?"sql":($Ed?"tar":"csv"));header("Content-Type: ".($me=="gz"?"application/x-gzip":($gc=="tar"?"application/x-tar":($gc=="sql"||$me!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($me=="gz") { |
|
943 | + ob_start('ob_gzencode',1e6); |
|
944 | +} |
|
945 | +return$gc;}function |
|
445 | 946 | homepage(){echo'<p class="links">'.($_GET["ns"]==""&&support("database")?'<a href="'.h(ME).'database=">'.'Alter database'."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?'Alter schema':'Create schema')."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.'Database schema'."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".'Privileges'."</a>\n":"");return |
446 | 947 | true;}function |
447 | 948 | navigation($Dd){global$ga,$y,$Eb,$e;echo'<h1> |
@@ -450,18 +951,38 @@ discard block |
||
450 | 951 | </h1> |
451 | 952 | ';if($Dd=="auth"){$pc=true;foreach((array)$_SESSION["pwds"]as$Jg=>$vf){foreach($vf |
452 | 953 | as$O=>$Fg){foreach($Fg |
453 | -as$V=>$we){if($we!==null){if($pc){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$pc=false;}$tb=$_SESSION["db"][$Jg][$O][$V];foreach(($tb?array_keys($tb):array(""))as$i)echo"<a href='".h(auth_url($Jg,$O,$V,$i))."'>($Eb[$Jg]) ".h($V.($O!=""?"@$O":"").($i!=""?" - $i":""))."</a><br>\n";}}}}}else{if($_GET["ns"]!==""&&!$Dd&&DB!=""){$e->select_db(DB);$S=table_status('',true);}if(support("sql")){echo'<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=jush.js&version=4.2.5&driver=mysql",'"></script> |
|
954 | +as$V=>$we){if($we!==null){if($pc){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$pc=false;}$tb=$_SESSION["db"][$Jg][$O][$V];foreach(($tb?array_keys($tb):array(""))as$i) { |
|
955 | + echo"<a href='".h(auth_url($Jg,$O,$V,$i))."'>($Eb[$Jg]) ".h($V.($O!=""?"@$O":"").($i!=""?" - $i":""))."</a><br>\n"; |
|
956 | +} |
|
957 | +}}}}} else{if($_GET["ns"]!==""&&!$Dd&&DB!=""){$e->select_db(DB);$S=table_status('',true);}if(support("sql")){echo'<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=jush.js&version=4.2.5&driver=mysql",'"></script> |
|
454 | 958 | <script type="text/javascript"> |
455 | 959 | ';if($S){$od=array();foreach($S |
456 | -as$Q=>$U)$od[]=preg_quote($Q,'/');echo"var jushLinks = { $y: [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$od).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$y;\n";}echo'bodyLoad(\'',(is_object($e)?substr($e->server_info,0,3):""),'\'); |
|
960 | +as$Q=>$U) { |
|
961 | + $od[]=preg_quote($Q,'/'); |
|
962 | +} |
|
963 | +echo"var jushLinks = { $y: [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$od).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X) { |
|
964 | + echo"jushLinks.$X = jushLinks.$y;\n"; |
|
965 | +} |
|
966 | +}echo'bodyLoad(\'',(is_object($e)?substr($e->server_info,0,3):""),'\'); |
|
457 | 967 | </script> |
458 | -';}$this->databasesPrint($Dd);if(DB==""||!$Dd){echo"<p class='links'>".(support("sql")?"<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".'SQL command'."</a>\n<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".'Import'."</a>\n":"")."";if(support("dump"))echo"<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".'Export'."</a>\n";}if($_GET["ns"]!==""&&!$Dd&&DB!=""){echo'<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Create table'."</a>\n";if(!$S)echo"<p class='message'>".'No tables.'."\n";else$this->tablesPrint($S);}}}function |
|
968 | +';}$this->databasesPrint($Dd);if(DB==""||!$Dd){echo"<p class='links'>".(support("sql")?"<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".'SQL command'."</a>\n<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".'Import'."</a>\n":"")."";if(support("dump")) { |
|
969 | + echo"<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".'Export'."</a>\n"; |
|
970 | +} |
|
971 | +}if($_GET["ns"]!==""&&!$Dd&&DB!=""){echo'<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Create table'."</a>\n";if(!$S) { |
|
972 | + echo"<p class='message'>".'No tables.'."\n"; |
|
973 | +} else { |
|
974 | + $this->tablesPrint($S); |
|
975 | +} |
|
976 | +}}}function |
|
459 | 977 | databasesPrint($Dd){global$b,$e;$h=$this->databases();echo'<form action=""> |
460 | 978 | <p id="dbs"> |
461 | 979 | ';hidden_fields_get();$rb=" onmousedown='dbMouseDown(event, this);' onchange='dbChange(this);'";echo"<span title='".'database'."'>DB</span>: ".($h?"<select name='db'$rb>".optionlist(array(""=>"")+$h,DB)."</select>":'<input name="db" value="'.h(DB).'" autocapitalize="off">'),"<input type='submit' value='".'Use'."'".($h?" class='hidden'":"").">\n";if($Dd!="db"&&DB!=""&&$e->select_db(DB)){}echo(isset($_GET["sql"])?'<input type="hidden" name="sql" value="">':(isset($_GET["schema"])?'<input type="hidden" name="schema" value="">':(isset($_GET["dump"])?'<input type="hidden" name="dump" value="">':(isset($_GET["privileges"])?'<input type="hidden" name="privileges" value="">':"")))),"</p></form>\n";}function |
462 | 980 | tablesPrint($S){echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";foreach($S |
463 | 981 | as$Q=>$Df){echo'<a href="'.h(ME).'select='.urlencode($Q).'"'.bold($_GET["select"]==$Q||$_GET["edit"]==$Q,"select").">".'select'."</a> ";$F=$this->tableName($Df);echo(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($Q).'"'.bold(in_array($Q,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"])),(is_view($Df)?"view":""),"structure")." title='".'Show structure'."'>$F</a>":"<span>$F</span>")."<br>\n";}}}$b=(function_exists('adminer_object')?adminer_object():new |
464 | -Adminer);if($b->operators===null)$b->operators=$Zd;function |
|
982 | +Adminer);if($b->operators===null) { |
|
983 | + $b->operators=$Zd; |
|
984 | +} |
|
985 | +function |
|
465 | 986 | page_header($eg,$k="",$Ha=array(),$fg=""){global$ca,$ga,$b,$Eb,$y;page_headers();if(is_ajax()&&$k){page_messages($k);exit;}$gg=$eg.($fg!=""?": $fg":"");$hg=strip_tags($gg.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html> |
466 | 987 | <html lang="en" dir="ltr"> |
467 | 988 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
@@ -485,10 +1006,27 @@ discard block |
||
485 | 1006 | <div id="help" class="jush-',$y,' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div> |
486 | 1007 | |
487 | 1008 | <div id="content"> |
488 | -';if($Ha!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($A?$A:".").'">'.$Eb[DRIVER].'</a> » ';$A=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ha===false)echo"$O\n";else{echo"<a href='".($A?h($A):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ha)))echo'<a href="'.h($A."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Ha)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Ha |
|
489 | -as$z=>$X){$xb=(is_array($X)?$X[1]:h($X));if($xb!="")echo"<a href='".h(ME."$z=").urlencode(is_array($X)?$X[0]:$X)."'>$xb</a> » ";}}echo"$eg\n";}}echo"<h2>$gg</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$h=&get_session("dbs");if(DB!=""&&$h&&!in_array(DB,$h,true))$h=null;stop_session();define("PAGE_HEADER",1);}function |
|
1009 | +';if($Ha!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($A?$A:".").'">'.$Eb[DRIVER].'</a> » ';$A=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ha===false) { |
|
1010 | + echo"$O\n"; |
|
1011 | +} else{echo"<a href='".($A?h($A):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ha))) { |
|
1012 | + echo'<a href="'.h($A."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » '; |
|
1013 | +} |
|
1014 | +if(is_array($Ha)){if($_GET["ns"]!="") { |
|
1015 | + echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » '; |
|
1016 | +} |
|
1017 | +foreach($Ha |
|
1018 | +as$z=>$X){$xb=(is_array($X)?$X[1]:h($X));if($xb!="") { |
|
1019 | + echo"<a href='".h(ME."$z=").urlencode(is_array($X)?$X[0]:$X)."'>$xb</a> » "; |
|
1020 | +} |
|
1021 | +}}echo"$eg\n";}}echo"<h2>$gg</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$h=&get_session("dbs");if(DB!=""&&$h&&!in_array(DB,$h,true)) { |
|
1022 | + $h=null; |
|
1023 | +} |
|
1024 | +stop_session();define("PAGE_HEADER",1);}function |
|
490 | 1025 | page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");if($b->headers()){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");}}function |
491 | -page_messages($k){$Bg=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Bd=$_SESSION["messages"][$Bg];if($Bd){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Bd)."</div>\n";unset($_SESSION["messages"][$Bg]);}if($k)echo"<div class='error'>$k</div>\n";}function |
|
1026 | +page_messages($k){$Bg=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Bd=$_SESSION["messages"][$Bg];if($Bd){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Bd)."</div>\n";unset($_SESSION["messages"][$Bg]);}if($k) { |
|
1027 | + echo"<div class='error'>$k</div>\n"; |
|
1028 | +} |
|
1029 | +}function |
|
492 | 1030 | page_footer($Dd=""){global$b,$T;echo'</div> |
493 | 1031 | |
494 | 1032 | ';if($Dd!="auth"){echo'<form action="" method="post"> |
@@ -501,41 +1039,140 @@ discard block |
||
501 | 1039 | ';$b->navigation($Dd);echo'</div> |
502 | 1040 | <script type="text/javascript">setupSubmitHighlight(document);</script> |
503 | 1041 | ';}function |
504 | -int32($E){while($E>=2147483648)$E-=4294967296;while($E<=-2147483649)$E+=4294967296;return(int)$E;}function |
|
1042 | +int32($E){while($E>=2147483648) { |
|
1043 | + $E-=4294967296; |
|
1044 | +} |
|
1045 | +while($E<=-2147483649) { |
|
1046 | + $E+=4294967296; |
|
1047 | +} |
|
1048 | +return(int)$E;}function |
|
505 | 1049 | long2str($W,$Ng){$lf='';foreach($W |
506 | -as$X)$lf.=pack('V',$X);if($Ng)return |
|
507 | -substr($lf,0,end($W));return$lf;}function |
|
508 | -str2long($lf,$Ng){$W=array_values(unpack('V*',str_pad($lf,4*ceil(strlen($lf)/4),"\0")));if($Ng)$W[]=strlen($lf);return$W;}function |
|
1050 | +as$X) { |
|
1051 | + $lf.=pack('V',$X); |
|
1052 | +} |
|
1053 | +if($Ng) { |
|
1054 | + return |
|
1055 | +substr($lf,0,end($W)); |
|
1056 | +} |
|
1057 | +return$lf;}function |
|
1058 | +str2long($lf,$Ng){$W=array_values(unpack('V*',str_pad($lf,4*ceil(strlen($lf)/4),"\0")));if($Ng) { |
|
1059 | + $W[]=strlen($lf); |
|
1060 | +} |
|
1061 | +return$W;}function |
|
509 | 1062 | xxtea_mx($Sg,$Rg,$Lf,$Zc){return |
510 | 1063 | int32((($Sg>>5&0x7FFFFFF)^$Rg<<2)+(($Rg>>3&0x1FFFFFFF)^$Sg<<4))^int32(($Lf^$Rg)+($Zc^$Sg));}function |
511 | -encrypt_string($Ff,$z){if($Ff=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Ff,true);$E=count($W)-1;$Sg=$W[$E];$Rg=$W[0];$H=floor(6+52/($E+1));$Lf=0;while($H-->0){$Lf=int32($Lf+0x9E3779B9);$Kb=$Lf>>2&3;for($ne=0;$ne<$E;$ne++){$Rg=$W[$ne+1];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Sg=int32($W[$ne]+$Fd);$W[$ne]=$Sg;}$Rg=$W[0];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Sg=int32($W[$E]+$Fd);$W[$E]=$Sg;}return |
|
1064 | +encrypt_string($Ff,$z){if($Ff=="") { |
|
1065 | + return""; |
|
1066 | +} |
|
1067 | +$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Ff,true);$E=count($W)-1;$Sg=$W[$E];$Rg=$W[0];$H=floor(6+52/($E+1));$Lf=0;while($H-->0){$Lf=int32($Lf+0x9E3779B9);$Kb=$Lf>>2&3;for($ne=0;$ne<$E;$ne++){$Rg=$W[$ne+1];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Sg=int32($W[$ne]+$Fd);$W[$ne]=$Sg;}$Rg=$W[0];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Sg=int32($W[$E]+$Fd);$W[$E]=$Sg;}return |
|
512 | 1068 | long2str($W,false);}function |
513 | -decrypt_string($Ff,$z){if($Ff=="")return"";if(!$z)return |
|
514 | -false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Ff,false);$E=count($W)-1;$Sg=$W[$E];$Rg=$W[0];$H=floor(6+52/($E+1));$Lf=int32($H*0x9E3779B9);while($Lf){$Kb=$Lf>>2&3;for($ne=$E;$ne>0;$ne--){$Sg=$W[$ne-1];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Rg=int32($W[$ne]-$Fd);$W[$ne]=$Rg;}$Sg=$W[$E];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Rg=int32($W[0]-$Fd);$W[0]=$Rg;$Lf=int32($Lf-0x9E3779B9);}return |
|
515 | -long2str($W,true);}$e='';$Dc=$_SESSION["token"];if(!$Dc)$_SESSION["token"]=rand(1,1e6);$T=get_token();$ze=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$ze[$z]=$X;}}function |
|
516 | -add_invalid_login(){global$b;$nc=get_temp_dir()."/adminer.invalid";$p=@fopen($nc,"r+");if(!$p){$p=@fopen($nc,"w");if(!$p)return;}flock($p,LOCK_EX);$Tc=unserialize(stream_get_contents($p));$bg=time();if($Tc){foreach($Tc |
|
517 | -as$Uc=>$X){if($X[0]<$bg)unset($Tc[$Uc]);}}$Sc=&$Tc[$b->bruteForceKey()];if(!$Sc)$Sc=array($bg+30*60,0);$Sc[1]++;$tf=serialize($Tc);rewind($p);fwrite($p,$tf);ftruncate($p,strlen($tf));flock($p,LOCK_UN);fclose($p);}$xa=$_POST["auth"];if($xa){$Tc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$Sc=$Tc[$b->bruteForceKey()];$Kd=($Sc[1]>30?$Sc[0]-time():0);if($Kd>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Kd/60)));session_regenerate_id();$Jg=$xa["driver"];$O=$xa["server"];$V=$xa["username"];$we=(string)$xa["password"];$i=$xa["db"];set_password($Jg,$O,$V,$we);$_SESSION["db"][$Jg][$O][$V][$i]=true;if($xa["permanent"]){$z=base64_encode($Jg)."-".base64_encode($O)."-".base64_encode($V)."-".base64_encode($i);$Je=$b->permanentLogin(true);$ze[$z]="$z:".base64_encode($Je?encrypt_string($we,$Je):"");cookie("adminer_permanent",implode(" ",$ze));}if(count($_POST)==1||DRIVER!=$Jg||SERVER!=$O||$_GET["username"]!==$V||DB!=$i)redirect(auth_url($Jg,$O,$V,$i));}elseif($_POST["logout"]){if($Dc&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}}elseif($ze&&!$_SESSION["pwds"]){session_regenerate_id();$Je=$b->permanentLogin();foreach($ze |
|
1069 | +decrypt_string($Ff,$z){if($Ff=="") { |
|
1070 | + return""; |
|
1071 | +} |
|
1072 | +if(!$z) { |
|
1073 | + return |
|
1074 | +false; |
|
1075 | +} |
|
1076 | +$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Ff,false);$E=count($W)-1;$Sg=$W[$E];$Rg=$W[0];$H=floor(6+52/($E+1));$Lf=int32($H*0x9E3779B9);while($Lf){$Kb=$Lf>>2&3;for($ne=$E;$ne>0;$ne--){$Sg=$W[$ne-1];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Rg=int32($W[$ne]-$Fd);$W[$ne]=$Rg;}$Sg=$W[$E];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Rg=int32($W[0]-$Fd);$W[0]=$Rg;$Lf=int32($Lf-0x9E3779B9);}return |
|
1077 | +long2str($W,true);}$e='';$Dc=$_SESSION["token"];if(!$Dc) { |
|
1078 | + $_SESSION["token"]=rand(1,1e6); |
|
1079 | +} |
|
1080 | +$T=get_token();$ze=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$ze[$z]=$X;}}function |
|
1081 | +add_invalid_login(){global$b;$nc=get_temp_dir()."/adminer.invalid";$p=@fopen($nc,"r+");if(!$p){$p=@fopen($nc,"w");if(!$p) { |
|
1082 | + return; |
|
1083 | +} |
|
1084 | +}flock($p,LOCK_EX);$Tc=unserialize(stream_get_contents($p));$bg=time();if($Tc){foreach($Tc |
|
1085 | +as$Uc=>$X){if($X[0]<$bg) { |
|
1086 | + unset($Tc[$Uc]); |
|
1087 | +} |
|
1088 | +}}$Sc=&$Tc[$b->bruteForceKey()];if(!$Sc) { |
|
1089 | + $Sc=array($bg+30*60,0); |
|
1090 | +} |
|
1091 | +$Sc[1]++;$tf=serialize($Tc);rewind($p);fwrite($p,$tf);ftruncate($p,strlen($tf));flock($p,LOCK_UN);fclose($p);}$xa=$_POST["auth"];if($xa){$Tc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$Sc=$Tc[$b->bruteForceKey()];$Kd=($Sc[1]>30?$Sc[0]-time():0);if($Kd>0) { |
|
1092 | + auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Kd/60))); |
|
1093 | +} |
|
1094 | +session_regenerate_id();$Jg=$xa["driver"];$O=$xa["server"];$V=$xa["username"];$we=(string)$xa["password"];$i=$xa["db"];set_password($Jg,$O,$V,$we);$_SESSION["db"][$Jg][$O][$V][$i]=true;if($xa["permanent"]){$z=base64_encode($Jg)."-".base64_encode($O)."-".base64_encode($V)."-".base64_encode($i);$Je=$b->permanentLogin(true);$ze[$z]="$z:".base64_encode($Je?encrypt_string($we,$Je):"");cookie("adminer_permanent",implode(" ",$ze));}if(count($_POST)==1||DRIVER!=$Jg||SERVER!=$O||$_GET["username"]!==$V||DB!=$i) { |
|
1095 | + redirect(auth_url($Jg,$O,$V,$i)); |
|
1096 | +} |
|
1097 | +} elseif($_POST["logout"]){if($Dc&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;} else{foreach(array("pwds","db","dbs","queries")as$z) { |
|
1098 | + set_session($z,null); |
|
1099 | +} |
|
1100 | +unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}} elseif($ze&&!$_SESSION["pwds"]){session_regenerate_id();$Je=$b->permanentLogin();foreach($ze |
|
518 | 1101 | as$z=>$X){list(,$Qa)=explode(":",$X);list($Jg,$O,$V,$i)=array_map('base64_decode',explode("-",$z));set_password($Jg,$O,$V,decrypt_string(base64_decode($Qa),$Je));$_SESSION["db"][$Jg][$O][$V][$i]=true;}}function |
519 | 1102 | unset_permanent(){global$ze;foreach($ze |
520 | -as$z=>$X){list($Jg,$O,$V,$i)=array_map('base64_decode',explode("-",$z));if($Jg==DRIVER&&$O==SERVER&&$V==$_GET["username"]&&$i==DB)unset($ze[$z]);}cookie("adminer_permanent",implode(" ",$ze));}function |
|
521 | -auth_error($k){global$b,$Dc;$k=h($k);$wf=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$wf]||$_GET[$wf])&&!$Dc)$k='Session expired, please login again.';else{add_invalid_login();$we=get_password();if($we!==null){if($we===false)$k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$wf]&&$_GET[$wf]&&ini_bool("session.use_only_cookies"))$k='Session support must be enabled.';$pe=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$pe["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$Ee)),false);page_footer("auth");exit;}$e=connect();}$j=new |
|
522 | -Min_Driver($e);if(!is_object($e)||($pd=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($e)?$e:(is_string($pd)?$pd:'Invalid credentials.')));if($xa&&$_POST["token"])$_POST["token"]=$T;$k='';if($_POST){if(!verify_token()){$Nc="max_input_vars";$xd=ini_get($Nc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$xd||$X<$xd)){$Nc=$z;$xd=$X;}}}$k=(!$_POST["token"]&&$xd?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$Nc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$k.=' '.'You can upload a big SQL file via FTP and import it from server.';}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false)session_write_close();function |
|
523 | -select($J,$f=null,$ge=array(),$_=0){global$y;$od=array();$w=array();$d=array();$Fa=array();$tg=array();$K=array();odd('');for($t=0;(!$_||$t<$_)&&($L=$J->fetch_row());$t++){if(!$t){echo"<table cellspacing='0' class='nowrap'>\n","<thead><tr>";for($x=0;$x<count($L);$x++){$l=$J->fetch_field();$F=$l->name;$fe=$l->orgtable;$ee=$l->orgname;$K[$l->table]=$fe;if($ge&&$y=="sql")$od[$x]=($F=="table"?"table=":($F=="possible_keys"?"indexes=":null));elseif($fe!=""){if(!isset($w[$fe])){$w[$fe]=array();foreach(indexes($fe,$f)as$v){if($v["type"]=="PRIMARY"){$w[$fe]=array_flip($v["columns"]);break;}}$d[$fe]=$w[$fe];}if(isset($d[$fe][$ee])){unset($d[$fe][$ee]);$w[$fe][$ee]=$x;$od[$x]=$fe;}}if($l->charsetnr==63)$Fa[$x]=true;$tg[$x]=$l->type;echo"<th".($fe!=""||$l->name!=$ee?" title='".h(($fe!=""?"$fe.":"").$ee)."'":"").">".h($F).($ge?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($F))):"");}echo"</thead>\n";}echo"<tr".odd().">";foreach($L |
|
524 | -as$z=>$X){if($X===null)$X="<i>NULL</i>";elseif($Fa[$z]&&!is_utf8($X))$X="<i>".lang(array('%d byte','%d bytes'),strlen($X))."</i>";elseif(!strlen($X))$X=" ";else{$X=h($X);if($tg[$z]==254)$X="<code>$X</code>";}if(isset($od[$z])&&!$d[$od[$z]]){if($ge&&$y=="sql"){$Q=$L[array_search("table=",$od)];$A=$od[$z].urlencode($ge[$Q]!=""?$ge[$Q]:$Q);}else{$A="edit=".urlencode($od[$z]);foreach($w[$od[$z]]as$Ua=>$x)$A.="&where".urlencode("[".bracket_escape($Ua)."]")."=".urlencode($L[$x]);}$X="<a href='".h(ME.$A)."'>$X</a>";}echo"<td>$X";}}echo($t?"</table>":"<p class='message'>".'No rows.')."\n";return$K;}function |
|
1103 | +as$z=>$X){list($Jg,$O,$V,$i)=array_map('base64_decode',explode("-",$z));if($Jg==DRIVER&&$O==SERVER&&$V==$_GET["username"]&&$i==DB) { |
|
1104 | + unset($ze[$z]); |
|
1105 | +} |
|
1106 | +}cookie("adminer_permanent",implode(" ",$ze));}function |
|
1107 | +auth_error($k){global$b,$Dc;$k=h($k);$wf=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$wf]||$_GET[$wf])&&!$Dc) { |
|
1108 | + $k='Session expired, please login again.'; |
|
1109 | +} else{add_invalid_login();$we=get_password();if($we!==null){if($we===false) { |
|
1110 | + $k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>'); |
|
1111 | +} |
|
1112 | +set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$wf]&&$_GET[$wf]&&ini_bool("session.use_only_cookies")) { |
|
1113 | + $k='Session support must be enabled.'; |
|
1114 | +} |
|
1115 | +$pe=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$pe["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$Ee)),false);page_footer("auth");exit;}$e=connect();}$j=new |
|
1116 | +Min_Driver($e);if(!is_object($e)||($pd=$b->login($_GET["username"],get_password()))!==true) { |
|
1117 | + auth_error((is_string($e)?$e:(is_string($pd)?$pd:'Invalid credentials.'))); |
|
1118 | +} |
|
1119 | +if($xa&&$_POST["token"]) { |
|
1120 | + $_POST["token"]=$T; |
|
1121 | +} |
|
1122 | +$k='';if($_POST){if(!verify_token()){$Nc="max_input_vars";$xd=ini_get($Nc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$xd||$X<$xd)){$Nc=$z;$xd=$X;}}}$k=(!$_POST["token"]&&$xd?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$Nc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}} elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"])) { |
|
1123 | + $k.=' '.'You can upload a big SQL file via FTP and import it from server.'; |
|
1124 | +} |
|
1125 | +}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false) { |
|
1126 | + session_write_close(); |
|
1127 | +} |
|
1128 | +function |
|
1129 | +select($J,$f=null,$ge=array(),$_=0){global$y;$od=array();$w=array();$d=array();$Fa=array();$tg=array();$K=array();odd('');for($t=0;(!$_||$t<$_)&&($L=$J->fetch_row());$t++){if(!$t){echo"<table cellspacing='0' class='nowrap'>\n","<thead><tr>";for($x=0;$x<count($L);$x++){$l=$J->fetch_field();$F=$l->name;$fe=$l->orgtable;$ee=$l->orgname;$K[$l->table]=$fe;if($ge&&$y=="sql") { |
|
1130 | + $od[$x]=($F=="table"?"table=":($F=="possible_keys"?"indexes=":null)); |
|
1131 | +} elseif($fe!=""){if(!isset($w[$fe])){$w[$fe]=array();foreach(indexes($fe,$f)as$v){if($v["type"]=="PRIMARY"){$w[$fe]=array_flip($v["columns"]);break;}}$d[$fe]=$w[$fe];}if(isset($d[$fe][$ee])){unset($d[$fe][$ee]);$w[$fe][$ee]=$x;$od[$x]=$fe;}}if($l->charsetnr==63) { |
|
1132 | + $Fa[$x]=true; |
|
1133 | +} |
|
1134 | +$tg[$x]=$l->type;echo"<th".($fe!=""||$l->name!=$ee?" title='".h(($fe!=""?"$fe.":"").$ee)."'":"").">".h($F).($ge?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($F))):"");}echo"</thead>\n";}echo"<tr".odd().">";foreach($L |
|
1135 | +as$z=>$X){if($X===null) { |
|
1136 | + $X="<i>NULL</i>"; |
|
1137 | +} elseif($Fa[$z]&&!is_utf8($X)) { |
|
1138 | + $X="<i>".lang(array('%d byte','%d bytes'),strlen($X))."</i>"; |
|
1139 | +} elseif(!strlen($X)) { |
|
1140 | + $X=" "; |
|
1141 | +} else{$X=h($X);if($tg[$z]==254) { |
|
1142 | + $X="<code>$X</code>"; |
|
1143 | +} |
|
1144 | +}if(isset($od[$z])&&!$d[$od[$z]]){if($ge&&$y=="sql"){$Q=$L[array_search("table=",$od)];$A=$od[$z].urlencode($ge[$Q]!=""?$ge[$Q]:$Q);} else{$A="edit=".urlencode($od[$z]);foreach($w[$od[$z]]as$Ua=>$x) { |
|
1145 | + $A.="&where".urlencode("[".bracket_escape($Ua)."]")."=".urlencode($L[$x]); |
|
1146 | +} |
|
1147 | +}$X="<a href='".h(ME.$A)."'>$X</a>";}echo"<td>$X";}}echo($t?"</table>":"<p class='message'>".'No rows.')."\n";return$K;}function |
|
525 | 1148 | referencable_primary($rf){$K=array();foreach(table_status('',true)as$Pf=>$Q){if($Pf!=$rf&&fk_support($Q)){foreach(fields($Pf)as$l){if($l["primary"]){if($K[$Pf]){unset($K[$Pf]);break;}$K[$Pf]=$l;}}}}return$K;}function |
526 | 1149 | textarea($F,$Y,$M=10,$Ya=80){global$y;echo"<textarea name='$F' rows='$M' cols='$Ya' class='sqlarea jush-$y' spellcheck='false' wrap='off'>";if(is_array($Y)){foreach($Y |
527 | -as$X)echo |
|
528 | -h($X[0])."\n\n\n";}else |
|
1150 | +as$X) { |
|
1151 | + echo |
|
1152 | +h($X[0])."\n\n\n"; |
|
1153 | +} |
|
1154 | +} else { |
|
1155 | + echo |
|
1156 | +h($Y); |
|
1157 | +} |
|
1158 | +echo"</textarea>";}function |
|
1159 | +edit_type($z,$l,$Xa,$o=array()){global$Hf,$tg,$_g,$Vd;$U=$l["type"];echo'<td><select name="',h($z),'[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"',on_help("getTarget(event).value",1),'>';if($U&&!isset($tg[$U])&&!isset($o[$U])) { |
|
1160 | + array_unshift($Hf,$U); |
|
1161 | +} |
|
1162 | +if($o) { |
|
1163 | + $Hf['Foreign keys']=$o; |
|
1164 | +} |
|
529 | 1165 | echo |
530 | -h($Y);echo"</textarea>";}function |
|
531 | -edit_type($z,$l,$Xa,$o=array()){global$Hf,$tg,$_g,$Vd;$U=$l["type"];echo'<td><select name="',h($z),'[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"',on_help("getTarget(event).value",1),'>';if($U&&!isset($tg[$U])&&!isset($o[$U]))array_unshift($Hf,$U);if($o)$Hf['Foreign keys']=$o;echo |
|
532 | 1166 | optionlist($Hf,$U),'</select> |
533 | 1167 | <td><input name="',h($z),'[length]" value="',h($l["length"]),'" size="3" onfocus="editingLengthFocus(this);"',(!$l["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":""),' onchange="editingLengthChange(this);" onkeyup="this.onchange();"><td class="options">';echo"<select name='".h($z)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'").'><option value="">('.'collation'.')'.optionlist($Xa,$l["collation"]).'</select>',($_g?"<select name='".h($z)."[unsigned]'".(!$U||preg_match('~((^|[^o])int|float|double|decimal)$~',$U)?"":" class='hidden'").'><option>'.optionlist($_g,$l["unsigned"]).'</select>':''),(isset($l['on_update'])?"<select name='".h($z)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".'ON UPDATE'.")","CURRENT_TIMESTAMP"),$l["on_update"]).'</select>':''),($o?"<select name='".h($z)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".'ON DELETE'.")".optionlist(explode("|",$Vd),$l["on_delete"])."</select> ":" ");}function |
534 | 1168 | process_length($ld){global$Vb;return(preg_match("~^\\s*\\(?\\s*$Vb(?:\\s*,\\s*$Vb)*+\\s*\\)?\\s*\$~",$ld)&&preg_match_all("~$Vb~",$ld,$rd)?"(".implode(",",$rd[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$ld)));}function |
535 | 1169 | process_type($l,$Va="COLLATE"){global$_g;return" $l[type]".process_length($l["length"]).(preg_match('~(^|[^o])int|float|double|decimal~',$l["type"])&&in_array($l["unsigned"],$_g)?" $l[unsigned]":"").(preg_match('~char|text|enum|set~',$l["type"])&&$l["collation"]?" $Va ".q($l["collation"]):"");}function |
536 | 1170 | process_field($l,$rg){global$y;$vb=$l["default"];return |
537 | 1171 | array(idf_escape(trim($l["field"])),process_type($rg),($l["null"]?" NULL":" NOT NULL"),(isset($vb)?" DEFAULT ".((preg_match('~time~',$l["type"])&&preg_match('~^CURRENT_TIMESTAMP$~i',$vb))||($y=="sqlite"&&preg_match('~^CURRENT_(TIME|TIMESTAMP|DATE)$~i',$vb))||($l["type"]=="bit"&&preg_match("~^([0-9]+|b'[0-1]+')\$~",$vb))||($y=="pgsql"&&preg_match("~^[a-z]+\\(('[^']*')+\\)\$~",$vb))?$vb:q($vb)):""),(preg_match('~timestamp|datetime~',$l["type"])&&$l["on_update"]?" ON UPDATE $l[on_update]":""),(support("comment")&&$l["comment"]!=""?" COMMENT ".q($l["comment"]):""),($l["auto_increment"]?auto_increment():null),);}function |
538 | -type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$z=>$X){if(preg_match("~$z|$X~",$U))return" class='$z'";}}function |
|
1172 | +type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$z=>$X){if(preg_match("~$z|$X~",$U)) { |
|
1173 | + return" class='$z'"; |
|
1174 | +} |
|
1175 | +}}function |
|
539 | 1176 | edit_fields($m,$Xa,$U="TABLE",$o=array(),$cb=false){global$e,$Oc;$m=array_values($m);echo'<thead><tr class="wrap"> |
540 | 1177 | ';if($U=="PROCEDURE"){echo'<td> ';}echo'<th>',($U=="TABLE"?'Column name':'Parameter name'),'<td>Type<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea> |
541 | 1178 | <td>Length |
@@ -553,42 +1190,122 @@ discard block |
||
553 | 1190 | checkbox("fields[$t][has_default]",1,$l["has_default"]),'<input name="fields[',$t,'][default]" value="',h($l["default"]),'" onkeyup="keyupChange.call(this);" onchange="this.previousSibling.checked = true;"> |
554 | 1191 | ',(support("comment")?"<td".($cb?"":" class='hidden'")."><input name='fields[$t][comment]' value='".h($l["comment"])."' maxlength='".($e->server_info>=5.5?1024:255)."'>":"");}echo"<td>",(support("move_col")?"<input type='image' class='icon' name='add[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=4.2.5&driver=mysql' alt='+' title='".'Add next'."' onclick='return !editingAddRow(this, 1);'> "."<input type='image' class='icon' name='up[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=up.gif&version=4.2.5&driver=mysql' alt='^' title='".'Move up'."'> "."<input type='image' class='icon' name='down[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=down.gif&version=4.2.5&driver=mysql' alt='v' title='".'Move down'."'> ":""),($he==""||support("drop_col")?"<input type='image' class='icon' name='drop_col[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=cross.gif&version=4.2.5&driver=mysql' alt='x' title='".'Remove'."' onclick=\"return !editingRemoveRow(this, 'fields\$1[field]');\">":""),"\n";}}function |
555 | 1192 | process_fields(&$m){ksort($m);$Od=0;if($_POST["up"]){$fd=0;foreach($m |
556 | -as$z=>$l){if(key($_POST["up"])==$z){unset($m[$z]);array_splice($m,$fd,0,array($l));break;}if(isset($l["field"]))$fd=$Od;$Od++;}}elseif($_POST["down"]){$uc=false;foreach($m |
|
557 | -as$z=>$l){if(isset($l["field"])&&$uc){unset($m[key($_POST["down"])]);array_splice($m,$Od,0,array($uc));break;}if(key($_POST["down"])==$z)$uc=$l;$Od++;}}elseif($_POST["add"]){$m=array_values($m);array_splice($m,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return |
|
558 | -false;return |
|
1193 | +as$z=>$l){if(key($_POST["up"])==$z){unset($m[$z]);array_splice($m,$fd,0,array($l));break;}if(isset($l["field"])) { |
|
1194 | + $fd=$Od; |
|
1195 | +} |
|
1196 | +$Od++;}} elseif($_POST["down"]){$uc=false;foreach($m |
|
1197 | +as$z=>$l){if(isset($l["field"])&&$uc){unset($m[key($_POST["down"])]);array_splice($m,$Od,0,array($uc));break;}if(key($_POST["down"])==$z) { |
|
1198 | + $uc=$l; |
|
1199 | +} |
|
1200 | +$Od++;}} elseif($_POST["add"]){$m=array_values($m);array_splice($m,key($_POST["add"]),0,array(array()));} elseif(!$_POST["drop_col"]) { |
|
1201 | + return |
|
1202 | +false; |
|
1203 | +} |
|
1204 | +return |
|
559 | 1205 | true;}function |
560 | 1206 | normalize_enum($C){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($C[0][0].$C[0][0],$C[0][0],substr($C[0],1,-1))),'\\'))."'";}function |
561 | -grant($r,$Le,$d,$Ud){if(!$Le)return |
|
562 | -true;if($Le==array("ALL PRIVILEGES","GRANT OPTION"))return($r=="GRANT"?queries("$r ALL PRIVILEGES$Ud WITH GRANT OPTION"):queries("$r ALL PRIVILEGES$Ud")&&queries("$r GRANT OPTION$Ud"));return |
|
1207 | +grant($r,$Le,$d,$Ud){if(!$Le) { |
|
1208 | + return |
|
1209 | +true; |
|
1210 | +} |
|
1211 | +if($Le==array("ALL PRIVILEGES","GRANT OPTION")) { |
|
1212 | + return($r=="GRANT"?queries("$r ALL PRIVILEGES$Ud WITH GRANT OPTION"):queries("$r ALL PRIVILEGES$Ud")&&queries("$r GRANT OPTION$Ud")); |
|
1213 | +} |
|
1214 | +return |
|
563 | 1215 | queries("$r ".preg_replace('~(GRANT OPTION)\\([^)]*\\)~','\\1',implode("$d, ",$Le).$d).$Ud);}function |
564 | -drop_create($Fb,$g,$Gb,$Yf,$Hb,$B,$Ad,$zd,$_d,$Rd,$Id){if($_POST["drop"])query_redirect($Fb,$B,$Ad);elseif($Rd=="")query_redirect($g,$B,$_d);elseif($Rd!=$Id){$lb=queries($g);queries_redirect($B,$zd,$lb&&queries($Fb));if($lb)queries($Gb);}else |
|
565 | -queries_redirect($B,$zd,queries($Yf)&&queries($Hb)&&queries($Fb)&&queries($g));}function |
|
1216 | +drop_create($Fb,$g,$Gb,$Yf,$Hb,$B,$Ad,$zd,$_d,$Rd,$Id){if($_POST["drop"]) { |
|
1217 | + query_redirect($Fb,$B,$Ad); |
|
1218 | +} elseif($Rd=="") { |
|
1219 | + query_redirect($g,$B,$_d); |
|
1220 | +} elseif($Rd!=$Id){$lb=queries($g);queries_redirect($B,$zd,$lb&&queries($Fb));if($lb) { |
|
1221 | + queries($Gb); |
|
1222 | +} |
|
1223 | +} else { |
|
1224 | + queries_redirect($B,$zd,queries($Yf)&&queries($Hb)&&queries($Fb)&&queries($g)); |
|
1225 | +} |
|
1226 | +}function |
|
566 | 1227 | create_trigger($Ud,$L){global$y;$dg=" $L[Timing] $L[Event]".($L["Event"]=="UPDATE OF"?" ".idf_escape($L["Of"]):"");return"CREATE TRIGGER ".idf_escape($L["Trigger"]).($y=="mssql"?$Ud.$dg:$dg.$Ud).rtrim(" $L[Type]\n$L[Statement]",";").";";}function |
567 | 1228 | create_routine($if,$L){global$Oc;$P=array();$m=(array)$L["fields"];ksort($m);foreach($m |
568 | -as$l){if($l["field"]!="")$P[]=(preg_match("~^($Oc)\$~",$l["inout"])?"$l[inout] ":"").idf_escape($l["field"]).process_type($l,"CHARACTER SET");}return"CREATE $if ".idf_escape(trim($L["name"]))." (".implode(", ",$P).")".(isset($_GET["function"])?" RETURNS".process_type($L["returns"],"CHARACTER SET"):"").($L["language"]?" LANGUAGE $L[language]":"").rtrim("\n$L[definition]",";").";";}function |
|
1229 | +as$l){if($l["field"]!="") { |
|
1230 | + $P[]=(preg_match("~^($Oc)\$~",$l["inout"])?"$l[inout] ":"").idf_escape($l["field"]).process_type($l,"CHARACTER SET"); |
|
1231 | +} |
|
1232 | +}return"CREATE $if ".idf_escape(trim($L["name"]))." (".implode(", ",$P).")".(isset($_GET["function"])?" RETURNS".process_type($L["returns"],"CHARACTER SET"):"").($L["language"]?" LANGUAGE $L[language]":"").rtrim("\n$L[definition]",";").";";}function |
|
569 | 1233 | remove_definer($I){return |
570 | 1234 | preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\\1)',logged_user()).'`~','\\1',$I);}function |
571 | 1235 | format_foreign_key($n){global$Vd;return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$n["source"])).") REFERENCES ".table($n["table"])." (".implode(", ",array_map('idf_escape',$n["target"])).")".(preg_match("~^($Vd)\$~",$n["on_delete"])?" ON DELETE $n[on_delete]":"").(preg_match("~^($Vd)\$~",$n["on_update"])?" ON UPDATE $n[on_update]":"");}function |
572 | -tar_file($nc,$ig){$K=pack("a100a8a8a8a12a12",$nc,644,0,0,decoct($ig->size),decoct(time()));$Pa=8*32;for($t=0;$t<strlen($K);$t++)$Pa+=ord($K[$t]);$K.=sprintf("%06o",$Pa)."\0 ";echo$K,str_repeat("\0",512-strlen($K));$ig->send();echo |
|
1236 | +tar_file($nc,$ig){$K=pack("a100a8a8a8a12a12",$nc,644,0,0,decoct($ig->size),decoct(time()));$Pa=8*32;for($t=0;$t<strlen($K);$t++) { |
|
1237 | + $Pa+=ord($K[$t]); |
|
1238 | +} |
|
1239 | +$K.=sprintf("%06o",$Pa)."\0 ";echo$K,str_repeat("\0",512-strlen($K));$ig->send();echo |
|
573 | 1240 | str_repeat("\0",511-($ig->size+511)%512);}function |
574 | 1241 | ini_bytes($Nc){$X=ini_get($Nc);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function |
575 | 1242 | doc_link($xe){global$y,$e;$Cg=array('sql'=>"http://dev.mysql.com/doc/refman/".substr($e->server_info,0,3)."/en/",'sqlite'=>"http://www.sqlite.org/",'pgsql'=>"http://www.postgresql.org/docs/".substr($e->server_info,0,3)."/static/",'mssql'=>"http://msdn.microsoft.com/library/",'oracle'=>"http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/",);return($xe[$y]?"<a href='$Cg[$y]$xe[$y]' target='_blank' rel='noreferrer'><sup>?</sup></a>":"");}function |
576 | 1243 | ob_gzencode($Gf){return |
577 | 1244 | gzencode($Gf);}function |
578 | -db_size($i){global$e;if(!$e->select_db($i))return"?";$K=0;foreach(table_status()as$R)$K+=$R["Data_length"]+$R["Index_length"];return |
|
1245 | +db_size($i){global$e;if(!$e->select_db($i)) { |
|
1246 | + return"?"; |
|
1247 | +} |
|
1248 | +$K=0;foreach(table_status()as$R) { |
|
1249 | + $K+=$R["Data_length"]+$R["Index_length"]; |
|
1250 | +} |
|
1251 | +return |
|
579 | 1252 | format_number($K);}function |
580 | 1253 | set_utf8mb4($g){global$e;static$P=false;if(!$P&&preg_match('~\butf8mb4~i',$g)){$P=true;echo"SET NAMES ".charset($e).";\n\n";}}function |
581 | -connect_error(){global$b,$e,$T,$k,$Eb;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Database'.": ".h(DB),'Invalid database.',true);}else{if($_POST["db"]&&!$k)queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"]));page_header('Select database',$k,false);echo"<p class='links'>\n";foreach(array('database'=>'Create new database','privileges'=>'Privileges','processlist'=>'Process list','variables'=>'Variables','status'=>'Status',)as$z=>$X){if(support($z))echo"<a href='".h(ME)."$z='>$X</a>\n";}echo"<p>".sprintf('%s version: %s through PHP extension %s',$Eb[DRIVER],"<b>".h($e->server_info)."</b>","<b>$e->extension</b>")."\n","<p>".sprintf('Logged as: %s',"<b>".h(logged_user())."</b>")."\n";$h=$b->databases();if($h){$of=support("scheme");$Xa=collations();echo"<form action='' method='post'>\n","<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n","<thead><tr>".(support("database")?"<td> ":"")."<th>".'Database'." - <a href='".h(ME)."refresh=1'>".'Refresh'."</a>"."<td>".'Collation'."<td>".'Tables'."<td>".'Size'." - <a href='".h(ME)."dbsize=1' onclick=\"return !ajaxSetHtml('".h(js_escape(ME))."script=connect');\">".'Compute'."</a>"."</thead>\n";$h=($_GET["dbsize"]?count_tables($h):array_flip($h));foreach($h |
|
582 | -as$i=>$S){$hf=h(ME)."db=".urlencode($i);echo"<tr".odd().">".(support("database")?"<td>".checkbox("db[]",$i,in_array($i,(array)$_POST["db"])):""),"<th><a href='$hf'>".h($i)."</a>";$Wa=nbsp(db_collation($i,$Xa));echo"<td>".(support("database")?"<a href='$hf".($of?"&ns=":"")."&database=' title='".'Alter database'."'>$Wa</a>":$Wa),"<td align='right'><a href='$hf&schema=' id='tables-".h($i)."' title='".'Database schema'."'>".($_GET["dbsize"]?$S:"?")."</a>","<td align='right' id='size-".h($i)."'>".($_GET["dbsize"]?db_size($i):"?"),"\n";}echo"</table>\n",(support("database")?"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>\n"."<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^db/));\">\n"."<input type='submit' name='drop' value='".'Drop'."'".confirm().">\n"."</div></fieldset>\n":""),"<script type='text/javascript'>tableCheck();</script>\n","<input type='hidden' name='token' value='$T'>\n","</form>\n";}}page_footer("db");}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?$e->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}connect_error();exit;}$Vd="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class |
|
1254 | +connect_error(){global$b,$e,$T,$k,$Eb;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Database'.": ".h(DB),'Invalid database.',true);} else{if($_POST["db"]&&!$k) { |
|
1255 | + queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"])); |
|
1256 | +} |
|
1257 | +page_header('Select database',$k,false);echo"<p class='links'>\n";foreach(array('database'=>'Create new database','privileges'=>'Privileges','processlist'=>'Process list','variables'=>'Variables','status'=>'Status',)as$z=>$X){if(support($z)) { |
|
1258 | + echo"<a href='".h(ME)."$z='>$X</a>\n"; |
|
1259 | +} |
|
1260 | +}echo"<p>".sprintf('%s version: %s through PHP extension %s',$Eb[DRIVER],"<b>".h($e->server_info)."</b>","<b>$e->extension</b>")."\n","<p>".sprintf('Logged as: %s',"<b>".h(logged_user())."</b>")."\n";$h=$b->databases();if($h){$of=support("scheme");$Xa=collations();echo"<form action='' method='post'>\n","<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n","<thead><tr>".(support("database")?"<td> ":"")."<th>".'Database'." - <a href='".h(ME)."refresh=1'>".'Refresh'."</a>"."<td>".'Collation'."<td>".'Tables'."<td>".'Size'." - <a href='".h(ME)."dbsize=1' onclick=\"return !ajaxSetHtml('".h(js_escape(ME))."script=connect');\">".'Compute'."</a>"."</thead>\n";$h=($_GET["dbsize"]?count_tables($h):array_flip($h));foreach($h |
|
1261 | +as$i=>$S){$hf=h(ME)."db=".urlencode($i);echo"<tr".odd().">".(support("database")?"<td>".checkbox("db[]",$i,in_array($i,(array)$_POST["db"])):""),"<th><a href='$hf'>".h($i)."</a>";$Wa=nbsp(db_collation($i,$Xa));echo"<td>".(support("database")?"<a href='$hf".($of?"&ns=":"")."&database=' title='".'Alter database'."'>$Wa</a>":$Wa),"<td align='right'><a href='$hf&schema=' id='tables-".h($i)."' title='".'Database schema'."'>".($_GET["dbsize"]?$S:"?")."</a>","<td align='right' id='size-".h($i)."'>".($_GET["dbsize"]?db_size($i):"?"),"\n";}echo"</table>\n",(support("database")?"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>\n"."<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^db/));\">\n"."<input type='submit' name='drop' value='".'Drop'."'".confirm().">\n"."</div></fieldset>\n":""),"<script type='text/javascript'>tableCheck();</script>\n","<input type='hidden' name='token' value='$T'>\n","</form>\n";}}page_footer("db");}if(isset($_GET["status"])) { |
|
1262 | + $_GET["variables"]=$_GET["status"]; |
|
1263 | +} |
|
1264 | +if(isset($_GET["import"])) { |
|
1265 | + $_GET["sql"]=$_GET["import"]; |
|
1266 | +} |
|
1267 | +if(!(DB!=""?$e->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}connect_error();exit;}$Vd="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class |
|
583 | 1268 | TmpFile{var$handler;var$size;function |
584 | 1269 | __construct(){$this->handler=tmpfile();}function |
585 | 1270 | write($gb){$this->size+=strlen($gb);fwrite($this->handler,$gb);}function |
586 | -send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$Vb="'(?:''|[^'\\\\]|\\\\.)*'";$Oc="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$j->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$m=fields($a);if(!$m)$k=error();$R=table_status1($a,true);page_header(($m&&is_view($R)?'View':'Table').": ".h($a),$k);$b->selectLinks($R);$bb=$R["Comment"];if($bb!="")echo"<p>".'Comment'.": ".h($bb)."\n";if($m){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Column'."<td>".'Type'.(support("comment")?"<td>".'Comment':"")."</thead>\n";foreach($m |
|
1271 | +send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$Vb="'(?:''|[^'\\\\]|\\\\.)*'";$Oc="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"]) { |
|
1272 | + $_GET["edit"]=$_GET["select"]; |
|
1273 | +} |
|
1274 | +if(isset($_GET["callf"])) { |
|
1275 | + $_GET["call"]=$_GET["callf"]; |
|
1276 | +} |
|
1277 | +if(isset($_GET["function"])) { |
|
1278 | + $_GET["procedure"]=$_GET["function"]; |
|
1279 | +} |
|
1280 | +if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$j->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;} elseif(isset($_GET["table"])){$a=$_GET["table"];$m=fields($a);if(!$m) { |
|
1281 | + $k=error(); |
|
1282 | +} |
|
1283 | +$R=table_status1($a,true);page_header(($m&&is_view($R)?'View':'Table').": ".h($a),$k);$b->selectLinks($R);$bb=$R["Comment"];if($bb!="") { |
|
1284 | + echo"<p>".'Comment'.": ".h($bb)."\n"; |
|
1285 | +} |
|
1286 | +if($m){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Column'."<td>".'Type'.(support("comment")?"<td>".'Comment':"")."</thead>\n";foreach($m |
|
587 | 1287 | as$l){echo"<tr".odd()."><th>".h($l["field"]),"<td><span title='".h($l["collation"])."'>".h($l["full_type"])."</span>",($l["null"]?" <i>NULL</i>":""),($l["auto_increment"]?" <i>".'Auto Increment'."</i>":""),(isset($l["default"])?" <span title='".'Default value'."'>[<b>".h($l["default"])."</b>]</span>":""),(support("comment")?"<td>".nbsp($l["comment"]):""),"\n";}echo"</table>\n";}if(!is_view($R)){if(support("indexes")){echo"<h3 id='indexes'>".'Indexes'."</h3>\n";$w=indexes($a);if($w){echo"<table cellspacing='0'>\n";foreach($w |
588 | -as$F=>$v){ksort($v["columns"]);$Ie=array();foreach($v["columns"]as$z=>$X)$Ie[]="<i>".h($X)."</i>".($v["lengths"][$z]?"(".$v["lengths"][$z].")":"").($v["descs"][$z]?" DESC":"");echo"<tr title='".h($F)."'><th>$v[type]<td>".implode(", ",$Ie)."\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.'Alter indexes'."</a>\n";}if(fk_support($R)){echo"<h3 id='foreign-keys'>".'Foreign keys'."</h3>\n";$o=foreign_keys($a);if($o){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Source'."<td>".'Target'."<td>".'ON DELETE'."<td>".'ON UPDATE'."<td> </thead>\n";foreach($o |
|
1288 | +as$F=>$v){ksort($v["columns"]);$Ie=array();foreach($v["columns"]as$z=>$X) { |
|
1289 | + $Ie[]="<i>".h($X)."</i>".($v["lengths"][$z]?"(".$v["lengths"][$z].")":"").($v["descs"][$z]?" DESC":""); |
|
1290 | +} |
|
1291 | +echo"<tr title='".h($F)."'><th>$v[type]<td>".implode(", ",$Ie)."\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.'Alter indexes'."</a>\n";}if(fk_support($R)){echo"<h3 id='foreign-keys'>".'Foreign keys'."</h3>\n";$o=foreign_keys($a);if($o){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Source'."<td>".'Target'."<td>".'ON DELETE'."<td>".'ON UPDATE'."<td> </thead>\n";foreach($o |
|
589 | 1292 | as$F=>$n){echo"<tr title='".h($F)."'>","<th><i>".implode("</i>, <i>",array_map('h',$n["source"]))."</i>","<td><a href='".h($n["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($n["db"]),ME):($n["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($n["ns"]),ME):ME))."table=".urlencode($n["table"])."'>".($n["db"]!=""?"<b>".h($n["db"])."</b>.":"").($n["ns"]!=""?"<b>".h($n["ns"])."</b>.":"").h($n["table"])."</a>","(<i>".implode("</i>, <i>",array_map('h',$n["target"]))."</i>)","<td>".nbsp($n["on_delete"])."\n","<td>".nbsp($n["on_update"])."\n",'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($F)).'">'.'Alter'.'</a>';}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.'Add foreign key'."</a>\n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".'Triggers'."</h3>\n";$qg=triggers($a);if($qg){echo"<table cellspacing='0'>\n";foreach($qg |
590 | -as$z=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($z)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($z))."'>".'Alter'."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.'Add trigger'."</a>\n";}}elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Qf=array();$Rf=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$rd,PREG_SET_ORDER);foreach($rd |
|
591 | -as$t=>$C){$Qf[$C[1]]=array($C[2],$C[3]);$Rf[]="\n\t'".js_escape($C[1])."': [ $C[2], $C[3] ]";}$kg=0;$Ca=-1;$nf=array();$Ye=array();$jd=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R))continue;$Be=0;$nf[$Q]["fields"]=array();foreach(fields($Q)as$F=>$l){$Be+=1.25;$l["pos"]=$Be;$nf[$Q]["fields"][$F]=$l;}$nf[$Q]["pos"]=($Qf[$Q]?$Qf[$Q]:array($kg,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$hd=$Ca;if($Qf[$Q][1]||$Qf[$X["table"]][1])$hd=min(floatval($Qf[$Q][1]),floatval($Qf[$X["table"]][1]))-1;else$Ca-=.1;while($jd[(string)$hd])$hd-=.0001;$nf[$Q]["references"][$X["table"]][(string)$hd]=array($X["source"],$X["target"]);$Ye[$X["table"]][$Q][(string)$hd]=$X["target"];$jd[(string)$hd]=true;}}$kg=max($kg,$nf[$Q]["pos"][0]+2.5+$Be);}echo'<div id="schema" style="height: ',$kg,'em;" onselectstart="return false;"> |
|
1293 | +as$z=>$X) { |
|
1294 | + echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($z)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($z))."'>".'Alter'."</a>\n"; |
|
1295 | +} |
|
1296 | +echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.'Add trigger'."</a>\n";}} elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Qf=array();$Rf=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$rd,PREG_SET_ORDER);foreach($rd |
|
1297 | +as$t=>$C){$Qf[$C[1]]=array($C[2],$C[3]);$Rf[]="\n\t'".js_escape($C[1])."': [ $C[2], $C[3] ]";}$kg=0;$Ca=-1;$nf=array();$Ye=array();$jd=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R)) { |
|
1298 | + continue; |
|
1299 | +} |
|
1300 | +$Be=0;$nf[$Q]["fields"]=array();foreach(fields($Q)as$F=>$l){$Be+=1.25;$l["pos"]=$Be;$nf[$Q]["fields"][$F]=$l;}$nf[$Q]["pos"]=($Qf[$Q]?$Qf[$Q]:array($kg,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$hd=$Ca;if($Qf[$Q][1]||$Qf[$X["table"]][1]) { |
|
1301 | + $hd=min(floatval($Qf[$Q][1]),floatval($Qf[$X["table"]][1]))-1; |
|
1302 | +} else { |
|
1303 | + $Ca-=.1; |
|
1304 | +} |
|
1305 | +while($jd[(string)$hd]) { |
|
1306 | + $hd-=.0001; |
|
1307 | +} |
|
1308 | +$nf[$Q]["references"][$X["table"]][(string)$hd]=array($X["source"],$X["target"]);$Ye[$X["table"]][$Q][(string)$hd]=$X["target"];$jd[(string)$hd]=true;}}$kg=max($kg,$nf[$Q]["pos"][0]+2.5+$Be);}echo'<div id="schema" style="height: ',$kg,'em;" onselectstart="return false;"> |
|
592 | 1309 | <script type="text/javascript"> |
593 | 1310 | var tablePos = {',implode(",",$Rf)."\n",'}; |
594 | 1311 | var em = document.getElementById(\'schema\').offsetHeight / ',$kg,'; |
@@ -599,50 +1316,235 @@ discard block |
||
599 | 1316 | </script> |
600 | 1317 | ';foreach($nf |
601 | 1318 | as$F=>$Q){echo"<div class='table' style='top: ".$Q["pos"][0]."em; left: ".$Q["pos"][1]."em;' onmousedown='schemaMousedown(this, event);'>",'<a href="'.h(ME).'table='.urlencode($F).'"><b>'.h($F)."</b></a>";foreach($Q["fields"]as$l){$X='<span'.type_class($l["type"]).' title="'.h($l["full_type"].($l["null"]?" NULL":'')).'">'.h($l["field"]).'</span>';echo"<br>".($l["primary"]?"<i>$X</i>":$X);}foreach((array)$Q["references"]as$Wf=>$Ze){foreach($Ze |
602 | -as$hd=>$Ve){$id=$hd-$Qf[$F][1];$t=0;foreach($Ve[0]as$_f)echo"\n<div class='references' title='".h($Wf)."' id='refs$hd-".($t++)."' style='left: $id"."em; top: ".$Q["fields"][$_f]["pos"]."em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: ".(-$id)."em;'></div></div>";}}foreach((array)$Ye[$F]as$Wf=>$Ze){foreach($Ze |
|
1319 | +as$hd=>$Ve){$id=$hd-$Qf[$F][1];$t=0;foreach($Ve[0]as$_f) { |
|
1320 | + echo"\n<div class='references' title='".h($Wf)."' id='refs$hd-".($t++)."' style='left: $id"."em; top: ".$Q["fields"][$_f]["pos"]."em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: ".(-$id)."em;'></div></div>"; |
|
1321 | +} |
|
1322 | +}}foreach((array)$Ye[$F]as$Wf=>$Ze){foreach($Ze |
|
603 | 1323 | as$hd=>$d){$id=$hd-$Qf[$F][1];$t=0;foreach($d |
604 | -as$Vf)echo"\n<div class='references' title='".h($Wf)."' id='refd$hd-".($t++)."' style='left: $id"."em; top: ".$Q["fields"][$Vf]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME))."?file=arrow.gif) no-repeat right center;&version=4.2.5&driver=mysql'><div style='height: .5em; border-bottom: 1px solid Gray; width: ".(-$id)."em;'></div></div>";}}echo"\n</div>\n";}foreach($nf |
|
1324 | +as$Vf) { |
|
1325 | + echo"\n<div class='references' title='".h($Wf)."' id='refd$hd-".($t++)."' style='left: $id"."em; top: ".$Q["fields"][$Vf]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME))."?file=arrow.gif) no-repeat right center;&version=4.2.5&driver=mysql'><div style='height: .5em; border-bottom: 1px solid Gray; width: ".(-$id)."em;'></div></div>"; |
|
1326 | +} |
|
1327 | +}}echo"\n</div>\n";}foreach($nf |
|
605 | 1328 | as$F=>$Q){foreach((array)$Q["references"]as$Wf=>$Ze){foreach($Ze |
606 | 1329 | as$hd=>$Ve){$Cd=$kg;$vd=-10;foreach($Ve[0]as$z=>$_f){$Ce=$Q["pos"][0]+$Q["fields"][$_f]["pos"];$De=$nf[$Wf]["pos"][0]+$nf[$Wf]["fields"][$Ve[1][$z]]["pos"];$Cd=min($Cd,$Ce,$De);$vd=max($vd,$Ce,$De);}echo"<div class='references' id='refl$hd' style='left: $hd"."em; top: $Cd"."em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: ".($vd-$Cd)."em;'></div></div>\n";}}}echo'</div> |
607 | 1330 | <p class="links"><a href="',h(ME."schema=".urlencode($ea)),'" id="schema-link">Permanent link</a> |
608 | -';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$k){$jb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$z)$jb.="&$z=".urlencode($_POST[$z]);cookie("adminer_export",substr($jb,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$gc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$Wc=preg_match('~sql~',$_POST["format"]);if($Wc){echo"-- Adminer $ga ".$Eb[DRIVER]." dump\n\n";if($y=="sql"){echo"SET NAMES utf8; |
|
1331 | +';} elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$k){$jb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$z) { |
|
1332 | + $jb.="&$z=".urlencode($_POST[$z]); |
|
1333 | +} |
|
1334 | +cookie("adminer_export",substr($jb,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$gc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$Wc=preg_match('~sql~',$_POST["format"]);if($Wc){echo"-- Adminer $ga ".$Eb[DRIVER]." dump\n\n";if($y=="sql"){echo"SET NAMES utf8; |
|
609 | 1335 | SET time_zone = '+00:00'; |
610 | 1336 | ".($_POST["data_style"]?"SET foreign_key_checks = 0; |
611 | 1337 | SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; |
612 | 1338 | ":"")." |
613 | -";$e->query("SET time_zone = '+00:00';");}}$If=$_POST["db_style"];$h=array(DB);if(DB==""){$h=$_POST["databases"];if(is_string($h))$h=explode("\n",rtrim(str_replace("\r","",$h),"\n"));}foreach((array)$h |
|
614 | -as$i){$b->dumpDatabase($i);if($e->select_db($i)){if($Wc&&preg_match('~CREATE~',$If)&&($g=$e->result("SHOW CREATE DATABASE ".idf_escape($i),1))){set_utf8mb4($g);if($If=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($i).";\n";echo"$g;\n";}if($Wc){if($If)echo |
|
615 | -use_sql($i).";\n\n";$le="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$if){foreach(get_rows("SHOW $if STATUS WHERE Db = ".q($i),null,"-- ")as$L){$g=remove_definer($e->result("SHOW CREATE $if ".idf_escape($L["Name"]),2));set_utf8mb4($g);$le.=($If!='DROP+CREATE'?"DROP $if IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$g;;\n\n";}}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$L){$g=remove_definer($e->result("SHOW CREATE EVENT ".idf_escape($L["Name"]),3));set_utf8mb4($g);$le.=($If!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$g;;\n\n";}}if($le)echo"DELIMITER ;;\n\n$le"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$Lg=array();foreach(table_status('',true)as$F=>$R){$Q=(DB==""||in_array($F,(array)$_POST["tables"]));$ob=(DB==""||in_array($F,(array)$_POST["data"]));if($Q||$ob){if($gc=="tar"){$ig=new |
|
616 | -TmpFile;ob_start(array($ig,'write'),1e5);}$b->dumpTable($F,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R))$Lg[]=$F;elseif($ob){$m=fields($F);$b->dumpData($F,$_POST["data_style"],"SELECT *".convert_fields($m,$m)." FROM ".table($F));}if($Wc&&$_POST["triggers"]&&$Q&&($qg=trigger_sql($F,$_POST["table_style"])))echo"\nDELIMITER ;;\n$qg\nDELIMITER ;\n";if($gc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$i/")."$F.csv",$ig);}elseif($Wc)echo"\n";}}foreach($Lg |
|
617 | -as$Kg)$b->dumpTable($Kg,$_POST["table_style"],1);if($gc=="tar")echo |
|
618 | -pack("x512");}}}if($Wc)echo"-- ".$e->result("SELECT NOW()")."\n";exit;}page_header('Export',$k,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo' |
|
1339 | +";$e->query("SET time_zone = '+00:00';");}}$If=$_POST["db_style"];$h=array(DB);if(DB==""){$h=$_POST["databases"];if(is_string($h)) { |
|
1340 | + $h=explode("\n",rtrim(str_replace("\r","",$h),"\n")); |
|
1341 | +} |
|
1342 | +}foreach((array)$h |
|
1343 | +as$i){$b->dumpDatabase($i);if($e->select_db($i)){if($Wc&&preg_match('~CREATE~',$If)&&($g=$e->result("SHOW CREATE DATABASE ".idf_escape($i),1))){set_utf8mb4($g);if($If=="DROP+CREATE") { |
|
1344 | + echo"DROP DATABASE IF EXISTS ".idf_escape($i).";\n"; |
|
1345 | +} |
|
1346 | +echo"$g;\n";}if($Wc){if($If) { |
|
1347 | + echo |
|
1348 | +use_sql($i).";\n\n"; |
|
1349 | +} |
|
1350 | +$le="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$if){foreach(get_rows("SHOW $if STATUS WHERE Db = ".q($i),null,"-- ")as$L){$g=remove_definer($e->result("SHOW CREATE $if ".idf_escape($L["Name"]),2));set_utf8mb4($g);$le.=($If!='DROP+CREATE'?"DROP $if IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$g;;\n\n";}}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$L){$g=remove_definer($e->result("SHOW CREATE EVENT ".idf_escape($L["Name"]),3));set_utf8mb4($g);$le.=($If!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$g;;\n\n";}}if($le) { |
|
1351 | + echo"DELIMITER ;;\n\n$le"."DELIMITER ;\n\n"; |
|
1352 | +} |
|
1353 | +}if($_POST["table_style"]||$_POST["data_style"]){$Lg=array();foreach(table_status('',true)as$F=>$R){$Q=(DB==""||in_array($F,(array)$_POST["tables"]));$ob=(DB==""||in_array($F,(array)$_POST["data"]));if($Q||$ob){if($gc=="tar"){$ig=new |
|
1354 | +TmpFile;ob_start(array($ig,'write'),1e5);}$b->dumpTable($F,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R)) { |
|
1355 | + $Lg[]=$F; |
|
1356 | +} elseif($ob){$m=fields($F);$b->dumpData($F,$_POST["data_style"],"SELECT *".convert_fields($m,$m)." FROM ".table($F));}if($Wc&&$_POST["triggers"]&&$Q&&($qg=trigger_sql($F,$_POST["table_style"]))) { |
|
1357 | + echo"\nDELIMITER ;;\n$qg\nDELIMITER ;\n"; |
|
1358 | +} |
|
1359 | +if($gc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$i/")."$F.csv",$ig);} elseif($Wc) { |
|
1360 | + echo"\n"; |
|
1361 | +} |
|
1362 | +}}foreach($Lg |
|
1363 | +as$Kg) { |
|
1364 | + $b->dumpTable($Kg,$_POST["table_style"],1); |
|
1365 | +} |
|
1366 | +if($gc=="tar") { |
|
1367 | + echo |
|
1368 | +pack("x512"); |
|
1369 | +} |
|
1370 | +}}}if($Wc) { |
|
1371 | + echo"-- ".$e->result("SELECT NOW()")."\n"; |
|
1372 | +} |
|
1373 | +exit;}page_header('Export',$k,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo' |
|
619 | 1374 | <form action="" method="post"> |
620 | 1375 | <table cellspacing="0"> |
621 | -';$sb=array('','USE','DROP+CREATE','CREATE');$Sf=array('','DROP+CREATE','CREATE');$pb=array('','TRUNCATE+INSERT','INSERT');if($y=="sql")$pb[]='INSERT+UPDATE';parse_str($_COOKIE["adminer_export"],$L);if(!$L)$L=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($L["events"])){$L["routines"]=$L["events"]=($_GET["dump"]=="");$L["triggers"]=$L["table_style"];}echo"<tr><th>".'Output'."<td>".html_select("output",$b->dumpOutput(),$L["output"],0)."\n";echo"<tr><th>".'Format'."<td>".html_select("format",$b->dumpFormat(),$L["format"],0)."\n";echo($y=="sqlite"?"":"<tr><th>".'Database'."<td>".html_select('db_style',$sb,$L["db_style"]).(support("routine")?checkbox("routines",1,$L["routines"],'Routines'):"").(support("event")?checkbox("events",1,$L["events"],'Events'):"")),"<tr><th>".'Tables'."<td>".html_select('table_style',$Sf,$L["table_style"]).checkbox("auto_increment",1,$L["auto_increment"],'Auto Increment').(support("trigger")?checkbox("triggers",1,$L["triggers"],'Triggers'):""),"<tr><th>".'Data'."<td>".html_select('data_style',$pb,$L["data_style"]),'</table> |
|
1376 | +';$sb=array('','USE','DROP+CREATE','CREATE');$Sf=array('','DROP+CREATE','CREATE');$pb=array('','TRUNCATE+INSERT','INSERT');if($y=="sql") { |
|
1377 | + $pb[]='INSERT+UPDATE'; |
|
1378 | +} |
|
1379 | +parse_str($_COOKIE["adminer_export"],$L);if(!$L) { |
|
1380 | + $L=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT"); |
|
1381 | +} |
|
1382 | +if(!isset($L["events"])){$L["routines"]=$L["events"]=($_GET["dump"]=="");$L["triggers"]=$L["table_style"];}echo"<tr><th>".'Output'."<td>".html_select("output",$b->dumpOutput(),$L["output"],0)."\n";echo"<tr><th>".'Format'."<td>".html_select("format",$b->dumpFormat(),$L["format"],0)."\n";echo($y=="sqlite"?"":"<tr><th>".'Database'."<td>".html_select('db_style',$sb,$L["db_style"]).(support("routine")?checkbox("routines",1,$L["routines"],'Routines'):"").(support("event")?checkbox("events",1,$L["events"],'Events'):"")),"<tr><th>".'Tables'."<td>".html_select('table_style',$Sf,$L["table_style"]).checkbox("auto_increment",1,$L["auto_increment"],'Auto Increment').(support("trigger")?checkbox("triggers",1,$L["triggers"],'Triggers'):""),"<tr><th>".'Data'."<td>".html_select('data_style',$pb,$L["data_style"]),'</table> |
|
622 | 1383 | <p><input type="submit" value="Export"> |
623 | 1384 | <input type="hidden" name="token" value="',$T,'"> |
624 | 1385 | |
625 | 1386 | <table cellspacing="0"> |
626 | 1387 | ';$Ge=array();if(DB!=""){$Na=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Na onclick='formCheck(this, /^tables\\[/);'>".'Tables'."</label>","<th style='text-align: right;'><label class='block'>".'Data'."<input type='checkbox' id='check-data'$Na onclick='formCheck(this, /^data\\[/);'></label>","</thead>\n";$Lg="";$Tf=tables_list();foreach($Tf |
627 | -as$F=>$U){$Fe=preg_replace('~_.*~','',$F);$Na=($a==""||$a==(substr($a,-1)=="%"?"$Fe%":$F));$Ie="<tr><td>".checkbox("tables[]",$F,$Na,$F,"checkboxClick(event, this); formUncheck('check-tables');","block");if($U!==null&&!preg_match('~table~i',$U))$Lg.="$Ie\n";else |
|
628 | -echo"$Ie<td align='right'><label class='block'><span id='Rows-".h($F)."'></span>".checkbox("data[]",$F,$Na,"","checkboxClick(event, this); formUncheck('check-data');")."</label>\n";$Ge[$Fe]++;}echo$Lg;if($Tf)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";}else{echo"<thead><tr><th style='text-align: left;'><label class='block'><input type='checkbox' id='check-databases'".($a==""?" checked":"")." onclick='formCheck(this, /^databases\\[/);'>".'Database'."</label></thead>\n";$h=$b->databases();if($h){foreach($h |
|
629 | -as$i){if(!information_schema($i)){$Fe=preg_replace('~_.*~','',$i);echo"<tr><td>".checkbox("databases[]",$i,$a==""||$a=="$Fe%",$i,"formUncheck('check-databases');","block")."\n";$Ge[$Fe]++;}}}else |
|
630 | -echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table> |
|
1388 | +as$F=>$U){$Fe=preg_replace('~_.*~','',$F);$Na=($a==""||$a==(substr($a,-1)=="%"?"$Fe%":$F));$Ie="<tr><td>".checkbox("tables[]",$F,$Na,$F,"checkboxClick(event, this); formUncheck('check-tables');","block");if($U!==null&&!preg_match('~table~i',$U)) { |
|
1389 | + $Lg.="$Ie\n"; |
|
1390 | +} else { |
|
1391 | + echo"$Ie<td align='right'><label class='block'><span id='Rows-".h($F)."'></span>".checkbox("data[]",$F,$Na,"","checkboxClick(event, this); formUncheck('check-data');")."</label>\n"; |
|
1392 | +} |
|
1393 | +$Ge[$Fe]++;}echo$Lg;if($Tf) { |
|
1394 | + echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n"; |
|
1395 | +} |
|
1396 | +} else{echo"<thead><tr><th style='text-align: left;'><label class='block'><input type='checkbox' id='check-databases'".($a==""?" checked":"")." onclick='formCheck(this, /^databases\\[/);'>".'Database'."</label></thead>\n";$h=$b->databases();if($h){foreach($h |
|
1397 | +as$i){if(!information_schema($i)){$Fe=preg_replace('~_.*~','',$i);echo"<tr><td>".checkbox("databases[]",$i,$a==""||$a=="$Fe%",$i,"formUncheck('check-databases');","block")."\n";$Ge[$Fe]++;}}} else { |
|
1398 | + echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>"; |
|
1399 | +} |
|
1400 | +}echo'</table> |
|
631 | 1401 | </form> |
632 | 1402 | ';$pc=true;foreach($Ge |
633 | -as$z=>$X){if($z!=""&&$X>1){echo($pc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$z%")."'>".h($z)."</a>";$pc=false;}}}elseif(isset($_GET["privileges"])){page_header('Privileges');$J=$e->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$r=$J;if(!$J)$J=$e->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"<form action=''><p>\n";hidden_fields_get();echo"<input type='hidden' name='db' value='".h(DB)."'>\n",($r?"":"<input type='hidden' name='grant' value=''>\n"),"<table cellspacing='0'>\n","<thead><tr><th>".'Username'."<th>".'Server'."<th> </thead>\n";while($L=$J->fetch_assoc())echo'<tr'.odd().'><td>'.h($L["User"])."<td>".h($L["Host"]).'<td><a href="'.h(ME.'user='.urlencode($L["User"]).'&host='.urlencode($L["Host"])).'">'.'Edit'."</a>\n";if(!$r||DB!="")echo"<tr".odd()."><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".'Edit'."'>\n";echo"</table>\n","</form>\n",'<p class="links"><a href="'.h(ME).'user=">'.'Create user'."</a>";}elseif(isset($_GET["sql"])){if(!$k&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$Fc=&get_session("queries");$Ec=&$Fc[DB];if(!$k&&$_POST["clear"]){$Ec=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?'Import':'SQL command'),$k);if(!$k&&$_POST){$p=false;if(!isset($_GET["import"]))$I=$_POST["query"];elseif($_POST["webfile"]){$p=@fopen((file_exists("adminer.sql")?"adminer.sql":"compress.zlib://adminer.sql.gz"),"rb");$I=($p?fread($p,1e6):false);}else$I=get_file("sql_file",true);if(is_string($I)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($I)+memory_get_usage()+8e6));if($I!=""&&strlen($I)<1e6){$H=$I.(preg_match("~;[ \t\r\n]*\$~",$I)?"":";");if(!$Ec||reset(end($Ec))!=$H){restart_session();$Ec[]=array($H,time());set_session("queries",$Fc);stop_session();}}$Af="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$wb=";";$Od=0;$Sb=true;$f=connect();if(is_object($f)&&DB!="")$f->select_db(DB);$ab=0;$Xb=array();$qe='[\'"'.($y=="sql"?'`#':($y=="sqlite"?'`[':($y=="mssql"?'[':''))).']|/\\*|-- |$'.($y=="pgsql"?'|\\$[^$]*\\$':'');$lg=microtime(true);parse_str($_COOKIE["adminer_export"],$la);$Jb=$b->dumpFormat();unset($Jb["sql"]);while($I!=""){if(!$Od&&preg_match("~^$Af*+DELIMITER\\s+(\\S+)~i",$I,$C)){$wb=$C[1];$I=substr($I,strlen($C[0]));}else{preg_match('('.preg_quote($wb)."\\s*|$qe)",$I,$C,PREG_OFFSET_CAPTURE,$Od);list($uc,$Be)=$C[0];if(!$uc&&$p&&!feof($p))$I.=fread($p,1e5);else{if(!$uc&&rtrim($I)=="")break;$Od=$Be+strlen($uc);if($uc&&rtrim($uc)!=$wb){while(preg_match('('.($uc=='/*'?'\\*/':($uc=='['?']':(preg_match('~^-- |^#~',$uc)?"\n":preg_quote($uc)."|\\\\."))).'|$)s',$I,$C,PREG_OFFSET_CAPTURE,$Od)){$lf=$C[0][0];if(!$lf&&$p&&!feof($p))$I.=fread($p,1e5);else{$Od=$C[0][1]+strlen($lf);if($lf[0]!="\\")break;}}}else{$Sb=false;$H=substr($I,0,$Be);$ab++;$Ie="<pre id='sql-$ab'><code class='jush-$y'>".shorten_utf8(trim($H),1000)."</code></pre>\n";if($y=="sqlite"&&preg_match("~^$Af*+ATTACH\\b~i",$H,$C)){echo$Ie,"<p class='error'>".'ATTACH queries are not supported.'."\n";$Xb[]=" <a href='#sql-$ab'>$ab</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Ie;ob_flush();flush();}$Cf=microtime(true);if($e->multi_query($H)&&is_object($f)&&preg_match("~^$Af*+USE\\b~i",$H))$f->query($H);do{$J=$e->store_result();$bg=" <span class='time'>(".format_time($Cf).")</span>".(strlen($H)<1000?" <a href='".h(ME)."sql=".urlencode(trim($H))."'>".'Edit'."</a>":"");if($e->error){echo($_POST["only_errors"]?$Ie:""),"<p class='error'>".'Error in query'.($e->errno?" ($e->errno)":"").": ".error()."\n";$Xb[]=" <a href='#sql-$ab'>$ab</a>";if($_POST["error_stops"])break |
|
634 | -2;}elseif(is_object($J)){$_=$_POST["limit"];$ge=select($J,$f,array(),$_);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$Ld=$J->num_rows;echo"<p>".($Ld?($_&&$Ld>$_?sprintf('%d / ',$_):"").lang(array('%d row','%d rows'),$Ld):""),$bg;$u="export-$ab";$fc=", <a href='#$u' onclick=\"return !toggle('$u');\">".'Export'."</a><span id='$u' class='hidden'>: ".html_select("output",$b->dumpOutput(),$la["output"])." ".html_select("format",$Jb,$la["format"])."<input type='hidden' name='query' value='".h($H)."'>"." <input type='submit' name='export' value='".'Export'."'><input type='hidden' name='token' value='$T'></span>\n";if($f&&preg_match("~^($Af|\\()*+SELECT\\b~i",$H)&&($ec=explain($f,$H))){$u="explain-$ab";echo", <a href='#$u' onclick=\"return !toggle('$u');\">EXPLAIN</a>$fc","<div id='$u' class='hidden'>\n";select($ec,$f,$ge);echo"</div>\n";}else |
|
635 | -echo$fc;echo"</form>\n";}}else{if(preg_match("~^$Af*+(CREATE|DROP|ALTER)$Af++(DATABASE|SCHEMA)\\b~i",$H)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h($e->info)."'>".lang(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$e->affected_rows)."$bg\n";}$Cf=microtime(true);}while($e->next_result());}$I=substr($I,$Od);$Od=0;}}}}if($Sb)echo"<p class='message'>".'No commands to execute.'."\n";elseif($_POST["only_errors"]){echo"<p class='message'>".lang(array('%d query executed OK.','%d queries executed OK.'),$ab-count($Xb))," <span class='time'>(".format_time($lg).")</span>\n";}elseif($Xb&&$ab>1)echo"<p class='error'>".'Error in query'.": ".implode("",$Xb)."\n";}else |
|
636 | -echo"<p class='error'>".upload_error($I)."\n";}echo' |
|
1403 | +as$z=>$X){if($z!=""&&$X>1){echo($pc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$z%")."'>".h($z)."</a>";$pc=false;}}} elseif(isset($_GET["privileges"])){page_header('Privileges');$J=$e->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$r=$J;if(!$J) { |
|
1404 | + $J=$e->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host"); |
|
1405 | +} |
|
1406 | +echo"<form action=''><p>\n";hidden_fields_get();echo"<input type='hidden' name='db' value='".h(DB)."'>\n",($r?"":"<input type='hidden' name='grant' value=''>\n"),"<table cellspacing='0'>\n","<thead><tr><th>".'Username'."<th>".'Server'."<th> </thead>\n";while($L=$J->fetch_assoc()) { |
|
1407 | + echo'<tr'.odd().'><td>'.h($L["User"])."<td>".h($L["Host"]).'<td><a href="'.h(ME.'user='.urlencode($L["User"]).'&host='.urlencode($L["Host"])).'">'.'Edit'."</a>\n"; |
|
1408 | +} |
|
1409 | +if(!$r||DB!="") { |
|
1410 | + echo"<tr".odd()."><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".'Edit'."'>\n"; |
|
1411 | +} |
|
1412 | +echo"</table>\n","</form>\n",'<p class="links"><a href="'.h(ME).'user=">'.'Create user'."</a>";} elseif(isset($_GET["sql"])){if(!$k&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$Fc=&get_session("queries");$Ec=&$Fc[DB];if(!$k&&$_POST["clear"]){$Ec=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?'Import':'SQL command'),$k);if(!$k&&$_POST){$p=false;if(!isset($_GET["import"])) { |
|
1413 | + $I=$_POST["query"]; |
|
1414 | +} elseif($_POST["webfile"]){$p=@fopen((file_exists("adminer.sql")?"adminer.sql":"compress.zlib://adminer.sql.gz"),"rb");$I=($p?fread($p,1e6):false);} else { |
|
1415 | + $I=get_file("sql_file",true); |
|
1416 | +} |
|
1417 | +if(is_string($I)){if(function_exists('memory_get_usage')) { |
|
1418 | + @ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($I)+memory_get_usage()+8e6)); |
|
1419 | +} |
|
1420 | +if($I!=""&&strlen($I)<1e6){$H=$I.(preg_match("~;[ \t\r\n]*\$~",$I)?"":";");if(!$Ec||reset(end($Ec))!=$H){restart_session();$Ec[]=array($H,time());set_session("queries",$Fc);stop_session();}}$Af="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$wb=";";$Od=0;$Sb=true;$f=connect();if(is_object($f)&&DB!="") { |
|
1421 | + $f->select_db(DB); |
|
1422 | +} |
|
1423 | +$ab=0;$Xb=array();$qe='[\'"'.($y=="sql"?'`#':($y=="sqlite"?'`[':($y=="mssql"?'[':''))).']|/\\*|-- |$'.($y=="pgsql"?'|\\$[^$]*\\$':'');$lg=microtime(true);parse_str($_COOKIE["adminer_export"],$la);$Jb=$b->dumpFormat();unset($Jb["sql"]);while($I!=""){if(!$Od&&preg_match("~^$Af*+DELIMITER\\s+(\\S+)~i",$I,$C)){$wb=$C[1];$I=substr($I,strlen($C[0]));} else{preg_match('('.preg_quote($wb)."\\s*|$qe)",$I,$C,PREG_OFFSET_CAPTURE,$Od);list($uc,$Be)=$C[0];if(!$uc&&$p&&!feof($p)) { |
|
1424 | + $I.=fread($p,1e5); |
|
1425 | +} else{if(!$uc&&rtrim($I)=="") { |
|
1426 | + break; |
|
1427 | +} |
|
1428 | +$Od=$Be+strlen($uc);if($uc&&rtrim($uc)!=$wb){while(preg_match('('.($uc=='/*'?'\\*/':($uc=='['?']':(preg_match('~^-- |^#~',$uc)?"\n":preg_quote($uc)."|\\\\."))).'|$)s',$I,$C,PREG_OFFSET_CAPTURE,$Od)){$lf=$C[0][0];if(!$lf&&$p&&!feof($p)) { |
|
1429 | + $I.=fread($p,1e5); |
|
1430 | +} else{$Od=$C[0][1]+strlen($lf);if($lf[0]!="\\") { |
|
1431 | + break; |
|
1432 | +} |
|
1433 | +}}} else{$Sb=false;$H=substr($I,0,$Be);$ab++;$Ie="<pre id='sql-$ab'><code class='jush-$y'>".shorten_utf8(trim($H),1000)."</code></pre>\n";if($y=="sqlite"&&preg_match("~^$Af*+ATTACH\\b~i",$H,$C)){echo$Ie,"<p class='error'>".'ATTACH queries are not supported.'."\n";$Xb[]=" <a href='#sql-$ab'>$ab</a>";if($_POST["error_stops"]) { |
|
1434 | + break; |
|
1435 | +} |
|
1436 | +} else{if(!$_POST["only_errors"]){echo$Ie;ob_flush();flush();}$Cf=microtime(true);if($e->multi_query($H)&&is_object($f)&&preg_match("~^$Af*+USE\\b~i",$H)) { |
|
1437 | + $f->query($H); |
|
1438 | +} |
|
1439 | +do{$J=$e->store_result();$bg=" <span class='time'>(".format_time($Cf).")</span>".(strlen($H)<1000?" <a href='".h(ME)."sql=".urlencode(trim($H))."'>".'Edit'."</a>":"");if($e->error){echo($_POST["only_errors"]?$Ie:""),"<p class='error'>".'Error in query'.($e->errno?" ($e->errno)":"").": ".error()."\n";$Xb[]=" <a href='#sql-$ab'>$ab</a>";if($_POST["error_stops"]) { |
|
1440 | + break |
|
1441 | +2; |
|
1442 | +} |
|
1443 | +} elseif(is_object($J)){$_=$_POST["limit"];$ge=select($J,$f,array(),$_);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$Ld=$J->num_rows;echo"<p>".($Ld?($_&&$Ld>$_?sprintf('%d / ',$_):"").lang(array('%d row','%d rows'),$Ld):""),$bg;$u="export-$ab";$fc=", <a href='#$u' onclick=\"return !toggle('$u');\">".'Export'."</a><span id='$u' class='hidden'>: ".html_select("output",$b->dumpOutput(),$la["output"])." ".html_select("format",$Jb,$la["format"])."<input type='hidden' name='query' value='".h($H)."'>"." <input type='submit' name='export' value='".'Export'."'><input type='hidden' name='token' value='$T'></span>\n";if($f&&preg_match("~^($Af|\\()*+SELECT\\b~i",$H)&&($ec=explain($f,$H))){$u="explain-$ab";echo", <a href='#$u' onclick=\"return !toggle('$u');\">EXPLAIN</a>$fc","<div id='$u' class='hidden'>\n";select($ec,$f,$ge);echo"</div>\n";} else { |
|
1444 | + echo$fc; |
|
1445 | +} |
|
1446 | +echo"</form>\n";}} else{if(preg_match("~^$Af*+(CREATE|DROP|ALTER)$Af++(DATABASE|SCHEMA)\\b~i",$H)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"]) { |
|
1447 | + echo"<p class='message' title='".h($e->info)."'>".lang(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$e->affected_rows)."$bg\n"; |
|
1448 | +} |
|
1449 | +}$Cf=microtime(true);}while($e->next_result());}$I=substr($I,$Od);$Od=0;}}}}if($Sb) { |
|
1450 | + echo"<p class='message'>".'No commands to execute.'."\n"; |
|
1451 | +} elseif($_POST["only_errors"]){echo"<p class='message'>".lang(array('%d query executed OK.','%d queries executed OK.'),$ab-count($Xb))," <span class='time'>(".format_time($lg).")</span>\n";} elseif($Xb&&$ab>1) { |
|
1452 | + echo"<p class='error'>".'Error in query'.": ".implode("",$Xb)."\n"; |
|
1453 | +} |
|
1454 | +} else { |
|
1455 | + echo"<p class='error'>".upload_error($I)."\n"; |
|
1456 | +} |
|
1457 | +}echo' |
|
637 | 1458 | <form action="" method="post" enctype="multipart/form-data" id="form"> |
638 | -';$cc="<input type='submit' value='".'Execute'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$H=$_GET["sql"];if($_POST)$H=$_POST["query"];elseif($_GET["history"]=="all")$H=$Ec;elseif($_GET["history"]!="")$H=$Ec[$_GET["history"]][0];echo"<p>";textarea("query",$H,20);echo($_POST?"":"<script type='text/javascript'>focus(document.getElementsByTagName('textarea')[0]);</script>\n"),"<p>$cc\n",'Limit rows'.": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{echo"<fieldset><legend>".'File upload'."</legend><div>",(ini_bool("file_uploads")?"SQL (< ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$cc":'File uploads are disabled.'),"</div></fieldset>\n","<fieldset><legend>".'From server'."</legend><div>",sprintf('Webserver file %s',"<code>adminer.sql".(extension_loaded("zlib")?"[.gz]":"")."</code>"),' <input type="submit" name="webfile" value="'.'Run file'.'">',"</div></fieldset>\n","<p>";}echo |
|
1459 | +';$cc="<input type='submit' value='".'Execute'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$H=$_GET["sql"];if($_POST) { |
|
1460 | + $H=$_POST["query"]; |
|
1461 | +} elseif($_GET["history"]=="all") { |
|
1462 | + $H=$Ec; |
|
1463 | +} elseif($_GET["history"]!="") { |
|
1464 | + $H=$Ec[$_GET["history"]][0]; |
|
1465 | +} |
|
1466 | +echo"<p>";textarea("query",$H,20);echo($_POST?"":"<script type='text/javascript'>focus(document.getElementsByTagName('textarea')[0]);</script>\n"),"<p>$cc\n",'Limit rows'.": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";} else{echo"<fieldset><legend>".'File upload'."</legend><div>",(ini_bool("file_uploads")?"SQL (< ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$cc":'File uploads are disabled.'),"</div></fieldset>\n","<fieldset><legend>".'From server'."</legend><div>",sprintf('Webserver file %s',"<code>adminer.sql".(extension_loaded("zlib")?"[.gz]":"")."</code>"),' <input type="submit" name="webfile" value="'.'Run file'.'">',"</div></fieldset>\n","<p>";}echo |
|
639 | 1467 | checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])),'Stop on error')."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])),'Show only errors')."\n","<input type='hidden' name='token' value='$T'>\n";if(!isset($_GET["import"])&&$Ec){print_fieldset("history",'History',$_GET["history"]!="");for($X=end($Ec);$X;$X=prev($Ec)){$z=key($Ec);list($H,$bg,$Nb)=$X;echo'<a href="'.h(ME."sql=&history=$z").'">'.'Edit'."</a>"." <span class='time' title='".@date('Y-m-d',$bg)."'>".@date("H:i:s",$bg)."</span>"." <code class='jush-$y'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$H)))),80,"</code>").($Nb?" <span class='time'>($Nb)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".'Clear'."'>\n","<a href='".h(ME."sql=&history=all")."'>".'Edit all'."</a>\n","</div></fieldset>\n";}echo'</form> |
640 | -';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Z=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$Ag=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($m |
|
641 | -as$F=>$l){if(!isset($l["privileges"][$Ag?"update":"insert"])||$b->fieldName($l)=="")unset($m[$F]);}if($_POST&&!$k&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"])$B=($Ag?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$B))$B=ME."select=".urlencode($a);$w=indexes($a);$wg=unique_array($_GET["where"],$w);$Re="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($B,'Item has been deleted.',$j->delete($a,$Re,!$wg));else{$P=array();foreach($m |
|
642 | -as$F=>$l){$X=process_input($l);if($X!==false&&$X!==null)$P[idf_escape($F)]=$X;}if($Ag){if(!$P)redirect($B);queries_redirect($B,'Item has been updated.',$j->update($a,$P,$Re,!$wg));if(is_ajax()){page_headers();page_messages($k);exit;}}else{$J=$j->insert($a,$P);$gd=($J?last_id():0);queries_redirect($B,sprintf('Item%s has been inserted.',($gd?" $gd":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Z){$N=array();foreach($m |
|
643 | -as$F=>$l){if(isset($l["privileges"]["select"])){$ua=convert_field($l);if($_POST["clone"]&&$l["auto_increment"])$ua="''";if($y=="sql"&&preg_match("~enum|set~",$l["type"]))$ua="1*".idf_escape($F);$N[]=($ua?"$ua AS ":"").idf_escape($F);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$j->select($a,$N,array($Z),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L)$L=false;if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$m){if(!$Z){$J=$j->select($a,array("*"),$Z,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($j->primary=>"");}if($L){foreach($L |
|
644 | -as$z=>$X){if(!$Z)$L[$z]=null;$m[$z]=array("field"=>$z,"null"=>($z!=$j->primary),"auto_increment"=>($z==$j->primary));}}}edit_form($a,$m,$L,$Ag);}elseif(isset($_GET["create"])){$a=$_GET["create"];$re=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$z)$re[$z]=$z;$Xe=referencable_primary($a);$o=array();foreach($Xe |
|
645 | -as$Pf=>$l)$o[str_replace("`","``",$Pf)."`".str_replace("`","``",$l["field"])]=$Pf;$je=array();$R=array();if($a!=""){$je=fields($a);$R=table_status($a);if(!$R)$k='No tables.';}$L=$_POST;$L["fields"]=(array)$L["fields"];if($L["auto_increment_col"])$L["fields"][$L["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!process_fields($L["fields"])&&!$k){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Table has been dropped.',drop_tables(array($a)));else{$m=array();$ra=array();$Dg=false;$rc=array();ksort($L["fields"]);$ie=reset($je);$pa=" FIRST";foreach($L["fields"]as$z=>$l){$n=$o[$l["type"]];$rg=($n!==null?$Xe[$n]:$l);if($l["field"]!=""){if(!$l["has_default"])$l["default"]=null;if($z==$L["auto_increment_col"])$l["auto_increment"]=true;$Ne=process_field($l,$rg);$ra[]=array($l["orig"],$Ne,$pa);if($Ne!=process_field($ie,$ie)){$m[]=array($l["orig"],$Ne,$pa);if($l["orig"]!=""||$pa)$Dg=true;}if($n!==null)$rc[idf_escape($l["field"])]=($a!=""&&$y!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$o[$l["type"]],'source'=>array($l["field"]),'target'=>array($rg["field"]),'on_delete'=>$l["on_delete"],));$pa=" AFTER ".idf_escape($l["field"]);}elseif($l["orig"]!=""){$Dg=true;$m[]=array($l["orig"]);}if($l["orig"]!=""){$ie=next($je);if(!$ie)$pa="";}}$te="";if($re[$L["partition_by"]]){$ue=array();if($L["partition_by"]=='RANGE'||$L["partition_by"]=='LIST'){foreach(array_filter($L["partition_names"])as$z=>$X){$Y=$L["partition_values"][$z];$ue[]="\n PARTITION ".idf_escape($X)." VALUES ".($L["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$te.="\nPARTITION BY $L[partition_by]($L[partition])".($ue?" (".implode(",",$ue)."\n)":($L["partitions"]?" PARTITIONS ".(+$L["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$R["Create_options"]))$te.="\nREMOVE PARTITIONING";$D='Table has been altered.';if($a==""){cookie("adminer_engine",$L["Engine"]);$D='Table has been created.';}$F=trim($L["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($F),$D,alter_table($a,$F,($y=="sqlite"&&($Dg||$rc)?$ra:$m),$rc,($L["Comment"]!=$R["Comment"]?$L["Comment"]:null),($L["Engine"]&&$L["Engine"]!=$R["Engine"]?$L["Engine"]:""),($L["Collation"]&&$L["Collation"]!=$R["Collation"]?$L["Collation"]:""),($L["Auto_increment"]!=""?number($L["Auto_increment"]):""),$te));}}page_header(($a!=""?'Alter table':'Create table'),$k,array("table"=>$a),h($a));if(!$_POST){$L=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($tg["int"])?"int":(isset($tg["integer"])?"integer":"")))),"partition_names"=>array(""),);if($a!=""){$L=$R;$L["name"]=$a;$L["fields"]=array();if(!$_GET["auto_increment"])$L["Auto_increment"]="";foreach($je |
|
1468 | +';} elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Z=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$Ag=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($m |
|
1469 | +as$F=>$l){if(!isset($l["privileges"][$Ag?"update":"insert"])||$b->fieldName($l)=="") { |
|
1470 | + unset($m[$F]); |
|
1471 | +} |
|
1472 | +}if($_POST&&!$k&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"]) { |
|
1473 | + $B=($Ag?null:$_SERVER["REQUEST_URI"]); |
|
1474 | +} elseif(!preg_match('~^.+&select=.+$~',$B)) { |
|
1475 | + $B=ME."select=".urlencode($a); |
|
1476 | +} |
|
1477 | +$w=indexes($a);$wg=unique_array($_GET["where"],$w);$Re="\nWHERE $Z";if(isset($_POST["delete"])) { |
|
1478 | + queries_redirect($B,'Item has been deleted.',$j->delete($a,$Re,!$wg)); |
|
1479 | +} else{$P=array();foreach($m |
|
1480 | +as$F=>$l){$X=process_input($l);if($X!==false&&$X!==null) { |
|
1481 | + $P[idf_escape($F)]=$X; |
|
1482 | +} |
|
1483 | +}if($Ag){if(!$P) { |
|
1484 | + redirect($B); |
|
1485 | +} |
|
1486 | +queries_redirect($B,'Item has been updated.',$j->update($a,$P,$Re,!$wg));if(is_ajax()){page_headers();page_messages($k);exit;}} else{$J=$j->insert($a,$P);$gd=($J?last_id():0);queries_redirect($B,sprintf('Item%s has been inserted.',($gd?" $gd":"")),$J);}}}$L=null;if($_POST["save"]) { |
|
1487 | + $L=(array)$_POST["fields"]; |
|
1488 | +} elseif($Z){$N=array();foreach($m |
|
1489 | +as$F=>$l){if(isset($l["privileges"]["select"])){$ua=convert_field($l);if($_POST["clone"]&&$l["auto_increment"]) { |
|
1490 | + $ua="''"; |
|
1491 | +} |
|
1492 | +if($y=="sql"&&preg_match("~enum|set~",$l["type"])) { |
|
1493 | + $ua="1*".idf_escape($F); |
|
1494 | +} |
|
1495 | +$N[]=($ua?"$ua AS ":"").idf_escape($F);}}$L=array();if(!support("table")) { |
|
1496 | + $N=array("*"); |
|
1497 | +} |
|
1498 | +if($N){$J=$j->select($a,$N,array($Z),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L) { |
|
1499 | + $L=false; |
|
1500 | +} |
|
1501 | +if(isset($_GET["select"])&&(!$L||$J->fetch_assoc())) { |
|
1502 | + $L=null; |
|
1503 | +} |
|
1504 | +}}if(!support("table")&&!$m){if(!$Z){$J=$j->select($a,array("*"),$Z,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L) { |
|
1505 | + $L=array($j->primary=>""); |
|
1506 | +} |
|
1507 | +}if($L){foreach($L |
|
1508 | +as$z=>$X){if(!$Z) { |
|
1509 | + $L[$z]=null; |
|
1510 | +} |
|
1511 | +$m[$z]=array("field"=>$z,"null"=>($z!=$j->primary),"auto_increment"=>($z==$j->primary));}}}edit_form($a,$m,$L,$Ag);} elseif(isset($_GET["create"])){$a=$_GET["create"];$re=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$z) { |
|
1512 | + $re[$z]=$z; |
|
1513 | +} |
|
1514 | +$Xe=referencable_primary($a);$o=array();foreach($Xe |
|
1515 | +as$Pf=>$l) { |
|
1516 | + $o[str_replace("`","``",$Pf)."`".str_replace("`","``",$l["field"])]=$Pf; |
|
1517 | +} |
|
1518 | +$je=array();$R=array();if($a!=""){$je=fields($a);$R=table_status($a);if(!$R) { |
|
1519 | + $k='No tables.'; |
|
1520 | +} |
|
1521 | +}$L=$_POST;$L["fields"]=(array)$L["fields"];if($L["auto_increment_col"]) { |
|
1522 | + $L["fields"][$L["auto_increment_col"]]["auto_increment"]=true; |
|
1523 | +} |
|
1524 | +if($_POST&&!process_fields($L["fields"])&&!$k){if($_POST["drop"]) { |
|
1525 | + queries_redirect(substr(ME,0,-1),'Table has been dropped.',drop_tables(array($a))); |
|
1526 | +} else{$m=array();$ra=array();$Dg=false;$rc=array();ksort($L["fields"]);$ie=reset($je);$pa=" FIRST";foreach($L["fields"]as$z=>$l){$n=$o[$l["type"]];$rg=($n!==null?$Xe[$n]:$l);if($l["field"]!=""){if(!$l["has_default"]) { |
|
1527 | + $l["default"]=null; |
|
1528 | +} |
|
1529 | +if($z==$L["auto_increment_col"]) { |
|
1530 | + $l["auto_increment"]=true; |
|
1531 | +} |
|
1532 | +$Ne=process_field($l,$rg);$ra[]=array($l["orig"],$Ne,$pa);if($Ne!=process_field($ie,$ie)){$m[]=array($l["orig"],$Ne,$pa);if($l["orig"]!=""||$pa) { |
|
1533 | + $Dg=true; |
|
1534 | +} |
|
1535 | +}if($n!==null) { |
|
1536 | + $rc[idf_escape($l["field"])]=($a!=""&&$y!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$o[$l["type"]],'source'=>array($l["field"]),'target'=>array($rg["field"]),'on_delete'=>$l["on_delete"],)); |
|
1537 | +} |
|
1538 | +$pa=" AFTER ".idf_escape($l["field"]);} elseif($l["orig"]!=""){$Dg=true;$m[]=array($l["orig"]);}if($l["orig"]!=""){$ie=next($je);if(!$ie) { |
|
1539 | + $pa=""; |
|
1540 | +} |
|
1541 | +}}$te="";if($re[$L["partition_by"]]){$ue=array();if($L["partition_by"]=='RANGE'||$L["partition_by"]=='LIST'){foreach(array_filter($L["partition_names"])as$z=>$X){$Y=$L["partition_values"][$z];$ue[]="\n PARTITION ".idf_escape($X)." VALUES ".($L["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$te.="\nPARTITION BY $L[partition_by]($L[partition])".($ue?" (".implode(",",$ue)."\n)":($L["partitions"]?" PARTITIONS ".(+$L["partitions"]):""));} elseif(support("partitioning")&&preg_match("~partitioned~",$R["Create_options"])) { |
|
1542 | + $te.="\nREMOVE PARTITIONING"; |
|
1543 | +} |
|
1544 | +$D='Table has been altered.';if($a==""){cookie("adminer_engine",$L["Engine"]);$D='Table has been created.';}$F=trim($L["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($F),$D,alter_table($a,$F,($y=="sqlite"&&($Dg||$rc)?$ra:$m),$rc,($L["Comment"]!=$R["Comment"]?$L["Comment"]:null),($L["Engine"]&&$L["Engine"]!=$R["Engine"]?$L["Engine"]:""),($L["Collation"]&&$L["Collation"]!=$R["Collation"]?$L["Collation"]:""),($L["Auto_increment"]!=""?number($L["Auto_increment"]):""),$te));}}page_header(($a!=""?'Alter table':'Create table'),$k,array("table"=>$a),h($a));if(!$_POST){$L=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($tg["int"])?"int":(isset($tg["integer"])?"integer":"")))),"partition_names"=>array(""),);if($a!=""){$L=$R;$L["name"]=$a;$L["fields"]=array();if(!$_GET["auto_increment"]) { |
|
1545 | + $L["Auto_increment"]=""; |
|
1546 | +} |
|
1547 | +foreach($je |
|
646 | 1548 | as$l){$l["has_default"]=isset($l["default"]);$L["fields"][]=$l;}if(support("partitioning")){$wc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$J=$e->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $wc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($L["partition_by"],$L["partitions"],$L["partition"])=$J->fetch_row();$ue=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $wc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$ue[""]="";$L["partition_names"]=array_keys($ue);$L["partition_values"]=array_values($ue);}}}$Xa=collations();$Ub=engines();foreach($Ub |
647 | 1549 | as$Tb){if(!strcasecmp($Tb,$L["Engine"])){$L["Engine"]=$Tb;break;}}echo' |
648 | 1550 | <form action="" method="post" id="form"> |
@@ -666,8 +1568,23 @@ discard block |
||
666 | 1568 | </div></fieldset> |
667 | 1569 | ';}echo'<input type="hidden" name="token" value="',$T,'"> |
668 | 1570 | </form> |
669 | -';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Mc=array("PRIMARY","UNIQUE","INDEX");$R=table_status($a,true);if(preg_match('~MyISAM|M?aria'.($e->server_info>=5.6?'|InnoDB':'').'~i',$R["Engine"]))$Mc[]="FULLTEXT";$w=indexes($a);$He=array();if($y=="mongo"){$He=$w["_id_"];unset($Mc[0]);unset($w["_id_"]);}$L=$_POST;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["drop_col"]){$sa=array();foreach($L["indexes"]as$v){$F=$v["name"];if(in_array($v["type"],$Mc)){$d=array();$md=array();$yb=array();$P=array();ksort($v["columns"]);foreach($v["columns"]as$z=>$c){if($c!=""){$ld=$v["lengths"][$z];$xb=$v["descs"][$z];$P[]=idf_escape($c).($ld?"(".(+$ld).")":"").($xb?" DESC":"");$d[]=$c;$md[]=($ld?$ld:null);$yb[]=$xb;}}if($d){$dc=$w[$F];if($dc){ksort($dc["columns"]);ksort($dc["lengths"]);ksort($dc["descs"]);if($v["type"]==$dc["type"]&&array_values($dc["columns"])===$d&&(!$dc["lengths"]||array_values($dc["lengths"])===$md)&&array_values($dc["descs"])===$yb){unset($w[$F]);continue;}}$sa[]=array($v["type"],$F,$P);}}}foreach($w |
|
670 | -as$F=>$dc)$sa[]=array($dc["type"],$F,"DROP");if(!$sa)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$sa));}page_header('Indexes',$k,array("table"=>$a),h($a));$m=array_keys(fields($a));if($_POST["add"]){foreach($L["indexes"]as$z=>$v){if($v["columns"][count($v["columns"])]!="")$L["indexes"][$z]["columns"][]="";}$v=end($L["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$L["indexes"][]=array("columns"=>array(1=>""));}if(!$L){foreach($w |
|
1571 | +';} elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Mc=array("PRIMARY","UNIQUE","INDEX");$R=table_status($a,true);if(preg_match('~MyISAM|M?aria'.($e->server_info>=5.6?'|InnoDB':'').'~i',$R["Engine"])) { |
|
1572 | + $Mc[]="FULLTEXT"; |
|
1573 | +} |
|
1574 | +$w=indexes($a);$He=array();if($y=="mongo"){$He=$w["_id_"];unset($Mc[0]);unset($w["_id_"]);}$L=$_POST;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["drop_col"]){$sa=array();foreach($L["indexes"]as$v){$F=$v["name"];if(in_array($v["type"],$Mc)){$d=array();$md=array();$yb=array();$P=array();ksort($v["columns"]);foreach($v["columns"]as$z=>$c){if($c!=""){$ld=$v["lengths"][$z];$xb=$v["descs"][$z];$P[]=idf_escape($c).($ld?"(".(+$ld).")":"").($xb?" DESC":"");$d[]=$c;$md[]=($ld?$ld:null);$yb[]=$xb;}}if($d){$dc=$w[$F];if($dc){ksort($dc["columns"]);ksort($dc["lengths"]);ksort($dc["descs"]);if($v["type"]==$dc["type"]&&array_values($dc["columns"])===$d&&(!$dc["lengths"]||array_values($dc["lengths"])===$md)&&array_values($dc["descs"])===$yb){unset($w[$F]);continue;}}$sa[]=array($v["type"],$F,$P);}}}foreach($w |
|
1575 | +as$F=>$dc) { |
|
1576 | + $sa[]=array($dc["type"],$F,"DROP"); |
|
1577 | +} |
|
1578 | +if(!$sa) { |
|
1579 | + redirect(ME."table=".urlencode($a)); |
|
1580 | +} |
|
1581 | +queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$sa));}page_header('Indexes',$k,array("table"=>$a),h($a));$m=array_keys(fields($a));if($_POST["add"]){foreach($L["indexes"]as$z=>$v){if($v["columns"][count($v["columns"])]!="") { |
|
1582 | + $L["indexes"][$z]["columns"][]=""; |
|
1583 | +} |
|
1584 | +}$v=end($L["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen')) { |
|
1585 | + $L["indexes"][]=array("columns"=>array(1=>"")); |
|
1586 | +} |
|
1587 | +}if(!$L){foreach($w |
|
671 | 1588 | as$z=>$v){$w[$z]["name"]=$z;$w[$z]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$L["indexes"]=$w;}?> |
672 | 1589 | |
673 | 1590 | <form action="" method="post"> |
@@ -685,25 +1602,82 @@ discard block |
||
685 | 1602 | <input type="submit" value="Save"> |
686 | 1603 | <input type="hidden" name="token" value="',$T,'"> |
687 | 1604 | </form> |
688 | -';}elseif(isset($_GET["database"])){$L=$_POST;if($_POST&&!$k&&!isset($_POST["add_x"])){$F=trim($L["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Database has been dropped.',drop_databases(array(DB)));}elseif(DB!==$F){if(DB!=""){$_GET["db"]=$F;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($F),'Database has been renamed.',rename_database($F,$L["collation"]));}else{$h=explode("\n",str_replace("\r","",$F));$Jf=true;$fd="";foreach($h |
|
689 | -as$i){if(count($h)==1||$i!=""){if(!create_database($i,$L["collation"]))$Jf=false;$fd=$i;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($fd),'Database has been created.',$Jf);}}else{if(!$L["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($F).(preg_match('~^[a-z0-9_]+$~i',$L["collation"])?" COLLATE $L[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$k,array(),h(DB));$Xa=collations();$F=DB;if($_POST)$F=$L["name"];elseif(DB!="")$L["collation"]=db_collation(DB,$Xa);elseif($y=="sql"){foreach(get_vals("SHOW GRANTS")as$r){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~',$r,$C)&&$C[1]){$F=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo' |
|
1605 | +';} elseif(isset($_GET["database"])){$L=$_POST;if($_POST&&!$k&&!isset($_POST["add_x"])){$F=trim($L["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Database has been dropped.',drop_databases(array(DB)));} elseif(DB!==$F){if(DB!=""){$_GET["db"]=$F;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($F),'Database has been renamed.',rename_database($F,$L["collation"]));} else{$h=explode("\n",str_replace("\r","",$F));$Jf=true;$fd="";foreach($h |
|
1606 | +as$i){if(count($h)==1||$i!=""){if(!create_database($i,$L["collation"])) { |
|
1607 | + $Jf=false; |
|
1608 | +} |
|
1609 | +$fd=$i;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($fd),'Database has been created.',$Jf);}} else{if(!$L["collation"]) { |
|
1610 | + redirect(substr(ME,0,-1)); |
|
1611 | +} |
|
1612 | +query_redirect("ALTER DATABASE ".idf_escape($F).(preg_match('~^[a-z0-9_]+$~i',$L["collation"])?" COLLATE $L[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$k,array(),h(DB));$Xa=collations();$F=DB;if($_POST) { |
|
1613 | + $F=$L["name"]; |
|
1614 | +} elseif(DB!="") { |
|
1615 | + $L["collation"]=db_collation(DB,$Xa); |
|
1616 | +} elseif($y=="sql"){foreach(get_vals("SHOW GRANTS")as$r){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~',$r,$C)&&$C[1]){$F=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo' |
|
690 | 1617 | <form action="" method="post"> |
691 | 1618 | <p> |
692 | 1619 | ',($_POST["add_x"]||strpos($F,"\n")?'<textarea id="name" name="name" rows="10" cols="40">'.h($F).'</textarea><br>':'<input name="name" id="name" value="'.h($F).'" maxlength="64" autocapitalize="off">')."\n".($Xa?html_select("collation",array(""=>"(".'collation'.")")+$Xa,$L["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mssql'=>"ms187963.aspx",)):"");?> |
693 | 1620 | <script type='text/javascript'>focus(document.getElementById('name'));</script> |
694 | 1621 | <input type="submit" value="Save"> |
695 | 1622 | <?php |
696 | -if(DB!="")echo"<input type='submit' name='drop' value='".'Drop'."'".confirm().">\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"<input type='image' class='icon' name='add' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=4.2.5&driver=mysql' alt='+' title='".'Add next'."'>\n";echo'<input type="hidden" name="token" value="',$T,'"> |
|
1623 | +if(DB!="") { |
|
1624 | + echo"<input type='submit' name='drop' value='".'Drop'."'".confirm().">\n"; |
|
1625 | +} elseif(!$_POST["add_x"]&&$_GET["db"]=="") { |
|
1626 | + echo"<input type='image' class='icon' name='add' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=4.2.5&driver=mysql' alt='+' title='".'Add next'."'>\n"; |
|
1627 | +} |
|
1628 | +echo'<input type="hidden" name="token" value="',$T,'"> |
|
697 | 1629 | </form> |
698 | -';}elseif(isset($_GET["call"])){$da=$_GET["call"];page_header('Call'.": ".h($da),$k);$if=routine($da,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Lc=array();$le=array();foreach($if["fields"]as$t=>$l){if(substr($l["inout"],-3)=="OUT")$le[$t]="@".idf_escape($l["field"])." AS ".idf_escape($l["field"]);if(!$l["inout"]||substr($l["inout"],0,2)=="IN")$Lc[]=$t;}if(!$k&&$_POST){$Ja=array();foreach($if["fields"]as$z=>$l){if(in_array($z,$Lc)){$X=process_input($l);if($X===false)$X="''";if(isset($le[$z]))$e->query("SET @".idf_escape($l["field"])." = $X");}$Ja[]=(isset($le[$z])?"@".idf_escape($l["field"]):$X);}$I=(isset($_GET["callf"])?"SELECT":"CALL")." ".idf_escape($da)."(".implode(", ",$Ja).")";echo"<p><code class='jush-$y'>".h($I)."</code> <a href='".h(ME)."sql=".urlencode($I)."'>".'Edit'."</a>\n";if(!$e->multi_query($I))echo"<p class='error'>".error()."\n";else{$f=connect();if(is_object($f))$f->select_db(DB);do{$J=$e->store_result();if(is_object($J))select($J,$f);else |
|
699 | -echo"<p class='message'>".lang(array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),$e->affected_rows)."\n";}while($e->next_result());if($le)select($e->query("SELECT ".implode(", ",$le)));}}echo' |
|
1630 | +';} elseif(isset($_GET["call"])){$da=$_GET["call"];page_header('Call'.": ".h($da),$k);$if=routine($da,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Lc=array();$le=array();foreach($if["fields"]as$t=>$l){if(substr($l["inout"],-3)=="OUT") { |
|
1631 | + $le[$t]="@".idf_escape($l["field"])." AS ".idf_escape($l["field"]); |
|
1632 | +} |
|
1633 | +if(!$l["inout"]||substr($l["inout"],0,2)=="IN") { |
|
1634 | + $Lc[]=$t; |
|
1635 | +} |
|
1636 | +}if(!$k&&$_POST){$Ja=array();foreach($if["fields"]as$z=>$l){if(in_array($z,$Lc)){$X=process_input($l);if($X===false) { |
|
1637 | + $X="''"; |
|
1638 | +} |
|
1639 | +if(isset($le[$z])) { |
|
1640 | + $e->query("SET @".idf_escape($l["field"])." = $X"); |
|
1641 | +} |
|
1642 | +}$Ja[]=(isset($le[$z])?"@".idf_escape($l["field"]):$X);}$I=(isset($_GET["callf"])?"SELECT":"CALL")." ".idf_escape($da)."(".implode(", ",$Ja).")";echo"<p><code class='jush-$y'>".h($I)."</code> <a href='".h(ME)."sql=".urlencode($I)."'>".'Edit'."</a>\n";if(!$e->multi_query($I)) { |
|
1643 | + echo"<p class='error'>".error()."\n"; |
|
1644 | +} else{$f=connect();if(is_object($f)) { |
|
1645 | + $f->select_db(DB); |
|
1646 | +} |
|
1647 | +do{$J=$e->store_result();if(is_object($J)) { |
|
1648 | + select($J,$f); |
|
1649 | +} else { |
|
1650 | + echo"<p class='message'>".lang(array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),$e->affected_rows)."\n"; |
|
1651 | +} |
|
1652 | +}while($e->next_result());if($le) { |
|
1653 | + select($e->query("SELECT ".implode(", ",$le))); |
|
1654 | +} |
|
1655 | +}}echo' |
|
700 | 1656 | <form action="" method="post"> |
701 | 1657 | ';if($Lc){echo"<table cellspacing='0'>\n";foreach($Lc |
702 | -as$z){$l=$if["fields"][$z];$F=$l["field"];echo"<tr><th>".$b->fieldName($l);$Y=$_POST["fields"][$F];if($Y!=""){if($l["type"]=="enum")$Y=+$Y;if($l["type"]=="set")$Y=array_sum($Y);}input($l,$Y,(string)$_POST["function"][$F]);echo"\n";}echo"</table>\n";}echo'<p> |
|
1658 | +as$z){$l=$if["fields"][$z];$F=$l["field"];echo"<tr><th>".$b->fieldName($l);$Y=$_POST["fields"][$F];if($Y!=""){if($l["type"]=="enum") { |
|
1659 | + $Y=+$Y; |
|
1660 | +} |
|
1661 | +if($l["type"]=="set") { |
|
1662 | + $Y=array_sum($Y); |
|
1663 | +} |
|
1664 | +}input($l,$Y,(string)$_POST["function"][$F]);echo"\n";}echo"</table>\n";}echo'<p> |
|
703 | 1665 | <input type="submit" value="Call"> |
704 | 1666 | <input type="hidden" name="token" value="',$T,'"> |
705 | 1667 | </form> |
706 | -';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$F=$_GET["name"];$L=$_POST;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$D=($_POST["drop"]?'Foreign key has been dropped.':($F!=""?'Foreign key has been altered.':'Foreign key has been created.'));$B=ME."table=".urlencode($a);$L["source"]=array_filter($L["source"],'strlen');ksort($L["source"]);$Vf=array();foreach($L["source"]as$z=>$X)$Vf[$z]=$L["target"][$z];$L["target"]=$Vf;if($y=="sqlite")queries_redirect($B,$D,recreate_table($a,$a,array(),array(),array(" $F"=>($_POST["drop"]?"":" ".format_foreign_key($L)))));else{$sa="ALTER TABLE ".table($a);$Fb="\nDROP ".($y=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($F);if($_POST["drop"])query_redirect($sa.$Fb,$B,$D);else{query_redirect($sa.($F!=""?"$Fb,":"")."\nADD".format_foreign_key($L),$B,$D);$k='Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.'."<br>$k";}}}page_header('Foreign key',$k,array("table"=>$a),h($a));if($_POST){ksort($L["source"]);if($_POST["add"])$L["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$L["target"]=array();}elseif($F!=""){$o=foreign_keys($a);$L=$o[$F];$L["source"][]="";}else{$L["table"]=$a;$L["source"]=array("");}$_f=array_keys(fields($a));$Vf=($a===$L["table"]?$_f:array_keys(fields($L["table"])));$We=array_keys(array_filter(table_status('',true),'fk_support'));echo' |
|
1668 | +';} elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$F=$_GET["name"];$L=$_POST;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$D=($_POST["drop"]?'Foreign key has been dropped.':($F!=""?'Foreign key has been altered.':'Foreign key has been created.'));$B=ME."table=".urlencode($a);$L["source"]=array_filter($L["source"],'strlen');ksort($L["source"]);$Vf=array();foreach($L["source"]as$z=>$X) { |
|
1669 | + $Vf[$z]=$L["target"][$z]; |
|
1670 | +} |
|
1671 | +$L["target"]=$Vf;if($y=="sqlite") { |
|
1672 | + queries_redirect($B,$D,recreate_table($a,$a,array(),array(),array(" $F"=>($_POST["drop"]?"":" ".format_foreign_key($L))))); |
|
1673 | +} else{$sa="ALTER TABLE ".table($a);$Fb="\nDROP ".($y=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($F);if($_POST["drop"]) { |
|
1674 | + query_redirect($sa.$Fb,$B,$D); |
|
1675 | +} else{query_redirect($sa.($F!=""?"$Fb,":"")."\nADD".format_foreign_key($L),$B,$D);$k='Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.'."<br>$k";}}}page_header('Foreign key',$k,array("table"=>$a),h($a));if($_POST){ksort($L["source"]);if($_POST["add"]) { |
|
1676 | + $L["source"][]=""; |
|
1677 | +} elseif($_POST["change"]||$_POST["change-js"]) { |
|
1678 | + $L["target"]=array(); |
|
1679 | +} |
|
1680 | +} elseif($F!=""){$o=foreign_keys($a);$L=$o[$F];$L["source"][]="";} else{$L["table"]=$a;$L["source"]=array("");}$_f=array_keys(fields($a));$Vf=($a===$L["table"]?$_f:array_keys(fields($L["table"])));$We=array_keys(array_filter(table_status('',true),'fk_support'));echo' |
|
707 | 1681 | <form action="" method="post"> |
708 | 1682 | <p> |
709 | 1683 | ';if($L["db"]==""&&$L["ns"]==""){echo'Target table: |
@@ -718,14 +1692,23 @@ discard block |
||
718 | 1692 | <noscript><p><input type="submit" name="add" value="Add column"></noscript> |
719 | 1693 | ';}if($F!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'"> |
720 | 1694 | </form> |
721 | -';}elseif(isset($_GET["view"])){$a=$_GET["view"];$L=$_POST;if($_POST&&!$k){$F=trim($L["name"]);$ua=" AS\n$L[select]";$B=ME."table=".urlencode($F);$D='View has been altered.';if($_GET["materialized"])$U="MATERIALIZED VIEW";else{$U="VIEW";if($y=="pgsql"){$Df=table_status($F);$U=($Df?strtoupper($Df["Engine"]):$U);}}if(!$_POST["drop"]&&$a==$F&&$y!="sqlite"&&$U!="MATERIALIZED VIEW")query_redirect(($y=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($F).$ua,$B,$D);else{$Xf=$F."_adminer_".uniqid();drop_create("DROP $U ".table($a),"CREATE $U ".table($F).$ua,"DROP $U ".table($F),"CREATE $U ".table($Xf).$ua,"DROP $U ".table($Xf),($_POST["drop"]?substr(ME,0,-1):$B),'View has been dropped.',$D,'View has been created.',$a,$F);}}if(!$_POST&&$a!=""){$L=view($a);$L["name"]=$a;if(!$k)$k=error();}page_header(($a!=""?'Alter view':'Create view'),$k,array("table"=>$a),h($a));echo' |
|
1695 | +';} elseif(isset($_GET["view"])){$a=$_GET["view"];$L=$_POST;if($_POST&&!$k){$F=trim($L["name"]);$ua=" AS\n$L[select]";$B=ME."table=".urlencode($F);$D='View has been altered.';if($_GET["materialized"]) { |
|
1696 | + $U="MATERIALIZED VIEW"; |
|
1697 | +} else{$U="VIEW";if($y=="pgsql"){$Df=table_status($F);$U=($Df?strtoupper($Df["Engine"]):$U);}}if(!$_POST["drop"]&&$a==$F&&$y!="sqlite"&&$U!="MATERIALIZED VIEW") { |
|
1698 | + query_redirect(($y=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($F).$ua,$B,$D); |
|
1699 | +} else{$Xf=$F."_adminer_".uniqid();drop_create("DROP $U ".table($a),"CREATE $U ".table($F).$ua,"DROP $U ".table($F),"CREATE $U ".table($Xf).$ua,"DROP $U ".table($Xf),($_POST["drop"]?substr(ME,0,-1):$B),'View has been dropped.',$D,'View has been created.',$a,$F);}}if(!$_POST&&$a!=""){$L=view($a);$L["name"]=$a;if(!$k) { |
|
1700 | + $k=error(); |
|
1701 | +} |
|
1702 | +}page_header(($a!=""?'Alter view':'Create view'),$k,array("table"=>$a),h($a));echo' |
|
722 | 1703 | <form action="" method="post"> |
723 | 1704 | <p>Name: <input name="name" value="',h($L["name"]),'" maxlength="64" autocapitalize="off"> |
724 | 1705 | <p>';textarea("select",$L["select"]);echo'<p> |
725 | 1706 | <input type="submit" value="Save"> |
726 | 1707 | ';if($_GET["view"]!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'"> |
727 | 1708 | </form> |
728 | -';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Rc=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Ef=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$L=$_POST;if($_POST&&!$k){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Event has been dropped.');elseif(in_array($L["INTERVAL_FIELD"],$Rc)&&isset($Ef[$L["STATUS"]])){$mf="\nON SCHEDULE ".($L["INTERVAL_VALUE"]?"EVERY ".q($L["INTERVAL_VALUE"])." $L[INTERVAL_FIELD]".($L["STARTS"]?" STARTS ".q($L["STARTS"]):"").($L["ENDS"]?" ENDS ".q($L["ENDS"]):""):"AT ".q($L["STARTS"]))." ON COMPLETION".($L["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?'Event has been altered.':'Event has been created.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$mf.($aa!=$L["EVENT_NAME"]?"\nRENAME TO ".idf_escape($L["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($L["EVENT_NAME"]).$mf)."\n".$Ef[$L["STATUS"]]." COMMENT ".q($L["EVENT_COMMENT"]).rtrim(" DO\n$L[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Alter event'.": ".h($aa):'Create event'),$k);if(!$L&&$aa!=""){$M=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$L=reset($M);}echo' |
|
1709 | +';} elseif(isset($_GET["event"])){$aa=$_GET["event"];$Rc=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Ef=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$L=$_POST;if($_POST&&!$k){if($_POST["drop"]) { |
|
1710 | + query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Event has been dropped.'); |
|
1711 | +} elseif(in_array($L["INTERVAL_FIELD"],$Rc)&&isset($Ef[$L["STATUS"]])){$mf="\nON SCHEDULE ".($L["INTERVAL_VALUE"]?"EVERY ".q($L["INTERVAL_VALUE"])." $L[INTERVAL_FIELD]".($L["STARTS"]?" STARTS ".q($L["STARTS"]):"").($L["ENDS"]?" ENDS ".q($L["ENDS"]):""):"AT ".q($L["STARTS"]))." ON COMPLETION".($L["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?'Event has been altered.':'Event has been created.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$mf.($aa!=$L["EVENT_NAME"]?"\nRENAME TO ".idf_escape($L["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($L["EVENT_NAME"]).$mf)."\n".$Ef[$L["STATUS"]]." COMMENT ".q($L["EVENT_COMMENT"]).rtrim(" DO\n$L[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Alter event'.": ".h($aa):'Create event'),$k);if(!$L&&$aa!=""){$M=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$L=reset($M);}echo' |
|
729 | 1712 | <form action="" method="post"> |
730 | 1713 | <table cellspacing="0"> |
731 | 1714 | <tr><th>Name<td><input name="EVENT_NAME" value="',h($L["EVENT_NAME"]),'" maxlength="64" autocapitalize="off"> |
@@ -737,7 +1720,7 @@ discard block |
||
737 | 1720 | <input type="submit" value="Save"> |
738 | 1721 | ';if($aa!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'"> |
739 | 1722 | </form> |
740 | -';}elseif(isset($_GET["procedure"])){$da=$_GET["procedure"];$if=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$L=$_POST;$L["fields"]=(array)$L["fields"];if($_POST&&!process_fields($L["fields"])&&!$k){$Xf="$L[name]_adminer_".uniqid();drop_create("DROP $if ".idf_escape($da),create_routine($if,$L),"DROP $if ".idf_escape($L["name"]),create_routine($if,array("name"=>$Xf)+$L),"DROP $if ".idf_escape($Xf),substr(ME,0,-1),'Routine has been dropped.','Routine has been altered.','Routine has been created.',$da,$L["name"]);}page_header(($da!=""?(isset($_GET["function"])?'Alter function':'Alter procedure').": ".h($da):(isset($_GET["function"])?'Create function':'Create procedure')),$k);if(!$_POST&&$da!=""){$L=routine($da,$if);$L["name"]=$da;}$Xa=get_vals("SHOW CHARACTER SET");sort($Xa);$jf=routine_languages();echo' |
|
1723 | +';} elseif(isset($_GET["procedure"])){$da=$_GET["procedure"];$if=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$L=$_POST;$L["fields"]=(array)$L["fields"];if($_POST&&!process_fields($L["fields"])&&!$k){$Xf="$L[name]_adminer_".uniqid();drop_create("DROP $if ".idf_escape($da),create_routine($if,$L),"DROP $if ".idf_escape($L["name"]),create_routine($if,array("name"=>$Xf)+$L),"DROP $if ".idf_escape($Xf),substr(ME,0,-1),'Routine has been dropped.','Routine has been altered.','Routine has been created.',$da,$L["name"]);}page_header(($da!=""?(isset($_GET["function"])?'Alter function':'Alter procedure').": ".h($da):(isset($_GET["function"])?'Create function':'Create procedure')),$k);if(!$_POST&&$da!=""){$L=routine($da,$if);$L["name"]=$da;}$Xa=get_vals("SHOW CHARACTER SET");sort($Xa);$jf=routine_languages();echo' |
|
741 | 1724 | <form action="" method="post" id="form"> |
742 | 1725 | <p>Name: <input name="name" value="',h($L["name"]),'" maxlength="64" autocapitalize="off"> |
743 | 1726 | ',($jf?'Language'.": ".html_select("language",$jf,$L["language"]):""),'<input type="submit" value="Save"> |
@@ -747,7 +1730,15 @@ discard block |
||
747 | 1730 | <input type="submit" value="Save"> |
748 | 1731 | ';if($da!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'"> |
749 | 1732 | </form> |
750 | -';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$F=$_GET["name"];$pg=trigger_options();$L=(array)trigger($F)+array("Trigger"=>$a."_bi");if($_POST){if(!$k&&in_array($_POST["Timing"],$pg["Timing"])&&in_array($_POST["Event"],$pg["Event"])&&in_array($_POST["Type"],$pg["Type"])){$Ud=" ON ".table($a);$Fb="DROP TRIGGER ".idf_escape($F).($y=="pgsql"?$Ud:"");$B=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($Fb,$B,'Trigger has been dropped.');else{if($F!="")queries($Fb);queries_redirect($B,($F!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($Ud,$_POST)));if($F!="")queries(create_trigger($Ud,$L+array("Type"=>reset($pg["Type"]))));}}$L=$_POST;}page_header(($F!=""?'Alter trigger'.": ".h($F):'Create trigger'),$k,array("table"=>$a));echo' |
|
1733 | +';} elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$F=$_GET["name"];$pg=trigger_options();$L=(array)trigger($F)+array("Trigger"=>$a."_bi");if($_POST){if(!$k&&in_array($_POST["Timing"],$pg["Timing"])&&in_array($_POST["Event"],$pg["Event"])&&in_array($_POST["Type"],$pg["Type"])){$Ud=" ON ".table($a);$Fb="DROP TRIGGER ".idf_escape($F).($y=="pgsql"?$Ud:"");$B=ME."table=".urlencode($a);if($_POST["drop"]) { |
|
1734 | + query_redirect($Fb,$B,'Trigger has been dropped.'); |
|
1735 | +} else{if($F!="") { |
|
1736 | + queries($Fb); |
|
1737 | +} |
|
1738 | +queries_redirect($B,($F!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($Ud,$_POST)));if($F!="") { |
|
1739 | + queries(create_trigger($Ud,$L+array("Type"=>reset($pg["Type"])))); |
|
1740 | +} |
|
1741 | +}}$L=$_POST;}page_header(($F!=""?'Alter trigger'.": ".h($F):'Create trigger'),$k,array("table"=>$a));echo' |
|
751 | 1742 | <form action="" method="post" id="form"> |
752 | 1743 | <table cellspacing="0"> |
753 | 1744 | <tr><th>Time<td>',html_select("Timing",$pg["Timing"],$L["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>Event<td>',html_select("Event",$pg["Event"],$L["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$pg["Event"])?" <input name='Of' value='".h($L["Of"])."' class='hidden'>":""),'<tr><th>Type<td>',html_select("Type",$pg["Type"],$L["Type"]),'</table> |
@@ -757,10 +1748,52 @@ discard block |
||
757 | 1748 | <input type="submit" value="Save"> |
758 | 1749 | ';if($F!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'"> |
759 | 1750 | </form> |
760 | -';}elseif(isset($_GET["user"])){$fa=$_GET["user"];$Le=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$L){foreach(explode(",",($L["Privilege"]=="Grant option"?"":$L["Context"]))as$hb)$Le[$hb][$L["Privilege"]]=$L["Comment"];}$Le["Server Admin"]+=$Le["File access on server"];$Le["Databases"]["Create routine"]=$Le["Procedures"]["Create routine"];unset($Le["Procedures"]["Create routine"]);$Le["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$Le["Columns"][$X]=$Le["Tables"][$X];unset($Le["Server Admin"]["Usage"]);foreach($Le["Tables"]as$z=>$X)unset($Le["Databases"][$z]);$Hd=array();if($_POST){foreach($_POST["objects"]as$z=>$X)$Hd[$X]=(array)$Hd[$X]+(array)$_POST["grants"][$z];}$yc=array();$Sd="";if(isset($_GET["host"])&&($J=$e->query("SHOW GRANTS FOR ".q($fa)."@".q($_GET["host"])))){while($L=$J->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$L[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~',$C[1],$rd,PREG_SET_ORDER)){foreach($rd |
|
761 | -as$X){if($X[1]!="USAGE")$yc["$C[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$L[0]))$yc["$C[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$L[0],$C))$Sd=$C[1];}}if($_POST&&!$k){$Td=(isset($_GET["host"])?q($fa)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $Td",ME."privileges=",'User has been dropped.');else{$Jd=q($_POST["user"])."@".q($_POST["host"]);$ve=$_POST["pass"];if($ve!=''&&!$_POST["hashed"]){$ve=$e->result("SELECT PASSWORD(".q($ve).")");$k=!$ve;}$lb=false;if(!$k){if($Td!=$Jd){$lb=queries(($e->server_info<5?"GRANT USAGE ON *.* TO":"CREATE USER")." $Jd IDENTIFIED BY PASSWORD ".q($ve));$k=!$lb;}elseif($ve!=$Sd)queries("SET PASSWORD FOR $Jd = ".q($ve));}if(!$k){$ff=array();foreach($Hd |
|
762 | -as$Nd=>$r){if(isset($_GET["grant"]))$r=array_filter($r);$r=array_keys($r);if(isset($_GET["grant"]))$ff=array_diff(array_keys(array_filter($Hd[$Nd],'strlen')),$r);elseif($Td==$Jd){$Qd=array_keys((array)$yc[$Nd]);$ff=array_diff($Qd,$r);$r=array_diff($r,$Qd);unset($yc[$Nd]);}if(preg_match('~^(.+)\\s*(\\(.*\\))?$~U',$Nd,$C)&&(!grant("REVOKE",$ff,$C[2]," ON $C[1] FROM $Jd")||!grant("GRANT",$r,$C[2]," ON $C[1] TO $Jd"))){$k=true;break;}}}if(!$k&&isset($_GET["host"])){if($Td!=$Jd)queries("DROP USER $Td");elseif(!isset($_GET["grant"])){foreach($yc |
|
763 | -as$Nd=>$ff){if(preg_match('~^(.+)(\\(.*\\))?$~U',$Nd,$C))grant("REVOKE",array_keys($ff),$C[2]," ON $C[1] FROM $Jd");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$k);if($lb)$e->query("DROP USER $Jd");}}page_header((isset($_GET["host"])?'Username'.": ".h("$fa@$_GET[host]"):'Create user'),$k,array("privileges"=>array('','Privileges')));if($_POST){$L=$_POST;$yc=$Hd;}else{$L=$_GET+array("host"=>$e->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$L["pass"]=$Sd;if($Sd!="")$L["hashed"]=true;$yc[(DB==""||$yc?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post"> |
|
1751 | +';} elseif(isset($_GET["user"])){$fa=$_GET["user"];$Le=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$L){foreach(explode(",",($L["Privilege"]=="Grant option"?"":$L["Context"]))as$hb) { |
|
1752 | + $Le[$hb][$L["Privilege"]]=$L["Comment"]; |
|
1753 | +} |
|
1754 | +}$Le["Server Admin"]+=$Le["File access on server"];$Le["Databases"]["Create routine"]=$Le["Procedures"]["Create routine"];unset($Le["Procedures"]["Create routine"]);$Le["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X) { |
|
1755 | + $Le["Columns"][$X]=$Le["Tables"][$X]; |
|
1756 | +} |
|
1757 | +unset($Le["Server Admin"]["Usage"]);foreach($Le["Tables"]as$z=>$X) { |
|
1758 | + unset($Le["Databases"][$z]); |
|
1759 | +} |
|
1760 | +$Hd=array();if($_POST){foreach($_POST["objects"]as$z=>$X) { |
|
1761 | + $Hd[$X]=(array)$Hd[$X]+(array)$_POST["grants"][$z]; |
|
1762 | +} |
|
1763 | +}$yc=array();$Sd="";if(isset($_GET["host"])&&($J=$e->query("SHOW GRANTS FOR ".q($fa)."@".q($_GET["host"])))){while($L=$J->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$L[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~',$C[1],$rd,PREG_SET_ORDER)){foreach($rd |
|
1764 | +as$X){if($X[1]!="USAGE") { |
|
1765 | + $yc["$C[2]$X[2]"][$X[1]]=true; |
|
1766 | +} |
|
1767 | +if(preg_match('~ WITH GRANT OPTION~',$L[0])) { |
|
1768 | + $yc["$C[2]$X[2]"]["GRANT OPTION"]=true; |
|
1769 | +} |
|
1770 | +}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$L[0],$C)) { |
|
1771 | + $Sd=$C[1]; |
|
1772 | +} |
|
1773 | +}}if($_POST&&!$k){$Td=(isset($_GET["host"])?q($fa)."@".q($_GET["host"]):"''");if($_POST["drop"]) { |
|
1774 | + query_redirect("DROP USER $Td",ME."privileges=",'User has been dropped.'); |
|
1775 | +} else{$Jd=q($_POST["user"])."@".q($_POST["host"]);$ve=$_POST["pass"];if($ve!=''&&!$_POST["hashed"]){$ve=$e->result("SELECT PASSWORD(".q($ve).")");$k=!$ve;}$lb=false;if(!$k){if($Td!=$Jd){$lb=queries(($e->server_info<5?"GRANT USAGE ON *.* TO":"CREATE USER")." $Jd IDENTIFIED BY PASSWORD ".q($ve));$k=!$lb;} elseif($ve!=$Sd) { |
|
1776 | + queries("SET PASSWORD FOR $Jd = ".q($ve)); |
|
1777 | +} |
|
1778 | +}if(!$k){$ff=array();foreach($Hd |
|
1779 | +as$Nd=>$r){if(isset($_GET["grant"])) { |
|
1780 | + $r=array_filter($r); |
|
1781 | +} |
|
1782 | +$r=array_keys($r);if(isset($_GET["grant"])) { |
|
1783 | + $ff=array_diff(array_keys(array_filter($Hd[$Nd],'strlen')),$r); |
|
1784 | +} elseif($Td==$Jd){$Qd=array_keys((array)$yc[$Nd]);$ff=array_diff($Qd,$r);$r=array_diff($r,$Qd);unset($yc[$Nd]);}if(preg_match('~^(.+)\\s*(\\(.*\\))?$~U',$Nd,$C)&&(!grant("REVOKE",$ff,$C[2]," ON $C[1] FROM $Jd")||!grant("GRANT",$r,$C[2]," ON $C[1] TO $Jd"))){$k=true;break;}}}if(!$k&&isset($_GET["host"])){if($Td!=$Jd) { |
|
1785 | + queries("DROP USER $Td"); |
|
1786 | +} elseif(!isset($_GET["grant"])){foreach($yc |
|
1787 | +as$Nd=>$ff){if(preg_match('~^(.+)(\\(.*\\))?$~U',$Nd,$C)) { |
|
1788 | + grant("REVOKE",array_keys($ff),$C[2]," ON $C[1] FROM $Jd"); |
|
1789 | +} |
|
1790 | +}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$k);if($lb) { |
|
1791 | + $e->query("DROP USER $Jd"); |
|
1792 | +} |
|
1793 | +}}page_header((isset($_GET["host"])?'Username'.": ".h("$fa@$_GET[host]"):'Create user'),$k,array("privileges"=>array('','Privileges')));if($_POST){$L=$_POST;$yc=$Hd;} else{$L=$_GET+array("host"=>$e->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$L["pass"]=$Sd;if($Sd!="") { |
|
1794 | + $L["hashed"]=true; |
|
1795 | +} |
|
1796 | +$yc[(DB==""||$yc?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post"> |
|
764 | 1797 | <table cellspacing="0"> |
765 | 1798 | <tr><th>Server<td><input name="host" maxlength="60" value="',h($L["host"]),'" autocapitalize="off"> |
766 | 1799 | <tr><th>Username<td><input name="user" maxlength="16" value="',h($L["user"]),'" autocapitalize="off"> |
@@ -770,36 +1803,167 @@ discard block |
||
770 | 1803 | |
771 | 1804 | ';echo"<table cellspacing='0'>\n","<thead><tr><th colspan='2'>".'Privileges'.doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($yc |
772 | 1805 | as$Nd=>$r){echo'<th>'.($Nd!="*.*"?"<input name='objects[$t]' value='".h($Nd)."' size='10' autocapitalize='off'>":"<input type='hidden' name='objects[$t]' value='*.*' size='10'>*.*");$t++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>'Server',"Databases"=>'Database',"Tables"=>'Table',"Columns"=>'Column',"Procedures"=>'Routine',)as$hb=>$xb){foreach((array)$Le[$hb]as$Ke=>$bb){echo"<tr".odd()."><td".($xb?">$xb<td":" colspan='2'").' lang="en" title="'.h($bb).'">'.h($Ke);$t=0;foreach($yc |
773 | -as$Nd=>$r){$F="'grants[$t][".h(strtoupper($Ke))."]'";$Y=$r[strtoupper($Ke)];if($hb=="Server Admin"&&$Nd!=(isset($yc["*.*"])?"*.*":".*"))echo"<td> ";elseif(isset($_GET["grant"]))echo"<td><select name=$F><option><option value='1'".($Y?" selected":"").">".'Grant'."<option value='0'".($Y=="0"?" selected":"").">".'Revoke'."</select>";else |
|
774 | -echo"<td align='center'><label class='block'><input type='checkbox' name=$F value='1'".($Y?" checked":"").($Ke=="All privileges"?" id='grants-$t-all'":($Ke=="Grant option"?"":" onclick=\"if (this.checked) formUncheck('grants-$t-all');\""))."></label>";$t++;}}}echo"</table>\n",'<p> |
|
1806 | +as$Nd=>$r){$F="'grants[$t][".h(strtoupper($Ke))."]'";$Y=$r[strtoupper($Ke)];if($hb=="Server Admin"&&$Nd!=(isset($yc["*.*"])?"*.*":".*")) { |
|
1807 | + echo"<td> "; |
|
1808 | +} elseif(isset($_GET["grant"])) { |
|
1809 | + echo"<td><select name=$F><option><option value='1'".($Y?" selected":"").">".'Grant'."<option value='0'".($Y=="0"?" selected":"").">".'Revoke'."</select>"; |
|
1810 | +} else { |
|
1811 | + echo"<td align='center'><label class='block'><input type='checkbox' name=$F value='1'".($Y?" checked":"").($Ke=="All privileges"?" id='grants-$t-all'":($Ke=="Grant option"?"":" onclick=\"if (this.checked) formUncheck('grants-$t-all');\""))."></label>"; |
|
1812 | +} |
|
1813 | +$t++;}}}echo"</table>\n",'<p> |
|
775 | 1814 | <input type="submit" value="Save"> |
776 | 1815 | ';if(isset($_GET["host"])){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'"> |
777 | 1816 | </form> |
778 | -';}elseif(isset($_GET["processlist"])){if(support("kill")&&$_POST&&!$k){$cd=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$cd++;}queries_redirect(ME."processlist=",lang(array('%d process has been killed.','%d processes have been killed.'),$cd),$cd||!$_POST["kill"]);}page_header('Process list',$k);echo' |
|
1817 | +';} elseif(isset($_GET["processlist"])){if(support("kill")&&$_POST&&!$k){$cd=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X)) { |
|
1818 | + $cd++; |
|
1819 | +} |
|
1820 | +}queries_redirect(ME."processlist=",lang(array('%d process has been killed.','%d processes have been killed.'),$cd),$cd||!$_POST["kill"]);}page_header('Process list',$k);echo' |
|
779 | 1821 | <form action="" method="post"> |
780 | 1822 | <table cellspacing="0" onclick="tableClick(event);" ondblclick="tableClick(event, true);" class="nowrap checkable"> |
781 | 1823 | ';$t=-1;foreach(process_list()as$t=>$L){if(!$t){echo"<thead><tr lang='en'>".(support("kill")?"<th> ":"");foreach($L |
782 | -as$z=>$X)echo"<th>$z".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($z),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"../b14237/dynviews_2088.htm",));echo"</thead>\n";}echo"<tr".odd().">".(support("kill")?"<td>".checkbox("kill[]",$L[$y=="sql"?"Id":"pid"],0):"");foreach($L |
|
783 | -as$z=>$X)echo"<td>".(($y=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$L["Command"])&&$X!="")||($y=="pgsql"&&$z=="current_query"&&$X!="<IDLE>")||($y=="oracle"&&$z=="sql_text"&&$X!="")?"<code class='jush-$y'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($L["db"]!=""?"db=".urlencode($L["db"])."&":"")."sql=".urlencode($X)).'">'.'Clone'.'</a>':nbsp($X));echo"\n";}echo'</table> |
|
1824 | +as$z=>$X) { |
|
1825 | + echo"<th>$z".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($z),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"../b14237/dynviews_2088.htm",)); |
|
1826 | +} |
|
1827 | +echo"</thead>\n";}echo"<tr".odd().">".(support("kill")?"<td>".checkbox("kill[]",$L[$y=="sql"?"Id":"pid"],0):"");foreach($L |
|
1828 | +as$z=>$X) { |
|
1829 | + echo"<td>".(($y=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$L["Command"])&&$X!="")||($y=="pgsql"&&$z=="current_query"&&$X!="<IDLE>")||($y=="oracle"&&$z=="sql_text"&&$X!="")?"<code class='jush-$y'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($L["db"]!=""?"db=".urlencode($L["db"])."&":"")."sql=".urlencode($X)).'">'.'Clone'.'</a>':nbsp($X)); |
|
1830 | +} |
|
1831 | +echo"\n";}echo'</table> |
|
784 | 1832 | <script type=\'text/javascript\'>tableCheck();</script> |
785 | 1833 | <p> |
786 | 1834 | ';if(support("kill")){echo($t+1)."/".sprintf('%d in total',max_connections()),"<p><input type='submit' value='".'Kill'."'>\n";}echo'<input type="hidden" name="token" value="',$T,'"> |
787 | 1835 | </form> |
788 | -';}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$w=indexes($a);$m=fields($a);$o=column_foreign_keys($a);$Pd="";if($R["Oid"]){$Pd=($y=="sqlite"?"rowid":"oid");$w[]=array("type"=>"PRIMARY","columns"=>array($Pd));}parse_str($_COOKIE["adminer_import"],$ma);$gf=array();$d=array();$ag=null;foreach($m |
|
789 | -as$z=>$l){$F=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$F!=""){$d[$z]=html_entity_decode(strip_tags($F),ENT_QUOTES);if(is_shortable($l))$ag=$b->selectLengthProcess();}$gf+=$l["privileges"];}list($N,$s)=$b->selectColumnsProcess($d,$w);$Vc=count($s)<count($N);$Z=$b->selectSearchProcess($m,$w);$de=$b->selectOrderProcess($m,$w);$_=$b->selectLimitProcess();$wc=($N?implode(", ",$N):"*".($Pd?", $Pd":"")).convert_fields($d,$m,$N)."\nFROM ".table($a);$zc=($s&&$Vc?"\nGROUP BY ".implode(", ",$s):"").($de?"\nORDER BY ".implode(", ",$de):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$xg=>$L){$ua=convert_field($m[key($L)]);$N=array($ua?$ua:idf_escape(key($L)));$Z[]=where_check($xg,$m);$K=$j->select($a,$N,$Z,$N);if($K)echo |
|
790 | -reset($K->fetch_row());}exit;}if($_POST&&!$k){$Pg=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Oa=array();foreach($_POST["check"]as$Ma)$Oa[]=where_check($Ma,$m);$Pg[]="((".implode(") OR (",$Oa)."))";}$Pg=($Pg?"\nWHERE ".implode(" AND ",$Pg):"");$He=$zg=null;foreach($w |
|
1836 | +';} elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$w=indexes($a);$m=fields($a);$o=column_foreign_keys($a);$Pd="";if($R["Oid"]){$Pd=($y=="sqlite"?"rowid":"oid");$w[]=array("type"=>"PRIMARY","columns"=>array($Pd));}parse_str($_COOKIE["adminer_import"],$ma);$gf=array();$d=array();$ag=null;foreach($m |
|
1837 | +as$z=>$l){$F=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$F!=""){$d[$z]=html_entity_decode(strip_tags($F),ENT_QUOTES);if(is_shortable($l)) { |
|
1838 | + $ag=$b->selectLengthProcess(); |
|
1839 | +} |
|
1840 | +}$gf+=$l["privileges"];}list($N,$s)=$b->selectColumnsProcess($d,$w);$Vc=count($s)<count($N);$Z=$b->selectSearchProcess($m,$w);$de=$b->selectOrderProcess($m,$w);$_=$b->selectLimitProcess();$wc=($N?implode(", ",$N):"*".($Pd?", $Pd":"")).convert_fields($d,$m,$N)."\nFROM ".table($a);$zc=($s&&$Vc?"\nGROUP BY ".implode(", ",$s):"").($de?"\nORDER BY ".implode(", ",$de):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$xg=>$L){$ua=convert_field($m[key($L)]);$N=array($ua?$ua:idf_escape(key($L)));$Z[]=where_check($xg,$m);$K=$j->select($a,$N,$Z,$N);if($K) { |
|
1841 | + echo |
|
1842 | +reset($K->fetch_row()); |
|
1843 | +} |
|
1844 | +}exit;}if($_POST&&!$k){$Pg=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Oa=array();foreach($_POST["check"]as$Ma) { |
|
1845 | + $Oa[]=where_check($Ma,$m); |
|
1846 | +} |
|
1847 | +$Pg[]="((".implode(") OR (",$Oa)."))";}$Pg=($Pg?"\nWHERE ".implode(" AND ",$Pg):"");$He=$zg=null;foreach($w |
|
791 | 1848 | as$v){if($v["type"]=="PRIMARY"){$He=array_flip($v["columns"]);$zg=($N?$He:array());break;}}foreach((array)$zg |
792 | -as$z=>$X){if(in_array(idf_escape($z),$N))unset($zg[$z]);}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$zg===array())$I="SELECT $wc$Pg$zc";else{$vg=array();foreach($_POST["check"]as$X)$vg[]="(SELECT".limit($wc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$m).$zc,1).")";$I=implode(" UNION ALL ",$vg);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Z,$o)){if($_POST["save"]||$_POST["delete"]){$J=true;$na=0;$P=array();if(!$_POST["delete"]){foreach($d |
|
793 | -as$F=>$X){$X=process_input($m[$F]);if($X!==null&&($_POST["clone"]||$X!==false))$P[idf_escape($F)]=($X!==false?$X:idf_escape($F));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($zg===array()&&is_array($_POST["check"]))||$Vc){$J=($_POST["delete"]?$j->delete($a,$Pg):($_POST["clone"]?queries("INSERT $I$Pg"):$j->update($a,$P,$Pg)));$na=$e->affected_rows;}else{foreach((array)$_POST["check"]as$X){$Og="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$m);$J=($_POST["delete"]?$j->delete($a,$Og,1):($_POST["clone"]?queries("INSERT".limit1($I,$Og)):$j->update($a,$P,$Og)));if(!$J)break;$na+=$e->affected_rows;}}}$D=lang(array('%d item has been affected.','%d items have been affected.'),$na);if($_POST["clone"]&&$J&&$na==1){$gd=last_id();if($gd)$D=sprintf('Item%s has been inserted.'," $gd");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$k='Ctrl+click on a value to modify it.';else{$J=true;$na=0;foreach($_POST["val"]as$xg=>$L){$P=array();foreach($L |
|
794 | -as$z=>$X){$z=bracket_escape($z,1);$P[idf_escape($z)]=(preg_match('~char|text~',$m[$z]["type"])||$X!=""?$b->processInput($m[$z],$X):"NULL");}$J=$j->update($a,$P," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($xg,$m),!($Vc||$zg===array())," ");if(!$J)break;$na+=$e->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$na),$J);}}elseif(!is_string($mc=get_file("csv_file",true)))$k=upload_error($mc);elseif(!preg_match('~~u',$mc))$k='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($ma["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Ya=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$mc,$rd);$na=count($rd[0]);$j->begin();$sf=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($rd[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$sf]*)$sf~",$X.$sf,$sd);if(!$z&&!array_diff($sd[1],$Ya)){$Ya=$sd[1];$na--;}else{$P=array();foreach($sd[1]as$t=>$Ua)$P[idf_escape($Ya[$t])]=($Ua==""&&$m[$Ya[$t]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Ua))));$M[]=$P;}}$J=(!$M||$j->insertUpdate($a,$M,$He));if($J)$j->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$na),$J);$j->rollback();}}}$Pf=$b->tableName($R);if(is_ajax()){page_headers();ob_start();}else |
|
795 | -page_header('Select'.": $Pf",$k);$P=null;if(isset($gf["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$X){if(count($o[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$P.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($R,$P);if(!$d&&support("table"))echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$d);$b->selectSearchPrint($Z,$d,$w);$b->selectOrderPrint($de,$d,$w);$b->selectLimitPrint($_);$b->selectLengthPrint($ag);$b->selectActionPrint($w);echo"</form>\n";$G=$_GET["page"];if($G=="last"){$vc=$e->result(count_rows($a,$Z,$Vc,$s));$G=floor(max(0,$vc-1)/$_);}$pf=$N;if(!$pf){$pf[]="*";if($Pd)$pf[]=$Pd;}$ib=convert_fields($d,$m,$N);if($ib)$pf[]=substr($ib,2);$J=$j->select($a,$pf,$Z,$s,$de,$_,$G,true);if(!$J)echo"<p class='error'>".error()."\n";else{if($y=="mssql"&&$G)$J->seek($_*$G);$Rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($G&&$y=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&+$_&&$s&&$Vc&&$y=="sql")$vc=$e->result(" SELECT FOUND_ROWS()");if(!$M)echo"<p class='message'>".'No rows.'."\n";else{$Ba=$b->backwardKeys($a,$Pf);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$s&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Gd=array();$xc=array();reset($N);$Te=1;foreach($M[0]as$z=>$X){if($z!=$Pd){$X=$_GET["columns"][key($N)];$l=$m[$N?($X?$X["col"]:current($N)):$z];$F=($l?$b->fieldName($l,$Te):($X["fun"]?"*":$z));if($F!=""){$Te++;$Gd[$z]=$F;$c=idf_escape($z);$Hc=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$xb="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($Hc.($de[0]==$c||$de[0]==$z||(!$de&&$Vc&&$s[0]==$c)?$xb:'')).'">';echo |
|
796 | -apply_sql_function($X["fun"],$F)."</a>";echo"<span class='column hidden'>","<a href='".h($Hc.$xb)."' title='".'descending'."' class='text'> ↓</a>";if(!$X["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($z)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>';echo"</span>";}$xc[$z]=$X["fun"];next($N);}}$md=array();if($_GET["modify"]){foreach($M |
|
1849 | +as$z=>$X){if(in_array(idf_escape($z),$N)) { |
|
1850 | + unset($zg[$z]); |
|
1851 | +} |
|
1852 | +}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$zg===array()) { |
|
1853 | + $I="SELECT $wc$Pg$zc"; |
|
1854 | +} else{$vg=array();foreach($_POST["check"]as$X) { |
|
1855 | + $vg[]="(SELECT".limit($wc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$m).$zc,1).")"; |
|
1856 | +} |
|
1857 | +$I=implode(" UNION ALL ",$vg);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Z,$o)){if($_POST["save"]||$_POST["delete"]){$J=true;$na=0;$P=array();if(!$_POST["delete"]){foreach($d |
|
1858 | +as$F=>$X){$X=process_input($m[$F]);if($X!==null&&($_POST["clone"]||$X!==false)) { |
|
1859 | + $P[idf_escape($F)]=($X!==false?$X:idf_escape($F)); |
|
1860 | +} |
|
1861 | +}}if($_POST["delete"]||$P){if($_POST["clone"]) { |
|
1862 | + $I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a); |
|
1863 | +} |
|
1864 | +if($_POST["all"]||($zg===array()&&is_array($_POST["check"]))||$Vc){$J=($_POST["delete"]?$j->delete($a,$Pg):($_POST["clone"]?queries("INSERT $I$Pg"):$j->update($a,$P,$Pg)));$na=$e->affected_rows;} else{foreach((array)$_POST["check"]as$X){$Og="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$m);$J=($_POST["delete"]?$j->delete($a,$Og,1):($_POST["clone"]?queries("INSERT".limit1($I,$Og)):$j->update($a,$P,$Og)));if(!$J) { |
|
1865 | + break; |
|
1866 | +} |
|
1867 | +$na+=$e->affected_rows;}}}$D=lang(array('%d item has been affected.','%d items have been affected.'),$na);if($_POST["clone"]&&$J&&$na==1){$gd=last_id();if($gd) { |
|
1868 | + $D=sprintf('Item%s has been inserted.'," $gd"); |
|
1869 | +} |
|
1870 | +}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}} elseif(!$_POST["import"]){if(!$_POST["val"]) { |
|
1871 | + $k='Ctrl+click on a value to modify it.'; |
|
1872 | +} else{$J=true;$na=0;foreach($_POST["val"]as$xg=>$L){$P=array();foreach($L |
|
1873 | +as$z=>$X){$z=bracket_escape($z,1);$P[idf_escape($z)]=(preg_match('~char|text~',$m[$z]["type"])||$X!=""?$b->processInput($m[$z],$X):"NULL");}$J=$j->update($a,$P," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($xg,$m),!($Vc||$zg===array())," ");if(!$J) { |
|
1874 | + break; |
|
1875 | +} |
|
1876 | +$na+=$e->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$na),$J);}} elseif(!is_string($mc=get_file("csv_file",true))) { |
|
1877 | + $k=upload_error($mc); |
|
1878 | +} elseif(!preg_match('~~u',$mc)) { |
|
1879 | + $k='File must be in UTF-8 encoding.'; |
|
1880 | +} else{cookie("adminer_import","output=".urlencode($ma["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Ya=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$mc,$rd);$na=count($rd[0]);$j->begin();$sf=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($rd[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$sf]*)$sf~",$X.$sf,$sd);if(!$z&&!array_diff($sd[1],$Ya)){$Ya=$sd[1];$na--;} else{$P=array();foreach($sd[1]as$t=>$Ua) { |
|
1881 | + $P[idf_escape($Ya[$t])]=($Ua==""&&$m[$Ya[$t]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Ua)))); |
|
1882 | +} |
|
1883 | +$M[]=$P;}}$J=(!$M||$j->insertUpdate($a,$M,$He));if($J) { |
|
1884 | + $j->commit(); |
|
1885 | +} |
|
1886 | +queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$na),$J);$j->rollback();}}}$Pf=$b->tableName($R);if(is_ajax()){page_headers();ob_start();} else { |
|
1887 | + page_header('Select'.": $Pf",$k); |
|
1888 | +} |
|
1889 | +$P=null;if(isset($gf["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$X){if(count($o[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"])))) { |
|
1890 | + $P.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]); |
|
1891 | +} |
|
1892 | +}}$b->selectLinks($R,$P);if(!$d&&support("table")) { |
|
1893 | + echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n"; |
|
1894 | +} else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$d);$b->selectSearchPrint($Z,$d,$w);$b->selectOrderPrint($de,$d,$w);$b->selectLimitPrint($_);$b->selectLengthPrint($ag);$b->selectActionPrint($w);echo"</form>\n";$G=$_GET["page"];if($G=="last"){$vc=$e->result(count_rows($a,$Z,$Vc,$s));$G=floor(max(0,$vc-1)/$_);}$pf=$N;if(!$pf){$pf[]="*";if($Pd) { |
|
1895 | + $pf[]=$Pd; |
|
1896 | +} |
|
1897 | +}$ib=convert_fields($d,$m,$N);if($ib) { |
|
1898 | + $pf[]=substr($ib,2); |
|
1899 | +} |
|
1900 | +$J=$j->select($a,$pf,$Z,$s,$de,$_,$G,true);if(!$J) { |
|
1901 | + echo"<p class='error'>".error()."\n"; |
|
1902 | +} else{if($y=="mssql"&&$G) { |
|
1903 | + $J->seek($_*$G); |
|
1904 | +} |
|
1905 | +$Rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($G&&$y=="oracle") { |
|
1906 | + unset($L["RNUM"]); |
|
1907 | +} |
|
1908 | +$M[]=$L;}if($_GET["page"]!="last"&&+$_&&$s&&$Vc&&$y=="sql") { |
|
1909 | + $vc=$e->result(" SELECT FOUND_ROWS()"); |
|
1910 | +} |
|
1911 | +if(!$M) { |
|
1912 | + echo"<p class='message'>".'No rows.'."\n"; |
|
1913 | +} else{$Ba=$b->backwardKeys($a,$Pf);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$s&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Gd=array();$xc=array();reset($N);$Te=1;foreach($M[0]as$z=>$X){if($z!=$Pd){$X=$_GET["columns"][key($N)];$l=$m[$N?($X?$X["col"]:current($N)):$z];$F=($l?$b->fieldName($l,$Te):($X["fun"]?"*":$z));if($F!=""){$Te++;$Gd[$z]=$F;$c=idf_escape($z);$Hc=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$xb="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($Hc.($de[0]==$c||$de[0]==$z||(!$de&&$Vc&&$s[0]==$c)?$xb:'')).'">';echo |
|
1914 | +apply_sql_function($X["fun"],$F)."</a>";echo"<span class='column hidden'>","<a href='".h($Hc.$xb)."' title='".'descending'."' class='text'> ↓</a>";if(!$X["fun"]) { |
|
1915 | + echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($z)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>'; |
|
1916 | +} |
|
1917 | +echo"</span>";}$xc[$z]=$X["fun"];next($N);}}$md=array();if($_GET["modify"]){foreach($M |
|
797 | 1918 | as$L){foreach($L |
798 | -as$z=>$X)$md[$z]=max($md[$z],min(40,strlen(utf8_decode($X))));}}echo($Ba?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($_%2==1&&$G%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($M,$o)as$E=>$L){$wg=unique_array($M[$E],$w);if(!$wg){$wg=array();foreach($M[$E]as$z=>$X){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$z))$wg[$z]=$X;}}$xg="";foreach($wg |
|
1919 | +as$z=>$X) { |
|
1920 | + $md[$z]=max($md[$z],min(40,strlen(utf8_decode($X)))); |
|
1921 | +} |
|
1922 | +}}echo($Ba?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($_%2==1&&$G%2==1) { |
|
1923 | + odd(); |
|
1924 | +} |
|
1925 | +ob_end_clean();}foreach($b->rowDescriptions($M,$o)as$E=>$L){$wg=unique_array($M[$E],$w);if(!$wg){$wg=array();foreach($M[$E]as$z=>$X){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$z)) { |
|
1926 | + $wg[$z]=$X; |
|
1927 | +} |
|
1928 | +}}$xg="";foreach($wg |
|
799 | 1929 | as$z=>$X){if(($y=="sql"||$y=="pgsql")&&strlen($X)>64){$z=(strpos($z,'(')?$z:idf_escape($z));$z="MD5(".($y=='sql'&&preg_match("~^utf8_~",$m[$z]["collation"])?$z:"CONVERT($z USING ".charset($e).")").")";$X=md5($X);}$xg.="&".($X!==null?urlencode("where[".bracket_escape($z)."]")."=".urlencode($X):"null%5B%5D=".urlencode($z));}echo"<tr".odd().">".(!$s&&$N?"":"<td>".checkbox("check[]",substr($xg,1),in_array(substr($xg,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($Vc||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$xg)."'>".'edit'."</a>"));foreach($L |
800 | -as$z=>$X){if(isset($Gd[$z])){$l=$m[$z];if($X!=""&&(!isset($Rb[$z])||$Rb[$z]!=""))$Rb[$z]=(is_mail($X)?$Gd[$z]:"");$A="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$X!="")$A=ME.'download='.urlencode($a).'&field='.urlencode($z).$xg;if(!$A&&$X!==null){foreach((array)$o[$z]as$n){if(count($o[$z])==1||end($n["source"])==$z){$A="";foreach($n["source"]as$t=>$_f)$A.=where_link($t,$n["target"][$t],$M[$E][$_f]);$A=($n["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($n["db"]),ME):ME).'select='.urlencode($n["table"]).$A;if(count($n["source"])==1)break;}}}if($z=="COUNT(*)"){$A=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$wg))$A.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($wg |
|
801 | -as$Zc=>$W)$A.=where_link($t++,$Zc,$W);}$X=select_value($X,$A,$l,$ag);$u=h("val[$xg][".bracket_escape($z)."]");$Y=$_POST["val"][$xg][bracket_escape($z)];$Mb=!is_array($L[$z])&&is_utf8($X)&&$M[$E][$z]==$L[$z]&&!$xc[$z];$Zf=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$Mb)||$Y!==null){$Ac=h($Y!==null?$Y:$L[$z]);echo"<td>".($Zf?"<textarea name='$u' cols='30' rows='".(substr_count($L[$z],"\n")+1)."'>$Ac</textarea>":"<input name='$u' value='$Ac' size='$md[$z]'>");}else{$qd=strpos($X,"<i>...</i>");echo"<td id='$u' onclick=\"selectClick(this, event, ".($qd?2:($Zf?1:0)).($Mb?"":", '".h('Use edit link to modify this value.')."'").");\">$X";}}}if($Ba)echo"<td>";$b->backwardKeysPrint($Ba,$M[$E]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n";}if(($M||$G)&&!is_ajax()){$bc=true;if($_GET["page"]!="last"){if(!+$_)$vc=count($M);elseif($y!="sql"||!$Vc){$vc=($Vc?false:found_rows($R,$Z));if($vc<max(1e4,2*($G+1)*$_))$vc=reset(slow_query(count_rows($a,$Z,$Vc,$s)));else$bc=false;}}if(+$_&&($vc===false||$vc>$_||$G)){echo"<p class='pages'>";$ud=($vc===false?$G+(count($M)>=$_?2:1):floor(($vc-1)/$_));if($y!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($G+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$G).($G>5?" ...":"");for($t=max(1,$G-4);$t<min($ud,$G+5);$t++)echo |
|
802 | -pagination($t,$G);if($ud>0){echo($G+5<$ud?" ...":""),($bc&&$vc!==false?pagination($ud,$G):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$ud'>".'last'."</a>");}echo(($vc===false?count($M)+1:$vc-$G*$_)>$_?' <a href="'.h(remove_from_uri("page")."&page=".($G+1)).'" onclick="return !selectLoadMore(this, '.(+$_).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');}else{echo'Page'.":",pagination(0,$G).($G>1?" ...":""),($G?pagination($G,$G):""),($ud>$G?pagination($G+1,$G).($ud>$G+1?" ...":""):"");}}echo"<p class='count'>\n",($vc!==false?"(".($bc?"":"~ ").lang(array('%d row','%d rows'),$vc).") ":"");$Bb=($bc?"":"~ ").$vc;echo |
|
1930 | +as$z=>$X){if(isset($Gd[$z])){$l=$m[$z];if($X!=""&&(!isset($Rb[$z])||$Rb[$z]!="")) { |
|
1931 | + $Rb[$z]=(is_mail($X)?$Gd[$z]:""); |
|
1932 | +} |
|
1933 | +$A="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$X!="") { |
|
1934 | + $A=ME.'download='.urlencode($a).'&field='.urlencode($z).$xg; |
|
1935 | +} |
|
1936 | +if(!$A&&$X!==null){foreach((array)$o[$z]as$n){if(count($o[$z])==1||end($n["source"])==$z){$A="";foreach($n["source"]as$t=>$_f) { |
|
1937 | + $A.=where_link($t,$n["target"][$t],$M[$E][$_f]); |
|
1938 | +} |
|
1939 | +$A=($n["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($n["db"]),ME):ME).'select='.urlencode($n["table"]).$A;if(count($n["source"])==1) { |
|
1940 | + break; |
|
1941 | +} |
|
1942 | +}}}if($z=="COUNT(*)"){$A=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$wg)) { |
|
1943 | + $A.=where_link($t++,$W["col"],$W["val"],$W["op"]); |
|
1944 | +} |
|
1945 | +}foreach($wg |
|
1946 | +as$Zc=>$W) { |
|
1947 | + $A.=where_link($t++,$Zc,$W); |
|
1948 | +} |
|
1949 | +}$X=select_value($X,$A,$l,$ag);$u=h("val[$xg][".bracket_escape($z)."]");$Y=$_POST["val"][$xg][bracket_escape($z)];$Mb=!is_array($L[$z])&&is_utf8($X)&&$M[$E][$z]==$L[$z]&&!$xc[$z];$Zf=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$Mb)||$Y!==null){$Ac=h($Y!==null?$Y:$L[$z]);echo"<td>".($Zf?"<textarea name='$u' cols='30' rows='".(substr_count($L[$z],"\n")+1)."'>$Ac</textarea>":"<input name='$u' value='$Ac' size='$md[$z]'>");} else{$qd=strpos($X,"<i>...</i>");echo"<td id='$u' onclick=\"selectClick(this, event, ".($qd?2:($Zf?1:0)).($Mb?"":", '".h('Use edit link to modify this value.')."'").");\">$X";}}}if($Ba) { |
|
1950 | + echo"<td>"; |
|
1951 | +} |
|
1952 | +$b->backwardKeysPrint($Ba,$M[$E]);echo"</tr>\n";}if(is_ajax()) { |
|
1953 | + exit; |
|
1954 | +} |
|
1955 | +echo"</table>\n";}if(($M||$G)&&!is_ajax()){$bc=true;if($_GET["page"]!="last"){if(!+$_) { |
|
1956 | + $vc=count($M); |
|
1957 | +} elseif($y!="sql"||!$Vc){$vc=($Vc?false:found_rows($R,$Z));if($vc<max(1e4,2*($G+1)*$_)) { |
|
1958 | + $vc=reset(slow_query(count_rows($a,$Z,$Vc,$s))); |
|
1959 | +} else { |
|
1960 | + $bc=false; |
|
1961 | +} |
|
1962 | +}}if(+$_&&($vc===false||$vc>$_||$G)){echo"<p class='pages'>";$ud=($vc===false?$G+(count($M)>=$_?2:1):floor(($vc-1)/$_));if($y!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($G+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$G).($G>5?" ...":"");for($t=max(1,$G-4);$t<min($ud,$G+5);$t++) { |
|
1963 | + echo |
|
1964 | +pagination($t,$G); |
|
1965 | +} |
|
1966 | +if($ud>0){echo($G+5<$ud?" ...":""),($bc&&$vc!==false?pagination($ud,$G):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$ud'>".'last'."</a>");}echo(($vc===false?count($M)+1:$vc-$G*$_)>$_?' <a href="'.h(remove_from_uri("page")."&page=".($G+1)).'" onclick="return !selectLoadMore(this, '.(+$_).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');} else{echo'Page'.":",pagination(0,$G).($G>1?" ...":""),($G?pagination($G,$G):""),($ud>$G?pagination($G+1,$G).($ud>$G+1?" ...":""):"");}}echo"<p class='count'>\n",($vc!==false?"(".($bc?"":"~ ").lang(array('%d row','%d rows'),$vc).") ":"");$Bb=($bc?"":"~ ").$vc;echo |
|
803 | 1967 | checkbox("all",1,0,'whole result',"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Bb' : checked); selectCount('selected2', this.checked || !checked ? '$Bb' : checked);")."\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div> |
804 | 1968 | <input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'> |
805 | 1969 | </div></fieldset> |
@@ -808,9 +1972,56 @@ discard block |
||
808 | 1972 | <input type="submit" name="clone" value="Clone"> |
809 | 1973 | <input type="submit" name="delete" value="Delete"',confirm(),'> |
810 | 1974 | </div></fieldset> |
811 | -';}$tc=$b->dumpFormat();foreach((array)$_GET["columns"]as$c){if($c["fun"]){unset($tc['sql']);break;}}if($tc){print_fieldset("export",'Export'." <span id='selected2'></span>");$me=$b->dumpOutput();echo($me?html_select("output",$me,$ma["output"])." ":""),html_select("format",$tc,$ma["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$s&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ma["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($Rb,'strlen'),$d);echo"<p><input type='hidden' name='token' value='$T'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$Df=isset($_GET["status"]);page_header($Df?'Status':'Variables');$Ig=($Df?show_status():show_variables());if(!$Ig)echo"<p class='message'>".'No rows.'."\n";else{echo"<table cellspacing='0'>\n";foreach($Ig |
|
812 | -as$z=>$X){echo"<tr>","<th><code class='jush-".$y.($Df?"status":"set")."'>".h($z)."</code>","<td>".nbsp($X);}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Mf=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$F=>$R){json_row("Comment-$F",nbsp($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$z)json_row("$z-$F",nbsp($R[$z]));foreach($Mf+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($R[$z]!=""){$X=format_number($R[$z]);json_row("$z-$F",($z=="Rows"&&$X&&$R["Engine"]==($Bf=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Mf[$z]))$Mf[$z]+=($R["Engine"]!="InnoDB"||$z!="Data_free"?$R[$z]:0);}elseif(array_key_exists($z,$R))json_row("$z-$F");}}}foreach($Mf |
|
813 | -as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$e->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$i=>$X){json_row("tables-$i",$X);json_row("size-$i",db_size($i));}json_row("");}exit;}else{$Uf=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Uf&&!$k&&!$_POST["search"]){$J=true;$D="";if($y=="sql"&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$J=truncate_tables($_POST["tables"]);$D='Tables have been truncated.';}elseif($_POST["move"]){$J=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tables have been moved.';}elseif($_POST["copy"]){$J=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tables have been copied.';}elseif($_POST["drop"]){if($_POST["views"])$J=drop_views($_POST["views"]);if($J&&$_POST["tables"])$J=drop_tables($_POST["tables"]);$D='Tables have been dropped.';}elseif($y!="sql"){$J=($y=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D='Tables have been optimized.';}elseif(!$_POST["tables"])$D='No tables.';elseif($J=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($L=$J->fetch_assoc())$D.="<b>".h($L["Table"])."</b>: ".h($L["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$D,$J);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$k,true);if($b->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".'Tables and views'."</h3>\n";$Tf=tables_list();if(!$Tf)echo"<p class='message'>".'No tables.'."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".'Search data in tables'." <span id='selected2'></span></legend><div>","<input type='search' name='query' value='".h($_POST["query"])."'> <input type='submit' name='search' value='".'Search'."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!="")search_tables();}echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">';$Cb=doc_link(array('sql'=>'show-table-status.html'));echo'<th>'.'Table','<td>'.'Engine'.doc_link(array('sql'=>'storage-engines.html')),'<td>'.'Collation'.doc_link(array('sql'=>'charset-mysql.html')),'<td>'.'Data Length'.$Cb,'<td>'.'Index Length'.$Cb,'<td>'.'Data Free'.$Cb,'<td>'.'Auto Increment'.doc_link(array('sql'=>'example-auto-increment.html')),'<td>'.'Rows'.$Cb,(support("comment")?'<td>'.'Comment'.$Cb:''),"</thead>\n";$S=0;foreach($Tf |
|
814 | -as$F=>$U){$Kg=($U!==null&&!preg_match('~table~i',$U));echo'<tr'.odd().'><td>'.checkbox(($Kg?"views[]":"tables[]"),$F,in_array($F,$Uf,true),"","formUncheck('check-all');"),'<th>'.(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($F).'" title="'.'Show structure'.'">'.h($F).'</a>':h($F));if($Kg){echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($F).'" title="'.'Alter view'.'">'.(preg_match('~materialized~i',$U)?'Materialized View':'View').'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($F).'" title="'.'Select data'.'">?</a>';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",'Alter table'),"Index_length"=>array("indexes",'Alter indexes'),"Data_free"=>array("edit",'New item'),"Auto_increment"=>array("auto_increment=1&create",'Alter table'),"Rows"=>array("select",'Select data'),)as$z=>$A){$u=" id='$z-".h($F)."'";echo($A?"<td align='right'>".(support("table")||$z=="Rows"||(support("indexes")&&$z!="Data_length")?"<a href='".h(ME."$A[0]=").urlencode($F)."'$u title='$A[1]'>?</a>":"<span$u>?</span>"):"<td id='$z-".h($F)."'> ");}$S++;}echo(support("comment")?"<td id='Comment-".h($F)."'> ":"");}echo"<tr><td> <th>".sprintf('%d in total',count($Tf)),"<td>".nbsp($y=="sql"?$e->result("SELECT @@storage_engine"):""),"<td>".nbsp(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$z)echo"<td align='right' id='sum-$z'> ";echo"</table>\n";if(!information_schema(DB)){$Gg="<input type='submit' value='".'Vacuum'."'".on_help("'VACUUM'")."> ";$ae="<input type='submit' name='optimize' value='".'Optimize'."'".on_help($y=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'")."> ";echo"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>".($y=="sqlite"?$Gg:($y=="pgsql"?$Gg.$ae:($y=="sql"?"<input type='submit' value='".'Analyze'."'".on_help("'ANALYZE TABLE'")."> ".$ae."<input type='submit' name='check' value='".'Check'."'".on_help("'CHECK TABLE'")."> "."<input type='submit' name='repair' value='".'Repair'."'".on_help("'REPAIR TABLE'")."> ":"")))."<input type='submit' name='truncate' value='".'Truncate'."'".confirm().on_help($y=="sqlite"?"'DELETE'":"'TRUNCATE".($y=="pgsql"?"'":" TABLE'"))."> "."<input type='submit' name='drop' value='".'Drop'."'".confirm().on_help("'DROP TABLE'").">\n";$h=(support("scheme")?$b->schemas():$b->databases());if(count($h)!=1&&$y!="sqlite"){$i=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".'Move to other database'.": ",($h?html_select("target",$h,$i):'<input name="target" value="'.h($i).'" autocapitalize="off">')," <input type='submit' name='move' value='".'Move'."'>",(support("copy")?" <input type='submit' name='copy' value='".'Copy'."'>":""),"\n";}echo"<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $S);":"")."\">\n";echo"<input type='hidden' name='token' value='$T'>\n","</div></fieldset>\n";}echo"</form>\n","<script type='text/javascript'>tableCheck();</script>\n";}echo'<p class="links"><a href="'.h(ME).'create=">'.'Create table'."</a>\n",(support("view")?'<a href="'.h(ME).'view=">'.'Create view'."</a>\n":""),(support("materializedview")?'<a href="'.h(ME).'view=&materialized=1">'.'Create materialized view'."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".'Routines'."</h3>\n";$kf=routines();if($kf){echo"<table cellspacing='0'>\n",'<thead><tr><th>'.'Name'.'<td>'.'Type'.'<td>'.'Return type'."<td> </thead>\n";odd('');foreach($kf |
|
1975 | +';}$tc=$b->dumpFormat();foreach((array)$_GET["columns"]as$c){if($c["fun"]){unset($tc['sql']);break;}}if($tc){print_fieldset("export",'Export'." <span id='selected2'></span>");$me=$b->dumpOutput();echo($me?html_select("output",$me,$ma["output"])." ":""),html_select("format",$tc,$ma["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$s&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ma["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($Rb,'strlen'),$d);echo"<p><input type='hidden' name='token' value='$T'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}} elseif(isset($_GET["variables"])){$Df=isset($_GET["status"]);page_header($Df?'Status':'Variables');$Ig=($Df?show_status():show_variables());if(!$Ig) { |
|
1976 | + echo"<p class='message'>".'No rows.'."\n"; |
|
1977 | +} else{echo"<table cellspacing='0'>\n";foreach($Ig |
|
1978 | +as$z=>$X){echo"<tr>","<th><code class='jush-".$y.($Df?"status":"set")."'>".h($z)."</code>","<td>".nbsp($X);}echo"</table>\n";}} elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Mf=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$F=>$R){json_row("Comment-$F",nbsp($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$z) { |
|
1979 | + json_row("$z-$F",nbsp($R[$z])); |
|
1980 | +} |
|
1981 | +foreach($Mf+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($R[$z]!=""){$X=format_number($R[$z]);json_row("$z-$F",($z=="Rows"&&$X&&$R["Engine"]==($Bf=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Mf[$z])) { |
|
1982 | + $Mf[$z]+=($R["Engine"]!="InnoDB"||$z!="Data_free"?$R[$z]:0); |
|
1983 | +} |
|
1984 | +} elseif(array_key_exists($z,$R)) { |
|
1985 | + json_row("$z-$F"); |
|
1986 | +} |
|
1987 | +}}}foreach($Mf |
|
1988 | +as$z=>$X) { |
|
1989 | + json_row("sum-$z",format_number($X)); |
|
1990 | +} |
|
1991 | +json_row("");} elseif($_GET["script"]=="kill") { |
|
1992 | + $e->query("KILL ".number($_POST["kill"])); |
|
1993 | +} else{foreach(count_tables($b->databases())as$i=>$X){json_row("tables-$i",$X);json_row("size-$i",db_size($i));}json_row("");}exit;} else{$Uf=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Uf&&!$k&&!$_POST["search"]){$J=true;$D="";if($y=="sql"&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"])) { |
|
1994 | + queries("SET foreign_key_checks = 0"); |
|
1995 | +} |
|
1996 | +if($_POST["truncate"]){if($_POST["tables"]) { |
|
1997 | + $J=truncate_tables($_POST["tables"]); |
|
1998 | +} |
|
1999 | +$D='Tables have been truncated.';} elseif($_POST["move"]){$J=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tables have been moved.';} elseif($_POST["copy"]){$J=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tables have been copied.';} elseif($_POST["drop"]){if($_POST["views"]) { |
|
2000 | + $J=drop_views($_POST["views"]); |
|
2001 | +} |
|
2002 | +if($J&&$_POST["tables"]) { |
|
2003 | + $J=drop_tables($_POST["tables"]); |
|
2004 | +} |
|
2005 | +$D='Tables have been dropped.';} elseif($y!="sql"){$J=($y=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D='Tables have been optimized.';} elseif(!$_POST["tables"]) { |
|
2006 | + $D='No tables.'; |
|
2007 | +} elseif($J=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($L=$J->fetch_assoc()) { |
|
2008 | + $D.="<b>".h($L["Table"])."</b>: ".h($L["Msg_text"])."<br>"; |
|
2009 | +} |
|
2010 | +}queries_redirect(substr(ME,0,-1),$D,$J);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$k,true);if($b->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".'Tables and views'."</h3>\n";$Tf=tables_list();if(!$Tf) { |
|
2011 | + echo"<p class='message'>".'No tables.'."\n"; |
|
2012 | +} else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".'Search data in tables'." <span id='selected2'></span></legend><div>","<input type='search' name='query' value='".h($_POST["query"])."'> <input type='submit' name='search' value='".'Search'."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!="") { |
|
2013 | + search_tables(); |
|
2014 | +} |
|
2015 | +}echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">';$Cb=doc_link(array('sql'=>'show-table-status.html'));echo'<th>'.'Table','<td>'.'Engine'.doc_link(array('sql'=>'storage-engines.html')),'<td>'.'Collation'.doc_link(array('sql'=>'charset-mysql.html')),'<td>'.'Data Length'.$Cb,'<td>'.'Index Length'.$Cb,'<td>'.'Data Free'.$Cb,'<td>'.'Auto Increment'.doc_link(array('sql'=>'example-auto-increment.html')),'<td>'.'Rows'.$Cb,(support("comment")?'<td>'.'Comment'.$Cb:''),"</thead>\n";$S=0;foreach($Tf |
|
2016 | +as$F=>$U){$Kg=($U!==null&&!preg_match('~table~i',$U));echo'<tr'.odd().'><td>'.checkbox(($Kg?"views[]":"tables[]"),$F,in_array($F,$Uf,true),"","formUncheck('check-all');"),'<th>'.(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($F).'" title="'.'Show structure'.'">'.h($F).'</a>':h($F));if($Kg){echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($F).'" title="'.'Alter view'.'">'.(preg_match('~materialized~i',$U)?'Materialized View':'View').'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($F).'" title="'.'Select data'.'">?</a>';} else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",'Alter table'),"Index_length"=>array("indexes",'Alter indexes'),"Data_free"=>array("edit",'New item'),"Auto_increment"=>array("auto_increment=1&create",'Alter table'),"Rows"=>array("select",'Select data'),)as$z=>$A){$u=" id='$z-".h($F)."'";echo($A?"<td align='right'>".(support("table")||$z=="Rows"||(support("indexes")&&$z!="Data_length")?"<a href='".h(ME."$A[0]=").urlencode($F)."'$u title='$A[1]'>?</a>":"<span$u>?</span>"):"<td id='$z-".h($F)."'> ");}$S++;}echo(support("comment")?"<td id='Comment-".h($F)."'> ":"");}echo"<tr><td> <th>".sprintf('%d in total',count($Tf)),"<td>".nbsp($y=="sql"?$e->result("SELECT @@storage_engine"):""),"<td>".nbsp(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$z) { |
|
2017 | + echo"<td align='right' id='sum-$z'> "; |
|
2018 | +} |
|
2019 | +echo"</table>\n";if(!information_schema(DB)){$Gg="<input type='submit' value='".'Vacuum'."'".on_help("'VACUUM'")."> ";$ae="<input type='submit' name='optimize' value='".'Optimize'."'".on_help($y=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'")."> ";echo"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>".($y=="sqlite"?$Gg:($y=="pgsql"?$Gg.$ae:($y=="sql"?"<input type='submit' value='".'Analyze'."'".on_help("'ANALYZE TABLE'")."> ".$ae."<input type='submit' name='check' value='".'Check'."'".on_help("'CHECK TABLE'")."> "."<input type='submit' name='repair' value='".'Repair'."'".on_help("'REPAIR TABLE'")."> ":"")))."<input type='submit' name='truncate' value='".'Truncate'."'".confirm().on_help($y=="sqlite"?"'DELETE'":"'TRUNCATE".($y=="pgsql"?"'":" TABLE'"))."> "."<input type='submit' name='drop' value='".'Drop'."'".confirm().on_help("'DROP TABLE'").">\n";$h=(support("scheme")?$b->schemas():$b->databases());if(count($h)!=1&&$y!="sqlite"){$i=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".'Move to other database'.": ",($h?html_select("target",$h,$i):'<input name="target" value="'.h($i).'" autocapitalize="off">')," <input type='submit' name='move' value='".'Move'."'>",(support("copy")?" <input type='submit' name='copy' value='".'Copy'."'>":""),"\n";}echo"<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $S);":"")."\">\n";echo"<input type='hidden' name='token' value='$T'>\n","</div></fieldset>\n";}echo"</form>\n","<script type='text/javascript'>tableCheck();</script>\n";}echo'<p class="links"><a href="'.h(ME).'create=">'.'Create table'."</a>\n",(support("view")?'<a href="'.h(ME).'view=">'.'Create view'."</a>\n":""),(support("materializedview")?'<a href="'.h(ME).'view=&materialized=1">'.'Create materialized view'."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".'Routines'."</h3>\n";$kf=routines();if($kf){echo"<table cellspacing='0'>\n",'<thead><tr><th>'.'Name'.'<td>'.'Type'.'<td>'.'Return type'."<td> </thead>\n";odd('');foreach($kf |
|
815 | 2020 | as$L){echo'<tr'.odd().'>','<th><a href="'.h(ME).($L["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($L["ROUTINE_NAME"]).'">'.h($L["ROUTINE_NAME"]).'</a>','<td>'.h($L["ROUTINE_TYPE"]),'<td>'.h($L["DTD_IDENTIFIER"]),'<td><a href="'.h(ME).($L["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($L["ROUTINE_NAME"]).'">'.'Alter'."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.'Create procedure'.'</a>':'').'<a href="'.h(ME).'function=">'.'Create function'."</a>\n";}if(support("event")){echo"<h3 id='events'>".'Events'."</h3>\n";$M=get_rows("SHOW EVENTS");if($M){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Name'."<td>".'Schedule'."<td>".'Start'."<td>".'End'."<td></thead>\n";foreach($M |
816 | -as$L){echo"<tr>","<th>".h($L["Name"]),"<td>".($L["Execute at"]?'At given time'."<td>".$L["Execute at"]:'Every'." ".$L["Interval value"]." ".$L["Interval field"]."<td>$L[Starts]"),"<td>$L[Ends]",'<td><a href="'.h(ME).'event='.urlencode($L["Name"]).'">'.'Alter'.'</a>';}echo"</table>\n";$Zb=$e->result("SELECT @@event_scheduler");if($Zb&&$Zb!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Zb)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.'Create event'."</a>\n";}if($Tf)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";}}}page_footer(); |
|
817 | 2021 | \ No newline at end of file |
2022 | +as$L){echo"<tr>","<th>".h($L["Name"]),"<td>".($L["Execute at"]?'At given time'."<td>".$L["Execute at"]:'Every'." ".$L["Interval value"]." ".$L["Interval field"]."<td>$L[Starts]"),"<td>$L[Ends]",'<td><a href="'.h(ME).'event='.urlencode($L["Name"]).'">'.'Alter'.'</a>';}echo"</table>\n";$Zb=$e->result("SELECT @@event_scheduler");if($Zb&&$Zb!="ON") { |
|
2023 | + echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Zb)."\n"; |
|
2024 | +} |
|
2025 | +}echo'<p class="links"><a href="'.h(ME).'event=">'.'Create event'."</a>\n";}if($Tf) { |
|
2026 | + echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n"; |
|
2027 | +} |
|
2028 | +}}}page_footer(); |
|
818 | 2029 | \ No newline at end of file |
@@ -6,551 +6,551 @@ |
||
6 | 6 | * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 |
7 | 7 | * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other) |
8 | 8 | * @version 4.2.5 |
9 | -*/error_reporting(6135);$Hb=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Hb||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$V){$Ae=filter_input_array(constant("INPUT$V"),FILTER_UNSAFE_RAW);if($Ae)$$V=$Ae;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo |
|
10 | -lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo |
|
11 | -lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8У’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤ l^íZ6˜ej…Á³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxlÖ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù €‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò 'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,EÍ`T¦É6Ûˆ-“Åì¾ÅÚŽT[Ѫz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø •ÿš´hìÁ{Ü£•î ËÔ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØÍ‡Ð¢©‰‚êcâ¡óB’—}Ø&`ˆîr+E“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼ ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡ ³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£È}");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
12 | -lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s> )â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n \ræs<ŒPi2INÆ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(Òm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$ CAÆ ä„¤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AKã¡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…): ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDùÑ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æÚŒÚ‡Ÿ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/ØX ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éï†PÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðÈôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEÐ€Ôøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6↬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F 4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀÎ t]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ 1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*/¹UÖVû‰¤þpì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Æ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·> —BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ ¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6Chº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ß§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)×…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üàå€ ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤ (€\r¹öGFžª@ؼÃúÙÀß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷Ƚà¸à\\P’,\"ª-rCÉrVäæY×·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê ‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rÔ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔÄ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„â¢ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ €ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;SÇ]ãñ@ËÇè:Ââ“÷I~Û‘•ÙùÒÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}Ï:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð‰)¯i4Ñu•sÁLjXÁMP¬‚^«ä5¹O’¥ bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE% dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> ›â}Sð8=ã‚ÇÀàô/™)BÑvEIÊbœvð’¬–/ˆªŠqìãÂôe¿KšÔw\0%õ!Í€pªUT@ѵ‰Ë¦_ŒË˜@òàtË8î%ñ>âÌôA´—¤äb+~+\n’…ΤÅ\"©>4Áˆc^Úô־šè§N€ZÛ^ÖØ¯N4ªCDr– DÉCÑ’øàáȳö(ÅR˜ed±‰ù¦›{áŠF•Z†+Q#´ÈW-ýí‘¥qÉÑUCÆÎ;£œ‹XðÛx£¤„\n6ÍzkàvÚý´qàx\"h’ÄšRXþ²?Àpd¢ùÅsðæ†ž?|ÜpÓ\rˆã¿~ÒÖ^ƘhÖªAñÆ<r\$ÓAfÇ5\n\"0;œƒ”‰!Ç¼Õ aÉá‰ÖzG„¬1ÞBÊ’ãÏ\"…¸†±OLkÛÓ‡‘\0ƒžFõñ¿Ž'YœŽˆ4õИ");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
13 | -lzw_decompress(compile_file('','minify_js'));}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&ٜƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function |
|
14 | -connection(){global$f;return$f;}function |
|
15 | -adminer(){global$b;return$b;}function |
|
16 | -idf_unescape($gc){$uc=substr($gc,-1);return |
|
17 | -str_replace($uc.$uc,$uc,substr($gc,1,-1));}function |
|
18 | -escape_string($V){return |
|
19 | -substr(q($V),1,-1);}function |
|
20 | -number($V){return |
|
21 | -preg_replace('~[^0-9]+~','',$V);}function |
|
22 | -remove_slashes($pd,$Hb=false){if(get_magic_quotes_gpc()){while(list($x,$V)=each($pd)){foreach($V |
|
23 | -as$w=>$U){unset($pd[$x][$w]);if(is_array($U)){$pd[$x][stripslashes($w)]=$U;$pd[]=&$pd[$x][stripslashes($w)];}else$pd[$x][stripslashes($w)]=($Hb?$U:stripslashes($U));}}}}function |
|
24 | -bracket_escape($gc,$ua=false){static$re=array(':'=>':1',']'=>':2','['=>':3');return |
|
25 | -strtr($gc,($ua?array_flip($re):$re));}function |
|
26 | -charset($f){return(version_compare($f->server_info,"5.5.3")>=0?"utf8mb4":"utf8");}function |
|
27 | -h($Q){return |
|
28 | -str_replace("\0","�",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function |
|
29 | -nbsp($Q){return(trim($Q)!=""?h($Q):" ");}function |
|
30 | -nl_br($Q){return |
|
31 | -str_replace("\n","<br>",$Q);}function |
|
32 | -checkbox($D,$W,$Fa,$sc="",$Tc="",$Ia=""){$K="<input type='checkbox' name='$D' value='".h($W)."'".($Fa?" checked":"").($Tc?' onclick="'.h($Tc).'"':'').">";return($sc!=""||$Ia?"<label".($Ia?" class='$Ia'":"").">$K".h($sc)."</label>":$K);}function |
|
33 | -optionlist($Xc,$Id=null,$Fe=false){$K="";foreach($Xc |
|
34 | -as$w=>$U){$Yc=array($w=>$U);if(is_array($U)){$K.='<optgroup label="'.h($w).'">';$Yc=$U;}foreach($Yc |
|
35 | -as$x=>$V)$K.='<option'.($Fe||is_string($x)?' value="'.h($x).'"':'').(($Fe||is_string($x)?(string)$x:$V)===$Id?' selected':'').'>'.h($V);if(is_array($U))$K.='</optgroup>';}return$K;}function |
|
36 | -html_select($D,$Xc,$W="",$Sc=true){if($Sc)return"<select name='".h($D)."'".(is_string($Sc)?' onchange="'.h($Sc).'"':"").">".optionlist($Xc,$W)."</select>";$K="";foreach($Xc |
|
37 | -as$x=>$V)$K.="<label><input type='radio' name='".h($D)."' value='".h($x)."'".($x==$W?" checked":"").">".h($V)."</label>";return$K;}function |
|
38 | -select_input($c,$Xc,$W="",$hd=""){return($Xc?"<select$c><option value=''>$hd".optionlist($Xc,$W,true)."</select>":"<input$c size='10' value='".h($W)."' placeholder='$hd'>");}function |
|
39 | -confirm(){return" onclick=\"return confirm('".'Are you sure?'."');\"";}function |
|
40 | -print_fieldset($r,$wc,$Je=false,$Tc=""){echo"<fieldset><legend><a href='#fieldset-$r' onclick=\"".h($Tc)."return !toggle('fieldset-$r');\">$wc</a></legend><div id='fieldset-$r'".($Je?"":" class='hidden'").">\n";}function |
|
41 | -bold($Aa,$Ia=""){return($Aa?" class='active $Ia'":($Ia?" class='$Ia'":""));}function |
|
42 | -odd($K=' class="odd"'){static$q=0;if(!$K)$q=-1;return($q++%2?$K:'');}function |
|
43 | -js_escape($Q){return |
|
44 | -addcslashes($Q,"\r\n'\\/");}function |
|
45 | -json_row($x,$V=null){static$Ib=true;if($Ib)echo"{";if($x!=""){echo($Ib?"":",")."\n\t\"".addcslashes($x,"\r\n\"\\/").'": '.($V!==null?'"'.addcslashes($V,"\r\n\"\\/").'"':'undefined');$Ib=false;}else{echo"\n}\n";$Ib=true;}}function |
|
46 | -ini_bool($kc){$V=ini_get($kc);return(preg_match('~^(on|true|yes)$~i',$V)||(int)$V);}function |
|
47 | -sid(){static$K;if($K===null)$K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$K;}function |
|
48 | -set_password($X,$O,$T,$G){$_SESSION["pwds"][$X][$O][$T]=($_COOKIE["adminer_key"]&&is_string($G)?array(encrypt_string($G,$_COOKIE["adminer_key"])):$G);}function |
|
49 | -get_password(){$K=get_session("pwds");if(is_array($K))$K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false);return$K;}function |
|
50 | -q($Q){global$f;return$f->quote($Q);}function |
|
51 | -get_vals($I,$d=0){global$f;$K=array();$J=$f->query($I);if(is_object($J)){while($L=$J->fetch_row())$K[]=$L[$d];}return$K;}function |
|
52 | -get_key_vals($I,$g=null,$ke=0){global$f;if(!is_object($g))$g=$f;$K=array();$g->timeout=$ke;$J=$g->query($I);$g->timeout=0;if(is_object($J)){while($L=$J->fetch_row())$K[$L[0]]=$L[1];}return$K;}function |
|
53 | -get_rows($I,$g=null,$k="<p class='error'>"){global$f;$Sa=(is_object($g)?$g:$f);$K=array();$J=$Sa->query($I);if(is_object($J)){while($L=$J->fetch_assoc())$K[]=$L;}elseif(!$J&&!is_object($g)&&$k&&defined("PAGE_HEADER"))echo$k.error()."\n";return$K;}function |
|
54 | -unique_array($L,$t){foreach($t |
|
55 | -as$s){if(preg_match("~PRIMARY|UNIQUE~",$s["type"])){$K=array();foreach($s["columns"]as$x){if(!isset($L[$x]))continue |
|
56 | -2;$K[$x]=$L[$x];}return$K;}}}function |
|
57 | -escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return |
|
58 | -idf_escape($x);}function |
|
59 | -where($Y,$m=array()){global$f,$v;$K=array();foreach((array)$Y["where"]as$x=>$V){$x=bracket_escape($x,1);$d=escape_key($x);$K[]=$d.(($v=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$V))||$v=="mssql"?" LIKE ".q(addcslashes($V,"%_\\")):" = ".unconvert_field($m[$x],q($V)));if($v=="sql"&&preg_match('~char|text~',$m[$x]["type"])&&preg_match("~[^ -@]~",$V))$K[]="$d = ".q($V)." COLLATE ".charset($f)."_bin";}foreach((array)$Y["null"]as$x)$K[]=escape_key($x)." IS NULL";return |
|
60 | -implode(" AND ",$K);}function |
|
61 | -where_check($V,$m=array()){parse_str($V,$Ea);remove_slashes(array(&$Ea));return |
|
62 | -where($Ea,$m);}function |
|
63 | -where_link($q,$d,$W,$Vc="="){return"&where%5B$q%5D%5Bcol%5D=".urlencode($d)."&where%5B$q%5D%5Bop%5D=".urlencode(($W!==null?$Vc:"IS NULL"))."&where%5B$q%5D%5Bval%5D=".urlencode($W);}function |
|
64 | -convert_fields($e,$m,$N=array()){$K="";foreach($e |
|
65 | -as$x=>$V){if($N&&!in_array(idf_escape($x),$N))continue;$oa=convert_field($m[$x]);if($oa)$K.=", $oa AS ".idf_escape($x);}return$K;}function |
|
66 | -cookie($D,$W,$zc=2592000){global$aa;$ed=array($D,(preg_match("~\n~",$W)?"":$W),($zc?time()+$zc:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ed[]=true;return |
|
67 | -call_user_func_array('setcookie',$ed);}function |
|
68 | -restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function |
|
69 | -stop_session(){if(!ini_bool("session.use_cookies"))session_write_close();}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function |
|
70 | -set_session($x,$V){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$V;}function |
|
71 | -auth_url($X,$O,$T,$h=null){global$jb;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($jb))."|username|".($h!==null?"db|":"").session_name()),$A);return"$A[1]?".(sid()?SID."&":"").($X!="server"||$O!=""?urlencode($X)."=".urlencode($O)."&":"")."username=".urlencode($T).($h!=""?"&db=".urlencode($h):"").($A[2]?"&$A[2]":"");}function |
|
72 | -is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function |
|
73 | -redirect($_,$B=null){if($B!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($_!==null?$_:$_SERVER["REQUEST_URI"]))][]=$B;}if($_!==null){if($_=="")$_=".";header("Location: $_");exit;}}function |
|
74 | -query_redirect($I,$_,$B,$xd=true,$zb=true,$Bb=false,$je=""){global$f,$k,$b;if($zb){$Td=microtime(true);$Bb=!$f->query($I);$je=format_time($Td);}$Sd="";if($I)$Sd=$b->messageQuery($I,$je);if($Bb){$k=error().$Sd;return |
|
75 | -false;}if($xd)redirect($_,$B.$Sd);return |
|
76 | -true;}function |
|
77 | -queries($I){global$f;static$sd=array();static$Td;if(!$Td)$Td=microtime(true);if($I===null)return |
|
78 | -array(implode("\n",$sd),format_time($Td));$sd[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$f->query($I);}function |
|
79 | -apply_queries($I,$ee,$wb='table'){foreach($ee |
|
80 | -as$R){if(!queries("$I ".$wb($R)))return |
|
81 | -false;}return |
|
82 | -true;}function |
|
83 | -queries_redirect($_,$B,$xd){list($sd,$je)=queries(null);return |
|
84 | -query_redirect($sd,$_,$B,$xd,false,!$xd,$je);}function |
|
85 | -format_time($Td){return |
|
86 | -sprintf('%.3f s',max(0,microtime(true)-$Td));}function |
|
87 | -remove_from_uri($dd=""){return |
|
88 | -substr(preg_replace("~(?<=[?&])($dd".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function |
|
89 | -pagination($F,$Ya){return" ".($F==$Ya?$F+1:'<a href="'.h(remove_from_uri("page").($F?"&page=$F".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($F+1)."</a>");}function |
|
90 | -get_file($x,$bb=false){$Eb=$_FILES[$x];if(!$Eb)return |
|
91 | -null;foreach($Eb |
|
92 | -as$x=>$V)$Eb[$x]=(array)$V;$K='';foreach($Eb["error"]as$x=>$k){if($k)return$k;$D=$Eb["name"][$x];$pe=$Eb["tmp_name"][$x];$Ta=file_get_contents($bb&&preg_match('~\\.gz$~',$D)?"compress.zlib://$pe":$pe);if($bb){$Td=substr($Ta,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Td,$yd))$Ta=iconv("utf-16","utf-8",$Ta);elseif($Td=="\xEF\xBB\xBF")$Ta=substr($Ta,3);$K.=$Ta."\n\n";}else$K.=$Ta;}return$K;}function |
|
93 | -upload_error($k){$Ec=($k==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($k?'Unable to upload a file.'.($Ec?" ".sprintf('Maximum allowed file size is %sB.',$Ec):""):'File does not exist.');}function |
|
94 | -repeat_pattern($H,$xc){return |
|
95 | -str_repeat("$H{0,65535}",$xc/65535)."$H{0,".($xc%65535)."}";}function |
|
96 | -is_utf8($V){return(preg_match('~~u',$V)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$V));}function |
|
97 | -shorten_utf8($Q,$xc=80,$Zd=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$xc).")($)?)u",$Q,$A))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$xc).")($)?)",$Q,$A);return |
|
98 | -h($A[1]).$Zd.(isset($A[2])?"":"<i>...</i>");}function |
|
99 | -format_number($V){return |
|
100 | -strtr(number_format($V,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function |
|
101 | -friendly_url($V){return |
|
102 | -preg_replace('~[^a-z0-9_]~i','-',$V);}function |
|
103 | -hidden_fields($pd,$ic=array()){while(list($x,$V)=each($pd)){if(!in_array($x,$ic)){if(is_array($V)){foreach($V |
|
104 | -as$w=>$U)$pd[$x."[$w]"]=$U;}else |
|
105 | -echo'<input type="hidden" name="'.h($x).'" value="'.h($V).'">';}}}function |
|
106 | -hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function |
|
107 | -table_status1($R,$Cb=false){$K=table_status($R,$Cb);return($K?$K:array("Name"=>$R));}function |
|
108 | -column_foreign_keys($R){global$b;$K=array();foreach($b->foreignKeys($R)as$Nb){foreach($Nb["source"]as$V)$K[$V][]=$Nb;}return$K;}function |
|
109 | -enum_input($ue,$c,$l,$W,$sb=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);$K=($sb!==null?"<label><input type='$ue'$c value='$sb'".((is_array($W)?in_array($sb,$W):$W===0)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?$W==$q+1:(is_array($W)?in_array($q+1,$W):$W===$V));$K.=" <label><input type='$ue'$c value='".($q+1)."'".($Fa?' checked':'').'>'.h($b->editVal($V,$l)).'</label>';}return$K;}function |
|
110 | -input($l,$W,$o){global$f,$we,$b,$v;$D=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($W)&&!$o){$na=array($W);if(version_compare(PHP_VERSION,5.4)>=0)$na[]=JSON_PRETTY_PRINT;$W=call_user_func_array('json_encode',$na);$o="json";}$Ad=($v=="mssql"&&$l["auto_increment"]);if($Ad&&!$_POST["save"])$o=null;$Tb=(isset($_GET["select"])||$Ad?array("orig"=>'original'):array())+$b->editFunctions($l);$c=" name='fields[$D]'";if($l["type"]=="enum")echo |
|
111 | -nbsp($Tb[""])."<td>".$b->editInput($_GET["edit"],$l,$c,$W);else{$Ib=0;foreach($Tb |
|
112 | -as$x=>$V){if($x===""||!$V)break;$Ib++;}$Sc=($Ib?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($Ib > f.selectedIndex) f.selectedIndex = $Ib;\" onkeyup='keyupChange.call(this);'":"");$c.=$Sc;$Yb=(in_array($o,$Tb)||isset($Tb[$o]));echo(count($Tb)>1?"<select name='function[$D]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($Tb,$o===null||$Yb?$o:"")."</select>":nbsp(reset($Tb))).'<td>';$mc=$b->editInput($_GET["edit"],$l,$c,$W);if($mc!="")echo$mc;elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?($W>>$q)&1:in_array($V,explode(",",$W),true));echo" <label><input type='checkbox' name='fields[$D][$q]' value='".(1<<$q)."'".($Fa?' checked':'')."$Sc>".h($b->editVal($V,$l)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$D'$Sc>";elseif(($ge=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$W)){if($ge&&$v!="sqlite")$c.=" cols='50' rows='12'";else{$M=min(12,substr_count($W,"\n")+1);$c.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$c>".h($W).'</textarea>';}elseif($o=="json")echo"<textarea$c cols='50' rows='12' class='jush-js'>".h($W).'</textarea>';else{$Gc=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$A)?((preg_match("~binary~",$l["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$l["unsigned"]?1:0)):($we[$l["type"]]?$we[$l["type"]]+($l["unsigned"]?0:1):0));if($v=='sql'&&$f->server_info>=5.6&&preg_match('~time~',$l["type"]))$Gc+=7;echo"<input".((!$Yb||$o==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($W)."'".($Gc?" maxlength='$Gc'":"").(preg_match('~char|binary~',$l["type"])&&$Gc>20?" size='40'":"")."$c>";}}}function |
|
113 | -process_input($l){global$b;$gc=bracket_escape($l["field"]);$o=$_POST["function"][$gc];$W=$_POST["fields"][$gc];if($l["type"]=="enum"){if($W==-1)return |
|
114 | -false;if($W=="")return"NULL";return+$W;}if($l["auto_increment"]&&$W=="")return |
|
115 | -null;if($o=="orig")return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false);if($o=="NULL")return"NULL";if($l["type"]=="set")return |
|
116 | -array_sum((array)$W);if($o=="json"){$o="";$W=json_decode($W,true);if(!is_array($W))return |
|
117 | -false;return$W;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$Eb=get_file("fields-$gc");if(!is_string($Eb))return |
|
118 | -false;return |
|
119 | -q($Eb);}return$b->processInput($l,$W,$o);}function |
|
120 | -fields_from_edit(){global$i;$K=array();foreach((array)$_POST["field_keys"]as$x=>$V){if($V!=""){$V=bracket_escape($V);$_POST["function"][$V]=$_POST["field_funs"][$x];$_POST["fields"][$V]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$V){$D=bracket_escape($x,1);$K[$D]=array("field"=>$D,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($x==$i->primary),);}return$K;}function |
|
121 | -search_tables(){global$b,$f;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$Qb=false;foreach(table_status('',true)as$R=>$S){$D=$b->tableName($S);if(isset($S["Engine"])&&$D!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$J=$f->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($R),array())),1));if(!$J||$J->fetch_row()){if(!$Qb){echo"<ul>\n";$Qb=true;}echo"<li>".($J?"<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$D</a>\n":"$D: <span class='error'>".error()."</span>\n");}}}echo($Qb?"</ul>":"<p class='message'>".'No tables.')."\n";}function |
|
122 | -dump_headers($fc,$Jc=false){global$b;$K=$b->dumpHeaders($fc,$Jc);$bd=$_POST["output"];if($bd!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($fc).".$K".($bd!="file"&&!preg_match('~[^0-9a-z]~',$bd)?".$bd":""));session_write_close();ob_flush();flush();return$K;}function |
|
123 | -dump_csv($L){foreach($L |
|
124 | -as$x=>$V){if(preg_match("~[\"\n,;\t]~",$V)||$V==="")$L[$x]='"'.str_replace('"','""',$V).'"';}echo |
|
125 | -implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$L)."\r\n";}function |
|
126 | -apply_sql_function($o,$d){return($o?($o=="unixepoch"?"DATETIME($d, '$o')":($o=="count distinct"?"COUNT(DISTINCT ":strtoupper("$o("))."$d)"):$d);}function |
|
127 | -get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir'))$K=sys_get_temp_dir();else{$Fb=@tempnam("","");if(!$Fb)return |
|
128 | -false;$K=dirname($Fb);unlink($Fb);}}return$K;}function |
|
129 | -password_file($Va){$Fb=get_temp_dir()."/adminer.key";$K=@file_get_contents($Fb);if($K||!$Va)return$K;$Rb=@fopen($Fb,"w");if($Rb){chmod($Fb,0660);$K=rand_string();fwrite($Rb,$K);fclose($Rb);}return$K;}function |
|
130 | -rand_string(){return |
|
131 | -md5(uniqid(mt_rand(),true));}function |
|
132 | -select_value($V,$z,$l,$he){global$b,$aa;if(is_array($V)){$K="";foreach($V |
|
133 | -as$w=>$U)$K.="<tr>".($V!=array_values($V)?"<th>".h($w):"")."<td>".select_value($U,$z,$l,$he);return"<table cellspacing='0'>$K</table>";}if(!$z)$z=$b->selectLink($V,$l);if($z===null){if(is_mail($V))$z="mailto:$V";if($qd=is_url($V))$z=(($qd=="http"&&$aa)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$V:"https://www.adminer.org/redirect/?url=".urlencode($V));}$K=$b->editVal($V,$l);if($K!==null){if($K==="")$K=" ";elseif(!is_utf8($K))$K="\0";elseif($he!=""&&is_shortable($l))$K=shorten_utf8($K,max(0,+$he));else$K=h($K);}return$b->selectVal($K,$z,$l,$V);}function |
|
134 | -is_mail($pb){$pa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$ib='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$H="$pa+(\\.$pa+)*@($ib?\\.)+$ib";return |
|
135 | -is_string($pb)&&preg_match("(^$H(,\\s*$H)*\$)i",$pb);}function |
|
136 | -is_url($Q){$ib='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($ib?\\.)+$ib(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q,$A)?strtolower($A[1]):"");}function |
|
137 | -is_shortable($l){return |
|
138 | -preg_match('~char|text|lob|geometry|point|linestring|polygon|string~',$l["type"]);}function |
|
139 | -count_rows($R,$Y,$u,$p){global$v;$I=" FROM ".table($R).($Y?" WHERE ".implode(" AND ",$Y):"");return($u&&($v=="sql"||count($p)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$p).")$I":"SELECT COUNT(*)".($u?" FROM (SELECT 1$I$Ub) x":$I));}function |
|
140 | -slow_query($I){global$b,$qe;$h=$b->database();$ke=$b->queryTimeout();if(support("kill")&&is_object($g=connect())&&($h==""||$g->select_db($h))){$rc=$g->result("SELECT CONNECTION_ID()");echo'<script type="text/javascript"> |
|
9 | +*/error_reporting(6135); $Hb = !preg_match('~^(unsafe_raw)?$~', ini_get("filter.default")); if ($Hb || ini_get("filter.default_flags")) {foreach (array('_GET', '_POST', '_COOKIE', '_SERVER')as$V) {$Ae = filter_input_array(constant("INPUT$V"), FILTER_UNSAFE_RAW); if ($Ae)$$V = $Ae; }}if (function_exists("mb_internal_encoding"))mb_internal_encoding("8bit"); if (isset($_GET["file"])) {if ($_SERVER["HTTP_IF_MODIFIED_SINCE"]) {header("HTTP/1.1 304 Not Modified"); exit; }header("Expires: " . gmdate("D, d M Y H:i:s", time() + 365 * 24 * 60 * 60) . " GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); if ($_GET["file"] == "favicon.ico") {header("Content-Type: image/x-icon"); echo |
|
10 | +lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0"); }elseif ($_GET["file"] == "default.css") {header("Content-Type: text/css; charset=utf-8"); echo |
|
11 | +lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8У’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤ l^íZ6˜ej…Á³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxlÖ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù €‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò 'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,EÍ`T¦É6Ûˆ-“Åì¾ÅÚŽT[Ѫz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø •ÿš´hìÁ{Ü£•î ËÔ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØÍ‡Ð¢©‰‚êcâ¡óB’—}Ø&`ˆîr+E“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼ ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡ ³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£È}"); }elseif ($_GET["file"] == "functions.js") {header("Content-Type: text/javascript; charset=utf-8"); echo |
|
12 | +lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s> )â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n \ræs<ŒPi2INÆ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(Òm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$ CAÆ ä„¤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AKã¡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…): ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDùÑ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æÚŒÚ‡Ÿ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/ØX ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éï†PÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðÈôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEÐ€Ôøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6↬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F 4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀÎ t]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ 1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*/¹UÖVû‰¤þpì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Æ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·> —BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ ¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6Chº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ß§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)×…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üàå€ ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤ (€\r¹öGFžª@ؼÃúÙÀß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷Ƚà¸à\\P’,\"ª-rCÉrVäæY×·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê ‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rÔ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔÄ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„â¢ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ €ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;SÇ]ãñ@ËÇè:Ââ“÷I~Û‘•ÙùÒÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}Ï:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð‰)¯i4Ñu•sÁLjXÁMP¬‚^«ä5¹O’¥ bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE% dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> ›â}Sð8=ã‚ÇÀàô/™)BÑvEIÊbœvð’¬–/ˆªŠqìãÂôe¿KšÔw\0%õ!Í€pªUT@ѵ‰Ë¦_ŒË˜@òàtË8î%ñ>âÌôA´—¤äb+~+\n’…ΤÅ\"©>4Áˆc^Úô־šè§N€ZÛ^ÖØ¯N4ªCDr– DÉCÑ’øàáȳö(ÅR˜ed±‰ù¦›{áŠF•Z†+Q#´ÈW-ýí‘¥qÉÑUCÆÎ;£œ‹XðÛx£¤„\n6ÍzkàvÚý´qàx\"h’ÄšRXþ²?Àpd¢ùÅsðæ†ž?|ÜpÓ\rˆã¿~ÒÖ^ƘhÖªAñÆ<r\$ÓAfÇ5\n\"0;œƒ”‰!Ç¼Õ aÉá‰ÖzG„¬1ÞBÊ’ãÏ\"…¸†±OLkÛÓ‡‘\0ƒžFõñ¿Ž'YœŽˆ4õИ"); }elseif ($_GET["file"] == "jush.js") {header("Content-Type: text/javascript; charset=utf-8"); echo |
|
13 | +lzw_decompress(compile_file('', 'minify_js')); } else {header("Content-Type: image/gif"); switch ($_GET["file"]) {case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;"; break; case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;"; break; case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;"; break; case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&ٜƶ•\0Çò\0;"; break; case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;"; break; }}exit; }function |
|
14 | +connection() {global$f; return$f; }function |
|
15 | +adminer() {global$b; return$b; }function |
|
16 | +idf_unescape($gc) {$uc = substr($gc, -1); return |
|
17 | +str_replace($uc . $uc, $uc, substr($gc, 1, -1)); }function |
|
18 | +escape_string($V) {return |
|
19 | +substr(q($V), 1, -1); }function |
|
20 | +number($V) {return |
|
21 | +preg_replace('~[^0-9]+~', '', $V); }function |
|
22 | +remove_slashes($pd, $Hb = false) {if (get_magic_quotes_gpc()) {while (list($x, $V) = each($pd)) {foreach ($V |
|
23 | +as$w=>$U) {unset($pd[$x][$w]); if (is_array($U)) {$pd[$x][stripslashes($w)] = $U; $pd[] = &$pd[$x][stripslashes($w)]; } else$pd[$x][stripslashes($w)] = ($Hb ? $U : stripslashes($U)); }}}}function |
|
24 | +bracket_escape($gc, $ua = false) {static$re = array(':'=>':1', ']'=>':2', '['=>':3'); return |
|
25 | +strtr($gc, ($ua ? array_flip($re) : $re)); }function |
|
26 | +charset($f) {return(version_compare($f->server_info, "5.5.3") >= 0 ? "utf8mb4" : "utf8"); }function |
|
27 | +h($Q) {return |
|
28 | +str_replace("\0", "�", htmlspecialchars($Q, ENT_QUOTES, 'utf-8')); }function |
|
29 | +nbsp($Q) {return(trim($Q) != "" ? h($Q) : " "); }function |
|
30 | +nl_br($Q) {return |
|
31 | +str_replace("\n", "<br>", $Q); }function |
|
32 | +checkbox($D, $W, $Fa, $sc = "", $Tc = "", $Ia = "") {$K = "<input type='checkbox' name='$D' value='" . h($W) . "'" . ($Fa ? " checked" : "") . ($Tc ? ' onclick="' . h($Tc) . '"' : '') . ">"; return($sc != "" || $Ia ? "<label" . ($Ia ? " class='$Ia'" : "") . ">$K" . h($sc) . "</label>" : $K); }function |
|
33 | +optionlist($Xc, $Id = null, $Fe = false) {$K = ""; foreach ($Xc |
|
34 | +as$w=>$U) {$Yc = array($w=>$U); if (is_array($U)) {$K .= '<optgroup label="' . h($w) . '">'; $Yc = $U; }foreach ($Yc |
|
35 | +as$x=>$V)$K .= '<option' . ($Fe || is_string($x) ? ' value="' . h($x) . '"' : '') . (($Fe || is_string($x) ? (string) $x : $V) === $Id ? ' selected' : '') . '>' . h($V); if (is_array($U))$K .= '</optgroup>'; }return$K; }function |
|
36 | +html_select($D, $Xc, $W = "", $Sc = true) {if ($Sc)return"<select name='" . h($D) . "'" . (is_string($Sc) ? ' onchange="' . h($Sc) . '"' : "") . ">" . optionlist($Xc, $W) . "</select>"; $K = ""; foreach ($Xc |
|
37 | +as$x=>$V)$K .= "<label><input type='radio' name='" . h($D) . "' value='" . h($x) . "'" . ($x == $W ? " checked" : "") . ">" . h($V) . "</label>"; return$K; }function |
|
38 | +select_input($c, $Xc, $W = "", $hd = "") {return($Xc ? "<select$c><option value=''>$hd" . optionlist($Xc, $W, true) . "</select>" : "<input$c size='10' value='" . h($W) . "' placeholder='$hd'>"); }function |
|
39 | +confirm() {return" onclick=\"return confirm('" . 'Are you sure?' . "');\""; }function |
|
40 | +print_fieldset($r, $wc, $Je = false, $Tc = "") {echo"<fieldset><legend><a href='#fieldset-$r' onclick=\"" . h($Tc) . "return !toggle('fieldset-$r');\">$wc</a></legend><div id='fieldset-$r'" . ($Je ? "" : " class='hidden'") . ">\n"; }function |
|
41 | +bold($Aa, $Ia = "") {return($Aa ? " class='active $Ia'" : ($Ia ? " class='$Ia'" : "")); }function |
|
42 | +odd($K = ' class="odd"') {static$q = 0; if (!$K)$q = -1; return($q++ % 2 ? $K : ''); }function |
|
43 | +js_escape($Q) {return |
|
44 | +addcslashes($Q, "\r\n'\\/"); }function |
|
45 | +json_row($x, $V = null) {static$Ib = true; if ($Ib)echo"{"; if ($x != "") {echo($Ib ? "" : ",") . "\n\t\"" . addcslashes($x, "\r\n\"\\/") . '": ' . ($V !== null ? '"' . addcslashes($V, "\r\n\"\\/") . '"' : 'undefined'); $Ib = false; } else {echo"\n}\n"; $Ib = true; }}function |
|
46 | +ini_bool($kc) {$V = ini_get($kc); return(preg_match('~^(on|true|yes)$~i', $V) || (int) $V); }function |
|
47 | +sid() {static$K; if ($K === null)$K = (SID && !($_COOKIE && ini_bool("session.use_cookies"))); return$K; }function |
|
48 | +set_password($X, $O, $T, $G) {$_SESSION["pwds"][$X][$O][$T] = ($_COOKIE["adminer_key"] && is_string($G) ? array(encrypt_string($G, $_COOKIE["adminer_key"])) : $G); }function |
|
49 | +get_password() {$K = get_session("pwds"); if (is_array($K))$K = ($_COOKIE["adminer_key"] ? decrypt_string($K[0], $_COOKIE["adminer_key"]) : false); return$K; }function |
|
50 | +q($Q) {global$f; return$f->quote($Q); }function |
|
51 | +get_vals($I, $d = 0) {global$f; $K = array(); $J = $f->query($I); if (is_object($J)) {while ($L = $J->fetch_row())$K[] = $L[$d]; }return$K; }function |
|
52 | +get_key_vals($I, $g = null, $ke = 0) {global$f; if (!is_object($g))$g = $f; $K = array(); $g->timeout = $ke; $J = $g->query($I); $g->timeout = 0; if (is_object($J)) {while ($L = $J->fetch_row())$K[$L[0]] = $L[1]; }return$K; }function |
|
53 | +get_rows($I, $g = null, $k = "<p class='error'>") {global$f; $Sa = (is_object($g) ? $g : $f); $K = array(); $J = $Sa->query($I); if (is_object($J)) {while ($L = $J->fetch_assoc())$K[] = $L; }elseif (!$J && !is_object($g) && $k && defined("PAGE_HEADER"))echo$k . error() . "\n"; return$K; }function |
|
54 | +unique_array($L, $t) {foreach ($t |
|
55 | +as$s) {if (preg_match("~PRIMARY|UNIQUE~", $s["type"])) {$K = array(); foreach ($s["columns"]as$x) {if (!isset($L[$x]))continue |
|
56 | +2; $K[$x] = $L[$x]; }return$K; }}}function |
|
57 | +escape_key($x) {if (preg_match('(^([\w(]+)(' . str_replace("_", ".*", preg_quote(idf_escape("_"))) . ')([ \w)]+)$)', $x, $A))return$A[1] . idf_escape(idf_unescape($A[2])) . $A[3]; return |
|
58 | +idf_escape($x); }function |
|
59 | +where($Y, $m = array()) {global$f, $v; $K = array(); foreach ((array) $Y["where"]as$x=>$V) {$x = bracket_escape($x, 1); $d = escape_key($x); $K[] = $d . (($v == "sql" && preg_match('~^[0-9]*\\.[0-9]*$~', $V)) || $v == "mssql" ? " LIKE " . q(addcslashes($V, "%_\\")) : " = " . unconvert_field($m[$x], q($V))); if ($v == "sql" && preg_match('~char|text~', $m[$x]["type"]) && preg_match("~[^ -@]~", $V))$K[] = "$d = " . q($V) . " COLLATE " . charset($f) . "_bin"; }foreach ((array) $Y["null"]as$x)$K[] = escape_key($x) . " IS NULL"; return |
|
60 | +implode(" AND ", $K); }function |
|
61 | +where_check($V, $m = array()) {parse_str($V, $Ea); remove_slashes(array(&$Ea)); return |
|
62 | +where($Ea, $m); }function |
|
63 | +where_link($q, $d, $W, $Vc = "=") {return"&where%5B$q%5D%5Bcol%5D=" . urlencode($d) . "&where%5B$q%5D%5Bop%5D=" . urlencode(($W !== null ? $Vc : "IS NULL")) . "&where%5B$q%5D%5Bval%5D=" . urlencode($W); }function |
|
64 | +convert_fields($e, $m, $N = array()) {$K = ""; foreach ($e |
|
65 | +as$x=>$V) {if ($N && !in_array(idf_escape($x), $N))continue; $oa = convert_field($m[$x]); if ($oa)$K .= ", $oa AS " . idf_escape($x); }return$K; }function |
|
66 | +cookie($D, $W, $zc = 2592000) {global$aa; $ed = array($D, (preg_match("~\n~", $W) ? "" : $W), ($zc ? time() + $zc : 0), preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]), "", $aa); if (version_compare(PHP_VERSION, '5.2.0') >= 0)$ed[] = true; return |
|
67 | +call_user_func_array('setcookie', $ed); }function |
|
68 | +restart_session() {if (!ini_bool("session.use_cookies"))session_start(); }function |
|
69 | +stop_session() {if (!ini_bool("session.use_cookies"))session_write_close(); }function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]; }function |
|
70 | +set_session($x, $V) {$_SESSION[$x][DRIVER][SERVER][$_GET["username"]] = $V; }function |
|
71 | +auth_url($X, $O, $T, $h = null) {global$jb; preg_match('~([^?]*)\\??(.*)~', remove_from_uri(implode("|", array_keys($jb)) . "|username|" . ($h !== null ? "db|" : "") . session_name()), $A); return"$A[1]?" . (sid() ? SID . "&" : "") . ($X != "server" || $O != "" ? urlencode($X) . "=" . urlencode($O) . "&" : "") . "username=" . urlencode($T) . ($h != "" ? "&db=" . urlencode($h) : "") . ($A[2] ? "&$A[2]" : ""); }function |
|
72 | +is_ajax() {return($_SERVER["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest"); }function |
|
73 | +redirect($_, $B = null) {if ($B !== null) {restart_session(); $_SESSION["messages"][preg_replace('~^[^?]*~', '', ($_ !== null ? $_ : $_SERVER["REQUEST_URI"]))][] = $B; }if ($_ !== null) {if ($_ == "")$_ = "."; header("Location: $_"); exit; }}function |
|
74 | +query_redirect($I, $_, $B, $xd = true, $zb = true, $Bb = false, $je = "") {global$f, $k, $b; if ($zb) {$Td = microtime(true); $Bb = !$f->query($I); $je = format_time($Td); }$Sd = ""; if ($I)$Sd = $b->messageQuery($I, $je); if ($Bb) {$k = error() . $Sd; return |
|
75 | +false; }if ($xd)redirect($_, $B . $Sd); return |
|
76 | +true; }function |
|
77 | +queries($I) {global$f; static$sd = array(); static$Td; if (!$Td)$Td = microtime(true); if ($I === null)return |
|
78 | +array(implode("\n", $sd), format_time($Td)); $sd[] = (preg_match('~;$~', $I) ? "DELIMITER ;;\n$I;\nDELIMITER " : $I) . ";"; return$f->query($I); }function |
|
79 | +apply_queries($I, $ee, $wb = 'table') {foreach ($ee |
|
80 | +as$R) {if (!queries("$I " . $wb($R)))return |
|
81 | +false; }return |
|
82 | +true; }function |
|
83 | +queries_redirect($_, $B, $xd) {list($sd, $je) = queries(null); return |
|
84 | +query_redirect($sd, $_, $B, $xd, false, !$xd, $je); }function |
|
85 | +format_time($Td) {return |
|
86 | +sprintf('%.3f s', max(0, microtime(true) - $Td)); }function |
|
87 | +remove_from_uri($dd = "") {return |
|
88 | +substr(preg_replace("~(?<=[?&])($dd" . (SID ? "" : "|" . session_name()) . ")=[^&]*&~", '', "$_SERVER[REQUEST_URI]&"), 0, -1); }function |
|
89 | +pagination($F, $Ya) {return" " . ($F == $Ya ? $F + 1 : '<a href="' . h(remove_from_uri("page") . ($F ? "&page=$F" . ($_GET["next"] ? "&next=" . urlencode($_GET["next"]) : "") : "")) . '">' . ($F + 1) . "</a>"); }function |
|
90 | +get_file($x, $bb = false) {$Eb = $_FILES[$x]; if (!$Eb)return |
|
91 | +null; foreach ($Eb |
|
92 | +as$x=>$V)$Eb[$x] = (array) $V; $K = ''; foreach ($Eb["error"]as$x=>$k) {if ($k)return$k; $D = $Eb["name"][$x]; $pe = $Eb["tmp_name"][$x]; $Ta = file_get_contents($bb && preg_match('~\\.gz$~', $D) ? "compress.zlib://$pe" : $pe); if ($bb) {$Td = substr($Ta, 0, 3); if (function_exists("iconv") && preg_match("~^\xFE\xFF|^\xFF\xFE~", $Td, $yd))$Ta = iconv("utf-16", "utf-8", $Ta); elseif ($Td == "\xEF\xBB\xBF")$Ta = substr($Ta, 3); $K .= $Ta . "\n\n"; } else$K .= $Ta; }return$K; }function |
|
93 | +upload_error($k) {$Ec = ($k == UPLOAD_ERR_INI_SIZE ? ini_get("upload_max_filesize") : 0); return($k ? 'Unable to upload a file.' . ($Ec ? " " . sprintf('Maximum allowed file size is %sB.', $Ec) : "") : 'File does not exist.'); }function |
|
94 | +repeat_pattern($H, $xc) {return |
|
95 | +str_repeat("$H{0,65535}", $xc / 65535) . "$H{0," . ($xc % 65535) . "}"; }function |
|
96 | +is_utf8($V) {return(preg_match('~~u', $V) && !preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~', $V)); }function |
|
97 | +shorten_utf8($Q, $xc = 80, $Zd = "") {if (!preg_match("(^(" . repeat_pattern("[\t\r\n -\x{FFFF}]", $xc) . ")($)?)u", $Q, $A))preg_match("(^(" . repeat_pattern("[\t\r\n -~]", $xc) . ")($)?)", $Q, $A); return |
|
98 | +h($A[1]) . $Zd . (isset($A[2]) ? "" : "<i>...</i>"); }function |
|
99 | +format_number($V) {return |
|
100 | +strtr(number_format($V, 0, ".", ','), preg_split('~~u', '0123456789', -1, PREG_SPLIT_NO_EMPTY)); }function |
|
101 | +friendly_url($V) {return |
|
102 | +preg_replace('~[^a-z0-9_]~i', '-', $V); }function |
|
103 | +hidden_fields($pd, $ic = array()) {while (list($x, $V) = each($pd)) {if (!in_array($x, $ic)) {if (is_array($V)) {foreach ($V |
|
104 | +as$w=>$U)$pd[$x . "[$w]"] = $U; } else |
|
105 | +echo'<input type="hidden" name="' . h($x) . '" value="' . h($V) . '">'; }}}function |
|
106 | +hidden_fields_get() {echo(sid() ? '<input type="hidden" name="' . session_name() . '" value="' . h(session_id()) . '">' : ''), (SERVER !== null ? '<input type="hidden" name="' . DRIVER . '" value="' . h(SERVER) . '">' : ""), '<input type="hidden" name="username" value="' . h($_GET["username"]) . '">'; }function |
|
107 | +table_status1($R, $Cb = false) {$K = table_status($R, $Cb); return($K ? $K : array("Name"=>$R)); }function |
|
108 | +column_foreign_keys($R) {global$b; $K = array(); foreach ($b->foreignKeys($R)as$Nb) {foreach ($Nb["source"]as$V)$K[$V][] = $Nb; }return$K; }function |
|
109 | +enum_input($ue, $c, $l, $W, $sb = null) {global$b; preg_match_all("~'((?:[^']|'')*)'~", $l["length"], $Bc); $K = ($sb !== null ? "<label><input type='$ue'$c value='$sb'" . ((is_array($W) ? in_array($sb, $W) : $W === 0) ? " checked" : "") . "><i>" . 'empty' . "</i></label>" : ""); foreach ($Bc[1]as$q=>$V) {$V = stripcslashes(str_replace("''", "'", $V)); $Fa = (is_int($W) ? $W == $q + 1 : (is_array($W) ? in_array($q + 1, $W) : $W === $V)); $K .= " <label><input type='$ue'$c value='" . ($q + 1) . "'" . ($Fa ? ' checked' : '') . '>' . h($b->editVal($V, $l)) . '</label>'; }return$K; }function |
|
110 | +input($l, $W, $o) {global$f, $we, $b, $v; $D = h(bracket_escape($l["field"])); echo"<td class='function'>"; if (is_array($W) && !$o) {$na = array($W); if (version_compare(PHP_VERSION, 5.4) >= 0)$na[] = JSON_PRETTY_PRINT; $W = call_user_func_array('json_encode', $na); $o = "json"; }$Ad = ($v == "mssql" && $l["auto_increment"]); if ($Ad && !$_POST["save"])$o = null; $Tb = (isset($_GET["select"]) || $Ad ? array("orig"=>'original') : array()) + $b->editFunctions($l); $c = " name='fields[$D]'"; if ($l["type"] == "enum")echo |
|
111 | +nbsp($Tb[""]) . "<td>" . $b->editInput($_GET["edit"], $l, $c, $W); else {$Ib = 0; foreach ($Tb |
|
112 | +as$x=>$V) {if ($x === "" || !$V)break; $Ib++; }$Sc = ($Ib ? " onchange=\"var f = this.form['function[" . h(js_escape(bracket_escape($l["field"]))) . "]']; if ($Ib > f.selectedIndex) f.selectedIndex = $Ib;\" onkeyup='keyupChange.call(this);'" : ""); $c .= $Sc; $Yb = (in_array($o, $Tb) || isset($Tb[$o])); echo(count($Tb) > 1 ? "<select name='function[$D]' onchange='functionChange(this);'" . on_help("getTarget(event).value.replace(/^SQL\$/, '')", 1) . ">" . optionlist($Tb, $o === null || $Yb ? $o : "") . "</select>" : nbsp(reset($Tb))) . '<td>'; $mc = $b->editInput($_GET["edit"], $l, $c, $W); if ($mc != "")echo$mc; elseif ($l["type"] == "set") {preg_match_all("~'((?:[^']|'')*)'~", $l["length"], $Bc); foreach ($Bc[1]as$q=>$V) {$V = stripcslashes(str_replace("''", "'", $V)); $Fa = (is_int($W) ? ($W >> $q) & 1 : in_array($V, explode(",", $W), true)); echo" <label><input type='checkbox' name='fields[$D][$q]' value='" . (1 << $q) . "'" . ($Fa ? ' checked' : '') . "$Sc>" . h($b->editVal($V, $l)) . '</label>'; }}elseif (preg_match('~blob|bytea|raw|file~', $l["type"]) && ini_bool("file_uploads"))echo"<input type='file' name='fields-$D'$Sc>"; elseif (($ge = preg_match('~text|lob~', $l["type"])) || preg_match("~\n~", $W)) {if ($ge && $v != "sqlite")$c .= " cols='50' rows='12'"; else {$M = min(12, substr_count($W, "\n") + 1); $c .= " cols='30' rows='$M'" . ($M == 1 ? " style='height: 1.2em;'" : ""); }echo"<textarea$c>" . h($W) . '</textarea>'; }elseif ($o == "json")echo"<textarea$c cols='50' rows='12' class='jush-js'>" . h($W) . '</textarea>'; else {$Gc = (!preg_match('~int~', $l["type"]) && preg_match('~^(\\d+)(,(\\d+))?$~', $l["length"], $A) ? ((preg_match("~binary~", $l["type"]) ? 2 : 1) * $A[1] + ($A[3] ? 1 : 0) + ($A[2] && !$l["unsigned"] ? 1 : 0)) : ($we[$l["type"]] ? $we[$l["type"]] + ($l["unsigned"] ? 0 : 1) : 0)); if ($v == 'sql' && $f->server_info >= 5.6 && preg_match('~time~', $l["type"]))$Gc += 7; echo"<input" . ((!$Yb || $o === "") && preg_match('~(?<!o)int~', $l["type"]) ? " type='number'" : "") . " value='" . h($W) . "'" . ($Gc ? " maxlength='$Gc'" : "") . (preg_match('~char|binary~', $l["type"]) && $Gc > 20 ? " size='40'" : "") . "$c>"; }}}function |
|
113 | +process_input($l) {global$b; $gc = bracket_escape($l["field"]); $o = $_POST["function"][$gc]; $W = $_POST["fields"][$gc]; if ($l["type"] == "enum") {if ($W == -1)return |
|
114 | +false; if ($W == "")return"NULL"; return+$W; }if ($l["auto_increment"] && $W == "")return |
|
115 | +null; if ($o == "orig")return($l["on_update"] == "CURRENT_TIMESTAMP" ? idf_escape($l["field"]) : false); if ($o == "NULL")return"NULL"; if ($l["type"] == "set")return |
|
116 | +array_sum((array) $W); if ($o == "json") {$o = ""; $W = json_decode($W, true); if (!is_array($W))return |
|
117 | +false; return$W; }if (preg_match('~blob|bytea|raw|file~', $l["type"]) && ini_bool("file_uploads")) {$Eb = get_file("fields-$gc"); if (!is_string($Eb))return |
|
118 | +false; return |
|
119 | +q($Eb); }return$b->processInput($l, $W, $o); }function |
|
120 | +fields_from_edit() {global$i; $K = array(); foreach ((array) $_POST["field_keys"]as$x=>$V) {if ($V != "") {$V = bracket_escape($V); $_POST["function"][$V] = $_POST["field_funs"][$x]; $_POST["fields"][$V] = $_POST["field_vals"][$x]; }}foreach ((array) $_POST["fields"]as$x=>$V) {$D = bracket_escape($x, 1); $K[$D] = array("field"=>$D, "privileges"=>array("insert"=>1, "update"=>1), "null"=>1, "auto_increment"=>($x == $i->primary),); }return$K; }function |
|
121 | +search_tables() {global$b, $f; $_GET["where"][0]["op"] = "LIKE %%"; $_GET["where"][0]["val"] = $_POST["query"]; $Qb = false; foreach (table_status('', true)as$R=>$S) {$D = $b->tableName($S); if (isset($S["Engine"]) && $D != "" && (!$_POST["tables"] || in_array($R, $_POST["tables"]))) {$J = $f->query("SELECT" . limit("1 FROM " . table($R), " WHERE " . implode(" AND ", $b->selectSearchProcess(fields($R), array())), 1)); if (!$J || $J->fetch_row()) {if (!$Qb) {echo"<ul>\n"; $Qb = true; }echo"<li>" . ($J ? "<a href='" . h(ME . "select=" . urlencode($R) . "&where[0][op]=" . urlencode($_GET["where"][0]["op"]) . "&where[0][val]=" . urlencode($_GET["where"][0]["val"])) . "'>$D</a>\n" : "$D: <span class='error'>" . error() . "</span>\n"); }}}echo($Qb ? "</ul>" : "<p class='message'>" . 'No tables.') . "\n"; }function |
|
122 | +dump_headers($fc, $Jc = false) {global$b; $K = $b->dumpHeaders($fc, $Jc); $bd = $_POST["output"]; if ($bd != "text")header("Content-Disposition: attachment; filename=" . $b->dumpFilename($fc) . ".$K" . ($bd != "file" && !preg_match('~[^0-9a-z]~', $bd) ? ".$bd" : "")); session_write_close(); ob_flush(); flush(); return$K; }function |
|
123 | +dump_csv($L) {foreach ($L |
|
124 | +as$x=>$V) {if (preg_match("~[\"\n,;\t]~", $V) || $V === "")$L[$x] = '"' . str_replace('"', '""', $V) . '"'; }echo |
|
125 | +implode(($_POST["format"] == "csv" ? "," : ($_POST["format"] == "tsv" ? "\t" : ";")), $L) . "\r\n"; }function |
|
126 | +apply_sql_function($o, $d) {return($o ? ($o == "unixepoch" ? "DATETIME($d, '$o')" : ($o == "count distinct" ? "COUNT(DISTINCT " : strtoupper("$o(")) . "$d)") : $d); }function |
|
127 | +get_temp_dir() {$K = ini_get("upload_tmp_dir"); if (!$K) {if (function_exists('sys_get_temp_dir'))$K = sys_get_temp_dir(); else {$Fb = @tempnam("", ""); if (!$Fb)return |
|
128 | +false; $K = dirname($Fb); unlink($Fb); }}return$K; }function |
|
129 | +password_file($Va) {$Fb = get_temp_dir() . "/adminer.key"; $K = @file_get_contents($Fb); if ($K || !$Va)return$K; $Rb = @fopen($Fb, "w"); if ($Rb) {chmod($Fb, 0660); $K = rand_string(); fwrite($Rb, $K); fclose($Rb); }return$K; }function |
|
130 | +rand_string() {return |
|
131 | +md5(uniqid(mt_rand(), true)); }function |
|
132 | +select_value($V, $z, $l, $he) {global$b, $aa; if (is_array($V)) {$K = ""; foreach ($V |
|
133 | +as$w=>$U)$K .= "<tr>" . ($V != array_values($V) ? "<th>" . h($w) : "") . "<td>" . select_value($U, $z, $l, $he); return"<table cellspacing='0'>$K</table>"; }if (!$z)$z = $b->selectLink($V, $l); if ($z === null) {if (is_mail($V))$z = "mailto:$V"; if ($qd = is_url($V))$z = (($qd == "http" && $aa) || preg_match('~WebKit~i', $_SERVER["HTTP_USER_AGENT"]) ? $V : "https://www.adminer.org/redirect/?url=" . urlencode($V)); }$K = $b->editVal($V, $l); if ($K !== null) {if ($K === "")$K = " "; elseif (!is_utf8($K))$K = "\0"; elseif ($he != "" && is_shortable($l))$K = shorten_utf8($K, max(0, +$he)); else$K = h($K); }return$b->selectVal($K, $z, $l, $V); }function |
|
134 | +is_mail($pb) {$pa = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]'; $ib = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; $H = "$pa+(\\.$pa+)*@($ib?\\.)+$ib"; return |
|
135 | +is_string($pb) && preg_match("(^$H(,\\s*$H)*\$)i", $pb); }function |
|
136 | +is_url($Q) {$ib = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; return(preg_match("~^(https?)://($ib?\\.)+$ib(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i", $Q, $A) ? strtolower($A[1]) : ""); }function |
|
137 | +is_shortable($l) {return |
|
138 | +preg_match('~char|text|lob|geometry|point|linestring|polygon|string~', $l["type"]); }function |
|
139 | +count_rows($R, $Y, $u, $p) {global$v; $I = " FROM " . table($R) . ($Y ? " WHERE " . implode(" AND ", $Y) : ""); return($u && ($v == "sql" || count($p) == 1) ? "SELECT COUNT(DISTINCT " . implode(", ", $p) . ")$I" : "SELECT COUNT(*)" . ($u ? " FROM (SELECT 1$I$Ub) x" : $I)); }function |
|
140 | +slow_query($I) {global$b, $qe; $h = $b->database(); $ke = $b->queryTimeout(); if (support("kill") && is_object($g = connect()) && ($h == "" || $g->select_db($h))) {$rc = $g->result("SELECT CONNECTION_ID()"); echo'<script type="text/javascript"> |
|
141 | 141 | var timeout = setTimeout(function () { |
142 | - ajax(\'',js_escape(ME),'script=kill\', function () { |
|
143 | - }, \'token=',$qe,'&kill=',$rc,'\'); |
|
144 | -}, ',1000*$ke,'); |
|
142 | + ajax(\'',js_escape(ME), 'script=kill\', function () { |
|
143 | + }, \'token=',$qe, '&kill=', $rc, '\'); |
|
144 | +}, ',1000 * $ke, '); |
|
145 | 145 | </script> |
146 | -';}else$g=null;ob_flush();flush();$K=@get_key_vals($I,$g,$ke);if($g){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return |
|
147 | -array_keys($K);}function |
|
148 | -get_token(){$vd=rand(1,1e6);return($vd^$_SESSION["token"]).":$vd";}function |
|
149 | -verify_token(){list($qe,$vd)=explode(":",$_POST["token"]);return($vd^$_SESSION["token"])==$qe;}function |
|
150 | -lzw_decompress($za){$gb=256;$_a=8;$Ka=array();$Bd=0;$Cd=0;for($q=0;$q<strlen($za);$q++){$Bd=($Bd<<8)+ord($za[$q]);$Cd+=8;if($Cd>=$_a){$Cd-=$_a;$Ka[]=$Bd>>$Cd;$Bd&=(1<<$Cd)-1;$gb++;if($gb>>$_a)$_a++;}}$fb=range("\0","\xFF");$K="";foreach($Ka |
|
151 | -as$q=>$Ja){$ob=$fb[$Ja];if(!isset($ob))$ob=$Ne.$Ne[0];$K.=$ob;if($q)$fb[]=$Ne.$ob[0];$Ne=$ob;}return$K;}function |
|
152 | -on_help($Pa,$Pd=0){return" onmouseover='helpMouseover(this, event, ".h($Pa).", $Pd);' onmouseout='helpMouseout(this, event);'";}function |
|
153 | -edit_form($a,$m,$L,$De){global$b,$v,$qe,$k;$de=$b->tableName(table_status1($a,true));page_header(($De?'Edit':'Insert'),$k,array("select"=>array($a,$de)),$de);if($L===false)echo"<p class='error'>".'No rows.'."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form"> |
|
154 | -';if(!$m)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m |
|
155 | -as$D=>$l){echo"<tr><th>".$b->fieldName($l);$cb=$_GET["set"][bracket_escape($D)];if($cb===null){$cb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$cb,$yd))$cb=$yd[1];}$W=($L!==null?($L[$D]!=""&&$v=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$D])?array_sum($L[$D]):+$L[$D]):$L[$D]):(!$De&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$cb)));if(!$_POST["save"]&&is_string($W))$W=$b->editVal($W,$l);$o=($_POST["save"]?(string)$_POST["function"][$D]:($De&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($W===false?null:($W!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$W=="CURRENT_TIMESTAMP"){$W="";$o="now";}input($l,$W,$o);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($De?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n";}echo($De?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'"> |
|
146 | +';} else$g = null; ob_flush(); flush(); $K = @get_key_vals($I, $g, $ke); if ($g) {echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n"; ob_flush(); flush(); }return |
|
147 | +array_keys($K); }function |
|
148 | +get_token() {$vd = rand(1, 1e6); return($vd ^ $_SESSION["token"]) . ":$vd"; }function |
|
149 | +verify_token() {list($qe, $vd) = explode(":", $_POST["token"]); return($vd ^ $_SESSION["token"]) == $qe; }function |
|
150 | +lzw_decompress($za) {$gb = 256; $_a = 8; $Ka = array(); $Bd = 0; $Cd = 0; for ($q = 0; $q < strlen($za); $q++) {$Bd = ($Bd << 8) + ord($za[$q]); $Cd += 8; if ($Cd >= $_a) {$Cd -= $_a; $Ka[] = $Bd >> $Cd; $Bd &= (1 << $Cd) - 1; $gb++; if ($gb >> $_a)$_a++; }}$fb = range("\0", "\xFF"); $K = ""; foreach ($Ka |
|
151 | +as$q=>$Ja) {$ob = $fb[$Ja]; if (!isset($ob))$ob = $Ne . $Ne[0]; $K .= $ob; if ($q)$fb[] = $Ne . $ob[0]; $Ne = $ob; }return$K; }function |
|
152 | +on_help($Pa, $Pd = 0) {return" onmouseover='helpMouseover(this, event, " . h($Pa) . ", $Pd);' onmouseout='helpMouseout(this, event);'"; }function |
|
153 | +edit_form($a, $m, $L, $De) {global$b, $v, $qe, $k; $de = $b->tableName(table_status1($a, true)); page_header(($De ? 'Edit' : 'Insert'), $k, array("select"=>array($a, $de)), $de); if ($L === false)echo"<p class='error'>" . 'No rows.' . "\n"; echo'<form action="" method="post" enctype="multipart/form-data" id="form"> |
|
154 | +';if (!$m)echo"<p class='error'>" . 'You have no privileges to update this table.' . "\n"; else {echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n"; foreach ($m |
|
155 | +as$D=>$l) {echo"<tr><th>" . $b->fieldName($l); $cb = $_GET["set"][bracket_escape($D)]; if ($cb === null) {$cb = $l["default"]; if ($l["type"] == "bit" && preg_match("~^b'([01]*)'\$~", $cb, $yd))$cb = $yd[1]; }$W = ($L !== null ? ($L[$D] != "" && $v == "sql" && preg_match("~enum|set~", $l["type"]) ? (is_array($L[$D]) ? array_sum($L[$D]) : +$L[$D]) : $L[$D]) : (!$De && $l["auto_increment"] ? "" : (isset($_GET["select"]) ? false : $cb))); if (!$_POST["save"] && is_string($W))$W = $b->editVal($W, $l); $o = ($_POST["save"] ? (string) $_POST["function"][$D] : ($De && $l["on_update"] == "CURRENT_TIMESTAMP" ? "now" : ($W === false ? null : ($W !== null ? '' : 'NULL')))); if (preg_match("~time~", $l["type"]) && $W == "CURRENT_TIMESTAMP") {$W = ""; $o = "now"; }input($l, $W, $o); echo"\n"; }if (!support("table"))echo"<tr>" . "<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>" . "<td class='function'>" . html_select("field_funs[]", $b->editFunctions(array("null"=>isset($_GET["select"])))) . "<td><input name='field_vals[]'>" . "\n"; echo"</table>\n"; }echo"<p>\n"; if ($m) {echo"<input type='submit' value='" . 'Save' . "'>\n"; if (!isset($_GET["select"]))echo"<input type='submit' name='insert' value='" . ($De ? 'Save and continue edit' . "' onclick='return !ajaxForm(this.form, \"" . 'Saving' . '...", this)' : 'Save and insert next') . "' title='Ctrl+Shift+Enter'>\n"; }echo($De ? "<input type='submit' name='delete' value='" . 'Delete' . "'" . confirm() . ">\n" : ($_POST || !$m ? "" : "<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n")); if (isset($_GET["select"]))hidden_fields(array("check"=>(array) $_POST["check"], "clone"=>$_POST["clone"], "all"=>$_POST["all"])); echo'<input type="hidden" name="referer" value="', h(isset($_POST["referer"]) ? $_POST["referer"] : $_SERVER["HTTP_REFERER"]), '"> |
|
156 | 156 | <input type="hidden" name="save" value="1"> |
157 | -<input type="hidden" name="token" value="',$qe,'"> |
|
157 | +<input type="hidden" name="token" value="',$qe, '"> |
|
158 | 158 | </form> |
159 | -';}global$b,$f,$jb,$mb,$ub,$k,$Tb,$Vb,$aa,$lc,$v,$ba,$tc,$Rc,$gd,$Wd,$Zb,$qe,$te,$we,$Ce,$ca;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";$aa=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$ed=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ed[]=true;call_user_func_array('session_set_cookie_params',$ed);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Hb);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function |
|
160 | -get_lang(){return'en';}function |
|
161 | -lang($se,$Oc=null){if(is_array($se)){$jd=($Oc==1?0:1);$se=$se[$jd];}$se=str_replace("%d","%s",$se);$Oc=format_number($Oc);return |
|
162 | -sprintf($se,$Oc);}if(extension_loaded('pdo')){class |
|
159 | +';}global$b, $f, $jb, $mb, $ub, $k, $Tb, $Vb, $aa, $lc, $v, $ba, $tc, $Rc, $gd, $Wd, $Zb, $qe, $te, $we, $Ce, $ca; if (!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"] = $_SERVER["ORIG_PATH_INFO"]; if (!strpos($_SERVER["REQUEST_URI"], '?') && $_SERVER["QUERY_STRING"] != "")$_SERVER["REQUEST_URI"] .= "?$_SERVER[QUERY_STRING]"; $aa = $_SERVER["HTTPS"] && strcasecmp($_SERVER["HTTPS"], "off"); @ini_set("session.use_trans_sid", false); session_cache_limiter(""); if (!defined("SID")) {session_name("adminer_sid"); $ed = array(0, preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]), "", $aa); if (version_compare(PHP_VERSION, '5.2.0') >= 0)$ed[] = true; call_user_func_array('session_set_cookie_params', $ed); session_start(); }remove_slashes(array(&$_GET, &$_POST, &$_COOKIE), $Hb); if (get_magic_quotes_runtime())set_magic_quotes_runtime(false); @set_time_limit(0); @ini_set("zend.ze1_compatibility_mode", false); @ini_set("precision", 20); function |
|
160 | +get_lang() {return'en'; }function |
|
161 | +lang($se, $Oc = null) {if (is_array($se)) {$jd = ($Oc == 1 ? 0 : 1); $se = $se[$jd]; }$se = str_replace("%d", "%s", $se); $Oc = format_number($Oc); return |
|
162 | +sprintf($se, $Oc); }if (extension_loaded('pdo')) {class |
|
163 | 163 | Min_PDO |
164 | 164 | extends |
165 | -PDO{var$_result,$server_info,$affected_rows,$errno,$error;function |
|
166 | -__construct(){global$b;$jd=array_search("SQL",$b->operators);if($jd!==false)unset($b->operators[$jd]);}function |
|
167 | -dsn($kb,$T,$G){try{parent::__construct($kb,$T,$G);}catch(Exception$xb){auth_error($xb->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function |
|
168 | -query($I,$xe=false){$J=parent::query($I);$this->error="";if(!$J){list(,$this->errno,$this->error)=$this->errorInfo();return |
|
169 | -false;}$this->store_result($J);return$J;}function |
|
170 | -multi_query($I){return$this->_result=$this->query($I);}function |
|
171 | -store_result($J=null){if(!$J){$J=$this->_result;if(!$J)return |
|
172 | -false;}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return |
|
173 | -true;}function |
|
174 | -next_result(){if(!$this->_result)return |
|
175 | -false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function |
|
176 | -result($I,$l=0){$J=$this->query($I);if(!$J)return |
|
177 | -false;$L=$J->fetch();return$L[$l];}}class |
|
165 | +PDO {var$_result, $server_info, $affected_rows, $errno, $error; function |
|
166 | +__construct() {global$b; $jd = array_search("SQL", $b->operators); if ($jd !== false)unset($b->operators[$jd]); }function |
|
167 | +dsn($kb, $T, $G) {try {parent::__construct($kb, $T, $G); } catch (Exception$xb) {auth_error($xb->getMessage()); }$this->setAttribute(13, array('Min_PDOStatement')); $this->server_info = $this->getAttribute(4); }function |
|
168 | +query($I, $xe = false) {$J = parent::query($I); $this->error = ""; if (!$J) {list(,$this->errno, $this->error) = $this->errorInfo(); return |
|
169 | +false; }$this->store_result($J); return$J; }function |
|
170 | +multi_query($I) {return$this->_result = $this->query($I); }function |
|
171 | +store_result($J = null) {if (!$J) {$J = $this->_result; if (!$J)return |
|
172 | +false; }if ($J->columnCount()) {$J->num_rows = $J->rowCount(); return$J; }$this->affected_rows = $J->rowCount(); return |
|
173 | +true; }function |
|
174 | +next_result() {if (!$this->_result)return |
|
175 | +false; $this->_result->_offset = 0; return@$this->_result->nextRowset(); }function |
|
176 | +result($I, $l = 0) {$J = $this->query($I); if (!$J)return |
|
177 | +false; $L = $J->fetch(); return$L[$l]; }}class |
|
178 | 178 | Min_PDOStatement |
179 | 179 | extends |
180 | -PDOStatement{var$_offset=0,$num_rows;function |
|
181 | -fetch_assoc(){return$this->fetch(2);}function |
|
182 | -fetch_row(){return$this->fetch(3);}function |
|
183 | -fetch_field(){$L=(object)$this->getColumnMeta($this->_offset++);$L->orgtable=$L->table;$L->orgname=$L->name;$L->charsetnr=(in_array("blob",(array)$L->flags)?63:0);return$L;}}}$jb=array();class |
|
184 | -Min_SQL{var$_conn;function |
|
185 | -__construct($f){$this->_conn=$f;}function |
|
186 | -select($R,$N,$Y,$p,$E=array(),$y=1,$F=0,$nd=false){global$b,$v;$u=(count($p)<count($N));$I=$b->selectQueryBuild($N,$Y,$p,$E,$y,$F);if(!$I)$I="SELECT".limit(($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($R),($Y?"\nWHERE ".implode(" AND ",$Y):"").($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):""),($y!=""?+$y:null),($F?$y*$F:0),"\n");$Td=microtime(true);$K=$this->_conn->query($I);if($nd)echo$b->selectQuery($I,format_time($Td));return$K;}function |
|
187 | -delete($R,$td,$y=0){$I="FROM ".table($R);return |
|
188 | -queries("DELETE".($y?limit1($I,$td):" $I$td"));}function |
|
189 | -update($R,$P,$td,$y=0,$Kd="\n"){$Ge=array();foreach($P |
|
190 | -as$x=>$V)$Ge[]="$x = $V";$I=table($R)." SET$Kd".implode(",$Kd",$Ge);return |
|
191 | -queries("UPDATE".($y?limit1($I,$td):" $I$td"));}function |
|
192 | -insert($R,$P){return |
|
193 | -queries("INSERT INTO ".table($R).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function |
|
194 | -insertUpdate($R,$M,$md){return |
|
195 | -false;}function |
|
196 | -begin(){return |
|
197 | -queries("BEGIN");}function |
|
198 | -commit(){return |
|
199 | -queries("COMMIT");}function |
|
200 | -rollback(){return |
|
201 | -queries("ROLLBACK");}}$jb=array("server"=>"MySQL")+$jb;if(!defined("DRIVER")){$kd=array("MySQLi","MySQL","PDO_MySQL");define("DRIVER","server");if(extension_loaded("mysqli")){class |
|
180 | +PDOStatement {var$_offset = 0, $num_rows; function |
|
181 | +fetch_assoc() {return$this->fetch(2); }function |
|
182 | +fetch_row() {return$this->fetch(3); }function |
|
183 | +fetch_field() {$L = (object) $this->getColumnMeta($this->_offset++); $L->orgtable = $L->table; $L->orgname = $L->name; $L->charsetnr = (in_array("blob", (array) $L->flags) ? 63 : 0); return$L; }}}$jb = array(); class |
|
184 | +Min_SQL {var$_conn; function |
|
185 | +__construct($f) {$this->_conn = $f; }function |
|
186 | +select($R, $N, $Y, $p, $E = array(), $y = 1, $F = 0, $nd = false) {global$b, $v; $u = (count($p) < count($N)); $I = $b->selectQueryBuild($N, $Y, $p, $E, $y, $F); if (!$I)$I = "SELECT" . limit(($_GET["page"] != "last" && +$y && $p && $u && $v == "sql" ? "SQL_CALC_FOUND_ROWS " : "") . implode(", ", $N) . "\nFROM " . table($R), ($Y ? "\nWHERE " . implode(" AND ", $Y) : "") . ($p && $u ? "\nGROUP BY " . implode(", ", $p) : "") . ($E ? "\nORDER BY " . implode(", ", $E) : ""), ($y != "" ?+$y : null), ($F ? $y * $F : 0), "\n"); $Td = microtime(true); $K = $this->_conn->query($I); if ($nd)echo$b->selectQuery($I, format_time($Td)); return$K; }function |
|
187 | +delete($R, $td, $y = 0) {$I = "FROM " . table($R); return |
|
188 | +queries("DELETE" . ($y ? limit1($I, $td) : " $I$td")); }function |
|
189 | +update($R, $P, $td, $y = 0, $Kd = "\n") {$Ge = array(); foreach ($P |
|
190 | +as$x=>$V)$Ge[] = "$x = $V"; $I = table($R) . " SET$Kd" . implode(",$Kd", $Ge); return |
|
191 | +queries("UPDATE" . ($y ? limit1($I, $td) : " $I$td")); }function |
|
192 | +insert($R, $P) {return |
|
193 | +queries("INSERT INTO " . table($R) . ($P ? " (" . implode(", ", array_keys($P)) . ")\nVALUES (" . implode(", ", $P) . ")" : " DEFAULT VALUES")); }function |
|
194 | +insertUpdate($R, $M, $md) {return |
|
195 | +false; }function |
|
196 | +begin() {return |
|
197 | +queries("BEGIN"); }function |
|
198 | +commit() {return |
|
199 | +queries("COMMIT"); }function |
|
200 | +rollback() {return |
|
201 | +queries("ROLLBACK"); }}$jb = array("server"=>"MySQL") + $jb; if (!defined("DRIVER")) {$kd = array("MySQLi", "MySQL", "PDO_MySQL"); define("DRIVER", "server"); if (extension_loaded("mysqli")) {class |
|
202 | 202 | Min_DB |
203 | 203 | extends |
204 | -MySQLi{var$extension="MySQLi";function |
|
205 | -__construct(){parent::init();}function |
|
206 | -connect($O="",$T="",$G="",$Za=null,$id=null,$Qd=null){mysqli_report(MYSQLI_REPORT_OFF);list($dc,$id)=explode(":",$O,2);$K=@$this->real_connect(($O!=""?$dc:ini_get("mysqli.default_host")),($O.$T!=""?$T:ini_get("mysqli.default_user")),($O.$T.$G!=""?$G:ini_get("mysqli.default_pw")),$Za,(is_numeric($id)?$id:ini_get("mysqli.default_port")),(!is_numeric($id)?$id:$Qd));return$K;}function |
|
207 | -set_charset($Da){if(parent::set_charset($Da))return |
|
208 | -true;parent::set_charset('utf8');return$this->query("SET NAMES $Da");}function |
|
209 | -result($I,$l=0){$J=$this->query($I);if(!$J)return |
|
210 | -false;$L=$J->fetch_array();return$L[$l];}function |
|
211 | -quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class |
|
212 | -Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function |
|
213 | -connect($O,$T,$G){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$T"!=""?$T:ini_get("mysql.default_user")),("$O$T$G"!=""?$G:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function |
|
214 | -set_charset($Da){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Da,$this->_link))return |
|
215 | -true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $Da");}function |
|
216 | -quote($Q){return"'".mysql_real_escape_string($Q,$this->_link)."'";}function |
|
217 | -select_db($Za){return |
|
218 | -mysql_select_db($Za,$this->_link);}function |
|
219 | -query($I,$xe=false){$J=@($xe?mysql_unbuffered_query($I,$this->_link):mysql_query($I,$this->_link));$this->error="";if(!$J){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return |
|
220 | -false;}if($J===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return |
|
221 | -true;}return |
|
204 | +MySQLi {var$extension = "MySQLi"; function |
|
205 | +__construct() {parent::init(); }function |
|
206 | +connect($O = "", $T = "", $G = "", $Za = null, $id = null, $Qd = null) {mysqli_report(MYSQLI_REPORT_OFF); list($dc, $id) = explode(":", $O, 2); $K = @$this->real_connect(($O != "" ? $dc : ini_get("mysqli.default_host")), ($O . $T != "" ? $T : ini_get("mysqli.default_user")), ($O . $T . $G != "" ? $G : ini_get("mysqli.default_pw")), $Za, (is_numeric($id) ? $id : ini_get("mysqli.default_port")), (!is_numeric($id) ? $id : $Qd)); return$K; }function |
|
207 | +set_charset($Da) {if (parent::set_charset($Da))return |
|
208 | +true; parent::set_charset('utf8'); return$this->query("SET NAMES $Da"); }function |
|
209 | +result($I, $l = 0) {$J = $this->query($I); if (!$J)return |
|
210 | +false; $L = $J->fetch_array(); return$L[$l]; }function |
|
211 | +quote($Q) {return"'" . $this->escape_string($Q) . "'"; }}}elseif (extension_loaded("mysql") && !(ini_get("sql.safe_mode") && extension_loaded("pdo_mysql"))) {class |
|
212 | +Min_DB {var$extension = "MySQL", $server_info, $affected_rows, $errno, $error, $_link, $_result; function |
|
213 | +connect($O, $T, $G) {$this->_link = @mysql_connect(($O != "" ? $O : ini_get("mysql.default_host")), ("$O$T" != "" ? $T : ini_get("mysql.default_user")), ("$O$T$G" != "" ? $G : ini_get("mysql.default_password")), true, 131072); if ($this->_link)$this->server_info = mysql_get_server_info($this->_link); else$this->error = mysql_error(); return(bool) $this->_link; }function |
|
214 | +set_charset($Da) {if (function_exists('mysql_set_charset')) {if (mysql_set_charset($Da, $this->_link))return |
|
215 | +true; mysql_set_charset('utf8', $this->_link); }return$this->query("SET NAMES $Da"); }function |
|
216 | +quote($Q) {return"'" . mysql_real_escape_string($Q, $this->_link) . "'"; }function |
|
217 | +select_db($Za) {return |
|
218 | +mysql_select_db($Za, $this->_link); }function |
|
219 | +query($I, $xe = false) {$J = @($xe ? mysql_unbuffered_query($I, $this->_link) : mysql_query($I, $this->_link)); $this->error = ""; if (!$J) {$this->errno = mysql_errno($this->_link); $this->error = mysql_error($this->_link); return |
|
220 | +false; }if ($J === true) {$this->affected_rows = mysql_affected_rows($this->_link); $this->info = mysql_info($this->_link); return |
|
221 | +true; }return |
|
222 | 222 | new |
223 | -Min_Result($J);}function |
|
224 | -multi_query($I){return$this->_result=$this->query($I);}function |
|
225 | -store_result(){return$this->_result;}function |
|
226 | -next_result(){return |
|
227 | -false;}function |
|
228 | -result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows)return |
|
229 | -false;return |
|
230 | -mysql_result($J->_result,0,$l);}}class |
|
231 | -Min_Result{var$num_rows,$_result,$_offset=0;function |
|
232 | -__construct($J){$this->_result=$J;$this->num_rows=mysql_num_rows($J);}function |
|
233 | -fetch_assoc(){return |
|
234 | -mysql_fetch_assoc($this->_result);}function |
|
235 | -fetch_row(){return |
|
236 | -mysql_fetch_row($this->_result);}function |
|
237 | -fetch_field(){$K=mysql_fetch_field($this->_result,$this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=($K->blob?63:0);return$K;}function |
|
238 | -__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class |
|
223 | +Min_Result($J); }function |
|
224 | +multi_query($I) {return$this->_result = $this->query($I); }function |
|
225 | +store_result() {return$this->_result; }function |
|
226 | +next_result() {return |
|
227 | +false; }function |
|
228 | +result($I, $l = 0) {$J = $this->query($I); if (!$J || !$J->num_rows)return |
|
229 | +false; return |
|
230 | +mysql_result($J->_result, 0, $l); }}class |
|
231 | +Min_Result {var$num_rows, $_result, $_offset = 0; function |
|
232 | +__construct($J) {$this->_result = $J; $this->num_rows = mysql_num_rows($J); }function |
|
233 | +fetch_assoc() {return |
|
234 | +mysql_fetch_assoc($this->_result); }function |
|
235 | +fetch_row() {return |
|
236 | +mysql_fetch_row($this->_result); }function |
|
237 | +fetch_field() {$K = mysql_fetch_field($this->_result, $this->_offset++); $K->orgtable = $K->table; $K->orgname = $K->name; $K->charsetnr = ($K->blob ? 63 : 0); return$K; }function |
|
238 | +__destruct() {mysql_free_result($this->_result); }}}elseif (extension_loaded("pdo_mysql")) {class |
|
239 | 239 | Min_DB |
240 | 240 | extends |
241 | -Min_PDO{var$extension="PDO_MySQL";function |
|
242 | -connect($O,$T,$G){$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\\d)~',';port=\\1',$O)),$T,$G);return |
|
243 | -true;}function |
|
244 | -set_charset($Da){$this->query("SET NAMES $Da");}function |
|
245 | -select_db($Za){return$this->query("USE ".idf_escape($Za));}function |
|
246 | -query($I,$xe=false){$this->setAttribute(1000,!$xe);return |
|
247 | -parent::query($I,$xe);}}}class |
|
241 | +Min_PDO {var$extension = "PDO_MySQL"; function |
|
242 | +connect($O, $T, $G) {$this->dsn("mysql:charset=utf8;host=" . str_replace(":", ";unix_socket=", preg_replace('~:(\\d)~', ';port=\\1', $O)), $T, $G); return |
|
243 | +true; }function |
|
244 | +set_charset($Da) {$this->query("SET NAMES $Da"); }function |
|
245 | +select_db($Za) {return$this->query("USE " . idf_escape($Za)); }function |
|
246 | +query($I, $xe = false) {$this->setAttribute(1000, !$xe); return |
|
247 | +parent::query($I, $xe); }}}class |
|
248 | 248 | Min_Driver |
249 | 249 | extends |
250 | -Min_SQL{function |
|
251 | -insert($R,$P){return($P?parent::insert($R,$P):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function |
|
252 | -insertUpdate($R,$M,$md){$e=array_keys(reset($M));$ld="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Ge=array();foreach($e |
|
253 | -as$x)$Ge[$x]="$x = VALUES($x)";$Zd="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ge);$Ge=array();$xc=0;foreach($M |
|
254 | -as$P){$W="(".implode(", ",$P).")";if($Ge&&(strlen($ld)+$xc+strlen($W)+strlen($Zd)>1e6)){if(!queries($ld.implode(",\n",$Ge).$Zd))return |
|
255 | -false;$Ge=array();$xc=0;}$Ge[]=$W;$xc+=strlen($W)+2;}return |
|
256 | -queries($ld.implode(",\n",$Ge).$Zd);}}function |
|
257 | -idf_escape($gc){return"`".str_replace("`","``",$gc)."`";}function |
|
258 | -table($gc){return |
|
259 | -idf_escape($gc);}function |
|
260 | -connect(){global$b;$f=new |
|
261 | -Min_DB;$Xa=$b->credentials();if($f->connect($Xa[0],$Xa[1],$Xa[2])){$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");return$f;}$K=$f->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($Ed=iconv("windows-1250","utf-8",$K))>strlen($K))$K=$Ed;return$K;}function |
|
262 | -get_databases($Jb){global$f;$K=get_session("dbs");if($K===null){$I=($f->server_info>=5?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");$K=($Jb?slow_query($I):get_vals($I));restart_session();set_session("dbs",$K);stop_session();}return$K;}function |
|
263 | -limit($I,$Y,$y,$Pc=0,$Kd=" "){return" $I$Y".($y!==null?$Kd."LIMIT $y".($Pc?" OFFSET $Pc":""):"");}function |
|
264 | -limit1($I,$Y){return |
|
265 | -limit($I,$Y,1);}function |
|
266 | -db_collation($h,$Na){global$f;$K=null;$Va=$f->result("SHOW CREATE DATABASE ".idf_escape($h),1);if(preg_match('~ COLLATE ([^ ]+)~',$Va,$A))$K=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$Va,$A))$K=$Na[$A[1]][-1];return$K;}function |
|
267 | -engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"]))$K[]=$L["Engine"];}return$K;}function |
|
268 | -logged_user(){global$f;return$f->result("SELECT USER()");}function |
|
269 | -tables_list(){global$f;return |
|
270 | -get_key_vals($f->server_info>=5?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function |
|
271 | -count_tables($ab){$K=array();foreach($ab |
|
272 | -as$h)$K[$h]=count(get_vals("SHOW TABLES IN ".idf_escape($h)));return$K;}function |
|
273 | -table_status($D="",$Cb=false){global$f;$K=array();foreach(get_rows($Cb&&$f->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($D!=""?"AND TABLE_NAME = ".q($D):"ORDER BY Name"):"SHOW TABLE STATUS".($D!=""?" LIKE ".q(addcslashes($D,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB")$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]);if(!isset($L["Engine"]))$L["Comment"]="";if($D!="")return$L;$K[$L["Name"]]=$L;}return$K;}function |
|
274 | -is_view($S){return$S["Engine"]===null;}function |
|
275 | -fk_support($S){global$f;return |
|
276 | -preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&version_compare($f->server_info,'5.6')>=0);}function |
|
277 | -fields($R){$K=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($R))as$L){preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~',$L["Type"],$A);$K[$L["Field"]]=array("field"=>$L["Field"],"full_type"=>$L["Type"],"type"=>$A[1],"length"=>$A[2],"unsigned"=>ltrim($A[3].$A[4]),"default"=>($L["Default"]!=""||preg_match("~char|set~",$A[1])?$L["Default"]:null),"null"=>($L["Null"]=="YES"),"auto_increment"=>($L["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$L["Extra"],$A)?$A[1]:""),"collation"=>$L["Collation"],"privileges"=>array_flip(preg_split('~, *~',$L["Privileges"])),"comment"=>$L["Comment"],"primary"=>($L["Key"]=="PRI"),);}return$K;}function |
|
278 | -indexes($R,$g=null){$K=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$L){$K[$L["Key_name"]]["type"]=($L["Key_name"]=="PRIMARY"?"PRIMARY":($L["Index_type"]=="FULLTEXT"?"FULLTEXT":($L["Non_unique"]?"INDEX":"UNIQUE")));$K[$L["Key_name"]]["columns"][]=$L["Column_name"];$K[$L["Key_name"]]["lengths"][]=$L["Sub_part"];$K[$L["Key_name"]]["descs"][]=null;}return$K;}function |
|
279 | -foreign_keys($R){global$f,$Rc;static$H='`(?:[^`]|``)+`';$K=array();$Wa=$f->result("SHOW CREATE TABLE ".table($R),1);if($Wa){preg_match_all("~CONSTRAINT ($H) FOREIGN KEY ?\\(((?:$H,? ?)+)\\) REFERENCES ($H)(?:\\.($H))? \\(((?:$H,? ?)+)\\)(?: ON DELETE ($Rc))?(?: ON UPDATE ($Rc))?~",$Wa,$Bc,PREG_SET_ORDER);foreach($Bc |
|
280 | -as$A){preg_match_all("~$H~",$A[2],$Rd);preg_match_all("~$H~",$A[5],$fe);$K[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('idf_unescape',$Rd[0]),"target"=>array_map('idf_unescape',$fe[0]),"on_delete"=>($A[6]?$A[6]:"RESTRICT"),"on_update"=>($A[7]?$A[7]:"RESTRICT"),);}}return$K;}function |
|
281 | -view($D){global$f;return |
|
282 | -array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$f->result("SHOW CREATE VIEW ".table($D),1)));}function |
|
283 | -collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"])$K[$L["Charset"]][-1]=$L["Collation"];else$K[$L["Charset"]][]=$L["Collation"];}ksort($K);foreach($K |
|
284 | -as$x=>$V)asort($K[$x]);return$K;}function |
|
285 | -information_schema($h){global$f;return($f->server_info>=5&&$h=="information_schema")||($f->server_info>=5.5&&$h=="performance_schema");}function |
|
286 | -error(){global$f;return |
|
287 | -h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$f->error));}function |
|
288 | -create_database($h,$Ma){return |
|
289 | -queries("CREATE DATABASE ".idf_escape($h).($Ma?" COLLATE ".q($Ma):""));}function |
|
290 | -drop_databases($ab){$K=apply_queries("DROP DATABASE",$ab,'idf_escape');restart_session();set_session("dbs",null);return$K;}function |
|
291 | -rename_database($D,$Ma){$K=false;if(create_database($D,$Ma)){$zd=array();foreach(tables_list()as$R=>$ue)$zd[]=table($R)." TO ".idf_escape($D).".".table($R);$K=(!$zd||queries("RENAME TABLE ".implode(", ",$zd)));if($K)queries("DROP DATABASE ".idf_escape(DB));restart_session();set_session("dbs",null);}return$K;}function |
|
292 | -auto_increment(){$ta=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$s){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$s["columns"],true)){$ta="";break;}if($s["type"]=="PRIMARY")$ta=" UNIQUE";}}return" AUTO_INCREMENT$ta";}function |
|
293 | -alter_table($R,$D,$m,$Kb,$Qa,$tb,$Ma,$sa,$fd){$ma=array();foreach($m |
|
294 | -as$l)$ma[]=($l[1]?($R!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($R!=""?$l[2]:""):"DROP ".idf_escape($l[0]));$ma=array_merge($ma,$Kb);$Ud=($Qa!==null?" COMMENT=".q($Qa):"").($tb?" ENGINE=".q($tb):"").($Ma?" COLLATE ".q($Ma):"").($sa!=""?" AUTO_INCREMENT=$sa":"");if($R=="")return |
|
295 | -queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$ma)."\n)$Ud$fd");if($R!=$D)$ma[]="RENAME TO ".table($D);if($Ud)$ma[]=ltrim($Ud);return($ma||$fd?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$ma).$fd):true);}function |
|
296 | -alter_indexes($R,$ma){foreach($ma |
|
297 | -as$x=>$V)$ma[$x]=($V[2]=="DROP"?"\nDROP INDEX ".idf_escape($V[1]):"\nADD $V[0] ".($V[0]=="PRIMARY"?"KEY ":"").($V[1]!=""?idf_escape($V[1])." ":"")."(".implode(", ",$V[2]).")");return |
|
298 | -queries("ALTER TABLE ".table($R).implode(",",$ma));}function |
|
299 | -truncate_tables($ee){return |
|
300 | -apply_queries("TRUNCATE TABLE",$ee);}function |
|
301 | -drop_views($Ie){return |
|
302 | -queries("DROP VIEW ".implode(", ",array_map('table',$Ie)));}function |
|
303 | -drop_tables($ee){return |
|
304 | -queries("DROP TABLE ".implode(", ",array_map('table',$ee)));}function |
|
305 | -move_tables($ee,$Ie,$fe){$zd=array();foreach(array_merge($ee,$Ie)as$R)$zd[]=table($R)." TO ".idf_escape($fe).".".table($R);return |
|
306 | -queries("RENAME TABLE ".implode(", ",$zd));}function |
|
307 | -copy_tables($ee,$Ie,$fe){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($ee |
|
308 | -as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));if(!queries("\nDROP TABLE IF EXISTS $D")||!queries("CREATE TABLE $D LIKE ".table($R))||!queries("INSERT INTO $D SELECT * FROM ".table($R)))return |
|
309 | -false;}foreach($Ie |
|
310 | -as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));$He=view($R);if(!queries("DROP VIEW IF EXISTS $D")||!queries("CREATE VIEW $D AS $He[select]"))return |
|
311 | -false;}return |
|
312 | -true;}function |
|
313 | -trigger($D){if($D=="")return |
|
314 | -array();$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));return |
|
315 | -reset($M);}function |
|
316 | -triggers($R){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$L)$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);return$K;}function |
|
317 | -trigger_options(){return |
|
318 | -array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function |
|
319 | -routine($D,$ue){global$f,$ub,$lc,$we;$la=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$ve="((".implode("|",array_merge(array_keys($we),$la)).")\\b(?:\\s*\\(((?:[^'\")]|$ub)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$H="\\s*(".($ue=="FUNCTION"?"":$lc).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$ve";$Va=$f->result("SHOW CREATE $ue ".idf_escape($D),2);preg_match("~\\(((?:$H\\s*,?)*)\\)\\s*".($ue=="FUNCTION"?"RETURNS\\s+$ve\\s+":"")."(.*)~is",$Va,$A);$m=array();preg_match_all("~$H\\s*,?~is",$A[1],$Bc,PREG_SET_ORDER);foreach($Bc |
|
320 | -as$dd){$D=str_replace("``","`",$dd[2]).$dd[3];$m[]=array("field"=>$D,"type"=>strtolower($dd[5]),"length"=>preg_replace_callback("~$ub~s",'normalize_enum',$dd[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$dd[8] $dd[7]"))),"null"=>1,"full_type"=>$dd[4],"inout"=>strtoupper($dd[1]),"collation"=>strtolower($dd[9]),);}if($ue!="FUNCTION")return |
|
321 | -array("fields"=>$m,"definition"=>$A[11]);return |
|
322 | -array("fields"=>$m,"returns"=>array("type"=>$A[12],"length"=>$A[13],"unsigned"=>$A[15],"collation"=>$A[16]),"definition"=>$A[17],"language"=>"SQL",);}function |
|
323 | -routines(){return |
|
324 | -get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function |
|
325 | -routine_languages(){return |
|
326 | -array();}function |
|
327 | -last_id(){global$f;return$f->result("SELECT LAST_INSERT_ID()");}function |
|
328 | -explain($f,$I){return$f->query("EXPLAIN ".($f->server_info>=5.1?"PARTITIONS ":"").$I);}function |
|
329 | -found_rows($S,$Y){return($Y||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function |
|
330 | -types(){return |
|
331 | -array();}function |
|
332 | -schemas(){return |
|
333 | -array();}function |
|
334 | -get_schema(){return"";}function |
|
335 | -set_schema($Fd){return |
|
336 | -true;}function |
|
337 | -create_sql($R,$sa){global$f;$K=$f->result("SHOW CREATE TABLE ".table($R),1);if(!$sa)$K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K);return$K;}function |
|
338 | -truncate_sql($R){return"TRUNCATE ".table($R);}function |
|
339 | -use_sql($Za){return"USE ".idf_escape($Za);}function |
|
340 | -trigger_sql($R,$Xd){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$L)$K.="\n".($Xd=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";return$K;}function |
|
341 | -show_variables(){return |
|
342 | -get_key_vals("SHOW VARIABLES");}function |
|
343 | -process_list(){return |
|
344 | -get_rows("SHOW FULL PROCESSLIST");}function |
|
345 | -show_status(){return |
|
346 | -get_key_vals("SHOW STATUS");}function |
|
347 | -convert_field($l){if(preg_match("~binary~",$l["type"]))return"HEX(".idf_escape($l["field"]).")";if($l["type"]=="bit")return"BIN(".idf_escape($l["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))return"AsWKT(".idf_escape($l["field"]).")";}function |
|
348 | -unconvert_field($l,$K){if(preg_match("~binary~",$l["type"]))$K="UNHEX($K)";if($l["type"]=="bit")$K="CONV($K, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))$K="GeomFromText($K)";return$K;}function |
|
349 | -support($Db){global$f;return!preg_match("~scheme|sequence|type|view_trigger".($f->server_info<5.1?"|event|partitioning".($f->server_info<5?"|routine|trigger|view":""):"")."~",$Db);}function |
|
350 | -kill_process($V){return |
|
351 | -queries("KILL ".number($V));}function |
|
352 | -max_connections(){global$f;return$f->result("SELECT @@max_connections");}$v="sql";$we=array();$Wd=array();foreach(array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Date and time'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Strings'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Lists'=>array("enum"=>65535,"set"=>64),'Binary'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometry'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$x=>$V){$we+=$V;$Wd[$x]=array_keys($V);}$Ce=array("unsigned","zerofill","unsigned zerofill");$Wc=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$Tb=array("char_length","date","from_unixtime","lower","round","sec_to_time","time_to_sec","upper");$Vb=array("avg","count","count distinct","group_concat","max","min","sum");$mb=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array("(^|[^o])int|float|double|decimal"=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));}define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~^[^?]*/([^?]*).*~','\\1',$_SERVER["REQUEST_URI"]).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));$ca="4.2.5";class |
|
353 | -Adminer{var$operators=array("<=",">=");var$_values=array();function |
|
354 | -name(){return"<a href='https://www.adminer.org/editor/' target='_blank' id='h1'>".'Editor'."</a>";}function |
|
355 | -credentials(){return |
|
356 | -array(SERVER,$_GET["username"],get_password());}function |
|
357 | -permanentLogin($Va=false){return |
|
358 | -password_file($Va);}function |
|
359 | -bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function |
|
360 | -database(){global$f;if($f){$ab=$this->databases(false);return(!$ab?$f->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1)"):$ab[(information_schema($ab[0])?1:0)]);}}function |
|
361 | -schemas(){return |
|
362 | -schemas();}function |
|
363 | -databases($Jb=true){return |
|
364 | -get_databases($Jb);}function |
|
365 | -queryTimeout(){return |
|
366 | -5;}function |
|
367 | -headers(){return |
|
368 | -true;}function |
|
369 | -head(){return |
|
370 | -true;}function |
|
371 | -loginForm(){echo'<table cellspacing="0"> |
|
372 | -<tr><th>Username<td><input type="hidden" name="auth[driver]" value="server"><input name="auth[username]" id="username" value="',h($_GET["username"]),'" autocapitalize="off"> |
|
250 | +Min_SQL {function |
|
251 | +insert($R, $P) {return($P ? parent::insert($R, $P) : queries("INSERT INTO " . table($R) . " ()\nVALUES ()")); }function |
|
252 | +insertUpdate($R, $M, $md) {$e = array_keys(reset($M)); $ld = "INSERT INTO " . table($R) . " (" . implode(", ", $e) . ") VALUES\n"; $Ge = array(); foreach ($e |
|
253 | +as$x)$Ge[$x] = "$x = VALUES($x)"; $Zd = "\nON DUPLICATE KEY UPDATE " . implode(", ", $Ge); $Ge = array(); $xc = 0; foreach ($M |
|
254 | +as$P) {$W = "(" . implode(", ", $P) . ")"; if ($Ge && (strlen($ld) + $xc + strlen($W) + strlen($Zd) > 1e6)) {if (!queries($ld . implode(",\n", $Ge) . $Zd))return |
|
255 | +false; $Ge = array(); $xc = 0; }$Ge[] = $W; $xc += strlen($W) + 2; }return |
|
256 | +queries($ld . implode(",\n", $Ge) . $Zd); }}function |
|
257 | +idf_escape($gc) {return"`" . str_replace("`", "``", $gc) . "`"; }function |
|
258 | +table($gc) {return |
|
259 | +idf_escape($gc); }function |
|
260 | +connect() {global$b; $f = new |
|
261 | +Min_DB; $Xa = $b->credentials(); if ($f->connect($Xa[0], $Xa[1], $Xa[2])) {$f->set_charset(charset($f)); $f->query("SET sql_quote_show_create = 1, autocommit = 1"); return$f; }$K = $f->error; if (function_exists('iconv') && !is_utf8($K) && strlen($Ed = iconv("windows-1250", "utf-8", $K)) > strlen($K))$K = $Ed; return$K; }function |
|
262 | +get_databases($Jb) {global$f; $K = get_session("dbs"); if ($K === null) {$I = ($f->server_info >= 5 ? "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA" : "SHOW DATABASES"); $K = ($Jb ? slow_query($I) : get_vals($I)); restart_session(); set_session("dbs", $K); stop_session(); }return$K; }function |
|
263 | +limit($I, $Y, $y, $Pc = 0, $Kd = " ") {return" $I$Y" . ($y !== null ? $Kd . "LIMIT $y" . ($Pc ? " OFFSET $Pc" : "") : ""); }function |
|
264 | +limit1($I, $Y) {return |
|
265 | +limit($I, $Y, 1); }function |
|
266 | +db_collation($h, $Na) {global$f; $K = null; $Va = $f->result("SHOW CREATE DATABASE " . idf_escape($h), 1); if (preg_match('~ COLLATE ([^ ]+)~', $Va, $A))$K = $A[1]; elseif (preg_match('~ CHARACTER SET ([^ ]+)~', $Va, $A))$K = $Na[$A[1]][-1]; return$K; }function |
|
267 | +engines() {$K = array(); foreach (get_rows("SHOW ENGINES")as$L) {if (preg_match("~YES|DEFAULT~", $L["Support"]))$K[] = $L["Engine"]; }return$K; }function |
|
268 | +logged_user() {global$f; return$f->result("SELECT USER()"); }function |
|
269 | +tables_list() {global$f; return |
|
270 | +get_key_vals($f->server_info >= 5 ? "SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME" : "SHOW TABLES"); }function |
|
271 | +count_tables($ab) {$K = array(); foreach ($ab |
|
272 | +as$h)$K[$h] = count(get_vals("SHOW TABLES IN " . idf_escape($h))); return$K; }function |
|
273 | +table_status($D = "", $Cb = false) {global$f; $K = array(); foreach (get_rows($Cb && $f->server_info >= 5 ? "SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() " . ($D != "" ? "AND TABLE_NAME = " . q($D) : "ORDER BY Name") : "SHOW TABLE STATUS" . ($D != "" ? " LIKE " . q(addcslashes($D, "%_\\")) : ""))as$L) {if ($L["Engine"] == "InnoDB")$L["Comment"] = preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $L["Comment"]); if (!isset($L["Engine"]))$L["Comment"] = ""; if ($D != "")return$L; $K[$L["Name"]] = $L; }return$K; }function |
|
274 | +is_view($S) {return$S["Engine"] === null; }function |
|
275 | +fk_support($S) {global$f; return |
|
276 | +preg_match('~InnoDB|IBMDB2I~i', $S["Engine"]) || (preg_match('~NDB~i', $S["Engine"]) && version_compare($f->server_info, '5.6') >= 0); }function |
|
277 | +fields($R) {$K = array(); foreach (get_rows("SHOW FULL COLUMNS FROM " . table($R))as$L) {preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~', $L["Type"], $A); $K[$L["Field"]] = array("field"=>$L["Field"], "full_type"=>$L["Type"], "type"=>$A[1], "length"=>$A[2], "unsigned"=>ltrim($A[3] . $A[4]), "default"=>($L["Default"] != "" || preg_match("~char|set~", $A[1]) ? $L["Default"] : null), "null"=>($L["Null"] == "YES"), "auto_increment"=>($L["Extra"] == "auto_increment"), "on_update"=>(preg_match('~^on update (.+)~i', $L["Extra"], $A) ? $A[1] : ""), "collation"=>$L["Collation"], "privileges"=>array_flip(preg_split('~, *~', $L["Privileges"])), "comment"=>$L["Comment"], "primary"=>($L["Key"] == "PRI"),); }return$K; }function |
|
278 | +indexes($R, $g = null) {$K = array(); foreach (get_rows("SHOW INDEX FROM " . table($R), $g)as$L) {$K[$L["Key_name"]]["type"] = ($L["Key_name"] == "PRIMARY" ? "PRIMARY" : ($L["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($L["Non_unique"] ? "INDEX" : "UNIQUE"))); $K[$L["Key_name"]]["columns"][] = $L["Column_name"]; $K[$L["Key_name"]]["lengths"][] = $L["Sub_part"]; $K[$L["Key_name"]]["descs"][] = null; }return$K; }function |
|
279 | +foreign_keys($R) {global$f, $Rc; static$H = '`(?:[^`]|``)+`'; $K = array(); $Wa = $f->result("SHOW CREATE TABLE " . table($R), 1); if ($Wa) {preg_match_all("~CONSTRAINT ($H) FOREIGN KEY ?\\(((?:$H,? ?)+)\\) REFERENCES ($H)(?:\\.($H))? \\(((?:$H,? ?)+)\\)(?: ON DELETE ($Rc))?(?: ON UPDATE ($Rc))?~", $Wa, $Bc, PREG_SET_ORDER); foreach ($Bc |
|
280 | +as$A) {preg_match_all("~$H~", $A[2], $Rd); preg_match_all("~$H~", $A[5], $fe); $K[idf_unescape($A[1])] = array("db"=>idf_unescape($A[4] != "" ? $A[3] : $A[4]), "table"=>idf_unescape($A[4] != "" ? $A[4] : $A[3]), "source"=>array_map('idf_unescape', $Rd[0]), "target"=>array_map('idf_unescape', $fe[0]), "on_delete"=>($A[6] ? $A[6] : "RESTRICT"), "on_update"=>($A[7] ? $A[7] : "RESTRICT"),); }}return$K; }function |
|
281 | +view($D) {global$f; return |
|
282 | +array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU', '', $f->result("SHOW CREATE VIEW " . table($D), 1))); }function |
|
283 | +collations() {$K = array(); foreach (get_rows("SHOW COLLATION")as$L) {if ($L["Default"])$K[$L["Charset"]][-1] = $L["Collation"]; else$K[$L["Charset"]][] = $L["Collation"]; }ksort($K); foreach ($K |
|
284 | +as$x=>$V)asort($K[$x]); return$K; }function |
|
285 | +information_schema($h) {global$f; return($f->server_info >= 5 && $h == "information_schema") || ($f->server_info >= 5.5 && $h == "performance_schema"); }function |
|
286 | +error() {global$f; return |
|
287 | +h(preg_replace('~^You have an error.*syntax to use~U', "Syntax error", $f->error)); }function |
|
288 | +create_database($h, $Ma) {return |
|
289 | +queries("CREATE DATABASE " . idf_escape($h) . ($Ma ? " COLLATE " . q($Ma) : "")); }function |
|
290 | +drop_databases($ab) {$K = apply_queries("DROP DATABASE", $ab, 'idf_escape'); restart_session(); set_session("dbs", null); return$K; }function |
|
291 | +rename_database($D, $Ma) {$K = false; if (create_database($D, $Ma)) {$zd = array(); foreach (tables_list()as$R=>$ue)$zd[] = table($R) . " TO " . idf_escape($D) . "." . table($R); $K = (!$zd || queries("RENAME TABLE " . implode(", ", $zd))); if ($K)queries("DROP DATABASE " . idf_escape(DB)); restart_session(); set_session("dbs", null); }return$K; }function |
|
292 | +auto_increment() {$ta = " PRIMARY KEY"; if ($_GET["create"] != "" && $_POST["auto_increment_col"]) {foreach (indexes($_GET["create"])as$s) {if (in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"], $s["columns"], true)) {$ta = ""; break; }if ($s["type"] == "PRIMARY")$ta = " UNIQUE"; }}return" AUTO_INCREMENT$ta"; }function |
|
293 | +alter_table($R, $D, $m, $Kb, $Qa, $tb, $Ma, $sa, $fd) {$ma = array(); foreach ($m |
|
294 | +as$l)$ma[] = ($l[1] ? ($R != "" ? ($l[0] != "" ? "CHANGE " . idf_escape($l[0]) : "ADD") : " ") . " " . implode($l[1]) . ($R != "" ? $l[2] : "") : "DROP " . idf_escape($l[0])); $ma = array_merge($ma, $Kb); $Ud = ($Qa !== null ? " COMMENT=" . q($Qa) : "") . ($tb ? " ENGINE=" . q($tb) : "") . ($Ma ? " COLLATE " . q($Ma) : "") . ($sa != "" ? " AUTO_INCREMENT=$sa" : ""); if ($R == "")return |
|
295 | +queries("CREATE TABLE " . table($D) . " (\n" . implode(",\n", $ma) . "\n)$Ud$fd"); if ($R != $D)$ma[] = "RENAME TO " . table($D); if ($Ud)$ma[] = ltrim($Ud); return($ma || $fd ? queries("ALTER TABLE " . table($R) . "\n" . implode(",\n", $ma) . $fd) : true); }function |
|
296 | +alter_indexes($R, $ma) {foreach ($ma |
|
297 | +as$x=>$V)$ma[$x] = ($V[2] == "DROP" ? "\nDROP INDEX " . idf_escape($V[1]) : "\nADD $V[0] " . ($V[0] == "PRIMARY" ? "KEY " : "") . ($V[1] != "" ? idf_escape($V[1]) . " " : "") . "(" . implode(", ", $V[2]) . ")"); return |
|
298 | +queries("ALTER TABLE " . table($R) . implode(",", $ma)); }function |
|
299 | +truncate_tables($ee) {return |
|
300 | +apply_queries("TRUNCATE TABLE", $ee); }function |
|
301 | +drop_views($Ie) {return |
|
302 | +queries("DROP VIEW " . implode(", ", array_map('table', $Ie))); }function |
|
303 | +drop_tables($ee) {return |
|
304 | +queries("DROP TABLE " . implode(", ", array_map('table', $ee))); }function |
|
305 | +move_tables($ee, $Ie, $fe) {$zd = array(); foreach (array_merge($ee, $Ie)as$R)$zd[] = table($R) . " TO " . idf_escape($fe) . "." . table($R); return |
|
306 | +queries("RENAME TABLE " . implode(", ", $zd)); }function |
|
307 | +copy_tables($ee, $Ie, $fe) {queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'"); foreach ($ee |
|
308 | +as$R) {$D = ($fe == DB ? table("copy_$R") : idf_escape($fe) . "." . table($R)); if (!queries("\nDROP TABLE IF EXISTS $D") || !queries("CREATE TABLE $D LIKE " . table($R)) || !queries("INSERT INTO $D SELECT * FROM " . table($R)))return |
|
309 | +false; }foreach ($Ie |
|
310 | +as$R) {$D = ($fe == DB ? table("copy_$R") : idf_escape($fe) . "." . table($R)); $He = view($R); if (!queries("DROP VIEW IF EXISTS $D") || !queries("CREATE VIEW $D AS $He[select]"))return |
|
311 | +false; }return |
|
312 | +true; }function |
|
313 | +trigger($D) {if ($D == "")return |
|
314 | +array(); $M = get_rows("SHOW TRIGGERS WHERE `Trigger` = " . q($D)); return |
|
315 | +reset($M); }function |
|
316 | +triggers($R) {$K = array(); foreach (get_rows("SHOW TRIGGERS LIKE " . q(addcslashes($R, "%_\\")))as$L)$K[$L["Trigger"]] = array($L["Timing"], $L["Event"]); return$K; }function |
|
317 | +trigger_options() {return |
|
318 | +array("Timing"=>array("BEFORE", "AFTER"), "Event"=>array("INSERT", "UPDATE", "DELETE"), "Type"=>array("FOR EACH ROW"),); }function |
|
319 | +routine($D, $ue) {global$f, $ub, $lc, $we; $la = array("bool", "boolean", "integer", "double precision", "real", "dec", "numeric", "fixed", "national char", "national varchar"); $ve = "((" . implode("|", array_merge(array_keys($we), $la)) . ")\\b(?:\\s*\\(((?:[^'\")]|$ub)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?"; $H = "\\s*(" . ($ue == "FUNCTION" ? "" : $lc) . ")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$ve"; $Va = $f->result("SHOW CREATE $ue " . idf_escape($D), 2); preg_match("~\\(((?:$H\\s*,?)*)\\)\\s*" . ($ue == "FUNCTION" ? "RETURNS\\s+$ve\\s+" : "") . "(.*)~is", $Va, $A); $m = array(); preg_match_all("~$H\\s*,?~is", $A[1], $Bc, PREG_SET_ORDER); foreach ($Bc |
|
320 | +as$dd) {$D = str_replace("``", "`", $dd[2]) . $dd[3]; $m[] = array("field"=>$D, "type"=>strtolower($dd[5]), "length"=>preg_replace_callback("~$ub~s", 'normalize_enum', $dd[6]), "unsigned"=>strtolower(preg_replace('~\\s+~', ' ', trim("$dd[8] $dd[7]"))), "null"=>1, "full_type"=>$dd[4], "inout"=>strtoupper($dd[1]), "collation"=>strtolower($dd[9]),); }if ($ue != "FUNCTION")return |
|
321 | +array("fields"=>$m, "definition"=>$A[11]); return |
|
322 | +array("fields"=>$m, "returns"=>array("type"=>$A[12], "length"=>$A[13], "unsigned"=>$A[15], "collation"=>$A[16]), "definition"=>$A[17], "language"=>"SQL",); }function |
|
323 | +routines() {return |
|
324 | +get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . q(DB)); }function |
|
325 | +routine_languages() {return |
|
326 | +array(); }function |
|
327 | +last_id() {global$f; return$f->result("SELECT LAST_INSERT_ID()"); }function |
|
328 | +explain($f, $I) {return$f->query("EXPLAIN " . ($f->server_info >= 5.1 ? "PARTITIONS " : "") . $I); }function |
|
329 | +found_rows($S, $Y) {return($Y || $S["Engine"] != "InnoDB" ? null : $S["Rows"]); }function |
|
330 | +types() {return |
|
331 | +array(); }function |
|
332 | +schemas() {return |
|
333 | +array(); }function |
|
334 | +get_schema() {return""; }function |
|
335 | +set_schema($Fd) {return |
|
336 | +true; }function |
|
337 | +create_sql($R, $sa) {global$f; $K = $f->result("SHOW CREATE TABLE " . table($R), 1); if (!$sa)$K = preg_replace('~ AUTO_INCREMENT=\\d+~', '', $K); return$K; }function |
|
338 | +truncate_sql($R) {return"TRUNCATE " . table($R); }function |
|
339 | +use_sql($Za) {return"USE " . idf_escape($Za); }function |
|
340 | +trigger_sql($R, $Xd) {$K = ""; foreach (get_rows("SHOW TRIGGERS LIKE " . q(addcslashes($R, "%_\\")), null, "-- ")as$L)$K .= "\n" . ($Xd == 'CREATE+ALTER' ? "DROP TRIGGER IF EXISTS " . idf_escape($L["Trigger"]) . ";;\n" : "") . "CREATE TRIGGER " . idf_escape($L["Trigger"]) . " $L[Timing] $L[Event] ON " . table($L["Table"]) . " FOR EACH ROW\n$L[Statement];;\n"; return$K; }function |
|
341 | +show_variables() {return |
|
342 | +get_key_vals("SHOW VARIABLES"); }function |
|
343 | +process_list() {return |
|
344 | +get_rows("SHOW FULL PROCESSLIST"); }function |
|
345 | +show_status() {return |
|
346 | +get_key_vals("SHOW STATUS"); }function |
|
347 | +convert_field($l) {if (preg_match("~binary~", $l["type"]))return"HEX(" . idf_escape($l["field"]) . ")"; if ($l["type"] == "bit")return"BIN(" . idf_escape($l["field"]) . " + 0)"; if (preg_match("~geometry|point|linestring|polygon~", $l["type"]))return"AsWKT(" . idf_escape($l["field"]) . ")"; }function |
|
348 | +unconvert_field($l, $K) {if (preg_match("~binary~", $l["type"]))$K = "UNHEX($K)"; if ($l["type"] == "bit")$K = "CONV($K, 2, 10) + 0"; if (preg_match("~geometry|point|linestring|polygon~", $l["type"]))$K = "GeomFromText($K)"; return$K; }function |
|
349 | +support($Db) {global$f; return!preg_match("~scheme|sequence|type|view_trigger" . ($f->server_info < 5.1 ? "|event|partitioning" . ($f->server_info < 5 ? "|routine|trigger|view" : "") : "") . "~", $Db); }function |
|
350 | +kill_process($V) {return |
|
351 | +queries("KILL " . number($V)); }function |
|
352 | +max_connections() {global$f; return$f->result("SELECT @@max_connections"); }$v = "sql"; $we = array(); $Wd = array(); foreach (array('Numbers'=>array("tinyint"=>3, "smallint"=>5, "mediumint"=>8, "int"=>10, "bigint"=>20, "decimal"=>66, "float"=>12, "double"=>21), 'Date and time'=>array("date"=>10, "datetime"=>19, "timestamp"=>19, "time"=>10, "year"=>4), 'Strings'=>array("char"=>255, "varchar"=>65535, "tinytext"=>255, "text"=>65535, "mediumtext"=>16777215, "longtext"=>4294967295), 'Lists'=>array("enum"=>65535, "set"=>64), 'Binary'=>array("bit"=>20, "binary"=>255, "varbinary"=>65535, "tinyblob"=>255, "blob"=>65535, "mediumblob"=>16777215, "longblob"=>4294967295), 'Geometry'=>array("geometry"=>0, "point"=>0, "linestring"=>0, "polygon"=>0, "multipoint"=>0, "multilinestring"=>0, "multipolygon"=>0, "geometrycollection"=>0),)as$x=>$V) {$we += $V; $Wd[$x] = array_keys($V); }$Ce = array("unsigned", "zerofill", "unsigned zerofill"); $Wc = array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "REGEXP", "IN", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL", "SQL"); $Tb = array("char_length", "date", "from_unixtime", "lower", "round", "sec_to_time", "time_to_sec", "upper"); $Vb = array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"); $mb = array(array("char"=>"md5/sha1/password/encrypt/uuid", "binary"=>"md5/sha1", "date|time"=>"now",), array("(^|[^o])int|float|double|decimal"=>"+/-", "date"=>"+ interval/- interval", "time"=>"addtime/subtime", "char|text"=>"concat",)); }define("SERVER", $_GET[DRIVER]); define("DB", $_GET["db"]); define("ME", preg_replace('~^[^?]*/([^?]*).*~', '\\1', $_SERVER["REQUEST_URI"]) . '?' . (sid() ? SID . '&' : '') . (SERVER !== null ? DRIVER . "=" . urlencode(SERVER) . '&' : '') . (isset($_GET["username"]) ? "username=" . urlencode($_GET["username"]) . '&' : '') . (DB != "" ? 'db=' . urlencode(DB) . '&' . (isset($_GET["ns"]) ? "ns=" . urlencode($_GET["ns"]) . "&" : "") : '')); $ca = "4.2.5"; class |
|
353 | +Adminer {var$operators = array("<=", ">="); var$_values = array(); function |
|
354 | +name() {return"<a href='https://www.adminer.org/editor/' target='_blank' id='h1'>" . 'Editor' . "</a>"; }function |
|
355 | +credentials() {return |
|
356 | +array(SERVER, $_GET["username"], get_password()); }function |
|
357 | +permanentLogin($Va = false) {return |
|
358 | +password_file($Va); }function |
|
359 | +bruteForceKey() {return$_SERVER["REMOTE_ADDR"]; }function |
|
360 | +database() {global$f; if ($f) {$ab = $this->databases(false); return(!$ab ? $f->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1)") : $ab[(information_schema($ab[0]) ? 1 : 0)]); }}function |
|
361 | +schemas() {return |
|
362 | +schemas(); }function |
|
363 | +databases($Jb = true) {return |
|
364 | +get_databases($Jb); }function |
|
365 | +queryTimeout() {return |
|
366 | +5; }function |
|
367 | +headers() {return |
|
368 | +true; }function |
|
369 | +head() {return |
|
370 | +true; }function |
|
371 | +loginForm() {echo'<table cellspacing="0"> |
|
372 | +<tr><th>Username<td><input type="hidden" name="auth[driver]" value="server"><input name="auth[username]" id="username" value="',h($_GET["username"]), '" autocapitalize="off"> |
|
373 | 373 | <tr><th>Password<td><input type="password" name="auth[password]"> |
374 | 374 | </table> |
375 | 375 | <script type="text/javascript"> |
376 | 376 | focus(document.getElementById(\'username\')); |
377 | 377 | </script> |
378 | -',"<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function |
|
379 | -login($_c,$G){global$f;$f->query("SET time_zone = ".q(substr_replace(@date("O"),":",-2,0)));return |
|
380 | -true;}function |
|
381 | -tableName($ce){return |
|
382 | -h($ce["Comment"]!=""?$ce["Comment"]:$ce["Name"]);}function |
|
383 | -fieldName($l,$E=0){return |
|
384 | -h($l["comment"]!=""?$l["comment"]:$l["field"]);}function |
|
385 | -selectLinks($ce,$P=""){$a=$ce["Name"];if($P!==null)echo'<p class="tabs"><a href="'.h(ME.'edit='.urlencode($a).$P).'">'.'New item'."</a>\n";}function |
|
386 | -foreignKeys($R){return |
|
387 | -foreign_keys($R);}function |
|
388 | -backwardKeys($R,$be){$K=array();foreach(get_rows("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME |
|
378 | +',"<p><input type='submit' value='" . 'Login' . "'>\n", checkbox("auth[permanent]", 1, $_COOKIE["adminer_permanent"], 'Permanent login') . "\n"; }function |
|
379 | +login($_c, $G) {global$f; $f->query("SET time_zone = " . q(substr_replace(@date("O"), ":", -2, 0))); return |
|
380 | +true; }function |
|
381 | +tableName($ce) {return |
|
382 | +h($ce["Comment"] != "" ? $ce["Comment"] : $ce["Name"]); }function |
|
383 | +fieldName($l, $E = 0) {return |
|
384 | +h($l["comment"] != "" ? $l["comment"] : $l["field"]); }function |
|
385 | +selectLinks($ce, $P = "") {$a = $ce["Name"]; if ($P !== null)echo'<p class="tabs"><a href="' . h(ME . 'edit=' . urlencode($a) . $P) . '">' . 'New item' . "</a>\n"; }function |
|
386 | +foreignKeys($R) {return |
|
387 | +foreign_keys($R); }function |
|
388 | +backwardKeys($R, $be) {$K = array(); foreach (get_rows("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME |
|
389 | 389 | FROM information_schema.KEY_COLUMN_USAGE |
390 | -WHERE TABLE_SCHEMA = ".q($this->database())." |
|
391 | -AND REFERENCED_TABLE_SCHEMA = ".q($this->database())." |
|
392 | -AND REFERENCED_TABLE_NAME = ".q($R)." |
|
393 | -ORDER BY ORDINAL_POSITION",null,"")as$L)$K[$L["TABLE_NAME"]]["keys"][$L["CONSTRAINT_NAME"]][$L["COLUMN_NAME"]]=$L["REFERENCED_COLUMN_NAME"];foreach($K |
|
394 | -as$x=>$V){$D=$this->tableName(table_status($x,true));if($D!=""){$Gd=preg_quote($be);$Kd="(:|\\s*-)?\\s+";$K[$x]["name"]=(preg_match("(^$Gd$Kd(.+)|^(.+?)$Kd$Gd\$)iu",$D,$A)?$A[2].$A[3]:$D);}else |
|
395 | -unset($K[$x]);}return$K;}function |
|
396 | -backwardKeysPrint($wa,$L){foreach($wa |
|
397 | -as$R=>$va){foreach($va["keys"]as$Oa){$z=ME.'select='.urlencode($R);$q=0;foreach($Oa |
|
398 | -as$d=>$V)$z.=where_link($q++,$d,$L[$V]);echo"<a href='".h($z)."'>".h($va["name"])."</a>";$z=ME.'edit='.urlencode($R);foreach($Oa |
|
399 | -as$d=>$V)$z.="&set".urlencode("[".bracket_escape($d)."]")."=".urlencode($L[$V]);echo"<a href='".h($z)."' title='".'New item'."'>+</a> ";}}}function |
|
400 | -selectQuery($I,$je){return"<!--\n".str_replace("--","--><!-- ",$I)."\n($je)\n-->\n";}function |
|
401 | -rowDescription($R){foreach(fields($R)as$l){if(preg_match("~varchar|character varying~",$l["type"]))return |
|
402 | -idf_escape($l["field"]);}return"";}function |
|
403 | -rowDescriptions($M,$Mb){$K=$M;foreach($M[0]as$x=>$V){if(list($R,$r,$D)=$this->_foreignColumn($Mb,$x)){$hc=array();foreach($M |
|
404 | -as$L)$hc[$L[$x]]=q($L[$x]);$eb=$this->_values[$R];if(!$eb)$eb=get_key_vals("SELECT $r, $D FROM ".table($R)." WHERE $r IN (".implode(", ",$hc).")");foreach($M |
|
405 | -as$C=>$L){if(isset($L[$x]))$K[$C][$x]=(string)$eb[$L[$x]];}}}return$K;}function |
|
406 | -selectLink($V,$l){}function |
|
407 | -selectVal($V,$z,$l,$ad){$K=($V===null?" ":$V);$z=h($z);if(preg_match('~blob|bytea~',$l["type"])&&!is_utf8($V)){$K=lang(array('%d byte','%d bytes'),strlen($ad));if(preg_match("~^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)~",$ad))$K="<img src='$z' alt='$K'>";}if(like_bool($l)&&$K!=" ")$K=($V?'yes':'no');if($z)$K="<a href='$z'".(is_url($z)?" rel='noreferrer'":"").">$K</a>";if(!$z&&!like_bool($l)&&preg_match('~int|float|double|decimal~',$l["type"]))$K="<div class='number'>$K</div>";elseif(preg_match('~date~',$l["type"]))$K="<div class='datetime'>$K</div>";return$K;}function |
|
408 | -editVal($V,$l){if(preg_match('~date|timestamp~',$l["type"])&&$V!==null)return |
|
409 | -preg_replace('~^(\\d{2}(\\d+))-(0?(\\d+))-(0?(\\d+))~','$1-$3-$5',$V);return$V;}function |
|
410 | -selectColumnsPrint($N,$e){}function |
|
411 | -selectSearchPrint($Y,$e,$t){$Y=(array)$_GET["where"];echo'<fieldset id="fieldset-search"><legend>'.'Search'."</legend><div>\n";$qc=array();foreach($Y |
|
412 | -as$x=>$V)$qc[$V["col"]]=$x;$q=0;$m=fields($_GET["select"]);foreach($e |
|
413 | -as$D=>$db){$l=$m[$D];if(preg_match("~enum~",$l["type"])||like_bool($l)){$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'>:",(like_bool($l)?" <select name='where[$q][val]'>".optionlist(array(""=>"",'no','yes'),$Y[$x]["val"],true)."</select>":enum_input("checkbox"," name='where[$q][val][]'",$l,(array)$Y[$x]["val"],($l["null"]?0:null))),"</div>\n";unset($e[$D]);}elseif(is_array($Xc=$this->_foreignKeyOptions($_GET["select"],$D))){if($m[$D]["null"])$Xc[0]='('.'empty'.')';$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'><input type='hidden' name='where[$q][op]' value='='>: <select name='where[$q][val]'>".optionlist($Xc,$Y[$x]["val"],true)."</select></div>\n";unset($e[$D]);}}$q=0;foreach($Y |
|
414 | -as$V){if(($V["col"]==""||$e[$V["col"]])&&"$V[col]$V[val]"!=""){echo"<div><select name='where[$q][col]'><option value=''>(".'anywhere'.")".optionlist($e,$V["col"],true)."</select>",html_select("where[$q][op]",array(-1=>"")+$this->operators,$V["op"]),"<input type='search' name='where[$q][val]' value='".h($V["val"])."' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n";$q++;}}echo"<div><select name='where[$q][col]' onchange='this.nextSibling.nextSibling.onchange();'><option value=''>(".'anywhere'.")".optionlist($e,null,true)."</select>",html_select("where[$q][op]",array(-1=>"")+$this->operators),"<input type='search' name='where[$q][val]' onchange='selectAddRow(this);' onsearch='selectSearch(this);'></div>\n","</div></fieldset>\n";}function |
|
415 | -selectOrderPrint($E,$e,$t){$Zc=array();foreach($t |
|
416 | -as$x=>$s){$E=array();foreach($s["columns"]as$V)$E[]=$e[$V];if(count(array_filter($E,'strlen'))>1&&$x!="PRIMARY")$Zc[$x]=implode(", ",$E);}if($Zc){echo'<fieldset><legend>'.'Sort'."</legend><div>","<select name='index_order'>".optionlist(array(""=>"")+$Zc,($_GET["order"][0]!=""?"":$_GET["index_order"]),true)."</select>","</div></fieldset>\n";}if($_GET["order"])echo"<div style='display: none;'>".hidden_fields(array("order"=>array(1=>reset($_GET["order"])),"desc"=>($_GET["desc"]?array(1=>1):array()),))."</div>\n";}function |
|
417 | -selectLimitPrint($y){echo"<fieldset><legend>".'Limit'."</legend><div>";echo |
|
418 | -html_select("limit",array("","50","100"),$y),"</div></fieldset>\n";}function |
|
419 | -selectLengthPrint($he){}function |
|
420 | -selectActionPrint($t){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>","</div></fieldset>\n";}function |
|
421 | -selectCommandPrint(){return |
|
422 | -true;}function |
|
423 | -selectImportPrint(){return |
|
424 | -true;}function |
|
425 | -selectEmailPrint($qb,$e){if($qb){print_fieldset("email",'E-mail',$_POST["email_append"]);echo"<div onkeydown=\"eventStop(event); return bodyKeydown(event, 'email');\">\n","<p>".'From'.": <input name='email_from' value='".h($_POST?$_POST["email_from"]:$_COOKIE["adminer_email"])."'>\n",'Subject'.": <input name='email_subject' value='".h($_POST["email_subject"])."'>\n","<p><textarea name='email_message' rows='15' cols='75'>".h($_POST["email_message"].($_POST["email_append"]?'{$'."$_POST[email_addition]}":""))."</textarea>\n","<p onkeydown=\"eventStop(event); return bodyKeydown(event, 'email_append');\">".html_select("email_addition",$e,$_POST["email_addition"])."<input type='submit' name='email_append' value='".'Insert'."'>\n";echo"<p>".'Attachments'.": <input type='file' name='email_files[]' onchange=\"this.onchange = function () { }; var el = this.cloneNode(true); el.value = ''; this.parentNode.appendChild(el);\">","<p>".(count($qb)==1?'<input type="hidden" name="email_field" value="'.h(key($qb)).'">':html_select("email_field",$qb)),"<input type='submit' name='email' value='".'Send'."' onclick=\"return this.form['delete'].onclick();\">\n","</div>\n","</div></fieldset>\n";}}function |
|
426 | -selectColumnsProcess($e,$t){return |
|
427 | -array(array(),array());}function |
|
428 | -selectSearchProcess($m,$t){$K=array();foreach((array)$_GET["where"]as$x=>$Y){$La=$Y["col"];$Uc=$Y["op"];$V=$Y["val"];if(($x<0?"":$La).$V!=""){$Ra=array();foreach(($La!=""?array($La=>$m[$La]):$m)as$D=>$l){if($La!=""||is_numeric($V)||!preg_match('~int|float|double|decimal~',$l["type"])){$D=idf_escape($D);if($La!=""&&$l["type"]=="enum")$Ra[]=(in_array(0,$V)?"$D IS NULL OR ":"")."$D IN (".implode(", ",array_map('intval',$V)).")";else{$ie=preg_match('~char|text|enum|set~',$l["type"]);$W=$this->processInput($l,(!$Uc&&$ie&&preg_match('~^[^%]+$~',$V)?"%$V%":$V));$Ra[]=$D.($W=="NULL"?" IS".($Uc==">="?" NOT":"")." $W":(in_array($Uc,$this->operators)||$Uc=="="?" $Uc $W":($ie?" LIKE $W":" IN (".str_replace(",","', '",$W).")")));if($x<0&&$V=="0")$Ra[]="$D IS NULL";}}}$K[]=($Ra?"(".implode(" OR ",$Ra).")":"0");}}return$K;}function |
|
429 | -selectOrderProcess($m,$t){$jc=$_GET["index_order"];if($jc!="")unset($_GET["order"][1]);if($_GET["order"])return |
|
430 | -array(idf_escape(reset($_GET["order"])).($_GET["desc"]?" DESC":""));foreach(($jc!=""?array($t[$jc]):$t)as$s){if($jc!=""||$s["type"]=="INDEX"){$Xb=array_filter($s["descs"]);$db=false;foreach($s["columns"]as$V){if(preg_match('~date|timestamp~',$m[$V]["type"])){$db=true;break;}}$K=array();foreach($s["columns"]as$x=>$V)$K[]=idf_escape($V).(($Xb?$s["descs"][$x]:$db)?" DESC":"");return$K;}}return |
|
431 | -array();}function |
|
432 | -selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function |
|
433 | -selectLengthProcess(){return"100";}function |
|
434 | -selectEmailProcess($Y,$Mb){if($_POST["email_append"])return |
|
435 | -true;if($_POST["email"]){$Jd=0;if($_POST["all"]||$_POST["check"]){$l=idf_escape($_POST["email_field"]);$Yd=$_POST["email_subject"];$B=$_POST["email_message"];preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i',"$Yd.$B",$Bc);$M=get_rows("SELECT DISTINCT $l".($Bc[1]?", ".implode(", ",array_map('idf_escape',array_unique($Bc[1]))):"")." FROM ".table($_GET["select"])." WHERE $l IS NOT NULL AND $l != ''".($Y?" AND ".implode(" AND ",$Y):"").($_POST["all"]?"":" AND ((".implode(") OR (",array_map('where_check',(array)$_POST["check"]))."))"));$m=fields($_GET["select"]);foreach($this->rowDescriptions($M,$Mb)as$L){$_d=array('{\\'=>'{');foreach($Bc[1]as$V)$_d['{$'."$V}"]=$this->editVal($L[$V],$m[$V]);$pb=$L[$_POST["email_field"]];if(is_mail($pb)&&send_mail($pb,strtr($Yd,$_d),strtr($B,$_d),$_POST["email_from"],$_FILES["email_files"]))$Jd++;}}cookie("adminer_email",$_POST["email_from"]);redirect(remove_from_uri(),lang(array('%d e-mail has been sent.','%d e-mails have been sent.'),$Jd));}return |
|
436 | -false;}function |
|
437 | -selectQueryBuild($N,$Y,$p,$E,$y,$F){return"";}function |
|
438 | -messageQuery($I,$je){return" <span class='time'>".@date("H:i:s")."</span><!--\n".str_replace("--","--><!-- ",$I)."\n".($je?"($je)\n":"")."-->";}function |
|
439 | -editFunctions($l){$K=array();if($l["null"]&&preg_match('~blob~',$l["type"]))$K["NULL"]='empty';$K[""]=($l["null"]||$l["auto_increment"]||like_bool($l)?"":"*");if(preg_match('~date|time~',$l["type"]))$K["now"]='now';if(preg_match('~_(md5|sha1)$~i',$l["field"],$A))$K[]=strtolower($A[1]);return$K;}function |
|
440 | -editInput($R,$l,$c,$W){if($l["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$c value='-1' checked><i>".'original'."</i></label> ":"").enum_input("radio",$c,$l,($W||isset($_GET["select"])?$W:0),($l["null"]?"":null));$Xc=$this->_foreignKeyOptions($R,$l["field"],$W);if($Xc!==null)return(is_array($Xc)?"<select$c>".optionlist($Xc,$W,true)."</select>":"<input value='".h($W)."'$c class='hidden'><input value='".h($Xc)."' class='jsonly' onkeyup=\"whisper('".h(ME."script=complete&source=".urlencode($R)."&field=".urlencode($l["field"]))."&value=', this);\"><div onclick='return whisperClick(event, this.previousSibling);'></div>");if(like_bool($l))return'<input type="checkbox" value="'.h($W?$W:1).'"'.($W?' checked':'')."$c>";$cc="";if(preg_match('~time~',$l["type"]))$cc='HH:MM:SS';if(preg_match('~date|timestamp~',$l["type"]))$cc='[yyyy]-mm-dd'.($cc?" [$cc]":"");if($cc)return"<input value='".h($W)."'$c> ($cc)";if(preg_match('~_(md5|sha1)$~i',$l["field"]))return"<input type='password' value='".h($W)."'$c>";return'';}function |
|
441 | -processInput($l,$W,$o=""){if($o=="now")return"$o()";$K=$W;if(preg_match('~date|timestamp~',$l["type"])&&preg_match('(^'.str_replace('\\$1','(?P<p1>\\d*)',preg_replace('~(\\\\\\$([2-6]))~','(?P<p\\2>\\d{1,2})',preg_quote('$1-$3-$5'))).'(.*))',$W,$A))$K=($A["p1"]!=""?$A["p1"]:($A["p2"]!=""?($A["p2"]<70?20:19).$A["p2"]:gmdate("Y")))."-$A[p3]$A[p4]-$A[p5]$A[p6]".end($A);$K=($l["type"]=="bit"&&preg_match('~^[0-9]+$~',$W)?$K:q($K));if($W==""&&like_bool($l))$K="0";elseif($W==""&&($l["null"]||!preg_match('~char|text~',$l["type"])))$K="NULL";elseif(preg_match('~^(md5|sha1)$~',$o))$K="$o($K)";return |
|
442 | -unconvert_field($l,$K);}function |
|
443 | -dumpOutput(){return |
|
444 | -array();}function |
|
445 | -dumpFormat(){return |
|
446 | -array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function |
|
447 | -dumpDatabase($h){}function |
|
448 | -dumpTable(){echo"\xef\xbb\xbf";}function |
|
449 | -dumpData($R,$Xd,$I){global$f;$J=$f->query($I,1);if($J){while($L=$J->fetch_assoc()){if($Xd=="table"){dump_csv(array_keys($L));$Xd="INSERT";}dump_csv($L);}}}function |
|
450 | -dumpFilename($fc){return |
|
451 | -friendly_url($fc);}function |
|
452 | -dumpHeaders($fc,$Jc=false){$_b="csv";header("Content-Type: text/csv; charset=utf-8");return$_b;}function |
|
453 | -homepage(){return |
|
454 | -true;}function |
|
455 | -navigation($Ic){global$ca;echo'<h1> |
|
456 | -',$this->name(),' <span class="version">',$ca,'</span> |
|
457 | -<a href="https://www.adminer.org/editor/#download" target="_blank" id="version">',(version_compare($ca,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a> |
|
390 | +WHERE TABLE_SCHEMA = ".q($this->database()) . " |
|
391 | +AND REFERENCED_TABLE_SCHEMA = ".q($this->database()) . " |
|
392 | +AND REFERENCED_TABLE_NAME = ".q($R) . " |
|
393 | +ORDER BY ORDINAL_POSITION",null, "")as$L)$K[$L["TABLE_NAME"]]["keys"][$L["CONSTRAINT_NAME"]][$L["COLUMN_NAME"]] = $L["REFERENCED_COLUMN_NAME"]; foreach ($K |
|
394 | +as$x=>$V) {$D = $this->tableName(table_status($x, true)); if ($D != "") {$Gd = preg_quote($be); $Kd = "(:|\\s*-)?\\s+"; $K[$x]["name"] = (preg_match("(^$Gd$Kd(.+)|^(.+?)$Kd$Gd\$)iu", $D, $A) ? $A[2] . $A[3] : $D); } else |
|
395 | +unset($K[$x]); }return$K; }function |
|
396 | +backwardKeysPrint($wa, $L) {foreach ($wa |
|
397 | +as$R=>$va) {foreach ($va["keys"]as$Oa) {$z = ME . 'select=' . urlencode($R); $q = 0; foreach ($Oa |
|
398 | +as$d=>$V)$z .= where_link($q++, $d, $L[$V]); echo"<a href='" . h($z) . "'>" . h($va["name"]) . "</a>"; $z = ME . 'edit=' . urlencode($R); foreach ($Oa |
|
399 | +as$d=>$V)$z .= "&set" . urlencode("[" . bracket_escape($d) . "]") . "=" . urlencode($L[$V]); echo"<a href='" . h($z) . "' title='" . 'New item' . "'>+</a> "; }}}function |
|
400 | +selectQuery($I, $je) {return"<!--\n" . str_replace("--", "--><!-- ", $I) . "\n($je)\n-->\n"; }function |
|
401 | +rowDescription($R) {foreach (fields($R)as$l) {if (preg_match("~varchar|character varying~", $l["type"]))return |
|
402 | +idf_escape($l["field"]); }return""; }function |
|
403 | +rowDescriptions($M, $Mb) {$K = $M; foreach ($M[0]as$x=>$V) {if (list($R, $r, $D) = $this->_foreignColumn($Mb, $x)) {$hc = array(); foreach ($M |
|
404 | +as$L)$hc[$L[$x]] = q($L[$x]); $eb = $this->_values[$R]; if (!$eb)$eb = get_key_vals("SELECT $r, $D FROM " . table($R) . " WHERE $r IN (" . implode(", ", $hc) . ")"); foreach ($M |
|
405 | +as$C=>$L) {if (isset($L[$x]))$K[$C][$x] = (string) $eb[$L[$x]]; }}}return$K; }function |
|
406 | +selectLink($V, $l) {}function |
|
407 | +selectVal($V, $z, $l, $ad) {$K = ($V === null ? " " : $V); $z = h($z); if (preg_match('~blob|bytea~', $l["type"]) && !is_utf8($V)) {$K = lang(array('%d byte', '%d bytes'), strlen($ad)); if (preg_match("~^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)~", $ad))$K = "<img src='$z' alt='$K'>"; }if (like_bool($l) && $K != " ")$K = ($V ? 'yes' : 'no'); if ($z)$K = "<a href='$z'" . (is_url($z) ? " rel='noreferrer'" : "") . ">$K</a>"; if (!$z && !like_bool($l) && preg_match('~int|float|double|decimal~', $l["type"]))$K = "<div class='number'>$K</div>"; elseif (preg_match('~date~', $l["type"]))$K = "<div class='datetime'>$K</div>"; return$K; }function |
|
408 | +editVal($V, $l) {if (preg_match('~date|timestamp~', $l["type"]) && $V !== null)return |
|
409 | +preg_replace('~^(\\d{2}(\\d+))-(0?(\\d+))-(0?(\\d+))~', '$1-$3-$5', $V); return$V; }function |
|
410 | +selectColumnsPrint($N, $e) {}function |
|
411 | +selectSearchPrint($Y, $e, $t) {$Y = (array) $_GET["where"]; echo'<fieldset id="fieldset-search"><legend>' . 'Search' . "</legend><div>\n"; $qc = array(); foreach ($Y |
|
412 | +as$x=>$V)$qc[$V["col"]] = $x; $q = 0; $m = fields($_GET["select"]); foreach ($e |
|
413 | +as$D=>$db) {$l = $m[$D]; if (preg_match("~enum~", $l["type"]) || like_bool($l)) {$x = $qc[$D]; $q--; echo"<div>" . h($db) . "<input type='hidden' name='where[$q][col]' value='" . h($D) . "'>:", (like_bool($l) ? " <select name='where[$q][val]'>" . optionlist(array(""=>"", 'no', 'yes'), $Y[$x]["val"], true) . "</select>" : enum_input("checkbox", " name='where[$q][val][]'", $l, (array) $Y[$x]["val"], ($l["null"] ? 0 : null))), "</div>\n"; unset($e[$D]); }elseif (is_array($Xc = $this->_foreignKeyOptions($_GET["select"], $D))) {if ($m[$D]["null"])$Xc[0] = '(' . 'empty' . ')'; $x = $qc[$D]; $q--; echo"<div>" . h($db) . "<input type='hidden' name='where[$q][col]' value='" . h($D) . "'><input type='hidden' name='where[$q][op]' value='='>: <select name='where[$q][val]'>" . optionlist($Xc, $Y[$x]["val"], true) . "</select></div>\n"; unset($e[$D]); }}$q = 0; foreach ($Y |
|
414 | +as$V) {if (($V["col"] == "" || $e[$V["col"]]) && "$V[col]$V[val]" != "") {echo"<div><select name='where[$q][col]'><option value=''>(" . 'anywhere' . ")" . optionlist($e, $V["col"], true) . "</select>", html_select("where[$q][op]", array(-1=>"") + $this->operators, $V["op"]), "<input type='search' name='where[$q][val]' value='" . h($V["val"]) . "' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n"; $q++; }}echo"<div><select name='where[$q][col]' onchange='this.nextSibling.nextSibling.onchange();'><option value=''>(" . 'anywhere' . ")" . optionlist($e, null, true) . "</select>", html_select("where[$q][op]", array(-1=>"") + $this->operators), "<input type='search' name='where[$q][val]' onchange='selectAddRow(this);' onsearch='selectSearch(this);'></div>\n", "</div></fieldset>\n"; }function |
|
415 | +selectOrderPrint($E, $e, $t) {$Zc = array(); foreach ($t |
|
416 | +as$x=>$s) {$E = array(); foreach ($s["columns"]as$V)$E[] = $e[$V]; if (count(array_filter($E, 'strlen')) > 1 && $x != "PRIMARY")$Zc[$x] = implode(", ", $E); }if ($Zc) {echo'<fieldset><legend>' . 'Sort' . "</legend><div>", "<select name='index_order'>" . optionlist(array(""=>"") + $Zc, ($_GET["order"][0] != "" ? "" : $_GET["index_order"]), true) . "</select>", "</div></fieldset>\n"; }if ($_GET["order"])echo"<div style='display: none;'>" . hidden_fields(array("order"=>array(1=>reset($_GET["order"])), "desc"=>($_GET["desc"] ? array(1=>1) : array()),)) . "</div>\n"; }function |
|
417 | +selectLimitPrint($y) {echo"<fieldset><legend>" . 'Limit' . "</legend><div>"; echo |
|
418 | +html_select("limit", array("", "50", "100"), $y), "</div></fieldset>\n"; }function |
|
419 | +selectLengthPrint($he) {}function |
|
420 | +selectActionPrint($t) {echo"<fieldset><legend>" . 'Action' . "</legend><div>", "<input type='submit' value='" . 'Select' . "'>", "</div></fieldset>\n"; }function |
|
421 | +selectCommandPrint() {return |
|
422 | +true; }function |
|
423 | +selectImportPrint() {return |
|
424 | +true; }function |
|
425 | +selectEmailPrint($qb, $e) {if ($qb) {print_fieldset("email", 'E-mail', $_POST["email_append"]); echo"<div onkeydown=\"eventStop(event); return bodyKeydown(event, 'email');\">\n", "<p>" . 'From' . ": <input name='email_from' value='" . h($_POST ? $_POST["email_from"] : $_COOKIE["adminer_email"]) . "'>\n", 'Subject' . ": <input name='email_subject' value='" . h($_POST["email_subject"]) . "'>\n", "<p><textarea name='email_message' rows='15' cols='75'>" . h($_POST["email_message"] . ($_POST["email_append"] ? '{$' . "$_POST[email_addition]}" : "")) . "</textarea>\n", "<p onkeydown=\"eventStop(event); return bodyKeydown(event, 'email_append');\">" . html_select("email_addition", $e, $_POST["email_addition"]) . "<input type='submit' name='email_append' value='" . 'Insert' . "'>\n"; echo"<p>" . 'Attachments' . ": <input type='file' name='email_files[]' onchange=\"this.onchange = function () { }; var el = this.cloneNode(true); el.value = ''; this.parentNode.appendChild(el);\">", "<p>" . (count($qb) == 1 ? '<input type="hidden" name="email_field" value="' . h(key($qb)) . '">' : html_select("email_field", $qb)), "<input type='submit' name='email' value='" . 'Send' . "' onclick=\"return this.form['delete'].onclick();\">\n", "</div>\n", "</div></fieldset>\n"; }}function |
|
426 | +selectColumnsProcess($e, $t) {return |
|
427 | +array(array(), array()); }function |
|
428 | +selectSearchProcess($m, $t) {$K = array(); foreach ((array) $_GET["where"]as$x=>$Y) {$La = $Y["col"]; $Uc = $Y["op"]; $V = $Y["val"]; if (($x < 0 ? "" : $La) . $V != "") {$Ra = array(); foreach (($La != "" ? array($La=>$m[$La]) : $m)as$D=>$l) {if ($La != "" || is_numeric($V) || !preg_match('~int|float|double|decimal~', $l["type"])) {$D = idf_escape($D); if ($La != "" && $l["type"] == "enum")$Ra[] = (in_array(0, $V) ? "$D IS NULL OR " : "") . "$D IN (" . implode(", ", array_map('intval', $V)) . ")"; else {$ie = preg_match('~char|text|enum|set~', $l["type"]); $W = $this->processInput($l, (!$Uc && $ie && preg_match('~^[^%]+$~', $V) ? "%$V%" : $V)); $Ra[] = $D . ($W == "NULL" ? " IS" . ($Uc == ">=" ? " NOT" : "") . " $W" : (in_array($Uc, $this->operators) || $Uc == "=" ? " $Uc $W" : ($ie ? " LIKE $W" : " IN (" . str_replace(",", "', '", $W) . ")"))); if ($x < 0 && $V == "0")$Ra[] = "$D IS NULL"; }}}$K[] = ($Ra ? "(" . implode(" OR ", $Ra) . ")" : "0"); }}return$K; }function |
|
429 | +selectOrderProcess($m, $t) {$jc = $_GET["index_order"]; if ($jc != "")unset($_GET["order"][1]); if ($_GET["order"])return |
|
430 | +array(idf_escape(reset($_GET["order"])) . ($_GET["desc"] ? " DESC" : "")); foreach (($jc != "" ? array($t[$jc]) : $t)as$s) {if ($jc != "" || $s["type"] == "INDEX") {$Xb = array_filter($s["descs"]); $db = false; foreach ($s["columns"]as$V) {if (preg_match('~date|timestamp~', $m[$V]["type"])) {$db = true; break; }}$K = array(); foreach ($s["columns"]as$x=>$V)$K[] = idf_escape($V) . (($Xb ? $s["descs"][$x] : $db) ? " DESC" : ""); return$K; }}return |
|
431 | +array(); }function |
|
432 | +selectLimitProcess() {return(isset($_GET["limit"]) ? $_GET["limit"] : "50"); }function |
|
433 | +selectLengthProcess() {return"100"; }function |
|
434 | +selectEmailProcess($Y, $Mb) {if ($_POST["email_append"])return |
|
435 | +true; if ($_POST["email"]) {$Jd = 0; if ($_POST["all"] || $_POST["check"]) {$l = idf_escape($_POST["email_field"]); $Yd = $_POST["email_subject"]; $B = $_POST["email_message"]; preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i', "$Yd.$B", $Bc); $M = get_rows("SELECT DISTINCT $l" . ($Bc[1] ? ", " . implode(", ", array_map('idf_escape', array_unique($Bc[1]))) : "") . " FROM " . table($_GET["select"]) . " WHERE $l IS NOT NULL AND $l != ''" . ($Y ? " AND " . implode(" AND ", $Y) : "") . ($_POST["all"] ? "" : " AND ((" . implode(") OR (", array_map('where_check', (array) $_POST["check"])) . "))")); $m = fields($_GET["select"]); foreach ($this->rowDescriptions($M, $Mb)as$L) {$_d = array('{\\'=>'{'); foreach ($Bc[1]as$V)$_d['{$' . "$V}"] = $this->editVal($L[$V], $m[$V]); $pb = $L[$_POST["email_field"]]; if (is_mail($pb) && send_mail($pb, strtr($Yd, $_d), strtr($B, $_d), $_POST["email_from"], $_FILES["email_files"]))$Jd++; }}cookie("adminer_email", $_POST["email_from"]); redirect(remove_from_uri(), lang(array('%d e-mail has been sent.', '%d e-mails have been sent.'), $Jd)); }return |
|
436 | +false; }function |
|
437 | +selectQueryBuild($N, $Y, $p, $E, $y, $F) {return""; }function |
|
438 | +messageQuery($I, $je) {return" <span class='time'>" . @date("H:i:s") . "</span><!--\n" . str_replace("--", "--><!-- ", $I) . "\n" . ($je ? "($je)\n" : "") . "-->"; }function |
|
439 | +editFunctions($l) {$K = array(); if ($l["null"] && preg_match('~blob~', $l["type"]))$K["NULL"] = 'empty'; $K[""] = ($l["null"] || $l["auto_increment"] || like_bool($l) ? "" : "*"); if (preg_match('~date|time~', $l["type"]))$K["now"] = 'now'; if (preg_match('~_(md5|sha1)$~i', $l["field"], $A))$K[] = strtolower($A[1]); return$K; }function |
|
440 | +editInput($R, $l, $c, $W) {if ($l["type"] == "enum")return(isset($_GET["select"]) ? "<label><input type='radio'$c value='-1' checked><i>" . 'original' . "</i></label> " : "") . enum_input("radio", $c, $l, ($W || isset($_GET["select"]) ? $W : 0), ($l["null"] ? "" : null)); $Xc = $this->_foreignKeyOptions($R, $l["field"], $W); if ($Xc !== null)return(is_array($Xc) ? "<select$c>" . optionlist($Xc, $W, true) . "</select>" : "<input value='" . h($W) . "'$c class='hidden'><input value='" . h($Xc) . "' class='jsonly' onkeyup=\"whisper('" . h(ME . "script=complete&source=" . urlencode($R) . "&field=" . urlencode($l["field"])) . "&value=', this);\"><div onclick='return whisperClick(event, this.previousSibling);'></div>"); if (like_bool($l))return'<input type="checkbox" value="' . h($W ? $W : 1) . '"' . ($W ? ' checked' : '') . "$c>"; $cc = ""; if (preg_match('~time~', $l["type"]))$cc = 'HH:MM:SS'; if (preg_match('~date|timestamp~', $l["type"]))$cc = '[yyyy]-mm-dd' . ($cc ? " [$cc]" : ""); if ($cc)return"<input value='" . h($W) . "'$c> ($cc)"; if (preg_match('~_(md5|sha1)$~i', $l["field"]))return"<input type='password' value='" . h($W) . "'$c>"; return''; }function |
|
441 | +processInput($l, $W, $o = "") {if ($o == "now")return"$o()"; $K = $W; if (preg_match('~date|timestamp~', $l["type"]) && preg_match('(^' . str_replace('\\$1', '(?P<p1>\\d*)', preg_replace('~(\\\\\\$([2-6]))~', '(?P<p\\2>\\d{1,2})', preg_quote('$1-$3-$5'))) . '(.*))', $W, $A))$K = ($A["p1"] != "" ? $A["p1"] : ($A["p2"] != "" ? ($A["p2"] < 70 ? 20 : 19) . $A["p2"] : gmdate("Y"))) . "-$A[p3]$A[p4]-$A[p5]$A[p6]" . end($A); $K = ($l["type"] == "bit" && preg_match('~^[0-9]+$~', $W) ? $K : q($K)); if ($W == "" && like_bool($l))$K = "0"; elseif ($W == "" && ($l["null"] || !preg_match('~char|text~', $l["type"])))$K = "NULL"; elseif (preg_match('~^(md5|sha1)$~', $o))$K = "$o($K)"; return |
|
442 | +unconvert_field($l, $K); }function |
|
443 | +dumpOutput() {return |
|
444 | +array(); }function |
|
445 | +dumpFormat() {return |
|
446 | +array('csv'=>'CSV,', 'csv;'=>'CSV;', 'tsv'=>'TSV'); }function |
|
447 | +dumpDatabase($h) {}function |
|
448 | +dumpTable() {echo"\xef\xbb\xbf"; }function |
|
449 | +dumpData($R, $Xd, $I) {global$f; $J = $f->query($I, 1); if ($J) {while ($L = $J->fetch_assoc()) {if ($Xd == "table") {dump_csv(array_keys($L)); $Xd = "INSERT"; }dump_csv($L); }}}function |
|
450 | +dumpFilename($fc) {return |
|
451 | +friendly_url($fc); }function |
|
452 | +dumpHeaders($fc, $Jc = false) {$_b = "csv"; header("Content-Type: text/csv; charset=utf-8"); return$_b; }function |
|
453 | +homepage() {return |
|
454 | +true; }function |
|
455 | +navigation($Ic) {global$ca; echo'<h1> |
|
456 | +',$this->name(), ' <span class="version">', $ca, '</span> |
|
457 | +<a href="https://www.adminer.org/editor/#download" target="_blank" id="version">',(version_compare($ca, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""), '</a> |
|
458 | 458 | </h1> |
459 | -';if($Ic=="auth"){$Ib=true;foreach((array)$_SESSION["pwds"]as$X=>$Nd){foreach($Nd[""]as$T=>$G){if($G!==null){if($Ib){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$Ib=false;}echo"<a href='".h(auth_url($X,"",$T))."'>".($T!=""?h($T):"<i>".'empty'."</i>")."</a><br>\n";}}}}else{$this->databasesPrint($Ic);if($Ic!="db"&&$Ic!="ns"){$S=table_status('',true);if(!$S)echo"<p class='message'>".'No tables.'."\n";else$this->tablesPrint($S);}}}function |
|
460 | -databasesPrint($Ic){}function |
|
461 | -tablesPrint($ee){echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";foreach($ee |
|
462 | -as$L){$D=$this->tableName($L);if(isset($L["Engine"])&&$D!="")echo"<a href='".h(ME).'select='.urlencode($L["Name"])."'".bold($_GET["select"]==$L["Name"]||$_GET["edit"]==$L["Name"],"select")." title='".'Select data'."'>$D</a><br>\n";}}function |
|
463 | -_foreignColumn($Mb,$d){foreach((array)$Mb[$d]as$Lb){if(count($Lb["source"])==1){$D=$this->rowDescription($Lb["table"]);if($D!=""){$r=idf_escape($Lb["target"][0]);return |
|
464 | -array($Lb["table"],$r,$D);}}}}function |
|
465 | -_foreignKeyOptions($R,$d,$W=null){global$f;if(list($fe,$r,$D)=$this->_foreignColumn(column_foreign_keys($R),$d)){$K=&$this->_values[$fe];if($K===null){$S=table_status($fe);$K=($S["Rows"]>1000?"":array(""=>"")+get_key_vals("SELECT $r, $D FROM ".table($fe)." ORDER BY 2"));}if(!$K&&$W!==null)return$f->result("SELECT $D FROM ".table($fe)." WHERE $r = ".q($W));return$K;}}}$b=(function_exists('adminer_object')?adminer_object():new |
|
466 | -Adminer);function |
|
467 | -page_header($le,$k="",$Ca=array(),$me=""){global$ba,$ca,$b,$jb,$v;page_headers();if(is_ajax()&&$k){page_messages($k);exit;}$ne=$le.($me!=""?": $me":"");$oe=strip_tags($ne.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html> |
|
459 | +';if ($Ic == "auth") {$Ib = true; foreach ((array) $_SESSION["pwds"]as$X=>$Nd) {foreach ($Nd[""]as$T=>$G) {if ($G !== null) {if ($Ib) {echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n"; $Ib = false; }echo"<a href='" . h(auth_url($X, "", $T)) . "'>" . ($T != "" ? h($T) : "<i>" . 'empty' . "</i>") . "</a><br>\n"; }}}} else {$this->databasesPrint($Ic); if ($Ic != "db" && $Ic != "ns") {$S = table_status('', true); if (!$S)echo"<p class='message'>" . 'No tables.' . "\n"; else$this->tablesPrint($S); }}}function |
|
460 | +databasesPrint($Ic) {}function |
|
461 | +tablesPrint($ee) {echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n"; foreach ($ee |
|
462 | +as$L) {$D = $this->tableName($L); if (isset($L["Engine"]) && $D != "")echo"<a href='" . h(ME) . 'select=' . urlencode($L["Name"]) . "'" . bold($_GET["select"] == $L["Name"] || $_GET["edit"] == $L["Name"], "select") . " title='" . 'Select data' . "'>$D</a><br>\n"; }}function |
|
463 | +_foreignColumn($Mb, $d) {foreach ((array) $Mb[$d]as$Lb) {if (count($Lb["source"]) == 1) {$D = $this->rowDescription($Lb["table"]); if ($D != "") {$r = idf_escape($Lb["target"][0]); return |
|
464 | +array($Lb["table"], $r, $D); }}}}function |
|
465 | +_foreignKeyOptions($R, $d, $W = null) {global$f; if (list($fe, $r, $D) = $this->_foreignColumn(column_foreign_keys($R), $d)) {$K = &$this->_values[$fe]; if ($K === null) {$S = table_status($fe); $K = ($S["Rows"] > 1000 ? "" : array(""=>"") + get_key_vals("SELECT $r, $D FROM " . table($fe) . " ORDER BY 2")); }if (!$K && $W !== null)return$f->result("SELECT $D FROM " . table($fe) . " WHERE $r = " . q($W)); return$K; }}}$b = (function_exists('adminer_object') ? adminer_object() : new |
|
466 | +Adminer); function |
|
467 | +page_header($le, $k = "", $Ca = array(), $me = "") {global$ba, $ca, $b, $jb, $v; page_headers(); if (is_ajax() && $k) {page_messages($k); exit; }$ne = $le . ($me != "" ? ": $me" : ""); $oe = strip_tags($ne . (SERVER != "" && SERVER != "localhost" ? h(" - " . SERVER) : "") . " - " . $b->name()); echo'<!DOCTYPE html> |
|
468 | 468 | <html lang="en" dir="ltr"> |
469 | 469 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
470 | 470 | <meta http-equiv="Content-Script-Type" content="text/javascript"> |
471 | 471 | <meta name="robots" content="noindex"> |
472 | 472 | <meta name="referrer" content="origin-when-crossorigin"> |
473 | -<title>',$oe,'</title> |
|
474 | -<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~","",ME))."?file=default.css&version=4.2.5&driver=mysql",'"> |
|
475 | -<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=functions.js&version=4.2.5&driver=mysql",'"></script> |
|
476 | -';if($b->head()){echo'<link rel="shortcut icon" type="image/x-icon" href="',h(preg_replace("~\\?.*~","",ME))."?file=favicon.ico&version=4.2.5&driver=mysql",'"> |
|
477 | -<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~","",ME))."?file=favicon.ico&version=4.2.5&driver=mysql",'"> |
|
478 | -';if(file_exists("adminer.css")){echo'<link rel="stylesheet" type="text/css" href="adminer.css"> |
|
473 | +<title>',$oe, '</title> |
|
474 | +<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~", "", ME)) . "?file=default.css&version=4.2.5&driver=mysql", '"> |
|
475 | +<script type="text/javascript" src="',h(preg_replace("~\\?.*~", "", ME)) . "?file=functions.js&version=4.2.5&driver=mysql", '"></script> |
|
476 | +';if ($b->head()) {echo'<link rel="shortcut icon" type="image/x-icon" href="', h(preg_replace("~\\?.*~", "", ME)) . "?file=favicon.ico&version=4.2.5&driver=mysql", '"> |
|
477 | +<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~", "", ME)) . "?file=favicon.ico&version=4.2.5&driver=mysql", '"> |
|
478 | +';if (file_exists("adminer.css")) {echo'<link rel="stylesheet" type="text/css" href="adminer.css"> |
|
479 | 479 | ';}}echo' |
480 | -<body class="ltr nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"',(isset($_COOKIE["adminer_version"])?"":" onload=\"verifyVersion('$ca');\"");?>> |
|
480 | +<body class="ltr nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"',(isset($_COOKIE["adminer_version"]) ? "" : " onload=\"verifyVersion('$ca');\""); ?>> |
|
481 | 481 | <script type="text/javascript"> |
482 | 482 | document.body.className = document.body.className.replace(/ nojs/, ' js'); |
483 | 483 | var offlineMessage = '<?php echo |
484 | -js_escape('You are offline.'),'\'; |
|
484 | +js_escape('You are offline.'), '\'; |
|
485 | 485 | </script> |
486 | 486 | |
487 | -<div id="help" class="jush-',$v,' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div> |
|
487 | +<div id="help" class="jush-',$v, ' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div> |
|
488 | 488 | |
489 | 489 | <div id="content"> |
490 | -';if($Ca!==null){$z=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($z?$z:".").'">'.$jb[DRIVER].'</a> » ';$z=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ca===false)echo"$O\n";else{echo"<a href='".($z?h($z):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ca)))echo'<a href="'.h($z."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Ca)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Ca |
|
491 | -as$x=>$V){$db=(is_array($V)?$V[1]:h($V));if($db!="")echo"<a href='".h(ME."$x=").urlencode(is_array($V)?$V[0]:$V)."'>$db</a> » ";}}echo"$le\n";}}echo"<h2>$ne</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$ab=&get_session("dbs");if(DB!=""&&$ab&&!in_array(DB,$ab,true))$ab=null;stop_session();define("PAGE_HEADER",1);}function |
|
492 | -page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");if($b->headers()){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");}}function |
|
493 | -page_messages($k){$Ee=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Hc=$_SESSION["messages"][$Ee];if($Hc){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Hc)."</div>\n";unset($_SESSION["messages"][$Ee]);}if($k)echo"<div class='error'>$k</div>\n";}function |
|
494 | -page_footer($Ic=""){global$b,$qe;echo'</div> |
|
490 | +';if ($Ca !== null) {$z = substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1); echo'<p id="breadcrumb"><a href="' . h($z ? $z : ".") . '">' . $jb[DRIVER] . '</a> » '; $z = substr(preg_replace('~\b(db|ns)=[^&]*&~', '', ME), 0, -1); $O = (SERVER != "" ? h(SERVER) : 'Server'); if ($Ca === false)echo"$O\n"; else {echo"<a href='" . ($z ? h($z) : ".") . "' accesskey='1' title='Alt+Shift+1'>$O</a> » "; if ($_GET["ns"] != "" || (DB != "" && is_array($Ca)))echo'<a href="' . h($z . "&db=" . urlencode(DB) . (support("scheme") ? "&ns=" : "")) . '">' . h(DB) . '</a> » '; if (is_array($Ca)) {if ($_GET["ns"] != "")echo'<a href="' . h(substr(ME, 0, -1)) . '">' . h($_GET["ns"]) . '</a> » '; foreach ($Ca |
|
491 | +as$x=>$V) {$db = (is_array($V) ? $V[1] : h($V)); if ($db != "")echo"<a href='" . h(ME . "$x=") . urlencode(is_array($V) ? $V[0] : $V) . "'>$db</a> » "; }}echo"$le\n"; }}echo"<h2>$ne</h2>\n", "<div id='ajaxstatus' class='jsonly hidden'></div>\n"; restart_session(); page_messages($k); $ab = &get_session("dbs"); if (DB != "" && $ab && !in_array(DB, $ab, true))$ab = null; stop_session(); define("PAGE_HEADER", 1); }function |
|
492 | +page_headers() {global$b; header("Content-Type: text/html; charset=utf-8"); header("Cache-Control: no-cache"); if ($b->headers()) {header("X-Frame-Options: deny"); header("X-XSS-Protection: 0"); }}function |
|
493 | +page_messages($k) {$Ee = preg_replace('~^[^?]*~', '', $_SERVER["REQUEST_URI"]); $Hc = $_SESSION["messages"][$Ee]; if ($Hc) {echo"<div class='message'>" . implode("</div>\n<div class='message'>", $Hc) . "</div>\n"; unset($_SESSION["messages"][$Ee]); }if ($k)echo"<div class='error'>$k</div>\n"; }function |
|
494 | +page_footer($Ic = "") {global$b, $qe; echo'</div> |
|
495 | 495 | |
496 | -';if($Ic!="auth"){echo'<form action="" method="post"> |
|
496 | +';if ($Ic != "auth") {echo'<form action="" method="post"> |
|
497 | 497 | <p class="logout"> |
498 | 498 | <input type="submit" name="logout" value="Logout" id="logout"> |
499 | -<input type="hidden" name="token" value="',$qe,'"> |
|
499 | +<input type="hidden" name="token" value="',$qe, '"> |
|
500 | 500 | </p> |
501 | 501 | </form> |
502 | 502 | ';}echo'<div id="menu"> |
503 | -';$b->navigation($Ic);echo'</div> |
|
503 | +';$b->navigation($Ic); echo'</div> |
|
504 | 504 | <script type="text/javascript">setupSubmitHighlight(document);</script> |
505 | 505 | ';}function |
506 | -int32($C){while($C>=2147483648)$C-=4294967296;while($C<=-2147483649)$C+=4294967296;return(int)$C;}function |
|
507 | -long2str($U,$Ke){$Ed='';foreach($U |
|
508 | -as$V)$Ed.=pack('V',$V);if($Ke)return |
|
509 | -substr($Ed,0,end($U));return$Ed;}function |
|
510 | -str2long($Ed,$Ke){$U=array_values(unpack('V*',str_pad($Ed,4*ceil(strlen($Ed)/4),"\0")));if($Ke)$U[]=strlen($Ed);return$U;}function |
|
511 | -xxtea_mx($Z,$Oe,$ae,$w){return |
|
512 | -int32((($Z>>5&0x7FFFFFF)^$Oe<<2)+(($Oe>>3&0x1FFFFFFF)^$Z<<4))^int32(($ae^$Oe)+($w^$Z));}function |
|
513 | -encrypt_string($Vd,$x){if($Vd=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,true);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=0;while($rd-->0){$ae=int32($ae+0x9E3779B9);$lb=$ae>>2&3;for($cd=0;$cd<$C;$cd++){$Oe=$U[$cd+1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$cd]+$Kc);$U[$cd]=$Z;}$Oe=$U[0];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$C]+$Kc);$U[$C]=$Z;}return |
|
514 | -long2str($U,false);}function |
|
515 | -decrypt_string($Vd,$x){if($Vd=="")return"";if(!$x)return |
|
516 | -false;$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,false);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=int32($rd*0x9E3779B9);while($ae){$lb=$ae>>2&3;for($cd=$C;$cd>0;$cd--){$Z=$U[$cd-1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[$cd]-$Kc);$U[$cd]=$Oe;}$Z=$U[$C];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[0]-$Kc);$U[0]=$Oe;$ae=int32($ae-0x9E3779B9);}return |
|
517 | -long2str($U,true);}$f='';$Zb=$_SESSION["token"];if(!$Zb)$_SESSION["token"]=rand(1,1e6);$qe=get_token();$gd=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$V){list($x)=explode(":",$V);$gd[$x]=$V;}}function |
|
518 | -add_invalid_login(){global$b;$Fb=get_temp_dir()."/adminer.invalid";$Rb=@fopen($Fb,"r+");if(!$Rb){$Rb=@fopen($Fb,"w");if(!$Rb)return;}flock($Rb,LOCK_EX);$oc=unserialize(stream_get_contents($Rb));$je=time();if($oc){foreach($oc |
|
519 | -as$pc=>$V){if($V[0]<$je)unset($oc[$pc]);}}$nc=&$oc[$b->bruteForceKey()];if(!$nc)$nc=array($je+30*60,0);$nc[1]++;$Ld=serialize($oc);rewind($Rb);fwrite($Rb,$Ld);ftruncate($Rb,strlen($Ld));flock($Rb,LOCK_UN);fclose($Rb);}$ra=$_POST["auth"];if($ra){$oc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$nc=$oc[$b->bruteForceKey()];$Mc=($nc[1]>30?$nc[0]-time():0);if($Mc>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Mc/60)));session_regenerate_id();$X=$ra["driver"];$O=$ra["server"];$T=$ra["username"];$G=(string)$ra["password"];$h=$ra["db"];set_password($X,$O,$T,$G);$_SESSION["db"][$X][$O][$T][$h]=true;if($ra["permanent"]){$x=base64_encode($X)."-".base64_encode($O)."-".base64_encode($T)."-".base64_encode($h);$od=$b->permanentLogin(true);$gd[$x]="$x:".base64_encode($od?encrypt_string($G,$od):"");cookie("adminer_permanent",implode(" ",$gd));}if(count($_POST)==1||DRIVER!=$X||SERVER!=$O||$_GET["username"]!==$T||DB!=$h)redirect(auth_url($X,$O,$T,$h));}elseif($_POST["logout"]){if($Zb&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}}elseif($gd&&!$_SESSION["pwds"]){session_regenerate_id();$od=$b->permanentLogin();foreach($gd |
|
520 | -as$x=>$V){list(,$Ha)=explode(":",$V);list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));set_password($X,$O,$T,decrypt_string(base64_decode($Ha),$od));$_SESSION["db"][$X][$O][$T][$h]=true;}}function |
|
521 | -unset_permanent(){global$gd;foreach($gd |
|
522 | -as$x=>$V){list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));if($X==DRIVER&&$O==SERVER&&$T==$_GET["username"]&&$h==DB)unset($gd[$x]);}cookie("adminer_permanent",implode(" ",$gd));}function |
|
523 | -auth_error($k){global$b,$Zb;$k=h($k);$Od=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Od]||$_GET[$Od])&&!$Zb)$k='Session expired, please login again.';else{add_invalid_login();$G=get_password();if($G!==null){if($G===false)$k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$Od]&&$_GET[$Od]&&ini_bool("session.use_only_cookies"))$k='Session support must be enabled.';$ed=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$ed["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$kd)),false);page_footer("auth");exit;}$f=connect();}$i=new |
|
524 | -Min_Driver($f);if(!is_object($f)||($_c=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($f)?$f:(is_string($_c)?$_c:'Invalid credentials.')));if($ra&&$_POST["token"])$_POST["token"]=$qe;$k='';if($_POST){if(!verify_token()){$kc="max_input_vars";$Fc=ini_get($kc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$V=ini_get($x);if($V&&(!$Fc||$V<$Fc)){$kc=$x;$Fc=$V;}}}$k=(!$_POST["token"]&&$Fc?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$kc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$k.=' '.'You can upload a big SQL file via FTP and import it from server.';}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false)session_write_close();function |
|
525 | -email_header($ac){return"=?UTF-8?B?".base64_encode($ac)."?=";}function |
|
526 | -send_mail($pb,$Yd,$B,$Sb="",$Gb=array()){$j=(DIRECTORY_SEPARATOR=="/"?"\n":"\r\n");$B=str_replace("\n",$j,wordwrap(str_replace("\r","","$B\n")));$Ba=uniqid("boundary");$qa="";foreach((array)$Gb["error"]as$x=>$V){if(!$V)$qa.="--$Ba$j"."Content-Type: ".str_replace("\n","",$Gb["type"][$x]).$j."Content-Disposition: attachment; filename=\"".preg_replace('~["\\n]~','',$Gb["name"][$x])."\"$j"."Content-Transfer-Encoding: base64$j$j".chunk_split(base64_encode(file_get_contents($Gb["tmp_name"][$x])),76,$j).$j;}$ya="";$bc="Content-Type: text/plain; charset=utf-8$j"."Content-Transfer-Encoding: 8bit";if($qa){$qa.="--$Ba--$j";$ya="--$Ba$j$bc$j$j";$bc="Content-Type: multipart/mixed; boundary=\"$Ba\"";}$bc.=$j."MIME-Version: 1.0$j"."X-Mailer: Adminer Editor".($Sb?$j."From: ".str_replace("\n","",$Sb):"");return |
|
527 | -mail($pb,email_header($Yd),$ya.$B.$qa,$bc);}function |
|
528 | -like_bool($l){return |
|
529 | -preg_match("~bool|(tinyint|bit)\\(1\\)~",$l["full_type"]);}$f->select_db($b->database());$Rc="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";$jb[DRIVER]='Login';if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$i->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Y=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$De=(isset($_GET["select"])?$_POST["edit"]:$Y);foreach($m |
|
530 | -as$D=>$l){if(!isset($l["privileges"][$De?"update":"insert"])||$b->fieldName($l)=="")unset($m[$D]);}if($_POST&&!$k&&!isset($_GET["select"])){$_=$_POST["referer"];if($_POST["insert"])$_=($De?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$_))$_=ME."select=".urlencode($a);$t=indexes($a);$ze=unique_array($_GET["where"],$t);$ud="\nWHERE $Y";if(isset($_POST["delete"]))queries_redirect($_,'Item has been deleted.',$i->delete($a,$ud,!$ze));else{$P=array();foreach($m |
|
531 | -as$D=>$l){$V=process_input($l);if($V!==false&&$V!==null)$P[idf_escape($D)]=$V;}if($De){if(!$P)redirect($_);queries_redirect($_,'Item has been updated.',$i->update($a,$P,$ud,!$ze));if(is_ajax()){page_headers();page_messages($k);exit;}}else{$J=$i->insert($a,$P);$vc=($J?last_id():0);queries_redirect($_,sprintf('Item%s has been inserted.',($vc?" $vc":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Y){$N=array();foreach($m |
|
532 | -as$D=>$l){if(isset($l["privileges"]["select"])){$oa=convert_field($l);if($_POST["clone"]&&$l["auto_increment"])$oa="''";if($v=="sql"&&preg_match("~enum|set~",$l["type"]))$oa="1*".idf_escape($D);$N[]=($oa?"$oa AS ":"").idf_escape($D);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$i->select($a,$N,array($Y),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L)$L=false;if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$m){if(!$Y){$J=$i->select($a,array("*"),$Y,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($i->primary=>"");}if($L){foreach($L |
|
533 | -as$x=>$V){if(!$Y)$L[$x]=null;$m[$x]=array("field"=>$x,"null"=>($x!=$i->primary),"auto_increment"=>($x==$i->primary));}}}edit_form($a,$m,$L,$De);}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$t=indexes($a);$m=fields($a);$Ob=column_foreign_keys($a);$Qc="";if($S["Oid"]){$Qc=($v=="sqlite"?"rowid":"oid");$t[]=array("type"=>"PRIMARY","columns"=>array($Qc));}parse_str($_COOKIE["adminer_import"],$ia);$Dd=array();$e=array();$he=null;foreach($m |
|
534 | -as$x=>$l){$D=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$D!=""){$e[$x]=html_entity_decode(strip_tags($D),ENT_QUOTES);if(is_shortable($l))$he=$b->selectLengthProcess();}$Dd+=$l["privileges"];}list($N,$p)=$b->selectColumnsProcess($e,$t);$u=count($p)<count($N);$Y=$b->selectSearchProcess($m,$t);$E=$b->selectOrderProcess($m,$t);$y=$b->selectLimitProcess();$Sb=($N?implode(", ",$N):"*".($Qc?", $Qc":"")).convert_fields($e,$m,$N)."\nFROM ".table($a);$Ub=($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$_e=>$L){$oa=convert_field($m[key($L)]);$N=array($oa?$oa:idf_escape(key($L)));$Y[]=where_check($_e,$m);$K=$i->select($a,$N,$Y,$N);if($K)echo |
|
535 | -reset($K->fetch_row());}exit;}if($_POST&&!$k){$Me=$Y;if(!$_POST["all"]&&is_array($_POST["check"])){$Ga=array();foreach($_POST["check"]as$Ea)$Ga[]=where_check($Ea,$m);$Me[]="((".implode(") OR (",$Ga)."))";}$Me=($Me?"\nWHERE ".implode(" AND ",$Me):"");$md=$Be=null;foreach($t |
|
536 | -as$s){if($s["type"]=="PRIMARY"){$md=array_flip($s["columns"]);$Be=($N?$md:array());break;}}foreach((array)$Be |
|
537 | -as$x=>$V){if(in_array(idf_escape($x),$N))unset($Be[$x]);}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$Be===array())$I="SELECT $Sb$Me$Ub";else{$ye=array();foreach($_POST["check"]as$V)$ye[]="(SELECT".limit($Sb,"\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m).$Ub,1).")";$I=implode(" UNION ALL ",$ye);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Y,$Ob)){if($_POST["save"]||$_POST["delete"]){$J=true;$ja=0;$P=array();if(!$_POST["delete"]){foreach($e |
|
538 | -as$D=>$V){$V=process_input($m[$D]);if($V!==null&&($_POST["clone"]||$V!==false))$P[idf_escape($D)]=($V!==false?$V:idf_escape($D));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($Be===array()&&is_array($_POST["check"]))||$u){$J=($_POST["delete"]?$i->delete($a,$Me):($_POST["clone"]?queries("INSERT $I$Me"):$i->update($a,$P,$Me)));$ja=$f->affected_rows;}else{foreach((array)$_POST["check"]as$V){$Le="\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m);$J=($_POST["delete"]?$i->delete($a,$Le,1):($_POST["clone"]?queries("INSERT".limit1($I,$Le)):$i->update($a,$P,$Le)));if(!$J)break;$ja+=$f->affected_rows;}}}$B=lang(array('%d item has been affected.','%d items have been affected.'),$ja);if($_POST["clone"]&&$J&&$ja==1){$vc=last_id();if($vc)$B=sprintf('Item%s has been inserted.'," $vc");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$B,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$k='Ctrl+click on a value to modify it.';else{$J=true;$ja=0;foreach($_POST["val"]as$_e=>$L){$P=array();foreach($L |
|
539 | -as$x=>$V){$x=bracket_escape($x,1);$P[idf_escape($x)]=(preg_match('~char|text~',$m[$x]["type"])||$V!=""?$b->processInput($m[$x],$V):"NULL");}$J=$i->update($a,$P," WHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($_e,$m),!($u||$Be===array())," ");if(!$J)break;$ja+=$f->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$ja),$J);}}elseif(!is_string($Eb=get_file("csv_file",true)))$k=upload_error($Eb);elseif(!preg_match('~~u',$Eb))$k='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($ia["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Oa=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$Eb,$Bc);$ja=count($Bc[0]);$i->begin();$Kd=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($Bc[0]as$x=>$V){preg_match_all("~((?>\"[^\"]*\")+|[^$Kd]*)$Kd~",$V.$Kd,$Cc);if(!$x&&!array_diff($Cc[1],$Oa)){$Oa=$Cc[1];$ja--;}else{$P=array();foreach($Cc[1]as$q=>$La)$P[idf_escape($Oa[$q])]=($La==""&&$m[$Oa[$q]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$La))));$M[]=$P;}}$J=(!$M||$i->insertUpdate($a,$M,$md));if($J)$i->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$ja),$J);$i->rollback();}}}$de=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else |
|
540 | -page_header('Select'.": $de",$k);$P=null;if(isset($Dd["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$V){if(count($Ob[$V["col"]])==1&&($V["op"]=="="||(!$V["op"]&&!preg_match('~[_%]~',$V["val"]))))$P.="&set".urlencode("[".bracket_escape($V["col"])."]")."=".urlencode($V["val"]);}}$b->selectLinks($S,$P);if(!$e&&support("table"))echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$e);$b->selectSearchPrint($Y,$e,$t);$b->selectOrderPrint($E,$e,$t);$b->selectLimitPrint($y);$b->selectLengthPrint($he);$b->selectActionPrint($t);echo"</form>\n";$F=$_GET["page"];if($F=="last"){$n=$f->result(count_rows($a,$Y,$u,$p));$F=floor(max(0,$n-1)/$y);}$Hd=$N;if(!$Hd){$Hd[]="*";if($Qc)$Hd[]=$Qc;}$Ua=convert_fields($e,$m,$N);if($Ua)$Hd[]=substr($Ua,2);$J=$i->select($a,$Hd,$Y,$p,$E,$y,$F,true);if(!$J)echo"<p class='error'>".error()."\n";else{if($v=="mssql"&&$F)$J->seek($y*$F);$rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($F&&$v=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql")$n=$f->result(" SELECT FOUND_ROWS()");if(!$M)echo"<p class='message'>".'No rows.'."\n";else{$xa=$b->backwardKeys($a,$de);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$p&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Lc=array();$Tb=array();reset($N);$wd=1;foreach($M[0]as$x=>$V){if($x!=$Qc){$V=$_GET["columns"][key($N)];$l=$m[$N?($V?$V["col"]:current($N)):$x];$D=($l?$b->fieldName($l,$wd):($V["fun"]?"*":$x));if($D!=""){$wd++;$Lc[$x]=$D;$d=idf_escape($x);$ec=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$db="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($ec.($E[0]==$d||$E[0]==$x||(!$E&&$u&&$p[0]==$d)?$db:'')).'">';echo |
|
541 | -apply_sql_function($V["fun"],$D)."</a>";echo"<span class='column hidden'>","<a href='".h($ec.$db)."' title='".'descending'."' class='text'> ↓</a>";if(!$V["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($x)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>';echo"</span>";}$Tb[$x]=$V["fun"];next($N);}}$yc=array();if($_GET["modify"]){foreach($M |
|
542 | -as$L){foreach($L |
|
543 | -as$x=>$V)$yc[$x]=max($yc[$x],min(40,strlen(utf8_decode($V))));}}echo($xa?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($y%2==1&&$F%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($M,$Ob)as$C=>$L){$ze=unique_array($M[$C],$t);if(!$ze){$ze=array();foreach($M[$C]as$x=>$V){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$x))$ze[$x]=$V;}}$_e="";foreach($ze |
|
544 | -as$x=>$V){if(($v=="sql"||$v=="pgsql")&&strlen($V)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".($v=='sql'&&preg_match("~^utf8_~",$m[$x]["collation"])?$x:"CONVERT($x USING ".charset($f).")").")";$V=md5($V);}$_e.="&".($V!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($V):"null%5B%5D=".urlencode($x));}echo"<tr".odd().">".(!$p&&$N?"":"<td>".checkbox("check[]",substr($_e,1),in_array(substr($_e,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($u||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$_e)."'>".'edit'."</a>"));foreach($L |
|
545 | -as$x=>$V){if(isset($Lc[$x])){$l=$m[$x];if($V!=""&&(!isset($rb[$x])||$rb[$x]!=""))$rb[$x]=(is_mail($V)?$Lc[$x]:"");$z="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$V!="")$z=ME.'download='.urlencode($a).'&field='.urlencode($x).$_e;if(!$z&&$V!==null){foreach((array)$Ob[$x]as$Nb){if(count($Ob[$x])==1||end($Nb["source"])==$x){$z="";foreach($Nb["source"]as$q=>$Rd)$z.=where_link($q,$Nb["target"][$q],$M[$C][$Rd]);$z=($Nb["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($Nb["db"]),ME):ME).'select='.urlencode($Nb["table"]).$z;if(count($Nb["source"])==1)break;}}}if($x=="COUNT(*)"){$z=ME."select=".urlencode($a);$q=0;foreach((array)$_GET["where"]as$U){if(!array_key_exists($U["col"],$ze))$z.=where_link($q++,$U["col"],$U["val"],$U["op"]);}foreach($ze |
|
546 | -as$w=>$U)$z.=where_link($q++,$w,$U);}$V=select_value($V,$z,$l,$he);$r=h("val[$_e][".bracket_escape($x)."]");$W=$_POST["val"][$_e][bracket_escape($x)];$nb=!is_array($L[$x])&&is_utf8($V)&&$M[$C][$x]==$L[$x]&&!$Tb[$x];$ge=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$nb)||$W!==null){$Wb=h($W!==null?$W:$L[$x]);echo"<td>".($ge?"<textarea name='$r' cols='30' rows='".(substr_count($L[$x],"\n")+1)."'>$Wb</textarea>":"<input name='$r' value='$Wb' size='$yc[$x]'>");}else{$Ac=strpos($V,"<i>...</i>");echo"<td id='$r' onclick=\"selectClick(this, event, ".($Ac?2:($ge?1:0)).($nb?"":", '".h('Use edit link to modify this value.')."'").");\">$V";}}}if($xa)echo"<td>";$b->backwardKeysPrint($xa,$M[$C]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n";}if(($M||$F)&&!is_ajax()){$yb=true;if($_GET["page"]!="last"){if(!+$y)$n=count($M);elseif($v!="sql"||!$u){$n=($u?false:found_rows($S,$Y));if($n<max(1e4,2*($F+1)*$y))$n=reset(slow_query(count_rows($a,$Y,$u,$p)));else$yb=false;}}if(+$y&&($n===false||$n>$y||$F)){echo"<p class='pages'>";$Dc=($n===false?$F+(count($M)>=$y?2:1):floor(($n-1)/$y));if($v!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($F+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$F).($F>5?" ...":"");for($q=max(1,$F-4);$q<min($Dc,$F+5);$q++)echo |
|
547 | -pagination($q,$F);if($Dc>0){echo($F+5<$Dc?" ...":""),($yb&&$n!==false?pagination($Dc,$F):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Dc'>".'last'."</a>");}echo(($n===false?count($M)+1:$n-$F*$y)>$y?' <a href="'.h(remove_from_uri("page")."&page=".($F+1)).'" onclick="return !selectLoadMore(this, '.(+$y).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');}else{echo'Page'.":",pagination(0,$F).($F>1?" ...":""),($F?pagination($F,$F):""),($Dc>$F?pagination($F+1,$F).($Dc>$F+1?" ...":""):"");}}echo"<p class='count'>\n",($n!==false?"(".($yb?"":"~ ").lang(array('%d row','%d rows'),$n).") ":"");$hb=($yb?"":"~ ").$n;echo |
|
548 | -checkbox("all",1,0,'whole result',"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$hb' : checked); selectCount('selected2', this.checked || !checked ? '$hb' : checked);")."\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div> |
|
549 | -<input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'> |
|
506 | +int32($C) {while ($C >= 2147483648)$C -= 4294967296; while ($C <= -2147483649)$C += 4294967296; return(int) $C; }function |
|
507 | +long2str($U, $Ke) {$Ed = ''; foreach ($U |
|
508 | +as$V)$Ed .= pack('V', $V); if ($Ke)return |
|
509 | +substr($Ed, 0, end($U)); return$Ed; }function |
|
510 | +str2long($Ed, $Ke) {$U = array_values(unpack('V*', str_pad($Ed, 4 * ceil(strlen($Ed) / 4), "\0"))); if ($Ke)$U[] = strlen($Ed); return$U; }function |
|
511 | +xxtea_mx($Z, $Oe, $ae, $w) {return |
|
512 | +int32((($Z >> 5 & 0x7FFFFFF) ^ $Oe << 2) + (($Oe >> 3 & 0x1FFFFFFF) ^ $Z << 4)) ^ int32(($ae ^ $Oe) + ($w ^ $Z)); }function |
|
513 | +encrypt_string($Vd, $x) {if ($Vd == "")return""; $x = array_values(unpack("V*", pack("H*", md5($x)))); $U = str2long($Vd, true); $C = count($U) - 1; $Z = $U[$C]; $Oe = $U[0]; $rd = floor(6 + 52 / ($C + 1)); $ae = 0; while ($rd-- > 0) {$ae = int32($ae + 0x9E3779B9); $lb = $ae >> 2 & 3; for ($cd = 0; $cd < $C; $cd++) {$Oe = $U[$cd + 1]; $Kc = xxtea_mx($Z, $Oe, $ae, $x[$cd & 3 ^ $lb]); $Z = int32($U[$cd] + $Kc); $U[$cd] = $Z; }$Oe = $U[0]; $Kc = xxtea_mx($Z, $Oe, $ae, $x[$cd & 3 ^ $lb]); $Z = int32($U[$C] + $Kc); $U[$C] = $Z; }return |
|
514 | +long2str($U, false); }function |
|
515 | +decrypt_string($Vd, $x) {if ($Vd == "")return""; if (!$x)return |
|
516 | +false; $x = array_values(unpack("V*", pack("H*", md5($x)))); $U = str2long($Vd, false); $C = count($U) - 1; $Z = $U[$C]; $Oe = $U[0]; $rd = floor(6 + 52 / ($C + 1)); $ae = int32($rd * 0x9E3779B9); while ($ae) {$lb = $ae >> 2 & 3; for ($cd = $C; $cd > 0; $cd--) {$Z = $U[$cd - 1]; $Kc = xxtea_mx($Z, $Oe, $ae, $x[$cd & 3 ^ $lb]); $Oe = int32($U[$cd] - $Kc); $U[$cd] = $Oe; }$Z = $U[$C]; $Kc = xxtea_mx($Z, $Oe, $ae, $x[$cd & 3 ^ $lb]); $Oe = int32($U[0] - $Kc); $U[0] = $Oe; $ae = int32($ae - 0x9E3779B9); }return |
|
517 | +long2str($U, true); }$f = ''; $Zb = $_SESSION["token"]; if (!$Zb)$_SESSION["token"] = rand(1, 1e6); $qe = get_token(); $gd = array(); if ($_COOKIE["adminer_permanent"]) {foreach (explode(" ", $_COOKIE["adminer_permanent"])as$V) {list($x) = explode(":", $V); $gd[$x] = $V; }}function |
|
518 | +add_invalid_login() {global$b; $Fb = get_temp_dir() . "/adminer.invalid"; $Rb = @fopen($Fb, "r+"); if (!$Rb) {$Rb = @fopen($Fb, "w"); if (!$Rb)return; }flock($Rb, LOCK_EX); $oc = unserialize(stream_get_contents($Rb)); $je = time(); if ($oc) {foreach ($oc |
|
519 | +as$pc=>$V) {if ($V[0] < $je)unset($oc[$pc]); }}$nc = &$oc[$b->bruteForceKey()]; if (!$nc)$nc = array($je + 30 * 60, 0); $nc[1]++; $Ld = serialize($oc); rewind($Rb); fwrite($Rb, $Ld); ftruncate($Rb, strlen($Ld)); flock($Rb, LOCK_UN); fclose($Rb); }$ra = $_POST["auth"]; if ($ra) {$oc = unserialize(@file_get_contents(get_temp_dir() . "/adminer.invalid")); $nc = $oc[$b->bruteForceKey()]; $Mc = ($nc[1] > 30 ? $nc[0] - time() : 0); if ($Mc > 0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.', 'Too many unsuccessful logins, try again in %d minutes.'), ceil($Mc / 60))); session_regenerate_id(); $X = $ra["driver"]; $O = $ra["server"]; $T = $ra["username"]; $G = (string) $ra["password"]; $h = $ra["db"]; set_password($X, $O, $T, $G); $_SESSION["db"][$X][$O][$T][$h] = true; if ($ra["permanent"]) {$x = base64_encode($X) . "-" . base64_encode($O) . "-" . base64_encode($T) . "-" . base64_encode($h); $od = $b->permanentLogin(true); $gd[$x] = "$x:" . base64_encode($od ? encrypt_string($G, $od) : ""); cookie("adminer_permanent", implode(" ", $gd)); }if (count($_POST) == 1 || DRIVER != $X || SERVER != $O || $_GET["username"] !== $T || DB != $h)redirect(auth_url($X, $O, $T, $h)); }elseif ($_POST["logout"]) {if ($Zb && !verify_token()) {page_header('Logout', 'Invalid CSRF token. Send the form again.'); page_footer("db"); exit; } else {foreach (array("pwds", "db", "dbs", "queries")as$x)set_session($x, null); unset_permanent(); redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1), 'Logout successful.'); }}elseif ($gd && !$_SESSION["pwds"]) {session_regenerate_id(); $od = $b->permanentLogin(); foreach ($gd |
|
520 | +as$x=>$V) {list(,$Ha) = explode(":", $V); list($X, $O, $T, $h) = array_map('base64_decode', explode("-", $x)); set_password($X, $O, $T, decrypt_string(base64_decode($Ha), $od)); $_SESSION["db"][$X][$O][$T][$h] = true; }}function |
|
521 | +unset_permanent() {global$gd; foreach ($gd |
|
522 | +as$x=>$V) {list($X, $O, $T, $h) = array_map('base64_decode', explode("-", $x)); if ($X == DRIVER && $O == SERVER && $T == $_GET["username"] && $h == DB)unset($gd[$x]); }cookie("adminer_permanent", implode(" ", $gd)); }function |
|
523 | +auth_error($k) {global$b, $Zb; $k = h($k); $Od = session_name(); if (isset($_GET["username"])) {header("HTTP/1.1 403 Forbidden"); if (($_COOKIE[$Od] || $_GET[$Od]) && !$Zb)$k = 'Session expired, please login again.'; else {add_invalid_login(); $G = get_password(); if ($G !== null) {if ($G === false)$k .= '<br>' . sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.', '<code>permanentLogin()</code>'); set_password(DRIVER, SERVER, $_GET["username"], null); }unset_permanent(); }}if (!$_COOKIE[$Od] && $_GET[$Od] && ini_bool("session.use_only_cookies"))$k = 'Session support must be enabled.'; $ed = session_get_cookie_params(); cookie("adminer_key", ($_COOKIE["adminer_key"] ? $_COOKIE["adminer_key"] : rand_string()), $ed["lifetime"]); page_header('Login', $k, null); echo"<form action='' method='post'>\n"; $b->loginForm(); echo"<div>"; hidden_fields($_POST, array("auth")); echo"</div>\n", "</form>\n"; page_footer("auth"); exit; }if (isset($_GET["username"])) {if (!class_exists("Min_DB")) {unset($_SESSION["pwds"][DRIVER]); unset_permanent(); page_header('No extension', sprintf('None of the supported PHP extensions (%s) are available.', implode(", ", $kd)), false); page_footer("auth"); exit; }$f = connect(); }$i = new |
|
524 | +Min_Driver($f); if (!is_object($f) || ($_c = $b->login($_GET["username"], get_password())) !== true)auth_error((is_string($f) ? $f : (is_string($_c) ? $_c : 'Invalid credentials.'))); if ($ra && $_POST["token"])$_POST["token"] = $qe; $k = ''; if ($_POST) {if (!verify_token()) {$kc = "max_input_vars"; $Fc = ini_get($kc); if (extension_loaded("suhosin")) {foreach (array("suhosin.request.max_vars", "suhosin.post.max_vars")as$x) {$V = ini_get($x); if ($V && (!$Fc || $V < $Fc)) {$kc = $x; $Fc = $V; }}}$k = (!$_POST["token"] && $Fc ? sprintf('Maximum number of allowed fields exceeded. Please increase %s.', "'$kc'") : 'Invalid CSRF token. Send the form again.' . ' ' . 'If you did not send this request from Adminer then close this page.'); }}elseif ($_SERVER["REQUEST_METHOD"] == "POST") {$k = sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.', "'post_max_size'"); if (isset($_GET["sql"]))$k .= ' ' . 'You can upload a big SQL file via FTP and import it from server.'; }if (!ini_bool("session.use_cookies") || @ini_set("session.use_cookies", false) !== false)session_write_close(); function |
|
525 | +email_header($ac) {return"=?UTF-8?B?" . base64_encode($ac) . "?="; }function |
|
526 | +send_mail($pb, $Yd, $B, $Sb = "", $Gb = array()) {$j = (DIRECTORY_SEPARATOR == "/" ? "\n" : "\r\n"); $B = str_replace("\n", $j, wordwrap(str_replace("\r", "", "$B\n"))); $Ba = uniqid("boundary"); $qa = ""; foreach ((array) $Gb["error"]as$x=>$V) {if (!$V)$qa .= "--$Ba$j" . "Content-Type: " . str_replace("\n", "", $Gb["type"][$x]) . $j . "Content-Disposition: attachment; filename=\"" . preg_replace('~["\\n]~', '', $Gb["name"][$x]) . "\"$j" . "Content-Transfer-Encoding: base64$j$j" . chunk_split(base64_encode(file_get_contents($Gb["tmp_name"][$x])), 76, $j) . $j; }$ya = ""; $bc = "Content-Type: text/plain; charset=utf-8$j" . "Content-Transfer-Encoding: 8bit"; if ($qa) {$qa .= "--$Ba--$j"; $ya = "--$Ba$j$bc$j$j"; $bc = "Content-Type: multipart/mixed; boundary=\"$Ba\""; }$bc .= $j . "MIME-Version: 1.0$j" . "X-Mailer: Adminer Editor" . ($Sb ? $j . "From: " . str_replace("\n", "", $Sb) : ""); return |
|
527 | +mail($pb, email_header($Yd), $ya . $B . $qa, $bc); }function |
|
528 | +like_bool($l) {return |
|
529 | +preg_match("~bool|(tinyint|bit)\\(1\\)~", $l["full_type"]); }$f->select_db($b->database()); $Rc = "RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT"; $jb[DRIVER] = 'Login'; if (isset($_GET["select"]) && ($_POST["edit"] || $_POST["clone"]) && !$_POST["save"])$_GET["edit"] = $_GET["select"]; if (isset($_GET["download"])) {$a = $_GET["download"]; $m = fields($a); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . friendly_url("$a-" . implode("_", $_GET["where"])) . "." . friendly_url($_GET["field"])); $N = array(idf_escape($_GET["field"])); $J = $i->select($a, $N, array(where($_GET, $m)), $N); $L = ($J ? $J->fetch_row() : array()); echo$L[0]; exit; }elseif (isset($_GET["edit"])) {$a = $_GET["edit"]; $m = fields($a); $Y = (isset($_GET["select"]) ? (count($_POST["check"]) == 1 ? where_check($_POST["check"][0], $m) : "") : where($_GET, $m)); $De = (isset($_GET["select"]) ? $_POST["edit"] : $Y); foreach ($m |
|
530 | +as$D=>$l) {if (!isset($l["privileges"][$De ? "update" : "insert"]) || $b->fieldName($l) == "")unset($m[$D]); }if ($_POST && !$k && !isset($_GET["select"])) {$_ = $_POST["referer"]; if ($_POST["insert"])$_ = ($De ? null : $_SERVER["REQUEST_URI"]); elseif (!preg_match('~^.+&select=.+$~', $_))$_ = ME . "select=" . urlencode($a); $t = indexes($a); $ze = unique_array($_GET["where"], $t); $ud = "\nWHERE $Y"; if (isset($_POST["delete"]))queries_redirect($_, 'Item has been deleted.', $i->delete($a, $ud, !$ze)); else {$P = array(); foreach ($m |
|
531 | +as$D=>$l) {$V = process_input($l); if ($V !== false && $V !== null)$P[idf_escape($D)] = $V; }if ($De) {if (!$P)redirect($_); queries_redirect($_, 'Item has been updated.', $i->update($a, $P, $ud, !$ze)); if (is_ajax()) {page_headers(); page_messages($k); exit; }} else {$J = $i->insert($a, $P); $vc = ($J ? last_id() : 0); queries_redirect($_, sprintf('Item%s has been inserted.', ($vc ? " $vc" : "")), $J); }}}$L = null; if ($_POST["save"])$L = (array) $_POST["fields"]; elseif ($Y) {$N = array(); foreach ($m |
|
532 | +as$D=>$l) {if (isset($l["privileges"]["select"])) {$oa = convert_field($l); if ($_POST["clone"] && $l["auto_increment"])$oa = "''"; if ($v == "sql" && preg_match("~enum|set~", $l["type"]))$oa = "1*" . idf_escape($D); $N[] = ($oa ? "$oa AS " : "") . idf_escape($D); }}$L = array(); if (!support("table"))$N = array("*"); if ($N) {$J = $i->select($a, $N, array($Y), $N, array(), (isset($_GET["select"]) ? 2 : 1)); $L = $J->fetch_assoc(); if (!$L)$L = false; if (isset($_GET["select"]) && (!$L || $J->fetch_assoc()))$L = null; }}if (!support("table") && !$m) {if (!$Y) {$J = $i->select($a, array("*"), $Y, array("*")); $L = ($J ? $J->fetch_assoc() : false); if (!$L)$L = array($i->primary=>""); }if ($L) {foreach ($L |
|
533 | +as$x=>$V) {if (!$Y)$L[$x] = null; $m[$x] = array("field"=>$x, "null"=>($x != $i->primary), "auto_increment"=>($x == $i->primary)); }}}edit_form($a, $m, $L, $De); }elseif (isset($_GET["select"])) {$a = $_GET["select"]; $S = table_status1($a); $t = indexes($a); $m = fields($a); $Ob = column_foreign_keys($a); $Qc = ""; if ($S["Oid"]) {$Qc = ($v == "sqlite" ? "rowid" : "oid"); $t[] = array("type"=>"PRIMARY", "columns"=>array($Qc)); }parse_str($_COOKIE["adminer_import"], $ia); $Dd = array(); $e = array(); $he = null; foreach ($m |
|
534 | +as$x=>$l) {$D = $b->fieldName($l); if (isset($l["privileges"]["select"]) && $D != "") {$e[$x] = html_entity_decode(strip_tags($D), ENT_QUOTES); if (is_shortable($l))$he = $b->selectLengthProcess(); }$Dd += $l["privileges"]; }list($N, $p) = $b->selectColumnsProcess($e, $t); $u = count($p) < count($N); $Y = $b->selectSearchProcess($m, $t); $E = $b->selectOrderProcess($m, $t); $y = $b->selectLimitProcess(); $Sb = ($N ? implode(", ", $N) : "*" . ($Qc ? ", $Qc" : "")) . convert_fields($e, $m, $N) . "\nFROM " . table($a); $Ub = ($p && $u ? "\nGROUP BY " . implode(", ", $p) : "") . ($E ? "\nORDER BY " . implode(", ", $E) : ""); if ($_GET["val"] && is_ajax()) {header("Content-Type: text/plain; charset=utf-8"); foreach ($_GET["val"]as$_e=>$L) {$oa = convert_field($m[key($L)]); $N = array($oa ? $oa : idf_escape(key($L))); $Y[] = where_check($_e, $m); $K = $i->select($a, $N, $Y, $N); if ($K)echo |
|
535 | +reset($K->fetch_row()); }exit; }if ($_POST && !$k) {$Me = $Y; if (!$_POST["all"] && is_array($_POST["check"])) {$Ga = array(); foreach ($_POST["check"]as$Ea)$Ga[] = where_check($Ea, $m); $Me[] = "((" . implode(") OR (", $Ga) . "))"; }$Me = ($Me ? "\nWHERE " . implode(" AND ", $Me) : ""); $md = $Be = null; foreach ($t |
|
536 | +as$s) {if ($s["type"] == "PRIMARY") {$md = array_flip($s["columns"]); $Be = ($N ? $md : array()); break; }}foreach ((array) $Be |
|
537 | +as$x=>$V) {if (in_array(idf_escape($x), $N))unset($Be[$x]); }if ($_POST["export"]) {cookie("adminer_import", "output=" . urlencode($_POST["output"]) . "&format=" . urlencode($_POST["format"])); dump_headers($a); $b->dumpTable($a, ""); if (!is_array($_POST["check"]) || $Be === array())$I = "SELECT $Sb$Me$Ub"; else {$ye = array(); foreach ($_POST["check"]as$V)$ye[] = "(SELECT" . limit($Sb, "\nWHERE " . ($Y ? implode(" AND ", $Y) . " AND " : "") . where_check($V, $m) . $Ub, 1) . ")"; $I = implode(" UNION ALL ", $ye); }$b->dumpData($a, "table", $I); exit; }if (!$b->selectEmailProcess($Y, $Ob)) {if ($_POST["save"] || $_POST["delete"]) {$J = true; $ja = 0; $P = array(); if (!$_POST["delete"]) {foreach ($e |
|
538 | +as$D=>$V) {$V = process_input($m[$D]); if ($V !== null && ($_POST["clone"] || $V !== false))$P[idf_escape($D)] = ($V !== false ? $V : idf_escape($D)); }}if ($_POST["delete"] || $P) {if ($_POST["clone"])$I = "INTO " . table($a) . " (" . implode(", ", array_keys($P)) . ")\nSELECT " . implode(", ", $P) . "\nFROM " . table($a); if ($_POST["all"] || ($Be === array() && is_array($_POST["check"])) || $u) {$J = ($_POST["delete"] ? $i->delete($a, $Me) : ($_POST["clone"] ? queries("INSERT $I$Me") : $i->update($a, $P, $Me))); $ja = $f->affected_rows; } else {foreach ((array) $_POST["check"]as$V) {$Le = "\nWHERE " . ($Y ? implode(" AND ", $Y) . " AND " : "") . where_check($V, $m); $J = ($_POST["delete"] ? $i->delete($a, $Le, 1) : ($_POST["clone"] ? queries("INSERT" . limit1($I, $Le)) : $i->update($a, $P, $Le))); if (!$J)break; $ja += $f->affected_rows; }}}$B = lang(array('%d item has been affected.', '%d items have been affected.'), $ja); if ($_POST["clone"] && $J && $ja == 1) {$vc = last_id(); if ($vc)$B = sprintf('Item%s has been inserted.', " $vc"); }queries_redirect(remove_from_uri($_POST["all"] && $_POST["delete"] ? "page" : ""), $B, $J); if (!$_POST["delete"]) {edit_form($a, $m, (array) $_POST["fields"], !$_POST["clone"]); page_footer(); exit; }}elseif (!$_POST["import"]) {if (!$_POST["val"])$k = 'Ctrl+click on a value to modify it.'; else {$J = true; $ja = 0; foreach ($_POST["val"]as$_e=>$L) {$P = array(); foreach ($L |
|
539 | +as$x=>$V) {$x = bracket_escape($x, 1); $P[idf_escape($x)] = (preg_match('~char|text~', $m[$x]["type"]) || $V != "" ? $b->processInput($m[$x], $V) : "NULL"); }$J = $i->update($a, $P, " WHERE " . ($Y ? implode(" AND ", $Y) . " AND " : "") . where_check($_e, $m), !($u || $Be === array()), " "); if (!$J)break; $ja += $f->affected_rows; }queries_redirect(remove_from_uri(), lang(array('%d item has been affected.', '%d items have been affected.'), $ja), $J); }}elseif (!is_string($Eb = get_file("csv_file", true)))$k = upload_error($Eb); elseif (!preg_match('~~u', $Eb))$k = 'File must be in UTF-8 encoding.'; else {cookie("adminer_import", "output=" . urlencode($ia["output"]) . "&format=" . urlencode($_POST["separator"])); $J = true; $Oa = array_keys($m); preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~', $Eb, $Bc); $ja = count($Bc[0]); $i->begin(); $Kd = ($_POST["separator"] == "csv" ? "," : ($_POST["separator"] == "tsv" ? "\t" : ";")); $M = array(); foreach ($Bc[0]as$x=>$V) {preg_match_all("~((?>\"[^\"]*\")+|[^$Kd]*)$Kd~", $V . $Kd, $Cc); if (!$x && !array_diff($Cc[1], $Oa)) {$Oa = $Cc[1]; $ja--; } else {$P = array(); foreach ($Cc[1]as$q=>$La)$P[idf_escape($Oa[$q])] = ($La == "" && $m[$Oa[$q]]["null"] ? "NULL" : q(str_replace('""', '"', preg_replace('~^"|"$~', '', $La)))); $M[] = $P; }}$J = (!$M || $i->insertUpdate($a, $M, $md)); if ($J)$i->commit(); queries_redirect(remove_from_uri("page"), lang(array('%d row has been imported.', '%d rows have been imported.'), $ja), $J); $i->rollback(); }}}$de = $b->tableName($S); if (is_ajax()) {page_headers(); ob_start(); } else |
|
540 | +page_header('Select' . ": $de", $k); $P = null; if (isset($Dd["insert"]) || !support("table")) {$P = ""; foreach ((array) $_GET["where"]as$V) {if (count($Ob[$V["col"]]) == 1 && ($V["op"] == "=" || (!$V["op"] && !preg_match('~[_%]~', $V["val"]))))$P .= "&set" . urlencode("[" . bracket_escape($V["col"]) . "]") . "=" . urlencode($V["val"]); }}$b->selectLinks($S, $P); if (!$e && support("table"))echo"<p class='error'>" . 'Unable to select the table' . ($m ? "." : ": " . error()) . "\n"; else {echo"<form action='' id='form'>\n", "<div style='display: none;'>"; hidden_fields_get(); echo(DB != "" ? '<input type="hidden" name="db" value="' . h(DB) . '">' . (isset($_GET["ns"]) ? '<input type="hidden" name="ns" value="' . h($_GET["ns"]) . '">' : "") : ""); echo'<input type="hidden" name="select" value="' . h($a) . '">', "</div>\n"; $b->selectColumnsPrint($N, $e); $b->selectSearchPrint($Y, $e, $t); $b->selectOrderPrint($E, $e, $t); $b->selectLimitPrint($y); $b->selectLengthPrint($he); $b->selectActionPrint($t); echo"</form>\n"; $F = $_GET["page"]; if ($F == "last") {$n = $f->result(count_rows($a, $Y, $u, $p)); $F = floor(max(0, $n - 1) / $y); }$Hd = $N; if (!$Hd) {$Hd[] = "*"; if ($Qc)$Hd[] = $Qc; }$Ua = convert_fields($e, $m, $N); if ($Ua)$Hd[] = substr($Ua, 2); $J = $i->select($a, $Hd, $Y, $p, $E, $y, $F, true); if (!$J)echo"<p class='error'>" . error() . "\n"; else {if ($v == "mssql" && $F)$J->seek($y * $F); $rb = array(); echo"<form action='' method='post' enctype='multipart/form-data'>\n"; $M = array(); while ($L = $J->fetch_assoc()) {if ($F && $v == "oracle")unset($L["RNUM"]); $M[] = $L; }if ($_GET["page"] != "last" && +$y && $p && $u && $v == "sql")$n = $f->result(" SELECT FOUND_ROWS()"); if (!$M)echo"<p class='message'>" . 'No rows.' . "\n"; else {$xa = $b->backwardKeys($a, $de); echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n", "<thead><tr>" . (!$p && $N ? "" : "<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='" . h($_GET["modify"] ? remove_from_uri("modify") : $_SERVER["REQUEST_URI"] . "&modify=1") . "'>" . 'Modify' . "</a>"); $Lc = array(); $Tb = array(); reset($N); $wd = 1; foreach ($M[0]as$x=>$V) {if ($x != $Qc) {$V = $_GET["columns"][key($N)]; $l = $m[$N ? ($V ? $V["col"] : current($N)) : $x]; $D = ($l ? $b->fieldName($l, $wd) : ($V["fun"] ? "*" : $x)); if ($D != "") {$wd++; $Lc[$x] = $D; $d = idf_escape($x); $ec = remove_from_uri('(order|desc)[^=]*|page') . '&order%5B0%5D=' . urlencode($x); $db = "&desc%5B0%5D=1"; echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">', '<a href="' . h($ec . ($E[0] == $d || $E[0] == $x || (!$E && $u && $p[0] == $d) ? $db : '')) . '">'; echo |
|
541 | +apply_sql_function($V["fun"], $D) . "</a>"; echo"<span class='column hidden'>", "<a href='" . h($ec . $db) . "' title='" . 'descending' . "' class='text'> ↓</a>"; if (!$V["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\'' . h(js_escape($x)) . '\'); return false;" title="' . 'Search' . '" class="text jsonly"> =</a>'; echo"</span>"; }$Tb[$x] = $V["fun"]; next($N); }}$yc = array(); if ($_GET["modify"]) {foreach ($M |
|
542 | +as$L) {foreach ($L |
|
543 | +as$x=>$V)$yc[$x] = max($yc[$x], min(40, strlen(utf8_decode($V)))); }}echo($xa ? "<th>" . 'Relations' : "") . "</thead>\n"; if (is_ajax()) {if ($y % 2 == 1 && $F % 2 == 1)odd(); ob_end_clean(); }foreach ($b->rowDescriptions($M, $Ob)as$C=>$L) {$ze = unique_array($M[$C], $t); if (!$ze) {$ze = array(); foreach ($M[$C]as$x=>$V) {if (!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~', $x))$ze[$x] = $V; }}$_e = ""; foreach ($ze |
|
544 | +as$x=>$V) {if (($v == "sql" || $v == "pgsql") && strlen($V) > 64) {$x = (strpos($x, '(') ? $x : idf_escape($x)); $x = "MD5(" . ($v == 'sql' && preg_match("~^utf8_~", $m[$x]["collation"]) ? $x : "CONVERT($x USING " . charset($f) . ")") . ")"; $V = md5($V); }$_e .= "&" . ($V !== null ? urlencode("where[" . bracket_escape($x) . "]") . "=" . urlencode($V) : "null%5B%5D=" . urlencode($x)); }echo"<tr" . odd() . ">" . (!$p && $N ? "" : "<td>" . checkbox("check[]", substr($_e, 1), in_array(substr($_e, 1), (array) $_POST["check"]), "", "this.form['all'].checked = false; formUncheck('all-page');") . ($u || information_schema(DB) ? "" : " <a href='" . h(ME . "edit=" . urlencode($a) . $_e) . "'>" . 'edit' . "</a>")); foreach ($L |
|
545 | +as$x=>$V) {if (isset($Lc[$x])) {$l = $m[$x]; if ($V != "" && (!isset($rb[$x]) || $rb[$x] != ""))$rb[$x] = (is_mail($V) ? $Lc[$x] : ""); $z = ""; if (preg_match('~blob|bytea|raw|file~', $l["type"]) && $V != "")$z = ME . 'download=' . urlencode($a) . '&field=' . urlencode($x) . $_e; if (!$z && $V !== null) {foreach ((array) $Ob[$x]as$Nb) {if (count($Ob[$x]) == 1 || end($Nb["source"]) == $x) {$z = ""; foreach ($Nb["source"]as$q=>$Rd)$z .= where_link($q, $Nb["target"][$q], $M[$C][$Rd]); $z = ($Nb["db"] != "" ? preg_replace('~([?&]db=)[^&]+~', '\\1' . urlencode($Nb["db"]), ME) : ME) . 'select=' . urlencode($Nb["table"]) . $z; if (count($Nb["source"]) == 1)break; }}}if ($x == "COUNT(*)") {$z = ME . "select=" . urlencode($a); $q = 0; foreach ((array) $_GET["where"]as$U) {if (!array_key_exists($U["col"], $ze))$z .= where_link($q++, $U["col"], $U["val"], $U["op"]); }foreach ($ze |
|
546 | +as$w=>$U)$z .= where_link($q++, $w, $U); }$V = select_value($V, $z, $l, $he); $r = h("val[$_e][" . bracket_escape($x) . "]"); $W = $_POST["val"][$_e][bracket_escape($x)]; $nb = !is_array($L[$x]) && is_utf8($V) && $M[$C][$x] == $L[$x] && !$Tb[$x]; $ge = preg_match('~text|lob~', $l["type"]); if (($_GET["modify"] && $nb) || $W !== null) {$Wb = h($W !== null ? $W : $L[$x]); echo"<td>" . ($ge ? "<textarea name='$r' cols='30' rows='" . (substr_count($L[$x], "\n") + 1) . "'>$Wb</textarea>" : "<input name='$r' value='$Wb' size='$yc[$x]'>"); } else {$Ac = strpos($V, "<i>...</i>"); echo"<td id='$r' onclick=\"selectClick(this, event, " . ($Ac ? 2 : ($ge ? 1 : 0)) . ($nb ? "" : ", '" . h('Use edit link to modify this value.') . "'") . ");\">$V"; }}}if ($xa)echo"<td>"; $b->backwardKeysPrint($xa, $M[$C]); echo"</tr>\n"; }if (is_ajax())exit; echo"</table>\n"; }if (($M || $F) && !is_ajax()) {$yb = true; if ($_GET["page"] != "last") {if (!+$y)$n = count($M); elseif ($v != "sql" || !$u) {$n = ($u ? false : found_rows($S, $Y)); if ($n < max(1e4, 2 * ($F + 1) * $y))$n = reset(slow_query(count_rows($a, $Y, $u, $p))); else$yb = false; }}if (+$y && ($n === false || $n > $y || $F)) {echo"<p class='pages'>"; $Dc = ($n === false ? $F + (count($M) >= $y ? 2 : 1) : floor(($n - 1) / $y)); if ($v != "simpledb") {echo'<a href="' . h(remove_from_uri("page")) . "\" onclick=\"pageClick(this.href, +prompt('" . 'Page' . "', '" . ($F + 1) . "'), event); return false;\">" . 'Page' . "</a>:", pagination(0, $F) . ($F > 5 ? " ..." : ""); for ($q = max(1, $F - 4); $q < min($Dc, $F + 5); $q++)echo |
|
547 | +pagination($q, $F); if ($Dc > 0) {echo($F + 5 < $Dc ? " ..." : ""), ($yb && $n !== false ? pagination($Dc, $F) : " <a href='" . h(remove_from_uri("page") . "&page=last") . "' title='~$Dc'>" . 'last' . "</a>"); }echo(($n === false ? count($M) + 1 : $n - $F * $y) > $y ? ' <a href="' . h(remove_from_uri("page") . "&page=" . ($F + 1)) . '" onclick="return !selectLoadMore(this, ' . (+$y) . ', \'' . 'Loading' . '...\');" class="loadmore">' . 'Load more data' . '</a>' : ''); } else {echo'Page' . ":", pagination(0, $F) . ($F > 1 ? " ..." : ""), ($F ? pagination($F, $F) : ""), ($Dc > $F ? pagination($F + 1, $F) . ($Dc > $F + 1 ? " ..." : "") : ""); }}echo"<p class='count'>\n", ($n !== false ? "(" . ($yb ? "" : "~ ") . lang(array('%d row', '%d rows'), $n) . ") " : ""); $hb = ($yb ? "" : "~ ") . $n; echo |
|
548 | +checkbox("all", 1, 0, 'whole result', "var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$hb' : checked); selectCount('selected2', this.checked || !checked ? '$hb' : checked);") . "\n"; if ($b->selectCommandPrint()) {echo'<fieldset', ($_GET["modify"] ? '' : ' class="jsonly"'), '><legend>Modify</legend><div> |
|
549 | +<input type="submit" value="Save"',($_GET["modify"] ? '' : ' title="' . 'Ctrl+click on a value to modify it.' . '"'), '> |
|
550 | 550 | </div></fieldset> |
551 | 551 | <fieldset><legend>Selected <span id="selected"></span></legend><div> |
552 | 552 | <input type="submit" name="edit" value="Edit"> |
553 | 553 | <input type="submit" name="clone" value="Clone"> |
554 | -<input type="submit" name="delete" value="Delete"',confirm(),'> |
|
554 | +<input type="submit" name="delete" value="Delete"',confirm(), '> |
|
555 | 555 | </div></fieldset> |
556 | -';}$Pb=$b->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($Pb['sql']);break;}}if($Pb){print_fieldset("export",'Export'." <span id='selected2'></span>");$bd=$b->dumpOutput();echo($bd?html_select("output",$bd,$ia["output"])." ":""),html_select("format",$Pb,$ia["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$p&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ia["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($rb,'strlen'),$e);echo"<p><input type='hidden' name='token' value='$qe'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["script"])){if($_GET["script"]=="kill")$f->query("KILL ".number($_POST["kill"]));elseif(list($R,$r,$D)=$b->_foreignColumn(column_foreign_keys($_GET["source"]),$_GET["field"])){$y=11;$J=$f->query("SELECT $r, $D FROM ".table($R)." WHERE ".(preg_match('~^[0-9]+$~',$_GET["value"])?"$r = $_GET[value] OR ":"")."$D LIKE ".q("$_GET[value]%")." ORDER BY 2 LIMIT $y");for($q=1;($L=$J->fetch_row())&&$q<$y;$q++)echo"<a href='".h(ME."edit=".urlencode($R)."&where".urlencode("[".bracket_escape(idf_unescape($r))."]")."=".urlencode($L[0]))."'>".h($L[1])."</a><br>\n";if($L)echo"...\n";}exit;}else{page_header('Server',"",false);if($b->homepage()){echo"<form action='' method='post'>\n","<p>".'Search data in tables'.": <input name='query' value='".h($_POST["query"])."'> <input type='submit' value='".'Search'."'>\n";if($_POST["query"]!="")search_tables();echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^tables\[/);"><th>'.'Table'.'<td>'.'Rows'."</thead>\n";foreach(table_status()as$R=>$L){$D=$b->tableName($L);if(isset($L["Engine"])&&$D!=""){echo'<tr'.odd().'><td>'.checkbox("tables[]",$R,in_array($R,(array)$_POST["tables"],true),"","formUncheck('check-all');"),"<th><a href='".h(ME).'select='.urlencode($R)."'>$D</a>";$V=format_number($L["Rows"]);echo"<td align='right'><a href='".h(ME."edit=").urlencode($R)."'>".($L["Engine"]=="InnoDB"&&$V?"~ $V":$V)."</a>";}}echo"</table>\n","<script type='text/javascript'>tableCheck();</script>\n","</form>\n";}}page_footer(); |
|
557 | 556 | \ No newline at end of file |
557 | +';}$Pb = $b->dumpFormat(); foreach ((array) $_GET["columns"]as$d) {if ($d["fun"]) {unset($Pb['sql']); break; }}if ($Pb) {print_fieldset("export", 'Export' . " <span id='selected2'></span>"); $bd = $b->dumpOutput(); echo($bd ? html_select("output", $bd, $ia["output"]) . " " : ""), html_select("format", $Pb, $ia["format"]), " <input type='submit' name='export' value='" . 'Export' . "'>\n", "</div></fieldset>\n"; }echo(!$p && $N ? "" : "<script type='text/javascript'>tableCheck();</script>\n"); }if ($b->selectImportPrint()) {print_fieldset("import", 'Import', !$M); echo"<input type='file' name='csv_file'> ", html_select("separator", array("csv"=>"CSV,", "csv;"=>"CSV;", "tsv"=>"TSV"), $ia["format"], 1); echo" <input type='submit' name='import' value='" . 'Import' . "'>", "</div></fieldset>\n"; }$b->selectEmailPrint(array_filter($rb, 'strlen'), $e); echo"<p><input type='hidden' name='token' value='$qe'></p>\n", "</form>\n"; }}if (is_ajax()) {ob_end_clean(); exit; }}elseif (isset($_GET["script"])) {if ($_GET["script"] == "kill")$f->query("KILL " . number($_POST["kill"])); elseif (list($R, $r, $D) = $b->_foreignColumn(column_foreign_keys($_GET["source"]), $_GET["field"])) {$y = 11; $J = $f->query("SELECT $r, $D FROM " . table($R) . " WHERE " . (preg_match('~^[0-9]+$~', $_GET["value"]) ? "$r = $_GET[value] OR " : "") . "$D LIKE " . q("$_GET[value]%") . " ORDER BY 2 LIMIT $y"); for ($q = 1; ($L = $J->fetch_row()) && $q < $y; $q++)echo"<a href='" . h(ME . "edit=" . urlencode($R) . "&where" . urlencode("[" . bracket_escape(idf_unescape($r)) . "]") . "=" . urlencode($L[0])) . "'>" . h($L[1]) . "</a><br>\n"; if ($L)echo"...\n"; }exit; } else {page_header('Server', "", false); if ($b->homepage()) {echo"<form action='' method='post'>\n", "<p>" . 'Search data in tables' . ": <input name='query' value='" . h($_POST["query"]) . "'> <input type='submit' value='" . 'Search' . "'>\n"; if ($_POST["query"] != "")search_tables(); echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);'>\n", '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^tables\[/);"><th>' . 'Table' . '<td>' . 'Rows' . "</thead>\n"; foreach (table_status()as$R=>$L) {$D = $b->tableName($L); if (isset($L["Engine"]) && $D != "") {echo'<tr' . odd() . '><td>' . checkbox("tables[]", $R, in_array($R, (array) $_POST["tables"], true), "", "formUncheck('check-all');"), "<th><a href='" . h(ME) . 'select=' . urlencode($R) . "'>$D</a>"; $V = format_number($L["Rows"]); echo"<td align='right'><a href='" . h(ME . "edit=") . urlencode($R) . "'>" . ($L["Engine"] == "InnoDB" && $V ? "~ $V" : $V) . "</a>"; }}echo"</table>\n", "<script type='text/javascript'>tableCheck();</script>\n", "</form>\n"; }}page_footer(); |
|
558 | 558 | \ No newline at end of file |
@@ -6,11 +6,17 @@ discard block |
||
6 | 6 | * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 |
7 | 7 | * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other) |
8 | 8 | * @version 4.2.5 |
9 | -*/error_reporting(6135);$Hb=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Hb||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$V){$Ae=filter_input_array(constant("INPUT$V"),FILTER_UNSAFE_RAW);if($Ae)$$V=$Ae;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo |
|
10 | -lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo |
|
11 | -lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8У’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤ l^íZ6˜ej…Á³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxlÖ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù €‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò 'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,EÍ`T¦É6Ûˆ-“Åì¾ÅÚŽT[Ѫz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø •ÿš´hìÁ{Ü£•î ËÔ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØÍ‡Ð¢©‰‚êcâ¡óB’—}Ø&`ˆîr+E“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼ ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡ ³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£È}");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
12 | -lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s> )â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n \ræs<ŒPi2INÆ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(Òm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$ CAÆ ä„¤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AKã¡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…): ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDùÑ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æÚŒÚ‡Ÿ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/ØX ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éï†PÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðÈôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEÐ€Ôøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6↬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F 4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀÎ t]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ 1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*/¹UÖVû‰¤þpì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Æ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·> —BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ ¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6Chº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ß§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)×…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üàå€ ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤ (€\r¹öGFžª@ؼÃúÙÀß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷Ƚà¸à\\P’,\"ª-rCÉrVäæY×·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê ‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rÔ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔÄ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„â¢ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ €ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;SÇ]ãñ@ËÇè:Ââ“÷I~Û‘•ÙùÒÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}Ï:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð‰)¯i4Ñu•sÁLjXÁMP¬‚^«ä5¹O’¥ bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE% dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> ›â}Sð8=ã‚ÇÀàô/™)BÑvEIÊbœvð’¬–/ˆªŠqìãÂôe¿KšÔw\0%õ!Í€pªUT@ѵ‰Ë¦_ŒË˜@òàtË8î%ñ>âÌôA´—¤äb+~+\n’…ΤÅ\"©>4Áˆc^Úô־šè§N€ZÛ^ÖØ¯N4ªCDr– DÉCÑ’øàáȳö(ÅR˜ed±‰ù¦›{áŠF•Z†+Q#´ÈW-ýí‘¥qÉÑUCÆÎ;£œ‹XðÛx£¤„\n6ÍzkàvÚý´qàx\"h’ÄšRXþ²?Àpd¢ùÅsðæ†ž?|ÜpÓ\rˆã¿~ÒÖ^ƘhÖªAñÆ<r\$ÓAfÇ5\n\"0;œƒ”‰!Ç¼Õ aÉá‰ÖzG„¬1ÞBÊ’ãÏ\"…¸†±OLkÛÓ‡‘\0ƒžFõñ¿Ž'YœŽˆ4õИ");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
13 | -lzw_decompress(compile_file('','minify_js'));}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&ٜƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function |
|
9 | +*/error_reporting(6135);$Hb=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Hb||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$V){$Ae=filter_input_array(constant("INPUT$V"),FILTER_UNSAFE_RAW);if($Ae) { |
|
10 | + $$V=$Ae; |
|
11 | +} |
|
12 | +}}if(function_exists("mb_internal_encoding")) { |
|
13 | + mb_internal_encoding("8bit"); |
|
14 | +} |
|
15 | +if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo |
|
16 | +lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");} elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo |
|
17 | +lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8У’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤ l^íZ6˜ej…Á³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxlÖ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù €‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò 'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,EÍ`T¦É6Ûˆ-“Åì¾ÅÚŽT[Ѫz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø •ÿš´hìÁ{Ü£•î ËÔ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØÍ‡Ð¢©‰‚êcâ¡óB’—}Ø&`ˆîr+E“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼ ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡ ³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£È}");} elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
18 | +lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s> )â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n \ræs<ŒPi2INÆ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(Òm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$ CAÆ ä„¤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AKã¡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…): ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDùÑ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æÚŒÚ‡Ÿ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/ØX ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éï†PÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðÈôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEÐ€Ôøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6↬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F 4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀÎ t]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ 1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*/¹UÖVû‰¤þpì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Æ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·> —BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ ¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6Chº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ß§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)×…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üàå€ ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤ (€\r¹öGFžª@ؼÃúÙÀß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷Ƚà¸à\\P’,\"ª-rCÉrVäæY×·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê ‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rÔ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔÄ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„â¢ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ €ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;SÇ]ãñ@ËÇè:Ââ“÷I~Û‘•ÙùÒÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}Ï:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð‰)¯i4Ñu•sÁLjXÁMP¬‚^«ä5¹O’¥ bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE% dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> ›â}Sð8=ã‚ÇÀàô/™)BÑvEIÊbœvð’¬–/ˆªŠqìãÂôe¿KšÔw\0%õ!Í€pªUT@ѵ‰Ë¦_ŒË˜@òàtË8î%ñ>âÌôA´—¤äb+~+\n’…ΤÅ\"©>4Áˆc^Úô־šè§N€ZÛ^ÖØ¯N4ªCDr– DÉCÑ’øàáȳö(ÅR˜ed±‰ù¦›{áŠF•Z†+Q#´ÈW-ýí‘¥qÉÑUCÆÎ;£œ‹XðÛx£¤„\n6ÍzkàvÚý´qàx\"h’ÄšRXþ²?Àpd¢ùÅsðæ†ž?|ÜpÓ\rˆã¿~ÒÖ^ƘhÖªAñÆ<r\$ÓAfÇ5\n\"0;œƒ”‰!Ç¼Õ aÉá‰ÖzG„¬1ÞBÊ’ãÏ\"…¸†±OLkÛÓ‡‘\0ƒžFõñ¿Ž'YœŽˆ4õИ");} elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
19 | +lzw_decompress(compile_file('','minify_js'));} else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&ٜƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function |
|
14 | 20 | connection(){global$f;return$f;}function |
15 | 21 | adminer(){global$b;return$b;}function |
16 | 22 | idf_unescape($gc){$uc=substr($gc,-1);return |
@@ -20,7 +26,10 @@ discard block |
||
20 | 26 | number($V){return |
21 | 27 | preg_replace('~[^0-9]+~','',$V);}function |
22 | 28 | remove_slashes($pd,$Hb=false){if(get_magic_quotes_gpc()){while(list($x,$V)=each($pd)){foreach($V |
23 | -as$w=>$U){unset($pd[$x][$w]);if(is_array($U)){$pd[$x][stripslashes($w)]=$U;$pd[]=&$pd[$x][stripslashes($w)];}else$pd[$x][stripslashes($w)]=($Hb?$U:stripslashes($U));}}}}function |
|
29 | +as$w=>$U){unset($pd[$x][$w]);if(is_array($U)){$pd[$x][stripslashes($w)]=$U;$pd[]=&$pd[$x][stripslashes($w)];} else { |
|
30 | + $pd[$x][stripslashes($w)]=($Hb?$U:stripslashes($U)); |
|
31 | +} |
|
32 | +}}}}function |
|
24 | 33 | bracket_escape($gc,$ua=false){static$re=array(':'=>':1',']'=>':2','['=>':3');return |
25 | 34 | strtr($gc,($ua?array_flip($re):$re));}function |
26 | 35 | charset($f){return(version_compare($f->server_info,"5.5.3")>=0?"utf8mb4":"utf8");}function |
@@ -32,53 +41,137 @@ discard block |
||
32 | 41 | checkbox($D,$W,$Fa,$sc="",$Tc="",$Ia=""){$K="<input type='checkbox' name='$D' value='".h($W)."'".($Fa?" checked":"").($Tc?' onclick="'.h($Tc).'"':'').">";return($sc!=""||$Ia?"<label".($Ia?" class='$Ia'":"").">$K".h($sc)."</label>":$K);}function |
33 | 42 | optionlist($Xc,$Id=null,$Fe=false){$K="";foreach($Xc |
34 | 43 | as$w=>$U){$Yc=array($w=>$U);if(is_array($U)){$K.='<optgroup label="'.h($w).'">';$Yc=$U;}foreach($Yc |
35 | -as$x=>$V)$K.='<option'.($Fe||is_string($x)?' value="'.h($x).'"':'').(($Fe||is_string($x)?(string)$x:$V)===$Id?' selected':'').'>'.h($V);if(is_array($U))$K.='</optgroup>';}return$K;}function |
|
36 | -html_select($D,$Xc,$W="",$Sc=true){if($Sc)return"<select name='".h($D)."'".(is_string($Sc)?' onchange="'.h($Sc).'"':"").">".optionlist($Xc,$W)."</select>";$K="";foreach($Xc |
|
37 | -as$x=>$V)$K.="<label><input type='radio' name='".h($D)."' value='".h($x)."'".($x==$W?" checked":"").">".h($V)."</label>";return$K;}function |
|
44 | +as$x=>$V) { |
|
45 | + $K.='<option'.($Fe||is_string($x)?' value="'.h($x).'"':'').(($Fe||is_string($x)?(string)$x:$V)===$Id?' selected':'').'>'.h($V); |
|
46 | +} |
|
47 | +if(is_array($U)) { |
|
48 | + $K.='</optgroup>'; |
|
49 | +} |
|
50 | +}return$K;}function |
|
51 | +html_select($D,$Xc,$W="",$Sc=true){if($Sc) { |
|
52 | + return"<select name='".h($D)."'".(is_string($Sc)?' onchange="'.h($Sc).'"':"").">".optionlist($Xc,$W)."</select>"; |
|
53 | +} |
|
54 | +$K="";foreach($Xc |
|
55 | +as$x=>$V) { |
|
56 | + $K.="<label><input type='radio' name='".h($D)."' value='".h($x)."'".($x==$W?" checked":"").">".h($V)."</label>"; |
|
57 | +} |
|
58 | +return$K;}function |
|
38 | 59 | select_input($c,$Xc,$W="",$hd=""){return($Xc?"<select$c><option value=''>$hd".optionlist($Xc,$W,true)."</select>":"<input$c size='10' value='".h($W)."' placeholder='$hd'>");}function |
39 | 60 | confirm(){return" onclick=\"return confirm('".'Are you sure?'."');\"";}function |
40 | 61 | print_fieldset($r,$wc,$Je=false,$Tc=""){echo"<fieldset><legend><a href='#fieldset-$r' onclick=\"".h($Tc)."return !toggle('fieldset-$r');\">$wc</a></legend><div id='fieldset-$r'".($Je?"":" class='hidden'").">\n";}function |
41 | 62 | bold($Aa,$Ia=""){return($Aa?" class='active $Ia'":($Ia?" class='$Ia'":""));}function |
42 | -odd($K=' class="odd"'){static$q=0;if(!$K)$q=-1;return($q++%2?$K:'');}function |
|
63 | +odd($K=' class="odd"'){static$q=0;if(!$K) { |
|
64 | + $q=-1; |
|
65 | +} |
|
66 | +return($q++%2?$K:'');}function |
|
43 | 67 | js_escape($Q){return |
44 | 68 | addcslashes($Q,"\r\n'\\/");}function |
45 | -json_row($x,$V=null){static$Ib=true;if($Ib)echo"{";if($x!=""){echo($Ib?"":",")."\n\t\"".addcslashes($x,"\r\n\"\\/").'": '.($V!==null?'"'.addcslashes($V,"\r\n\"\\/").'"':'undefined');$Ib=false;}else{echo"\n}\n";$Ib=true;}}function |
|
69 | +json_row($x,$V=null){static$Ib=true;if($Ib) { |
|
70 | + echo"{"; |
|
71 | +} |
|
72 | +if($x!=""){echo($Ib?"":",")."\n\t\"".addcslashes($x,"\r\n\"\\/").'": '.($V!==null?'"'.addcslashes($V,"\r\n\"\\/").'"':'undefined');$Ib=false;} else{echo"\n}\n";$Ib=true;}}function |
|
46 | 73 | ini_bool($kc){$V=ini_get($kc);return(preg_match('~^(on|true|yes)$~i',$V)||(int)$V);}function |
47 | -sid(){static$K;if($K===null)$K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$K;}function |
|
74 | +sid(){static$K;if($K===null) { |
|
75 | + $K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies"))); |
|
76 | +} |
|
77 | +return$K;}function |
|
48 | 78 | set_password($X,$O,$T,$G){$_SESSION["pwds"][$X][$O][$T]=($_COOKIE["adminer_key"]&&is_string($G)?array(encrypt_string($G,$_COOKIE["adminer_key"])):$G);}function |
49 | -get_password(){$K=get_session("pwds");if(is_array($K))$K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false);return$K;}function |
|
79 | +get_password(){$K=get_session("pwds");if(is_array($K)) { |
|
80 | + $K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false); |
|
81 | +} |
|
82 | +return$K;}function |
|
50 | 83 | q($Q){global$f;return$f->quote($Q);}function |
51 | -get_vals($I,$d=0){global$f;$K=array();$J=$f->query($I);if(is_object($J)){while($L=$J->fetch_row())$K[]=$L[$d];}return$K;}function |
|
52 | -get_key_vals($I,$g=null,$ke=0){global$f;if(!is_object($g))$g=$f;$K=array();$g->timeout=$ke;$J=$g->query($I);$g->timeout=0;if(is_object($J)){while($L=$J->fetch_row())$K[$L[0]]=$L[1];}return$K;}function |
|
53 | -get_rows($I,$g=null,$k="<p class='error'>"){global$f;$Sa=(is_object($g)?$g:$f);$K=array();$J=$Sa->query($I);if(is_object($J)){while($L=$J->fetch_assoc())$K[]=$L;}elseif(!$J&&!is_object($g)&&$k&&defined("PAGE_HEADER"))echo$k.error()."\n";return$K;}function |
|
84 | +get_vals($I,$d=0){global$f;$K=array();$J=$f->query($I);if(is_object($J)){while($L=$J->fetch_row()) { |
|
85 | + $K[]=$L[$d]; |
|
86 | +} |
|
87 | +}return$K;}function |
|
88 | +get_key_vals($I,$g=null,$ke=0){global$f;if(!is_object($g)) { |
|
89 | + $g=$f; |
|
90 | +} |
|
91 | +$K=array();$g->timeout=$ke;$J=$g->query($I);$g->timeout=0;if(is_object($J)){while($L=$J->fetch_row()) { |
|
92 | + $K[$L[0]]=$L[1]; |
|
93 | +} |
|
94 | +}return$K;}function |
|
95 | +get_rows($I,$g=null,$k="<p class='error'>"){global$f;$Sa=(is_object($g)?$g:$f);$K=array();$J=$Sa->query($I);if(is_object($J)){while($L=$J->fetch_assoc()) { |
|
96 | + $K[]=$L; |
|
97 | +} |
|
98 | +} elseif(!$J&&!is_object($g)&&$k&&defined("PAGE_HEADER")) { |
|
99 | + echo$k.error()."\n"; |
|
100 | +} |
|
101 | +return$K;}function |
|
54 | 102 | unique_array($L,$t){foreach($t |
55 | -as$s){if(preg_match("~PRIMARY|UNIQUE~",$s["type"])){$K=array();foreach($s["columns"]as$x){if(!isset($L[$x]))continue |
|
56 | -2;$K[$x]=$L[$x];}return$K;}}}function |
|
57 | -escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return |
|
103 | +as$s){if(preg_match("~PRIMARY|UNIQUE~",$s["type"])){$K=array();foreach($s["columns"]as$x){if(!isset($L[$x])) { |
|
104 | + continue |
|
105 | +2; |
|
106 | +} |
|
107 | +$K[$x]=$L[$x];}return$K;}}}function |
|
108 | +escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$A)) { |
|
109 | + return$A[1].idf_escape(idf_unescape($A[2])).$A[3]; |
|
110 | +} |
|
111 | +return |
|
58 | 112 | idf_escape($x);}function |
59 | -where($Y,$m=array()){global$f,$v;$K=array();foreach((array)$Y["where"]as$x=>$V){$x=bracket_escape($x,1);$d=escape_key($x);$K[]=$d.(($v=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$V))||$v=="mssql"?" LIKE ".q(addcslashes($V,"%_\\")):" = ".unconvert_field($m[$x],q($V)));if($v=="sql"&&preg_match('~char|text~',$m[$x]["type"])&&preg_match("~[^ -@]~",$V))$K[]="$d = ".q($V)." COLLATE ".charset($f)."_bin";}foreach((array)$Y["null"]as$x)$K[]=escape_key($x)." IS NULL";return |
|
113 | +where($Y,$m=array()){global$f,$v;$K=array();foreach((array)$Y["where"]as$x=>$V){$x=bracket_escape($x,1);$d=escape_key($x);$K[]=$d.(($v=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$V))||$v=="mssql"?" LIKE ".q(addcslashes($V,"%_\\")):" = ".unconvert_field($m[$x],q($V)));if($v=="sql"&&preg_match('~char|text~',$m[$x]["type"])&&preg_match("~[^ -@]~",$V)) { |
|
114 | + $K[]="$d = ".q($V)." COLLATE ".charset($f)."_bin"; |
|
115 | +} |
|
116 | +}foreach((array)$Y["null"]as$x) { |
|
117 | + $K[]=escape_key($x)." IS NULL"; |
|
118 | +} |
|
119 | +return |
|
60 | 120 | implode(" AND ",$K);}function |
61 | 121 | where_check($V,$m=array()){parse_str($V,$Ea);remove_slashes(array(&$Ea));return |
62 | 122 | where($Ea,$m);}function |
63 | 123 | where_link($q,$d,$W,$Vc="="){return"&where%5B$q%5D%5Bcol%5D=".urlencode($d)."&where%5B$q%5D%5Bop%5D=".urlencode(($W!==null?$Vc:"IS NULL"))."&where%5B$q%5D%5Bval%5D=".urlencode($W);}function |
64 | 124 | convert_fields($e,$m,$N=array()){$K="";foreach($e |
65 | -as$x=>$V){if($N&&!in_array(idf_escape($x),$N))continue;$oa=convert_field($m[$x]);if($oa)$K.=", $oa AS ".idf_escape($x);}return$K;}function |
|
66 | -cookie($D,$W,$zc=2592000){global$aa;$ed=array($D,(preg_match("~\n~",$W)?"":$W),($zc?time()+$zc:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ed[]=true;return |
|
125 | +as$x=>$V){if($N&&!in_array(idf_escape($x),$N)) { |
|
126 | + continue; |
|
127 | +} |
|
128 | +$oa=convert_field($m[$x]);if($oa) { |
|
129 | + $K.=", $oa AS ".idf_escape($x); |
|
130 | +} |
|
131 | +}return$K;}function |
|
132 | +cookie($D,$W,$zc=2592000){global$aa;$ed=array($D,(preg_match("~\n~",$W)?"":$W),($zc?time()+$zc:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0) { |
|
133 | + $ed[]=true; |
|
134 | +} |
|
135 | +return |
|
67 | 136 | call_user_func_array('setcookie',$ed);}function |
68 | -restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function |
|
69 | -stop_session(){if(!ini_bool("session.use_cookies"))session_write_close();}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function |
|
137 | +restart_session(){if(!ini_bool("session.use_cookies")) { |
|
138 | + session_start(); |
|
139 | +} |
|
140 | +}function |
|
141 | +stop_session(){if(!ini_bool("session.use_cookies")) { |
|
142 | + session_write_close(); |
|
143 | +} |
|
144 | +}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function |
|
70 | 145 | set_session($x,$V){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$V;}function |
71 | 146 | auth_url($X,$O,$T,$h=null){global$jb;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($jb))."|username|".($h!==null?"db|":"").session_name()),$A);return"$A[1]?".(sid()?SID."&":"").($X!="server"||$O!=""?urlencode($X)."=".urlencode($O)."&":"")."username=".urlencode($T).($h!=""?"&db=".urlencode($h):"").($A[2]?"&$A[2]":"");}function |
72 | 147 | is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function |
73 | -redirect($_,$B=null){if($B!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($_!==null?$_:$_SERVER["REQUEST_URI"]))][]=$B;}if($_!==null){if($_=="")$_=".";header("Location: $_");exit;}}function |
|
74 | -query_redirect($I,$_,$B,$xd=true,$zb=true,$Bb=false,$je=""){global$f,$k,$b;if($zb){$Td=microtime(true);$Bb=!$f->query($I);$je=format_time($Td);}$Sd="";if($I)$Sd=$b->messageQuery($I,$je);if($Bb){$k=error().$Sd;return |
|
75 | -false;}if($xd)redirect($_,$B.$Sd);return |
|
148 | +redirect($_,$B=null){if($B!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($_!==null?$_:$_SERVER["REQUEST_URI"]))][]=$B;}if($_!==null){if($_=="") { |
|
149 | + $_="."; |
|
150 | +} |
|
151 | +header("Location: $_");exit;}}function |
|
152 | +query_redirect($I,$_,$B,$xd=true,$zb=true,$Bb=false,$je=""){global$f,$k,$b;if($zb){$Td=microtime(true);$Bb=!$f->query($I);$je=format_time($Td);}$Sd="";if($I) { |
|
153 | + $Sd=$b->messageQuery($I,$je); |
|
154 | +} |
|
155 | +if($Bb){$k=error().$Sd;return |
|
156 | +false;}if($xd) { |
|
157 | + redirect($_,$B.$Sd); |
|
158 | +} |
|
159 | +return |
|
76 | 160 | true;}function |
77 | -queries($I){global$f;static$sd=array();static$Td;if(!$Td)$Td=microtime(true);if($I===null)return |
|
78 | -array(implode("\n",$sd),format_time($Td));$sd[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$f->query($I);}function |
|
161 | +queries($I){global$f;static$sd=array();static$Td;if(!$Td) { |
|
162 | + $Td=microtime(true); |
|
163 | +} |
|
164 | +if($I===null) { |
|
165 | + return |
|
166 | +array(implode("\n",$sd),format_time($Td)); |
|
167 | +} |
|
168 | +$sd[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$f->query($I);}function |
|
79 | 169 | apply_queries($I,$ee,$wb='table'){foreach($ee |
80 | -as$R){if(!queries("$I ".$wb($R)))return |
|
81 | -false;}return |
|
170 | +as$R){if(!queries("$I ".$wb($R))) { |
|
171 | + return |
|
172 | +false; |
|
173 | +} |
|
174 | +}return |
|
82 | 175 | true;}function |
83 | 176 | queries_redirect($_,$B,$xd){list($sd,$je)=queries(null);return |
84 | 177 | query_redirect($sd,$_,$B,$xd,false,!$xd,$je);}function |
@@ -87,50 +180,159 @@ discard block |
||
87 | 180 | remove_from_uri($dd=""){return |
88 | 181 | substr(preg_replace("~(?<=[?&])($dd".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function |
89 | 182 | pagination($F,$Ya){return" ".($F==$Ya?$F+1:'<a href="'.h(remove_from_uri("page").($F?"&page=$F".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($F+1)."</a>");}function |
90 | -get_file($x,$bb=false){$Eb=$_FILES[$x];if(!$Eb)return |
|
91 | -null;foreach($Eb |
|
92 | -as$x=>$V)$Eb[$x]=(array)$V;$K='';foreach($Eb["error"]as$x=>$k){if($k)return$k;$D=$Eb["name"][$x];$pe=$Eb["tmp_name"][$x];$Ta=file_get_contents($bb&&preg_match('~\\.gz$~',$D)?"compress.zlib://$pe":$pe);if($bb){$Td=substr($Ta,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Td,$yd))$Ta=iconv("utf-16","utf-8",$Ta);elseif($Td=="\xEF\xBB\xBF")$Ta=substr($Ta,3);$K.=$Ta."\n\n";}else$K.=$Ta;}return$K;}function |
|
183 | +get_file($x,$bb=false){$Eb=$_FILES[$x];if(!$Eb) { |
|
184 | + return |
|
185 | +null; |
|
186 | +} |
|
187 | +foreach($Eb |
|
188 | +as$x=>$V) { |
|
189 | + $Eb[$x]=(array)$V; |
|
190 | +} |
|
191 | +$K='';foreach($Eb["error"]as$x=>$k){if($k) { |
|
192 | + return$k; |
|
193 | +} |
|
194 | +$D=$Eb["name"][$x];$pe=$Eb["tmp_name"][$x];$Ta=file_get_contents($bb&&preg_match('~\\.gz$~',$D)?"compress.zlib://$pe":$pe);if($bb){$Td=substr($Ta,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Td,$yd)) { |
|
195 | + $Ta=iconv("utf-16","utf-8",$Ta); |
|
196 | +} elseif($Td=="\xEF\xBB\xBF") { |
|
197 | + $Ta=substr($Ta,3); |
|
198 | +} |
|
199 | +$K.=$Ta."\n\n";} else { |
|
200 | + $K.=$Ta; |
|
201 | +} |
|
202 | +}return$K;}function |
|
93 | 203 | upload_error($k){$Ec=($k==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($k?'Unable to upload a file.'.($Ec?" ".sprintf('Maximum allowed file size is %sB.',$Ec):""):'File does not exist.');}function |
94 | 204 | repeat_pattern($H,$xc){return |
95 | 205 | str_repeat("$H{0,65535}",$xc/65535)."$H{0,".($xc%65535)."}";}function |
96 | 206 | is_utf8($V){return(preg_match('~~u',$V)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$V));}function |
97 | -shorten_utf8($Q,$xc=80,$Zd=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$xc).")($)?)u",$Q,$A))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$xc).")($)?)",$Q,$A);return |
|
207 | +shorten_utf8($Q,$xc=80,$Zd=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$xc).")($)?)u",$Q,$A)) { |
|
208 | + preg_match("(^(".repeat_pattern("[\t\r\n -~]",$xc).")($)?)",$Q,$A); |
|
209 | +} |
|
210 | +return |
|
98 | 211 | h($A[1]).$Zd.(isset($A[2])?"":"<i>...</i>");}function |
99 | 212 | format_number($V){return |
100 | 213 | strtr(number_format($V,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function |
101 | 214 | friendly_url($V){return |
102 | 215 | preg_replace('~[^a-z0-9_]~i','-',$V);}function |
103 | 216 | hidden_fields($pd,$ic=array()){while(list($x,$V)=each($pd)){if(!in_array($x,$ic)){if(is_array($V)){foreach($V |
104 | -as$w=>$U)$pd[$x."[$w]"]=$U;}else |
|
105 | -echo'<input type="hidden" name="'.h($x).'" value="'.h($V).'">';}}}function |
|
217 | +as$w=>$U) { |
|
218 | + $pd[$x."[$w]"]=$U; |
|
219 | +} |
|
220 | +} else { |
|
221 | + echo'<input type="hidden" name="'.h($x).'" value="'.h($V).'">'; |
|
222 | +} |
|
223 | +}}}function |
|
106 | 224 | hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function |
107 | 225 | table_status1($R,$Cb=false){$K=table_status($R,$Cb);return($K?$K:array("Name"=>$R));}function |
108 | -column_foreign_keys($R){global$b;$K=array();foreach($b->foreignKeys($R)as$Nb){foreach($Nb["source"]as$V)$K[$V][]=$Nb;}return$K;}function |
|
226 | +column_foreign_keys($R){global$b;$K=array();foreach($b->foreignKeys($R)as$Nb){foreach($Nb["source"]as$V) { |
|
227 | + $K[$V][]=$Nb; |
|
228 | +} |
|
229 | +}return$K;}function |
|
109 | 230 | enum_input($ue,$c,$l,$W,$sb=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);$K=($sb!==null?"<label><input type='$ue'$c value='$sb'".((is_array($W)?in_array($sb,$W):$W===0)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?$W==$q+1:(is_array($W)?in_array($q+1,$W):$W===$V));$K.=" <label><input type='$ue'$c value='".($q+1)."'".($Fa?' checked':'').'>'.h($b->editVal($V,$l)).'</label>';}return$K;}function |
110 | -input($l,$W,$o){global$f,$we,$b,$v;$D=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($W)&&!$o){$na=array($W);if(version_compare(PHP_VERSION,5.4)>=0)$na[]=JSON_PRETTY_PRINT;$W=call_user_func_array('json_encode',$na);$o="json";}$Ad=($v=="mssql"&&$l["auto_increment"]);if($Ad&&!$_POST["save"])$o=null;$Tb=(isset($_GET["select"])||$Ad?array("orig"=>'original'):array())+$b->editFunctions($l);$c=" name='fields[$D]'";if($l["type"]=="enum")echo |
|
111 | -nbsp($Tb[""])."<td>".$b->editInput($_GET["edit"],$l,$c,$W);else{$Ib=0;foreach($Tb |
|
112 | -as$x=>$V){if($x===""||!$V)break;$Ib++;}$Sc=($Ib?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($Ib > f.selectedIndex) f.selectedIndex = $Ib;\" onkeyup='keyupChange.call(this);'":"");$c.=$Sc;$Yb=(in_array($o,$Tb)||isset($Tb[$o]));echo(count($Tb)>1?"<select name='function[$D]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($Tb,$o===null||$Yb?$o:"")."</select>":nbsp(reset($Tb))).'<td>';$mc=$b->editInput($_GET["edit"],$l,$c,$W);if($mc!="")echo$mc;elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?($W>>$q)&1:in_array($V,explode(",",$W),true));echo" <label><input type='checkbox' name='fields[$D][$q]' value='".(1<<$q)."'".($Fa?' checked':'')."$Sc>".h($b->editVal($V,$l)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$D'$Sc>";elseif(($ge=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$W)){if($ge&&$v!="sqlite")$c.=" cols='50' rows='12'";else{$M=min(12,substr_count($W,"\n")+1);$c.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$c>".h($W).'</textarea>';}elseif($o=="json")echo"<textarea$c cols='50' rows='12' class='jush-js'>".h($W).'</textarea>';else{$Gc=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$A)?((preg_match("~binary~",$l["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$l["unsigned"]?1:0)):($we[$l["type"]]?$we[$l["type"]]+($l["unsigned"]?0:1):0));if($v=='sql'&&$f->server_info>=5.6&&preg_match('~time~',$l["type"]))$Gc+=7;echo"<input".((!$Yb||$o==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($W)."'".($Gc?" maxlength='$Gc'":"").(preg_match('~char|binary~',$l["type"])&&$Gc>20?" size='40'":"")."$c>";}}}function |
|
113 | -process_input($l){global$b;$gc=bracket_escape($l["field"]);$o=$_POST["function"][$gc];$W=$_POST["fields"][$gc];if($l["type"]=="enum"){if($W==-1)return |
|
114 | -false;if($W=="")return"NULL";return+$W;}if($l["auto_increment"]&&$W=="")return |
|
115 | -null;if($o=="orig")return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false);if($o=="NULL")return"NULL";if($l["type"]=="set")return |
|
116 | -array_sum((array)$W);if($o=="json"){$o="";$W=json_decode($W,true);if(!is_array($W))return |
|
117 | -false;return$W;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$Eb=get_file("fields-$gc");if(!is_string($Eb))return |
|
118 | -false;return |
|
231 | +input($l,$W,$o){global$f,$we,$b,$v;$D=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($W)&&!$o){$na=array($W);if(version_compare(PHP_VERSION,5.4)>=0) { |
|
232 | + $na[]=JSON_PRETTY_PRINT; |
|
233 | +} |
|
234 | +$W=call_user_func_array('json_encode',$na);$o="json";}$Ad=($v=="mssql"&&$l["auto_increment"]);if($Ad&&!$_POST["save"]) { |
|
235 | + $o=null; |
|
236 | +} |
|
237 | +$Tb=(isset($_GET["select"])||$Ad?array("orig"=>'original'):array())+$b->editFunctions($l);$c=" name='fields[$D]'";if($l["type"]=="enum") { |
|
238 | + echo |
|
239 | +nbsp($Tb[""])."<td>".$b->editInput($_GET["edit"],$l,$c,$W); |
|
240 | +} else{$Ib=0;foreach($Tb |
|
241 | +as$x=>$V){if($x===""||!$V) { |
|
242 | + break; |
|
243 | +} |
|
244 | +$Ib++;}$Sc=($Ib?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($Ib > f.selectedIndex) f.selectedIndex = $Ib;\" onkeyup='keyupChange.call(this);'":"");$c.=$Sc;$Yb=(in_array($o,$Tb)||isset($Tb[$o]));echo(count($Tb)>1?"<select name='function[$D]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($Tb,$o===null||$Yb?$o:"")."</select>":nbsp(reset($Tb))).'<td>';$mc=$b->editInput($_GET["edit"],$l,$c,$W);if($mc!="") { |
|
245 | + echo$mc; |
|
246 | +} elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?($W>>$q)&1:in_array($V,explode(",",$W),true));echo" <label><input type='checkbox' name='fields[$D][$q]' value='".(1<<$q)."'".($Fa?' checked':'')."$Sc>".h($b->editVal($V,$l)).'</label>';}} elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")) { |
|
247 | + echo"<input type='file' name='fields-$D'$Sc>"; |
|
248 | +} elseif(($ge=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$W)){if($ge&&$v!="sqlite") { |
|
249 | + $c.=" cols='50' rows='12'"; |
|
250 | +} else{$M=min(12,substr_count($W,"\n")+1);$c.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$c>".h($W).'</textarea>';} elseif($o=="json") { |
|
251 | + echo"<textarea$c cols='50' rows='12' class='jush-js'>".h($W).'</textarea>'; |
|
252 | +} else{$Gc=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$A)?((preg_match("~binary~",$l["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$l["unsigned"]?1:0)):($we[$l["type"]]?$we[$l["type"]]+($l["unsigned"]?0:1):0));if($v=='sql'&&$f->server_info>=5.6&&preg_match('~time~',$l["type"])) { |
|
253 | + $Gc+=7; |
|
254 | +} |
|
255 | +echo"<input".((!$Yb||$o==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($W)."'".($Gc?" maxlength='$Gc'":"").(preg_match('~char|binary~',$l["type"])&&$Gc>20?" size='40'":"")."$c>";}}}function |
|
256 | +process_input($l){global$b;$gc=bracket_escape($l["field"]);$o=$_POST["function"][$gc];$W=$_POST["fields"][$gc];if($l["type"]=="enum"){if($W==-1) { |
|
257 | + return |
|
258 | +false; |
|
259 | +} |
|
260 | +if($W=="") { |
|
261 | + return"NULL"; |
|
262 | +} |
|
263 | +return+$W;}if($l["auto_increment"]&&$W=="") { |
|
264 | + return |
|
265 | +null; |
|
266 | +} |
|
267 | +if($o=="orig") { |
|
268 | + return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false); |
|
269 | +} |
|
270 | +if($o=="NULL") { |
|
271 | + return"NULL"; |
|
272 | +} |
|
273 | +if($l["type"]=="set") { |
|
274 | + return |
|
275 | +array_sum((array)$W); |
|
276 | +} |
|
277 | +if($o=="json"){$o="";$W=json_decode($W,true);if(!is_array($W)) { |
|
278 | + return |
|
279 | +false; |
|
280 | +} |
|
281 | +return$W;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$Eb=get_file("fields-$gc");if(!is_string($Eb)) { |
|
282 | + return |
|
283 | +false; |
|
284 | +} |
|
285 | +return |
|
119 | 286 | q($Eb);}return$b->processInput($l,$W,$o);}function |
120 | 287 | fields_from_edit(){global$i;$K=array();foreach((array)$_POST["field_keys"]as$x=>$V){if($V!=""){$V=bracket_escape($V);$_POST["function"][$V]=$_POST["field_funs"][$x];$_POST["fields"][$V]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$V){$D=bracket_escape($x,1);$K[$D]=array("field"=>$D,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($x==$i->primary),);}return$K;}function |
121 | 288 | search_tables(){global$b,$f;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$Qb=false;foreach(table_status('',true)as$R=>$S){$D=$b->tableName($S);if(isset($S["Engine"])&&$D!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$J=$f->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($R),array())),1));if(!$J||$J->fetch_row()){if(!$Qb){echo"<ul>\n";$Qb=true;}echo"<li>".($J?"<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$D</a>\n":"$D: <span class='error'>".error()."</span>\n");}}}echo($Qb?"</ul>":"<p class='message'>".'No tables.')."\n";}function |
122 | -dump_headers($fc,$Jc=false){global$b;$K=$b->dumpHeaders($fc,$Jc);$bd=$_POST["output"];if($bd!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($fc).".$K".($bd!="file"&&!preg_match('~[^0-9a-z]~',$bd)?".$bd":""));session_write_close();ob_flush();flush();return$K;}function |
|
289 | +dump_headers($fc,$Jc=false){global$b;$K=$b->dumpHeaders($fc,$Jc);$bd=$_POST["output"];if($bd!="text") { |
|
290 | + header("Content-Disposition: attachment; filename=".$b->dumpFilename($fc).".$K".($bd!="file"&&!preg_match('~[^0-9a-z]~',$bd)?".$bd":"")); |
|
291 | +} |
|
292 | +session_write_close();ob_flush();flush();return$K;}function |
|
123 | 293 | dump_csv($L){foreach($L |
124 | -as$x=>$V){if(preg_match("~[\"\n,;\t]~",$V)||$V==="")$L[$x]='"'.str_replace('"','""',$V).'"';}echo |
|
294 | +as$x=>$V){if(preg_match("~[\"\n,;\t]~",$V)||$V==="") { |
|
295 | + $L[$x]='"'.str_replace('"','""',$V).'"'; |
|
296 | +} |
|
297 | +}echo |
|
125 | 298 | implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$L)."\r\n";}function |
126 | 299 | apply_sql_function($o,$d){return($o?($o=="unixepoch"?"DATETIME($d, '$o')":($o=="count distinct"?"COUNT(DISTINCT ":strtoupper("$o("))."$d)"):$d);}function |
127 | -get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir'))$K=sys_get_temp_dir();else{$Fb=@tempnam("","");if(!$Fb)return |
|
128 | -false;$K=dirname($Fb);unlink($Fb);}}return$K;}function |
|
129 | -password_file($Va){$Fb=get_temp_dir()."/adminer.key";$K=@file_get_contents($Fb);if($K||!$Va)return$K;$Rb=@fopen($Fb,"w");if($Rb){chmod($Fb,0660);$K=rand_string();fwrite($Rb,$K);fclose($Rb);}return$K;}function |
|
300 | +get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir')) { |
|
301 | + $K=sys_get_temp_dir(); |
|
302 | +} else{$Fb=@tempnam("","");if(!$Fb) { |
|
303 | + return |
|
304 | +false; |
|
305 | +} |
|
306 | +$K=dirname($Fb);unlink($Fb);}}return$K;}function |
|
307 | +password_file($Va){$Fb=get_temp_dir()."/adminer.key";$K=@file_get_contents($Fb);if($K||!$Va) { |
|
308 | + return$K; |
|
309 | +} |
|
310 | +$Rb=@fopen($Fb,"w");if($Rb){chmod($Fb,0660);$K=rand_string();fwrite($Rb,$K);fclose($Rb);}return$K;}function |
|
130 | 311 | rand_string(){return |
131 | 312 | md5(uniqid(mt_rand(),true));}function |
132 | 313 | select_value($V,$z,$l,$he){global$b,$aa;if(is_array($V)){$K="";foreach($V |
133 | -as$w=>$U)$K.="<tr>".($V!=array_values($V)?"<th>".h($w):"")."<td>".select_value($U,$z,$l,$he);return"<table cellspacing='0'>$K</table>";}if(!$z)$z=$b->selectLink($V,$l);if($z===null){if(is_mail($V))$z="mailto:$V";if($qd=is_url($V))$z=(($qd=="http"&&$aa)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$V:"https://www.adminer.org/redirect/?url=".urlencode($V));}$K=$b->editVal($V,$l);if($K!==null){if($K==="")$K=" ";elseif(!is_utf8($K))$K="\0";elseif($he!=""&&is_shortable($l))$K=shorten_utf8($K,max(0,+$he));else$K=h($K);}return$b->selectVal($K,$z,$l,$V);}function |
|
314 | +as$w=>$U) { |
|
315 | + $K.="<tr>".($V!=array_values($V)?"<th>".h($w):"")."<td>".select_value($U,$z,$l,$he); |
|
316 | +} |
|
317 | +return"<table cellspacing='0'>$K</table>";}if(!$z) { |
|
318 | + $z=$b->selectLink($V,$l); |
|
319 | +} |
|
320 | +if($z===null){if(is_mail($V)) { |
|
321 | + $z="mailto:$V"; |
|
322 | +} |
|
323 | +if($qd=is_url($V)) { |
|
324 | + $z=(($qd=="http"&&$aa)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$V:"https://www.adminer.org/redirect/?url=".urlencode($V)); |
|
325 | +} |
|
326 | +}$K=$b->editVal($V,$l);if($K!==null){if($K==="") { |
|
327 | + $K=" "; |
|
328 | +} elseif(!is_utf8($K)) { |
|
329 | + $K="\0"; |
|
330 | +} elseif($he!=""&&is_shortable($l)) { |
|
331 | + $K=shorten_utf8($K,max(0,+$he)); |
|
332 | +} else { |
|
333 | + $K=h($K); |
|
334 | +} |
|
335 | +}return$b->selectVal($K,$z,$l,$V);}function |
|
134 | 336 | is_mail($pb){$pa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$ib='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$H="$pa+(\\.$pa+)*@($ib?\\.)+$ib";return |
135 | 337 | is_string($pb)&&preg_match("(^$H(,\\s*$H)*\$)i",$pb);}function |
136 | 338 | is_url($Q){$ib='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($ib?\\.)+$ib(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q,$A)?strtolower($A[1]):"");}function |
@@ -143,38 +345,94 @@ discard block |
||
143 | 345 | }, \'token=',$qe,'&kill=',$rc,'\'); |
144 | 346 | }, ',1000*$ke,'); |
145 | 347 | </script> |
146 | -';}else$g=null;ob_flush();flush();$K=@get_key_vals($I,$g,$ke);if($g){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return |
|
348 | +';} else { |
|
349 | + $g=null; |
|
350 | +} |
|
351 | +ob_flush();flush();$K=@get_key_vals($I,$g,$ke);if($g){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return |
|
147 | 352 | array_keys($K);}function |
148 | 353 | get_token(){$vd=rand(1,1e6);return($vd^$_SESSION["token"]).":$vd";}function |
149 | 354 | verify_token(){list($qe,$vd)=explode(":",$_POST["token"]);return($vd^$_SESSION["token"])==$qe;}function |
150 | -lzw_decompress($za){$gb=256;$_a=8;$Ka=array();$Bd=0;$Cd=0;for($q=0;$q<strlen($za);$q++){$Bd=($Bd<<8)+ord($za[$q]);$Cd+=8;if($Cd>=$_a){$Cd-=$_a;$Ka[]=$Bd>>$Cd;$Bd&=(1<<$Cd)-1;$gb++;if($gb>>$_a)$_a++;}}$fb=range("\0","\xFF");$K="";foreach($Ka |
|
151 | -as$q=>$Ja){$ob=$fb[$Ja];if(!isset($ob))$ob=$Ne.$Ne[0];$K.=$ob;if($q)$fb[]=$Ne.$ob[0];$Ne=$ob;}return$K;}function |
|
355 | +lzw_decompress($za){$gb=256;$_a=8;$Ka=array();$Bd=0;$Cd=0;for($q=0;$q<strlen($za);$q++){$Bd=($Bd<<8)+ord($za[$q]);$Cd+=8;if($Cd>=$_a){$Cd-=$_a;$Ka[]=$Bd>>$Cd;$Bd&=(1<<$Cd)-1;$gb++;if($gb>>$_a) { |
|
356 | + $_a++; |
|
357 | +} |
|
358 | +}}$fb=range("\0","\xFF");$K="";foreach($Ka |
|
359 | +as$q=>$Ja){$ob=$fb[$Ja];if(!isset($ob)) { |
|
360 | + $ob=$Ne.$Ne[0]; |
|
361 | +} |
|
362 | +$K.=$ob;if($q) { |
|
363 | + $fb[]=$Ne.$ob[0]; |
|
364 | +} |
|
365 | +$Ne=$ob;}return$K;}function |
|
152 | 366 | on_help($Pa,$Pd=0){return" onmouseover='helpMouseover(this, event, ".h($Pa).", $Pd);' onmouseout='helpMouseout(this, event);'";}function |
153 | -edit_form($a,$m,$L,$De){global$b,$v,$qe,$k;$de=$b->tableName(table_status1($a,true));page_header(($De?'Edit':'Insert'),$k,array("select"=>array($a,$de)),$de);if($L===false)echo"<p class='error'>".'No rows.'."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form"> |
|
154 | -';if(!$m)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m |
|
155 | -as$D=>$l){echo"<tr><th>".$b->fieldName($l);$cb=$_GET["set"][bracket_escape($D)];if($cb===null){$cb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$cb,$yd))$cb=$yd[1];}$W=($L!==null?($L[$D]!=""&&$v=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$D])?array_sum($L[$D]):+$L[$D]):$L[$D]):(!$De&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$cb)));if(!$_POST["save"]&&is_string($W))$W=$b->editVal($W,$l);$o=($_POST["save"]?(string)$_POST["function"][$D]:($De&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($W===false?null:($W!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$W=="CURRENT_TIMESTAMP"){$W="";$o="now";}input($l,$W,$o);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($De?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n";}echo($De?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'"> |
|
367 | +edit_form($a,$m,$L,$De){global$b,$v,$qe,$k;$de=$b->tableName(table_status1($a,true));page_header(($De?'Edit':'Insert'),$k,array("select"=>array($a,$de)),$de);if($L===false) { |
|
368 | + echo"<p class='error'>".'No rows.'."\n"; |
|
369 | +} |
|
370 | +echo'<form action="" method="post" enctype="multipart/form-data" id="form"> |
|
371 | +';if(!$m) { |
|
372 | + echo"<p class='error'>".'You have no privileges to update this table.'."\n"; |
|
373 | +} else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m |
|
374 | +as$D=>$l){echo"<tr><th>".$b->fieldName($l);$cb=$_GET["set"][bracket_escape($D)];if($cb===null){$cb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$cb,$yd)) { |
|
375 | + $cb=$yd[1]; |
|
376 | +} |
|
377 | +}$W=($L!==null?($L[$D]!=""&&$v=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$D])?array_sum($L[$D]):+$L[$D]):$L[$D]):(!$De&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$cb)));if(!$_POST["save"]&&is_string($W)) { |
|
378 | + $W=$b->editVal($W,$l); |
|
379 | +} |
|
380 | +$o=($_POST["save"]?(string)$_POST["function"][$D]:($De&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($W===false?null:($W!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$W=="CURRENT_TIMESTAMP"){$W="";$o="now";}input($l,$W,$o);echo"\n";}if(!support("table")) { |
|
381 | + echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n"; |
|
382 | +} |
|
383 | +echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"])) { |
|
384 | + echo"<input type='submit' name='insert' value='".($De?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n"; |
|
385 | +} |
|
386 | +}echo($De?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"])) { |
|
387 | + hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"])); |
|
388 | +} |
|
389 | +echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'"> |
|
156 | 390 | <input type="hidden" name="save" value="1"> |
157 | 391 | <input type="hidden" name="token" value="',$qe,'"> |
158 | 392 | </form> |
159 | -';}global$b,$f,$jb,$mb,$ub,$k,$Tb,$Vb,$aa,$lc,$v,$ba,$tc,$Rc,$gd,$Wd,$Zb,$qe,$te,$we,$Ce,$ca;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";$aa=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$ed=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ed[]=true;call_user_func_array('session_set_cookie_params',$ed);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Hb);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function |
|
393 | +';}global$b,$f,$jb,$mb,$ub,$k,$Tb,$Vb,$aa,$lc,$v,$ba,$tc,$Rc,$gd,$Wd,$Zb,$qe,$te,$we,$Ce,$ca;if(!$_SERVER["REQUEST_URI"]) { |
|
394 | + $_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"]; |
|
395 | +} |
|
396 | +if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="") { |
|
397 | + $_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]"; |
|
398 | +} |
|
399 | +$aa=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$ed=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0) { |
|
400 | + $ed[]=true; |
|
401 | +} |
|
402 | +call_user_func_array('session_set_cookie_params',$ed);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Hb);if(get_magic_quotes_runtime()) { |
|
403 | + set_magic_quotes_runtime(false); |
|
404 | +} |
|
405 | +@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function |
|
160 | 406 | get_lang(){return'en';}function |
161 | 407 | lang($se,$Oc=null){if(is_array($se)){$jd=($Oc==1?0:1);$se=$se[$jd];}$se=str_replace("%d","%s",$se);$Oc=format_number($Oc);return |
162 | 408 | sprintf($se,$Oc);}if(extension_loaded('pdo')){class |
163 | 409 | Min_PDO |
164 | 410 | extends |
165 | 411 | PDO{var$_result,$server_info,$affected_rows,$errno,$error;function |
166 | -__construct(){global$b;$jd=array_search("SQL",$b->operators);if($jd!==false)unset($b->operators[$jd]);}function |
|
167 | -dsn($kb,$T,$G){try{parent::__construct($kb,$T,$G);}catch(Exception$xb){auth_error($xb->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function |
|
412 | +__construct(){global$b;$jd=array_search("SQL",$b->operators);if($jd!==false) { |
|
413 | + unset($b->operators[$jd]); |
|
414 | +} |
|
415 | +}function |
|
416 | +dsn($kb,$T,$G){try{parent::__construct($kb,$T,$G);} catch(Exception$xb){auth_error($xb->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function |
|
168 | 417 | query($I,$xe=false){$J=parent::query($I);$this->error="";if(!$J){list(,$this->errno,$this->error)=$this->errorInfo();return |
169 | 418 | false;}$this->store_result($J);return$J;}function |
170 | 419 | multi_query($I){return$this->_result=$this->query($I);}function |
171 | -store_result($J=null){if(!$J){$J=$this->_result;if(!$J)return |
|
172 | -false;}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return |
|
420 | +store_result($J=null){if(!$J){$J=$this->_result;if(!$J) { |
|
421 | + return |
|
422 | +false; |
|
423 | +} |
|
424 | +}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return |
|
173 | 425 | true;}function |
174 | -next_result(){if(!$this->_result)return |
|
175 | -false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function |
|
176 | -result($I,$l=0){$J=$this->query($I);if(!$J)return |
|
177 | -false;$L=$J->fetch();return$L[$l];}}class |
|
426 | +next_result(){if(!$this->_result) { |
|
427 | + return |
|
428 | +false; |
|
429 | +} |
|
430 | +$this->_result->_offset=0;return@$this->_result->nextRowset();}function |
|
431 | +result($I,$l=0){$J=$this->query($I);if(!$J) { |
|
432 | + return |
|
433 | +false; |
|
434 | +} |
|
435 | +$L=$J->fetch();return$L[$l];}}class |
|
178 | 436 | Min_PDOStatement |
179 | 437 | extends |
180 | 438 | PDOStatement{var$_offset=0,$num_rows;function |
@@ -183,11 +441,20 @@ discard block |
||
183 | 441 | fetch_field(){$L=(object)$this->getColumnMeta($this->_offset++);$L->orgtable=$L->table;$L->orgname=$L->name;$L->charsetnr=(in_array("blob",(array)$L->flags)?63:0);return$L;}}}$jb=array();class |
184 | 442 | Min_SQL{var$_conn;function |
185 | 443 | __construct($f){$this->_conn=$f;}function |
186 | -select($R,$N,$Y,$p,$E=array(),$y=1,$F=0,$nd=false){global$b,$v;$u=(count($p)<count($N));$I=$b->selectQueryBuild($N,$Y,$p,$E,$y,$F);if(!$I)$I="SELECT".limit(($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($R),($Y?"\nWHERE ".implode(" AND ",$Y):"").($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):""),($y!=""?+$y:null),($F?$y*$F:0),"\n");$Td=microtime(true);$K=$this->_conn->query($I);if($nd)echo$b->selectQuery($I,format_time($Td));return$K;}function |
|
444 | +select($R,$N,$Y,$p,$E=array(),$y=1,$F=0,$nd=false){global$b,$v;$u=(count($p)<count($N));$I=$b->selectQueryBuild($N,$Y,$p,$E,$y,$F);if(!$I) { |
|
445 | + $I="SELECT".limit(($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($R),($Y?"\nWHERE ".implode(" AND ",$Y):"").($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):""),($y!=""?+$y:null),($F?$y*$F:0),"\n"); |
|
446 | +} |
|
447 | +$Td=microtime(true);$K=$this->_conn->query($I);if($nd) { |
|
448 | + echo$b->selectQuery($I,format_time($Td)); |
|
449 | +} |
|
450 | +return$K;}function |
|
187 | 451 | delete($R,$td,$y=0){$I="FROM ".table($R);return |
188 | 452 | queries("DELETE".($y?limit1($I,$td):" $I$td"));}function |
189 | 453 | update($R,$P,$td,$y=0,$Kd="\n"){$Ge=array();foreach($P |
190 | -as$x=>$V)$Ge[]="$x = $V";$I=table($R)." SET$Kd".implode(",$Kd",$Ge);return |
|
454 | +as$x=>$V) { |
|
455 | + $Ge[]="$x = $V"; |
|
456 | +} |
|
457 | +$I=table($R)." SET$Kd".implode(",$Kd",$Ge);return |
|
191 | 458 | queries("UPDATE".($y?limit1($I,$td):" $I$td"));}function |
192 | 459 | insert($R,$P){return |
193 | 460 | queries("INSERT INTO ".table($R).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function |
@@ -204,15 +471,29 @@ discard block |
||
204 | 471 | MySQLi{var$extension="MySQLi";function |
205 | 472 | __construct(){parent::init();}function |
206 | 473 | connect($O="",$T="",$G="",$Za=null,$id=null,$Qd=null){mysqli_report(MYSQLI_REPORT_OFF);list($dc,$id)=explode(":",$O,2);$K=@$this->real_connect(($O!=""?$dc:ini_get("mysqli.default_host")),($O.$T!=""?$T:ini_get("mysqli.default_user")),($O.$T.$G!=""?$G:ini_get("mysqli.default_pw")),$Za,(is_numeric($id)?$id:ini_get("mysqli.default_port")),(!is_numeric($id)?$id:$Qd));return$K;}function |
207 | -set_charset($Da){if(parent::set_charset($Da))return |
|
208 | -true;parent::set_charset('utf8');return$this->query("SET NAMES $Da");}function |
|
209 | -result($I,$l=0){$J=$this->query($I);if(!$J)return |
|
210 | -false;$L=$J->fetch_array();return$L[$l];}function |
|
211 | -quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class |
|
474 | +set_charset($Da){if(parent::set_charset($Da)) { |
|
475 | + return |
|
476 | +true; |
|
477 | +} |
|
478 | +parent::set_charset('utf8');return$this->query("SET NAMES $Da");}function |
|
479 | +result($I,$l=0){$J=$this->query($I);if(!$J) { |
|
480 | + return |
|
481 | +false; |
|
482 | +} |
|
483 | +$L=$J->fetch_array();return$L[$l];}function |
|
484 | +quote($Q){return"'".$this->escape_string($Q)."'";}}} elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class |
|
212 | 485 | Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function |
213 | -connect($O,$T,$G){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$T"!=""?$T:ini_get("mysql.default_user")),("$O$T$G"!=""?$G:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function |
|
214 | -set_charset($Da){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Da,$this->_link))return |
|
215 | -true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $Da");}function |
|
486 | +connect($O,$T,$G){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$T"!=""?$T:ini_get("mysql.default_user")),("$O$T$G"!=""?$G:ini_get("mysql.default_password")),true,131072);if($this->_link) { |
|
487 | + $this->server_info=mysql_get_server_info($this->_link); |
|
488 | +} else { |
|
489 | + $this->error=mysql_error(); |
|
490 | +} |
|
491 | +return(bool)$this->_link;}function |
|
492 | +set_charset($Da){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Da,$this->_link)) { |
|
493 | + return |
|
494 | +true; |
|
495 | +} |
|
496 | +mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $Da");}function |
|
216 | 497 | quote($Q){return"'".mysql_real_escape_string($Q,$this->_link)."'";}function |
217 | 498 | select_db($Za){return |
218 | 499 | mysql_select_db($Za,$this->_link);}function |
@@ -225,8 +506,11 @@ discard block |
||
225 | 506 | store_result(){return$this->_result;}function |
226 | 507 | next_result(){return |
227 | 508 | false;}function |
228 | -result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows)return |
|
229 | -false;return |
|
509 | +result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows) { |
|
510 | + return |
|
511 | +false; |
|
512 | +} |
|
513 | +return |
|
230 | 514 | mysql_result($J->_result,0,$l);}}class |
231 | 515 | Min_Result{var$num_rows,$_result,$_offset=0;function |
232 | 516 | __construct($J){$this->_result=$J;$this->num_rows=mysql_num_rows($J);}function |
@@ -235,7 +519,7 @@ discard block |
||
235 | 519 | fetch_row(){return |
236 | 520 | mysql_fetch_row($this->_result);}function |
237 | 521 | fetch_field(){$K=mysql_fetch_field($this->_result,$this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=($K->blob?63:0);return$K;}function |
238 | -__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class |
|
522 | +__destruct(){mysql_free_result($this->_result);}}} elseif(extension_loaded("pdo_mysql")){class |
|
239 | 523 | Min_DB |
240 | 524 | extends |
241 | 525 | Min_PDO{var$extension="PDO_MySQL";function |
@@ -250,27 +534,56 @@ discard block |
||
250 | 534 | Min_SQL{function |
251 | 535 | insert($R,$P){return($P?parent::insert($R,$P):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function |
252 | 536 | insertUpdate($R,$M,$md){$e=array_keys(reset($M));$ld="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Ge=array();foreach($e |
253 | -as$x)$Ge[$x]="$x = VALUES($x)";$Zd="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ge);$Ge=array();$xc=0;foreach($M |
|
254 | -as$P){$W="(".implode(", ",$P).")";if($Ge&&(strlen($ld)+$xc+strlen($W)+strlen($Zd)>1e6)){if(!queries($ld.implode(",\n",$Ge).$Zd))return |
|
255 | -false;$Ge=array();$xc=0;}$Ge[]=$W;$xc+=strlen($W)+2;}return |
|
537 | +as$x) { |
|
538 | + $Ge[$x]="$x = VALUES($x)"; |
|
539 | +} |
|
540 | +$Zd="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ge);$Ge=array();$xc=0;foreach($M |
|
541 | +as$P){$W="(".implode(", ",$P).")";if($Ge&&(strlen($ld)+$xc+strlen($W)+strlen($Zd)>1e6)){if(!queries($ld.implode(",\n",$Ge).$Zd)) { |
|
542 | + return |
|
543 | +false; |
|
544 | +} |
|
545 | +$Ge=array();$xc=0;}$Ge[]=$W;$xc+=strlen($W)+2;}return |
|
256 | 546 | queries($ld.implode(",\n",$Ge).$Zd);}}function |
257 | 547 | idf_escape($gc){return"`".str_replace("`","``",$gc)."`";}function |
258 | 548 | table($gc){return |
259 | 549 | idf_escape($gc);}function |
260 | 550 | connect(){global$b;$f=new |
261 | -Min_DB;$Xa=$b->credentials();if($f->connect($Xa[0],$Xa[1],$Xa[2])){$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");return$f;}$K=$f->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($Ed=iconv("windows-1250","utf-8",$K))>strlen($K))$K=$Ed;return$K;}function |
|
551 | +Min_DB;$Xa=$b->credentials();if($f->connect($Xa[0],$Xa[1],$Xa[2])){$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");return$f;}$K=$f->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($Ed=iconv("windows-1250","utf-8",$K))>strlen($K)) { |
|
552 | + $K=$Ed; |
|
553 | +} |
|
554 | +return$K;}function |
|
262 | 555 | get_databases($Jb){global$f;$K=get_session("dbs");if($K===null){$I=($f->server_info>=5?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");$K=($Jb?slow_query($I):get_vals($I));restart_session();set_session("dbs",$K);stop_session();}return$K;}function |
263 | 556 | limit($I,$Y,$y,$Pc=0,$Kd=" "){return" $I$Y".($y!==null?$Kd."LIMIT $y".($Pc?" OFFSET $Pc":""):"");}function |
264 | 557 | limit1($I,$Y){return |
265 | 558 | limit($I,$Y,1);}function |
266 | -db_collation($h,$Na){global$f;$K=null;$Va=$f->result("SHOW CREATE DATABASE ".idf_escape($h),1);if(preg_match('~ COLLATE ([^ ]+)~',$Va,$A))$K=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$Va,$A))$K=$Na[$A[1]][-1];return$K;}function |
|
267 | -engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"]))$K[]=$L["Engine"];}return$K;}function |
|
559 | +db_collation($h,$Na){global$f;$K=null;$Va=$f->result("SHOW CREATE DATABASE ".idf_escape($h),1);if(preg_match('~ COLLATE ([^ ]+)~',$Va,$A)) { |
|
560 | + $K=$A[1]; |
|
561 | +} elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$Va,$A)) { |
|
562 | + $K=$Na[$A[1]][-1]; |
|
563 | +} |
|
564 | +return$K;}function |
|
565 | +engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"])) { |
|
566 | + $K[]=$L["Engine"]; |
|
567 | +} |
|
568 | +}return$K;}function |
|
268 | 569 | logged_user(){global$f;return$f->result("SELECT USER()");}function |
269 | 570 | tables_list(){global$f;return |
270 | 571 | get_key_vals($f->server_info>=5?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function |
271 | 572 | count_tables($ab){$K=array();foreach($ab |
272 | -as$h)$K[$h]=count(get_vals("SHOW TABLES IN ".idf_escape($h)));return$K;}function |
|
273 | -table_status($D="",$Cb=false){global$f;$K=array();foreach(get_rows($Cb&&$f->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($D!=""?"AND TABLE_NAME = ".q($D):"ORDER BY Name"):"SHOW TABLE STATUS".($D!=""?" LIKE ".q(addcslashes($D,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB")$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]);if(!isset($L["Engine"]))$L["Comment"]="";if($D!="")return$L;$K[$L["Name"]]=$L;}return$K;}function |
|
573 | +as$h) { |
|
574 | + $K[$h]=count(get_vals("SHOW TABLES IN ".idf_escape($h))); |
|
575 | +} |
|
576 | +return$K;}function |
|
577 | +table_status($D="",$Cb=false){global$f;$K=array();foreach(get_rows($Cb&&$f->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($D!=""?"AND TABLE_NAME = ".q($D):"ORDER BY Name"):"SHOW TABLE STATUS".($D!=""?" LIKE ".q(addcslashes($D,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB") { |
|
578 | + $L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]); |
|
579 | +} |
|
580 | +if(!isset($L["Engine"])) { |
|
581 | + $L["Comment"]=""; |
|
582 | +} |
|
583 | +if($D!="") { |
|
584 | + return$L; |
|
585 | +} |
|
586 | +$K[$L["Name"]]=$L;}return$K;}function |
|
274 | 587 | is_view($S){return$S["Engine"]===null;}function |
275 | 588 | fk_support($S){global$f;return |
276 | 589 | preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&version_compare($f->server_info,'5.6')>=0);}function |
@@ -280,21 +593,53 @@ discard block |
||
280 | 593 | as$A){preg_match_all("~$H~",$A[2],$Rd);preg_match_all("~$H~",$A[5],$fe);$K[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('idf_unescape',$Rd[0]),"target"=>array_map('idf_unescape',$fe[0]),"on_delete"=>($A[6]?$A[6]:"RESTRICT"),"on_update"=>($A[7]?$A[7]:"RESTRICT"),);}}return$K;}function |
281 | 594 | view($D){global$f;return |
282 | 595 | array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$f->result("SHOW CREATE VIEW ".table($D),1)));}function |
283 | -collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"])$K[$L["Charset"]][-1]=$L["Collation"];else$K[$L["Charset"]][]=$L["Collation"];}ksort($K);foreach($K |
|
284 | -as$x=>$V)asort($K[$x]);return$K;}function |
|
596 | +collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"]) { |
|
597 | + $K[$L["Charset"]][-1]=$L["Collation"]; |
|
598 | +} else { |
|
599 | + $K[$L["Charset"]][]=$L["Collation"]; |
|
600 | +} |
|
601 | +}ksort($K);foreach($K |
|
602 | +as$x=>$V) { |
|
603 | + asort($K[$x]); |
|
604 | +} |
|
605 | +return$K;}function |
|
285 | 606 | information_schema($h){global$f;return($f->server_info>=5&&$h=="information_schema")||($f->server_info>=5.5&&$h=="performance_schema");}function |
286 | 607 | error(){global$f;return |
287 | 608 | h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$f->error));}function |
288 | 609 | create_database($h,$Ma){return |
289 | 610 | queries("CREATE DATABASE ".idf_escape($h).($Ma?" COLLATE ".q($Ma):""));}function |
290 | 611 | drop_databases($ab){$K=apply_queries("DROP DATABASE",$ab,'idf_escape');restart_session();set_session("dbs",null);return$K;}function |
291 | -rename_database($D,$Ma){$K=false;if(create_database($D,$Ma)){$zd=array();foreach(tables_list()as$R=>$ue)$zd[]=table($R)." TO ".idf_escape($D).".".table($R);$K=(!$zd||queries("RENAME TABLE ".implode(", ",$zd)));if($K)queries("DROP DATABASE ".idf_escape(DB));restart_session();set_session("dbs",null);}return$K;}function |
|
292 | -auto_increment(){$ta=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$s){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$s["columns"],true)){$ta="";break;}if($s["type"]=="PRIMARY")$ta=" UNIQUE";}}return" AUTO_INCREMENT$ta";}function |
|
612 | +rename_database($D,$Ma){$K=false;if(create_database($D,$Ma)){$zd=array();foreach(tables_list()as$R=>$ue) { |
|
613 | + $zd[]=table($R)." TO ".idf_escape($D).".".table($R); |
|
614 | +} |
|
615 | +$K=(!$zd||queries("RENAME TABLE ".implode(", ",$zd)));if($K) { |
|
616 | + queries("DROP DATABASE ".idf_escape(DB)); |
|
617 | +} |
|
618 | +restart_session();set_session("dbs",null);}return$K;}function |
|
619 | +auto_increment(){$ta=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$s){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$s["columns"],true)){$ta="";break;}if($s["type"]=="PRIMARY") { |
|
620 | + $ta=" UNIQUE"; |
|
621 | +} |
|
622 | +}}return" AUTO_INCREMENT$ta";}function |
|
293 | 623 | alter_table($R,$D,$m,$Kb,$Qa,$tb,$Ma,$sa,$fd){$ma=array();foreach($m |
294 | -as$l)$ma[]=($l[1]?($R!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($R!=""?$l[2]:""):"DROP ".idf_escape($l[0]));$ma=array_merge($ma,$Kb);$Ud=($Qa!==null?" COMMENT=".q($Qa):"").($tb?" ENGINE=".q($tb):"").($Ma?" COLLATE ".q($Ma):"").($sa!=""?" AUTO_INCREMENT=$sa":"");if($R=="")return |
|
295 | -queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$ma)."\n)$Ud$fd");if($R!=$D)$ma[]="RENAME TO ".table($D);if($Ud)$ma[]=ltrim($Ud);return($ma||$fd?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$ma).$fd):true);}function |
|
624 | +as$l) { |
|
625 | + $ma[]=($l[1]?($R!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($R!=""?$l[2]:""):"DROP ".idf_escape($l[0])); |
|
626 | +} |
|
627 | +$ma=array_merge($ma,$Kb);$Ud=($Qa!==null?" COMMENT=".q($Qa):"").($tb?" ENGINE=".q($tb):"").($Ma?" COLLATE ".q($Ma):"").($sa!=""?" AUTO_INCREMENT=$sa":"");if($R=="") { |
|
628 | + return |
|
629 | +queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$ma)."\n)$Ud$fd"); |
|
630 | +} |
|
631 | +if($R!=$D) { |
|
632 | + $ma[]="RENAME TO ".table($D); |
|
633 | +} |
|
634 | +if($Ud) { |
|
635 | + $ma[]=ltrim($Ud); |
|
636 | +} |
|
637 | +return($ma||$fd?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$ma).$fd):true);}function |
|
296 | 638 | alter_indexes($R,$ma){foreach($ma |
297 | -as$x=>$V)$ma[$x]=($V[2]=="DROP"?"\nDROP INDEX ".idf_escape($V[1]):"\nADD $V[0] ".($V[0]=="PRIMARY"?"KEY ":"").($V[1]!=""?idf_escape($V[1])." ":"")."(".implode(", ",$V[2]).")");return |
|
639 | +as$x=>$V) { |
|
640 | + $ma[$x]=($V[2]=="DROP"?"\nDROP INDEX ".idf_escape($V[1]):"\nADD $V[0] ".($V[0]=="PRIMARY"?"KEY ":"").($V[1]!=""?idf_escape($V[1])." ":"")."(".implode(", ",$V[2]).")"); |
|
641 | +} |
|
642 | +return |
|
298 | 643 | queries("ALTER TABLE ".table($R).implode(",",$ma));}function |
299 | 644 | truncate_tables($ee){return |
300 | 645 | apply_queries("TRUNCATE TABLE",$ee);}function |
@@ -302,23 +647,41 @@ discard block |
||
302 | 647 | queries("DROP VIEW ".implode(", ",array_map('table',$Ie)));}function |
303 | 648 | drop_tables($ee){return |
304 | 649 | queries("DROP TABLE ".implode(", ",array_map('table',$ee)));}function |
305 | -move_tables($ee,$Ie,$fe){$zd=array();foreach(array_merge($ee,$Ie)as$R)$zd[]=table($R)." TO ".idf_escape($fe).".".table($R);return |
|
650 | +move_tables($ee,$Ie,$fe){$zd=array();foreach(array_merge($ee,$Ie)as$R) { |
|
651 | + $zd[]=table($R)." TO ".idf_escape($fe).".".table($R); |
|
652 | +} |
|
653 | +return |
|
306 | 654 | queries("RENAME TABLE ".implode(", ",$zd));}function |
307 | 655 | copy_tables($ee,$Ie,$fe){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($ee |
308 | -as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));if(!queries("\nDROP TABLE IF EXISTS $D")||!queries("CREATE TABLE $D LIKE ".table($R))||!queries("INSERT INTO $D SELECT * FROM ".table($R)))return |
|
309 | -false;}foreach($Ie |
|
310 | -as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));$He=view($R);if(!queries("DROP VIEW IF EXISTS $D")||!queries("CREATE VIEW $D AS $He[select]"))return |
|
311 | -false;}return |
|
656 | +as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));if(!queries("\nDROP TABLE IF EXISTS $D")||!queries("CREATE TABLE $D LIKE ".table($R))||!queries("INSERT INTO $D SELECT * FROM ".table($R))) { |
|
657 | + return |
|
658 | +false; |
|
659 | +} |
|
660 | +}foreach($Ie |
|
661 | +as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));$He=view($R);if(!queries("DROP VIEW IF EXISTS $D")||!queries("CREATE VIEW $D AS $He[select]")) { |
|
662 | + return |
|
663 | +false; |
|
664 | +} |
|
665 | +}return |
|
312 | 666 | true;}function |
313 | -trigger($D){if($D=="")return |
|
314 | -array();$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));return |
|
667 | +trigger($D){if($D=="") { |
|
668 | + return |
|
669 | +array(); |
|
670 | +} |
|
671 | +$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));return |
|
315 | 672 | reset($M);}function |
316 | -triggers($R){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$L)$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);return$K;}function |
|
673 | +triggers($R){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$L) { |
|
674 | + $K[$L["Trigger"]]=array($L["Timing"],$L["Event"]); |
|
675 | +} |
|
676 | +return$K;}function |
|
317 | 677 | trigger_options(){return |
318 | 678 | array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function |
319 | 679 | routine($D,$ue){global$f,$ub,$lc,$we;$la=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$ve="((".implode("|",array_merge(array_keys($we),$la)).")\\b(?:\\s*\\(((?:[^'\")]|$ub)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$H="\\s*(".($ue=="FUNCTION"?"":$lc).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$ve";$Va=$f->result("SHOW CREATE $ue ".idf_escape($D),2);preg_match("~\\(((?:$H\\s*,?)*)\\)\\s*".($ue=="FUNCTION"?"RETURNS\\s+$ve\\s+":"")."(.*)~is",$Va,$A);$m=array();preg_match_all("~$H\\s*,?~is",$A[1],$Bc,PREG_SET_ORDER);foreach($Bc |
320 | -as$dd){$D=str_replace("``","`",$dd[2]).$dd[3];$m[]=array("field"=>$D,"type"=>strtolower($dd[5]),"length"=>preg_replace_callback("~$ub~s",'normalize_enum',$dd[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$dd[8] $dd[7]"))),"null"=>1,"full_type"=>$dd[4],"inout"=>strtoupper($dd[1]),"collation"=>strtolower($dd[9]),);}if($ue!="FUNCTION")return |
|
321 | -array("fields"=>$m,"definition"=>$A[11]);return |
|
680 | +as$dd){$D=str_replace("``","`",$dd[2]).$dd[3];$m[]=array("field"=>$D,"type"=>strtolower($dd[5]),"length"=>preg_replace_callback("~$ub~s",'normalize_enum',$dd[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$dd[8] $dd[7]"))),"null"=>1,"full_type"=>$dd[4],"inout"=>strtoupper($dd[1]),"collation"=>strtolower($dd[9]),);}if($ue!="FUNCTION") { |
|
681 | + return |
|
682 | +array("fields"=>$m,"definition"=>$A[11]); |
|
683 | +} |
|
684 | +return |
|
322 | 685 | array("fields"=>$m,"returns"=>array("type"=>$A[12],"length"=>$A[13],"unsigned"=>$A[15],"collation"=>$A[16]),"definition"=>$A[17],"language"=>"SQL",);}function |
323 | 686 | routines(){return |
324 | 687 | get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function |
@@ -334,18 +697,42 @@ discard block |
||
334 | 697 | get_schema(){return"";}function |
335 | 698 | set_schema($Fd){return |
336 | 699 | true;}function |
337 | -create_sql($R,$sa){global$f;$K=$f->result("SHOW CREATE TABLE ".table($R),1);if(!$sa)$K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K);return$K;}function |
|
700 | +create_sql($R,$sa){global$f;$K=$f->result("SHOW CREATE TABLE ".table($R),1);if(!$sa) { |
|
701 | + $K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K); |
|
702 | +} |
|
703 | +return$K;}function |
|
338 | 704 | truncate_sql($R){return"TRUNCATE ".table($R);}function |
339 | 705 | use_sql($Za){return"USE ".idf_escape($Za);}function |
340 | -trigger_sql($R,$Xd){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$L)$K.="\n".($Xd=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";return$K;}function |
|
706 | +trigger_sql($R,$Xd){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$L) { |
|
707 | + $K.="\n".($Xd=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n"; |
|
708 | +} |
|
709 | +return$K;}function |
|
341 | 710 | show_variables(){return |
342 | 711 | get_key_vals("SHOW VARIABLES");}function |
343 | 712 | process_list(){return |
344 | 713 | get_rows("SHOW FULL PROCESSLIST");}function |
345 | 714 | show_status(){return |
346 | 715 | get_key_vals("SHOW STATUS");}function |
347 | -convert_field($l){if(preg_match("~binary~",$l["type"]))return"HEX(".idf_escape($l["field"]).")";if($l["type"]=="bit")return"BIN(".idf_escape($l["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))return"AsWKT(".idf_escape($l["field"]).")";}function |
|
348 | -unconvert_field($l,$K){if(preg_match("~binary~",$l["type"]))$K="UNHEX($K)";if($l["type"]=="bit")$K="CONV($K, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))$K="GeomFromText($K)";return$K;}function |
|
716 | +convert_field($l){if(preg_match("~binary~",$l["type"])) { |
|
717 | + return"HEX(".idf_escape($l["field"]).")"; |
|
718 | +} |
|
719 | +if($l["type"]=="bit") { |
|
720 | + return"BIN(".idf_escape($l["field"])." + 0)"; |
|
721 | +} |
|
722 | +if(preg_match("~geometry|point|linestring|polygon~",$l["type"])) { |
|
723 | + return"AsWKT(".idf_escape($l["field"]).")"; |
|
724 | +} |
|
725 | +}function |
|
726 | +unconvert_field($l,$K){if(preg_match("~binary~",$l["type"])) { |
|
727 | + $K="UNHEX($K)"; |
|
728 | +} |
|
729 | +if($l["type"]=="bit") { |
|
730 | + $K="CONV($K, 2, 10) + 0"; |
|
731 | +} |
|
732 | +if(preg_match("~geometry|point|linestring|polygon~",$l["type"])) { |
|
733 | + $K="GeomFromText($K)"; |
|
734 | +} |
|
735 | +return$K;}function |
|
349 | 736 | support($Db){global$f;return!preg_match("~scheme|sequence|type|view_trigger".($f->server_info<5.1?"|event|partitioning".($f->server_info<5?"|routine|trigger|view":""):"")."~",$Db);}function |
350 | 737 | kill_process($V){return |
351 | 738 | queries("KILL ".number($V));}function |
@@ -382,7 +769,10 @@ discard block |
||
382 | 769 | h($ce["Comment"]!=""?$ce["Comment"]:$ce["Name"]);}function |
383 | 770 | fieldName($l,$E=0){return |
384 | 771 | h($l["comment"]!=""?$l["comment"]:$l["field"]);}function |
385 | -selectLinks($ce,$P=""){$a=$ce["Name"];if($P!==null)echo'<p class="tabs"><a href="'.h(ME.'edit='.urlencode($a).$P).'">'.'New item'."</a>\n";}function |
|
772 | +selectLinks($ce,$P=""){$a=$ce["Name"];if($P!==null) { |
|
773 | + echo'<p class="tabs"><a href="'.h(ME.'edit='.urlencode($a).$P).'">'.'New item'."</a>\n"; |
|
774 | +} |
|
775 | +}function |
|
386 | 776 | foreignKeys($R){return |
387 | 777 | foreign_keys($R);}function |
388 | 778 | backwardKeys($R,$be){$K=array();foreach(get_rows("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME |
@@ -390,30 +780,85 @@ discard block |
||
390 | 780 | WHERE TABLE_SCHEMA = ".q($this->database())." |
391 | 781 | AND REFERENCED_TABLE_SCHEMA = ".q($this->database())." |
392 | 782 | AND REFERENCED_TABLE_NAME = ".q($R)." |
393 | -ORDER BY ORDINAL_POSITION",null,"")as$L)$K[$L["TABLE_NAME"]]["keys"][$L["CONSTRAINT_NAME"]][$L["COLUMN_NAME"]]=$L["REFERENCED_COLUMN_NAME"];foreach($K |
|
394 | -as$x=>$V){$D=$this->tableName(table_status($x,true));if($D!=""){$Gd=preg_quote($be);$Kd="(:|\\s*-)?\\s+";$K[$x]["name"]=(preg_match("(^$Gd$Kd(.+)|^(.+?)$Kd$Gd\$)iu",$D,$A)?$A[2].$A[3]:$D);}else |
|
395 | -unset($K[$x]);}return$K;}function |
|
783 | +ORDER BY ORDINAL_POSITION",null,"")as$L) { |
|
784 | + $K[$L["TABLE_NAME"]]["keys"][$L["CONSTRAINT_NAME"]][$L["COLUMN_NAME"]]=$L["REFERENCED_COLUMN_NAME"]; |
|
785 | +} |
|
786 | +foreach($K |
|
787 | +as$x=>$V){$D=$this->tableName(table_status($x,true));if($D!=""){$Gd=preg_quote($be);$Kd="(:|\\s*-)?\\s+";$K[$x]["name"]=(preg_match("(^$Gd$Kd(.+)|^(.+?)$Kd$Gd\$)iu",$D,$A)?$A[2].$A[3]:$D);} else { |
|
788 | + unset($K[$x]); |
|
789 | +} |
|
790 | +}return$K;}function |
|
396 | 791 | backwardKeysPrint($wa,$L){foreach($wa |
397 | 792 | as$R=>$va){foreach($va["keys"]as$Oa){$z=ME.'select='.urlencode($R);$q=0;foreach($Oa |
398 | -as$d=>$V)$z.=where_link($q++,$d,$L[$V]);echo"<a href='".h($z)."'>".h($va["name"])."</a>";$z=ME.'edit='.urlencode($R);foreach($Oa |
|
399 | -as$d=>$V)$z.="&set".urlencode("[".bracket_escape($d)."]")."=".urlencode($L[$V]);echo"<a href='".h($z)."' title='".'New item'."'>+</a> ";}}}function |
|
793 | +as$d=>$V) { |
|
794 | + $z.=where_link($q++,$d,$L[$V]); |
|
795 | +} |
|
796 | +echo"<a href='".h($z)."'>".h($va["name"])."</a>";$z=ME.'edit='.urlencode($R);foreach($Oa |
|
797 | +as$d=>$V) { |
|
798 | + $z.="&set".urlencode("[".bracket_escape($d)."]")."=".urlencode($L[$V]); |
|
799 | +} |
|
800 | +echo"<a href='".h($z)."' title='".'New item'."'>+</a> ";}}}function |
|
400 | 801 | selectQuery($I,$je){return"<!--\n".str_replace("--","--><!-- ",$I)."\n($je)\n-->\n";}function |
401 | -rowDescription($R){foreach(fields($R)as$l){if(preg_match("~varchar|character varying~",$l["type"]))return |
|
402 | -idf_escape($l["field"]);}return"";}function |
|
802 | +rowDescription($R){foreach(fields($R)as$l){if(preg_match("~varchar|character varying~",$l["type"])) { |
|
803 | + return |
|
804 | +idf_escape($l["field"]); |
|
805 | +} |
|
806 | +}return"";}function |
|
403 | 807 | rowDescriptions($M,$Mb){$K=$M;foreach($M[0]as$x=>$V){if(list($R,$r,$D)=$this->_foreignColumn($Mb,$x)){$hc=array();foreach($M |
404 | -as$L)$hc[$L[$x]]=q($L[$x]);$eb=$this->_values[$R];if(!$eb)$eb=get_key_vals("SELECT $r, $D FROM ".table($R)." WHERE $r IN (".implode(", ",$hc).")");foreach($M |
|
405 | -as$C=>$L){if(isset($L[$x]))$K[$C][$x]=(string)$eb[$L[$x]];}}}return$K;}function |
|
808 | +as$L) { |
|
809 | + $hc[$L[$x]]=q($L[$x]); |
|
810 | +} |
|
811 | +$eb=$this->_values[$R];if(!$eb) { |
|
812 | + $eb=get_key_vals("SELECT $r, $D FROM ".table($R)." WHERE $r IN (".implode(", ",$hc).")"); |
|
813 | +} |
|
814 | +foreach($M |
|
815 | +as$C=>$L){if(isset($L[$x])) { |
|
816 | + $K[$C][$x]=(string)$eb[$L[$x]]; |
|
817 | +} |
|
818 | +}}}return$K;}function |
|
406 | 819 | selectLink($V,$l){}function |
407 | -selectVal($V,$z,$l,$ad){$K=($V===null?" ":$V);$z=h($z);if(preg_match('~blob|bytea~',$l["type"])&&!is_utf8($V)){$K=lang(array('%d byte','%d bytes'),strlen($ad));if(preg_match("~^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)~",$ad))$K="<img src='$z' alt='$K'>";}if(like_bool($l)&&$K!=" ")$K=($V?'yes':'no');if($z)$K="<a href='$z'".(is_url($z)?" rel='noreferrer'":"").">$K</a>";if(!$z&&!like_bool($l)&&preg_match('~int|float|double|decimal~',$l["type"]))$K="<div class='number'>$K</div>";elseif(preg_match('~date~',$l["type"]))$K="<div class='datetime'>$K</div>";return$K;}function |
|
408 | -editVal($V,$l){if(preg_match('~date|timestamp~',$l["type"])&&$V!==null)return |
|
409 | -preg_replace('~^(\\d{2}(\\d+))-(0?(\\d+))-(0?(\\d+))~','$1-$3-$5',$V);return$V;}function |
|
820 | +selectVal($V,$z,$l,$ad){$K=($V===null?" ":$V);$z=h($z);if(preg_match('~blob|bytea~',$l["type"])&&!is_utf8($V)){$K=lang(array('%d byte','%d bytes'),strlen($ad));if(preg_match("~^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)~",$ad)) { |
|
821 | + $K="<img src='$z' alt='$K'>"; |
|
822 | +} |
|
823 | +}if(like_bool($l)&&$K!=" ") { |
|
824 | + $K=($V?'yes':'no'); |
|
825 | +} |
|
826 | +if($z) { |
|
827 | + $K="<a href='$z'".(is_url($z)?" rel='noreferrer'":"").">$K</a>"; |
|
828 | +} |
|
829 | +if(!$z&&!like_bool($l)&&preg_match('~int|float|double|decimal~',$l["type"])) { |
|
830 | + $K="<div class='number'>$K</div>"; |
|
831 | +} elseif(preg_match('~date~',$l["type"])) { |
|
832 | + $K="<div class='datetime'>$K</div>"; |
|
833 | +} |
|
834 | +return$K;}function |
|
835 | +editVal($V,$l){if(preg_match('~date|timestamp~',$l["type"])&&$V!==null) { |
|
836 | + return |
|
837 | +preg_replace('~^(\\d{2}(\\d+))-(0?(\\d+))-(0?(\\d+))~','$1-$3-$5',$V); |
|
838 | +} |
|
839 | +return$V;}function |
|
410 | 840 | selectColumnsPrint($N,$e){}function |
411 | 841 | selectSearchPrint($Y,$e,$t){$Y=(array)$_GET["where"];echo'<fieldset id="fieldset-search"><legend>'.'Search'."</legend><div>\n";$qc=array();foreach($Y |
412 | -as$x=>$V)$qc[$V["col"]]=$x;$q=0;$m=fields($_GET["select"]);foreach($e |
|
413 | -as$D=>$db){$l=$m[$D];if(preg_match("~enum~",$l["type"])||like_bool($l)){$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'>:",(like_bool($l)?" <select name='where[$q][val]'>".optionlist(array(""=>"",'no','yes'),$Y[$x]["val"],true)."</select>":enum_input("checkbox"," name='where[$q][val][]'",$l,(array)$Y[$x]["val"],($l["null"]?0:null))),"</div>\n";unset($e[$D]);}elseif(is_array($Xc=$this->_foreignKeyOptions($_GET["select"],$D))){if($m[$D]["null"])$Xc[0]='('.'empty'.')';$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'><input type='hidden' name='where[$q][op]' value='='>: <select name='where[$q][val]'>".optionlist($Xc,$Y[$x]["val"],true)."</select></div>\n";unset($e[$D]);}}$q=0;foreach($Y |
|
842 | +as$x=>$V) { |
|
843 | + $qc[$V["col"]]=$x; |
|
844 | +} |
|
845 | +$q=0;$m=fields($_GET["select"]);foreach($e |
|
846 | +as$D=>$db){$l=$m[$D];if(preg_match("~enum~",$l["type"])||like_bool($l)){$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'>:",(like_bool($l)?" <select name='where[$q][val]'>".optionlist(array(""=>"",'no','yes'),$Y[$x]["val"],true)."</select>":enum_input("checkbox"," name='where[$q][val][]'",$l,(array)$Y[$x]["val"],($l["null"]?0:null))),"</div>\n";unset($e[$D]);} elseif(is_array($Xc=$this->_foreignKeyOptions($_GET["select"],$D))){if($m[$D]["null"]) { |
|
847 | + $Xc[0]='('.'empty'.')'; |
|
848 | +} |
|
849 | +$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'><input type='hidden' name='where[$q][op]' value='='>: <select name='where[$q][val]'>".optionlist($Xc,$Y[$x]["val"],true)."</select></div>\n";unset($e[$D]);}}$q=0;foreach($Y |
|
414 | 850 | as$V){if(($V["col"]==""||$e[$V["col"]])&&"$V[col]$V[val]"!=""){echo"<div><select name='where[$q][col]'><option value=''>(".'anywhere'.")".optionlist($e,$V["col"],true)."</select>",html_select("where[$q][op]",array(-1=>"")+$this->operators,$V["op"]),"<input type='search' name='where[$q][val]' value='".h($V["val"])."' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n";$q++;}}echo"<div><select name='where[$q][col]' onchange='this.nextSibling.nextSibling.onchange();'><option value=''>(".'anywhere'.")".optionlist($e,null,true)."</select>",html_select("where[$q][op]",array(-1=>"")+$this->operators),"<input type='search' name='where[$q][val]' onchange='selectAddRow(this);' onsearch='selectSearch(this);'></div>\n","</div></fieldset>\n";}function |
415 | 851 | selectOrderPrint($E,$e,$t){$Zc=array();foreach($t |
416 | -as$x=>$s){$E=array();foreach($s["columns"]as$V)$E[]=$e[$V];if(count(array_filter($E,'strlen'))>1&&$x!="PRIMARY")$Zc[$x]=implode(", ",$E);}if($Zc){echo'<fieldset><legend>'.'Sort'."</legend><div>","<select name='index_order'>".optionlist(array(""=>"")+$Zc,($_GET["order"][0]!=""?"":$_GET["index_order"]),true)."</select>","</div></fieldset>\n";}if($_GET["order"])echo"<div style='display: none;'>".hidden_fields(array("order"=>array(1=>reset($_GET["order"])),"desc"=>($_GET["desc"]?array(1=>1):array()),))."</div>\n";}function |
|
852 | +as$x=>$s){$E=array();foreach($s["columns"]as$V) { |
|
853 | + $E[]=$e[$V]; |
|
854 | +} |
|
855 | +if(count(array_filter($E,'strlen'))>1&&$x!="PRIMARY") { |
|
856 | + $Zc[$x]=implode(", ",$E); |
|
857 | +} |
|
858 | +}if($Zc){echo'<fieldset><legend>'.'Sort'."</legend><div>","<select name='index_order'>".optionlist(array(""=>"")+$Zc,($_GET["order"][0]!=""?"":$_GET["index_order"]),true)."</select>","</div></fieldset>\n";}if($_GET["order"]) { |
|
859 | + echo"<div style='display: none;'>".hidden_fields(array("order"=>array(1=>reset($_GET["order"])),"desc"=>($_GET["desc"]?array(1=>1):array()),))."</div>\n"; |
|
860 | +} |
|
861 | +}function |
|
417 | 862 | selectLimitPrint($y){echo"<fieldset><legend>".'Limit'."</legend><div>";echo |
418 | 863 | html_select("limit",array("","50","100"),$y),"</div></fieldset>\n";}function |
419 | 864 | selectLengthPrint($he){}function |
@@ -425,20 +870,86 @@ discard block |
||
425 | 870 | selectEmailPrint($qb,$e){if($qb){print_fieldset("email",'E-mail',$_POST["email_append"]);echo"<div onkeydown=\"eventStop(event); return bodyKeydown(event, 'email');\">\n","<p>".'From'.": <input name='email_from' value='".h($_POST?$_POST["email_from"]:$_COOKIE["adminer_email"])."'>\n",'Subject'.": <input name='email_subject' value='".h($_POST["email_subject"])."'>\n","<p><textarea name='email_message' rows='15' cols='75'>".h($_POST["email_message"].($_POST["email_append"]?'{$'."$_POST[email_addition]}":""))."</textarea>\n","<p onkeydown=\"eventStop(event); return bodyKeydown(event, 'email_append');\">".html_select("email_addition",$e,$_POST["email_addition"])."<input type='submit' name='email_append' value='".'Insert'."'>\n";echo"<p>".'Attachments'.": <input type='file' name='email_files[]' onchange=\"this.onchange = function () { }; var el = this.cloneNode(true); el.value = ''; this.parentNode.appendChild(el);\">","<p>".(count($qb)==1?'<input type="hidden" name="email_field" value="'.h(key($qb)).'">':html_select("email_field",$qb)),"<input type='submit' name='email' value='".'Send'."' onclick=\"return this.form['delete'].onclick();\">\n","</div>\n","</div></fieldset>\n";}}function |
426 | 871 | selectColumnsProcess($e,$t){return |
427 | 872 | array(array(),array());}function |
428 | -selectSearchProcess($m,$t){$K=array();foreach((array)$_GET["where"]as$x=>$Y){$La=$Y["col"];$Uc=$Y["op"];$V=$Y["val"];if(($x<0?"":$La).$V!=""){$Ra=array();foreach(($La!=""?array($La=>$m[$La]):$m)as$D=>$l){if($La!=""||is_numeric($V)||!preg_match('~int|float|double|decimal~',$l["type"])){$D=idf_escape($D);if($La!=""&&$l["type"]=="enum")$Ra[]=(in_array(0,$V)?"$D IS NULL OR ":"")."$D IN (".implode(", ",array_map('intval',$V)).")";else{$ie=preg_match('~char|text|enum|set~',$l["type"]);$W=$this->processInput($l,(!$Uc&&$ie&&preg_match('~^[^%]+$~',$V)?"%$V%":$V));$Ra[]=$D.($W=="NULL"?" IS".($Uc==">="?" NOT":"")." $W":(in_array($Uc,$this->operators)||$Uc=="="?" $Uc $W":($ie?" LIKE $W":" IN (".str_replace(",","', '",$W).")")));if($x<0&&$V=="0")$Ra[]="$D IS NULL";}}}$K[]=($Ra?"(".implode(" OR ",$Ra).")":"0");}}return$K;}function |
|
429 | -selectOrderProcess($m,$t){$jc=$_GET["index_order"];if($jc!="")unset($_GET["order"][1]);if($_GET["order"])return |
|
430 | -array(idf_escape(reset($_GET["order"])).($_GET["desc"]?" DESC":""));foreach(($jc!=""?array($t[$jc]):$t)as$s){if($jc!=""||$s["type"]=="INDEX"){$Xb=array_filter($s["descs"]);$db=false;foreach($s["columns"]as$V){if(preg_match('~date|timestamp~',$m[$V]["type"])){$db=true;break;}}$K=array();foreach($s["columns"]as$x=>$V)$K[]=idf_escape($V).(($Xb?$s["descs"][$x]:$db)?" DESC":"");return$K;}}return |
|
873 | +selectSearchProcess($m,$t){$K=array();foreach((array)$_GET["where"]as$x=>$Y){$La=$Y["col"];$Uc=$Y["op"];$V=$Y["val"];if(($x<0?"":$La).$V!=""){$Ra=array();foreach(($La!=""?array($La=>$m[$La]):$m)as$D=>$l){if($La!=""||is_numeric($V)||!preg_match('~int|float|double|decimal~',$l["type"])){$D=idf_escape($D);if($La!=""&&$l["type"]=="enum") { |
|
874 | + $Ra[]=(in_array(0,$V)?"$D IS NULL OR ":"")."$D IN (".implode(", ",array_map('intval',$V)).")"; |
|
875 | +} else{$ie=preg_match('~char|text|enum|set~',$l["type"]);$W=$this->processInput($l,(!$Uc&&$ie&&preg_match('~^[^%]+$~',$V)?"%$V%":$V));$Ra[]=$D.($W=="NULL"?" IS".($Uc==">="?" NOT":"")." $W":(in_array($Uc,$this->operators)||$Uc=="="?" $Uc $W":($ie?" LIKE $W":" IN (".str_replace(",","', '",$W).")")));if($x<0&&$V=="0") { |
|
876 | + $Ra[]="$D IS NULL"; |
|
877 | +} |
|
878 | +}}}$K[]=($Ra?"(".implode(" OR ",$Ra).")":"0");}}return$K;}function |
|
879 | +selectOrderProcess($m,$t){$jc=$_GET["index_order"];if($jc!="") { |
|
880 | + unset($_GET["order"][1]); |
|
881 | +} |
|
882 | +if($_GET["order"]) { |
|
883 | + return |
|
884 | +array(idf_escape(reset($_GET["order"])).($_GET["desc"]?" DESC":"")); |
|
885 | +} |
|
886 | +foreach(($jc!=""?array($t[$jc]):$t)as$s){if($jc!=""||$s["type"]=="INDEX"){$Xb=array_filter($s["descs"]);$db=false;foreach($s["columns"]as$V){if(preg_match('~date|timestamp~',$m[$V]["type"])){$db=true;break;}}$K=array();foreach($s["columns"]as$x=>$V) { |
|
887 | + $K[]=idf_escape($V).(($Xb?$s["descs"][$x]:$db)?" DESC":""); |
|
888 | +} |
|
889 | +return$K;}}return |
|
431 | 890 | array();}function |
432 | 891 | selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function |
433 | 892 | selectLengthProcess(){return"100";}function |
434 | -selectEmailProcess($Y,$Mb){if($_POST["email_append"])return |
|
435 | -true;if($_POST["email"]){$Jd=0;if($_POST["all"]||$_POST["check"]){$l=idf_escape($_POST["email_field"]);$Yd=$_POST["email_subject"];$B=$_POST["email_message"];preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i',"$Yd.$B",$Bc);$M=get_rows("SELECT DISTINCT $l".($Bc[1]?", ".implode(", ",array_map('idf_escape',array_unique($Bc[1]))):"")." FROM ".table($_GET["select"])." WHERE $l IS NOT NULL AND $l != ''".($Y?" AND ".implode(" AND ",$Y):"").($_POST["all"]?"":" AND ((".implode(") OR (",array_map('where_check',(array)$_POST["check"]))."))"));$m=fields($_GET["select"]);foreach($this->rowDescriptions($M,$Mb)as$L){$_d=array('{\\'=>'{');foreach($Bc[1]as$V)$_d['{$'."$V}"]=$this->editVal($L[$V],$m[$V]);$pb=$L[$_POST["email_field"]];if(is_mail($pb)&&send_mail($pb,strtr($Yd,$_d),strtr($B,$_d),$_POST["email_from"],$_FILES["email_files"]))$Jd++;}}cookie("adminer_email",$_POST["email_from"]);redirect(remove_from_uri(),lang(array('%d e-mail has been sent.','%d e-mails have been sent.'),$Jd));}return |
|
893 | +selectEmailProcess($Y,$Mb){if($_POST["email_append"]) { |
|
894 | + return |
|
895 | +true; |
|
896 | +} |
|
897 | +if($_POST["email"]){$Jd=0;if($_POST["all"]||$_POST["check"]){$l=idf_escape($_POST["email_field"]);$Yd=$_POST["email_subject"];$B=$_POST["email_message"];preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i',"$Yd.$B",$Bc);$M=get_rows("SELECT DISTINCT $l".($Bc[1]?", ".implode(", ",array_map('idf_escape',array_unique($Bc[1]))):"")." FROM ".table($_GET["select"])." WHERE $l IS NOT NULL AND $l != ''".($Y?" AND ".implode(" AND ",$Y):"").($_POST["all"]?"":" AND ((".implode(") OR (",array_map('where_check',(array)$_POST["check"]))."))"));$m=fields($_GET["select"]);foreach($this->rowDescriptions($M,$Mb)as$L){$_d=array('{\\'=>'{');foreach($Bc[1]as$V) { |
|
898 | + $_d['{$'."$V}"]=$this->editVal($L[$V],$m[$V]); |
|
899 | +} |
|
900 | +$pb=$L[$_POST["email_field"]];if(is_mail($pb)&&send_mail($pb,strtr($Yd,$_d),strtr($B,$_d),$_POST["email_from"],$_FILES["email_files"])) { |
|
901 | + $Jd++; |
|
902 | +} |
|
903 | +}}cookie("adminer_email",$_POST["email_from"]);redirect(remove_from_uri(),lang(array('%d e-mail has been sent.','%d e-mails have been sent.'),$Jd));}return |
|
436 | 904 | false;}function |
437 | 905 | selectQueryBuild($N,$Y,$p,$E,$y,$F){return"";}function |
438 | 906 | messageQuery($I,$je){return" <span class='time'>".@date("H:i:s")."</span><!--\n".str_replace("--","--><!-- ",$I)."\n".($je?"($je)\n":"")."-->";}function |
439 | -editFunctions($l){$K=array();if($l["null"]&&preg_match('~blob~',$l["type"]))$K["NULL"]='empty';$K[""]=($l["null"]||$l["auto_increment"]||like_bool($l)?"":"*");if(preg_match('~date|time~',$l["type"]))$K["now"]='now';if(preg_match('~_(md5|sha1)$~i',$l["field"],$A))$K[]=strtolower($A[1]);return$K;}function |
|
440 | -editInput($R,$l,$c,$W){if($l["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$c value='-1' checked><i>".'original'."</i></label> ":"").enum_input("radio",$c,$l,($W||isset($_GET["select"])?$W:0),($l["null"]?"":null));$Xc=$this->_foreignKeyOptions($R,$l["field"],$W);if($Xc!==null)return(is_array($Xc)?"<select$c>".optionlist($Xc,$W,true)."</select>":"<input value='".h($W)."'$c class='hidden'><input value='".h($Xc)."' class='jsonly' onkeyup=\"whisper('".h(ME."script=complete&source=".urlencode($R)."&field=".urlencode($l["field"]))."&value=', this);\"><div onclick='return whisperClick(event, this.previousSibling);'></div>");if(like_bool($l))return'<input type="checkbox" value="'.h($W?$W:1).'"'.($W?' checked':'')."$c>";$cc="";if(preg_match('~time~',$l["type"]))$cc='HH:MM:SS';if(preg_match('~date|timestamp~',$l["type"]))$cc='[yyyy]-mm-dd'.($cc?" [$cc]":"");if($cc)return"<input value='".h($W)."'$c> ($cc)";if(preg_match('~_(md5|sha1)$~i',$l["field"]))return"<input type='password' value='".h($W)."'$c>";return'';}function |
|
441 | -processInput($l,$W,$o=""){if($o=="now")return"$o()";$K=$W;if(preg_match('~date|timestamp~',$l["type"])&&preg_match('(^'.str_replace('\\$1','(?P<p1>\\d*)',preg_replace('~(\\\\\\$([2-6]))~','(?P<p\\2>\\d{1,2})',preg_quote('$1-$3-$5'))).'(.*))',$W,$A))$K=($A["p1"]!=""?$A["p1"]:($A["p2"]!=""?($A["p2"]<70?20:19).$A["p2"]:gmdate("Y")))."-$A[p3]$A[p4]-$A[p5]$A[p6]".end($A);$K=($l["type"]=="bit"&&preg_match('~^[0-9]+$~',$W)?$K:q($K));if($W==""&&like_bool($l))$K="0";elseif($W==""&&($l["null"]||!preg_match('~char|text~',$l["type"])))$K="NULL";elseif(preg_match('~^(md5|sha1)$~',$o))$K="$o($K)";return |
|
907 | +editFunctions($l){$K=array();if($l["null"]&&preg_match('~blob~',$l["type"])) { |
|
908 | + $K["NULL"]='empty'; |
|
909 | +} |
|
910 | +$K[""]=($l["null"]||$l["auto_increment"]||like_bool($l)?"":"*");if(preg_match('~date|time~',$l["type"])) { |
|
911 | + $K["now"]='now'; |
|
912 | +} |
|
913 | +if(preg_match('~_(md5|sha1)$~i',$l["field"],$A)) { |
|
914 | + $K[]=strtolower($A[1]); |
|
915 | +} |
|
916 | +return$K;}function |
|
917 | +editInput($R,$l,$c,$W){if($l["type"]=="enum") { |
|
918 | + return(isset($_GET["select"])?"<label><input type='radio'$c value='-1' checked><i>".'original'."</i></label> ":"").enum_input("radio",$c,$l,($W||isset($_GET["select"])?$W:0),($l["null"]?"":null)); |
|
919 | +} |
|
920 | +$Xc=$this->_foreignKeyOptions($R,$l["field"],$W);if($Xc!==null) { |
|
921 | + return(is_array($Xc)?"<select$c>".optionlist($Xc,$W,true)."</select>":"<input value='".h($W)."'$c class='hidden'><input value='".h($Xc)."' class='jsonly' onkeyup=\"whisper('".h(ME."script=complete&source=".urlencode($R)."&field=".urlencode($l["field"]))."&value=', this);\"><div onclick='return whisperClick(event, this.previousSibling);'></div>"); |
|
922 | +} |
|
923 | +if(like_bool($l)) { |
|
924 | + return'<input type="checkbox" value="'.h($W?$W:1).'"'.($W?' checked':'')."$c>"; |
|
925 | +} |
|
926 | +$cc="";if(preg_match('~time~',$l["type"])) { |
|
927 | + $cc='HH:MM:SS'; |
|
928 | +} |
|
929 | +if(preg_match('~date|timestamp~',$l["type"])) { |
|
930 | + $cc='[yyyy]-mm-dd'.($cc?" [$cc]":""); |
|
931 | +} |
|
932 | +if($cc) { |
|
933 | + return"<input value='".h($W)."'$c> ($cc)"; |
|
934 | +} |
|
935 | +if(preg_match('~_(md5|sha1)$~i',$l["field"])) { |
|
936 | + return"<input type='password' value='".h($W)."'$c>"; |
|
937 | +} |
|
938 | +return'';}function |
|
939 | +processInput($l,$W,$o=""){if($o=="now") { |
|
940 | + return"$o()"; |
|
941 | +} |
|
942 | +$K=$W;if(preg_match('~date|timestamp~',$l["type"])&&preg_match('(^'.str_replace('\\$1','(?P<p1>\\d*)',preg_replace('~(\\\\\\$([2-6]))~','(?P<p\\2>\\d{1,2})',preg_quote('$1-$3-$5'))).'(.*))',$W,$A)) { |
|
943 | + $K=($A["p1"]!=""?$A["p1"]:($A["p2"]!=""?($A["p2"]<70?20:19).$A["p2"]:gmdate("Y")))."-$A[p3]$A[p4]-$A[p5]$A[p6]".end($A); |
|
944 | +} |
|
945 | +$K=($l["type"]=="bit"&&preg_match('~^[0-9]+$~',$W)?$K:q($K));if($W==""&&like_bool($l)) { |
|
946 | + $K="0"; |
|
947 | +} elseif($W==""&&($l["null"]||!preg_match('~char|text~',$l["type"]))) { |
|
948 | + $K="NULL"; |
|
949 | +} elseif(preg_match('~^(md5|sha1)$~',$o)) { |
|
950 | + $K="$o($K)"; |
|
951 | +} |
|
952 | +return |
|
442 | 953 | unconvert_field($l,$K);}function |
443 | 954 | dumpOutput(){return |
444 | 955 | array();}function |
@@ -456,13 +967,24 @@ discard block |
||
456 | 967 | ',$this->name(),' <span class="version">',$ca,'</span> |
457 | 968 | <a href="https://www.adminer.org/editor/#download" target="_blank" id="version">',(version_compare($ca,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a> |
458 | 969 | </h1> |
459 | -';if($Ic=="auth"){$Ib=true;foreach((array)$_SESSION["pwds"]as$X=>$Nd){foreach($Nd[""]as$T=>$G){if($G!==null){if($Ib){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$Ib=false;}echo"<a href='".h(auth_url($X,"",$T))."'>".($T!=""?h($T):"<i>".'empty'."</i>")."</a><br>\n";}}}}else{$this->databasesPrint($Ic);if($Ic!="db"&&$Ic!="ns"){$S=table_status('',true);if(!$S)echo"<p class='message'>".'No tables.'."\n";else$this->tablesPrint($S);}}}function |
|
970 | +';if($Ic=="auth"){$Ib=true;foreach((array)$_SESSION["pwds"]as$X=>$Nd){foreach($Nd[""]as$T=>$G){if($G!==null){if($Ib){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$Ib=false;}echo"<a href='".h(auth_url($X,"",$T))."'>".($T!=""?h($T):"<i>".'empty'."</i>")."</a><br>\n";}}}} else{$this->databasesPrint($Ic);if($Ic!="db"&&$Ic!="ns"){$S=table_status('',true);if(!$S) { |
|
971 | + echo"<p class='message'>".'No tables.'."\n"; |
|
972 | +} else { |
|
973 | + $this->tablesPrint($S); |
|
974 | +} |
|
975 | +}}}function |
|
460 | 976 | databasesPrint($Ic){}function |
461 | 977 | tablesPrint($ee){echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";foreach($ee |
462 | -as$L){$D=$this->tableName($L);if(isset($L["Engine"])&&$D!="")echo"<a href='".h(ME).'select='.urlencode($L["Name"])."'".bold($_GET["select"]==$L["Name"]||$_GET["edit"]==$L["Name"],"select")." title='".'Select data'."'>$D</a><br>\n";}}function |
|
978 | +as$L){$D=$this->tableName($L);if(isset($L["Engine"])&&$D!="") { |
|
979 | + echo"<a href='".h(ME).'select='.urlencode($L["Name"])."'".bold($_GET["select"]==$L["Name"]||$_GET["edit"]==$L["Name"],"select")." title='".'Select data'."'>$D</a><br>\n"; |
|
980 | +} |
|
981 | +}}function |
|
463 | 982 | _foreignColumn($Mb,$d){foreach((array)$Mb[$d]as$Lb){if(count($Lb["source"])==1){$D=$this->rowDescription($Lb["table"]);if($D!=""){$r=idf_escape($Lb["target"][0]);return |
464 | 983 | array($Lb["table"],$r,$D);}}}}function |
465 | -_foreignKeyOptions($R,$d,$W=null){global$f;if(list($fe,$r,$D)=$this->_foreignColumn(column_foreign_keys($R),$d)){$K=&$this->_values[$fe];if($K===null){$S=table_status($fe);$K=($S["Rows"]>1000?"":array(""=>"")+get_key_vals("SELECT $r, $D FROM ".table($fe)." ORDER BY 2"));}if(!$K&&$W!==null)return$f->result("SELECT $D FROM ".table($fe)." WHERE $r = ".q($W));return$K;}}}$b=(function_exists('adminer_object')?adminer_object():new |
|
984 | +_foreignKeyOptions($R,$d,$W=null){global$f;if(list($fe,$r,$D)=$this->_foreignColumn(column_foreign_keys($R),$d)){$K=&$this->_values[$fe];if($K===null){$S=table_status($fe);$K=($S["Rows"]>1000?"":array(""=>"")+get_key_vals("SELECT $r, $D FROM ".table($fe)." ORDER BY 2"));}if(!$K&&$W!==null) { |
|
985 | + return$f->result("SELECT $D FROM ".table($fe)." WHERE $r = ".q($W)); |
|
986 | +} |
|
987 | +return$K;}}}$b=(function_exists('adminer_object')?adminer_object():new |
|
466 | 988 | Adminer);function |
467 | 989 | page_header($le,$k="",$Ca=array(),$me=""){global$ba,$ca,$b,$jb,$v;page_headers();if(is_ajax()&&$k){page_messages($k);exit;}$ne=$le.($me!=""?": $me":"");$oe=strip_tags($ne.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html> |
468 | 990 | <html lang="en" dir="ltr"> |
@@ -487,10 +1009,27 @@ discard block |
||
487 | 1009 | <div id="help" class="jush-',$v,' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div> |
488 | 1010 | |
489 | 1011 | <div id="content"> |
490 | -';if($Ca!==null){$z=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($z?$z:".").'">'.$jb[DRIVER].'</a> » ';$z=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ca===false)echo"$O\n";else{echo"<a href='".($z?h($z):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ca)))echo'<a href="'.h($z."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Ca)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Ca |
|
491 | -as$x=>$V){$db=(is_array($V)?$V[1]:h($V));if($db!="")echo"<a href='".h(ME."$x=").urlencode(is_array($V)?$V[0]:$V)."'>$db</a> » ";}}echo"$le\n";}}echo"<h2>$ne</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$ab=&get_session("dbs");if(DB!=""&&$ab&&!in_array(DB,$ab,true))$ab=null;stop_session();define("PAGE_HEADER",1);}function |
|
1012 | +';if($Ca!==null){$z=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($z?$z:".").'">'.$jb[DRIVER].'</a> » ';$z=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ca===false) { |
|
1013 | + echo"$O\n"; |
|
1014 | +} else{echo"<a href='".($z?h($z):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ca))) { |
|
1015 | + echo'<a href="'.h($z."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » '; |
|
1016 | +} |
|
1017 | +if(is_array($Ca)){if($_GET["ns"]!="") { |
|
1018 | + echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » '; |
|
1019 | +} |
|
1020 | +foreach($Ca |
|
1021 | +as$x=>$V){$db=(is_array($V)?$V[1]:h($V));if($db!="") { |
|
1022 | + echo"<a href='".h(ME."$x=").urlencode(is_array($V)?$V[0]:$V)."'>$db</a> » "; |
|
1023 | +} |
|
1024 | +}}echo"$le\n";}}echo"<h2>$ne</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$ab=&get_session("dbs");if(DB!=""&&$ab&&!in_array(DB,$ab,true)) { |
|
1025 | + $ab=null; |
|
1026 | +} |
|
1027 | +stop_session();define("PAGE_HEADER",1);}function |
|
492 | 1028 | page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");if($b->headers()){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");}}function |
493 | -page_messages($k){$Ee=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Hc=$_SESSION["messages"][$Ee];if($Hc){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Hc)."</div>\n";unset($_SESSION["messages"][$Ee]);}if($k)echo"<div class='error'>$k</div>\n";}function |
|
1029 | +page_messages($k){$Ee=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Hc=$_SESSION["messages"][$Ee];if($Hc){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Hc)."</div>\n";unset($_SESSION["messages"][$Ee]);}if($k) { |
|
1030 | + echo"<div class='error'>$k</div>\n"; |
|
1031 | +} |
|
1032 | +}function |
|
494 | 1033 | page_footer($Ic=""){global$b,$qe;echo'</div> |
495 | 1034 | |
496 | 1035 | ';if($Ic!="auth"){echo'<form action="" method="post"> |
@@ -503,48 +1042,277 @@ discard block |
||
503 | 1042 | ';$b->navigation($Ic);echo'</div> |
504 | 1043 | <script type="text/javascript">setupSubmitHighlight(document);</script> |
505 | 1044 | ';}function |
506 | -int32($C){while($C>=2147483648)$C-=4294967296;while($C<=-2147483649)$C+=4294967296;return(int)$C;}function |
|
1045 | +int32($C){while($C>=2147483648) { |
|
1046 | + $C-=4294967296; |
|
1047 | +} |
|
1048 | +while($C<=-2147483649) { |
|
1049 | + $C+=4294967296; |
|
1050 | +} |
|
1051 | +return(int)$C;}function |
|
507 | 1052 | long2str($U,$Ke){$Ed='';foreach($U |
508 | -as$V)$Ed.=pack('V',$V);if($Ke)return |
|
509 | -substr($Ed,0,end($U));return$Ed;}function |
|
510 | -str2long($Ed,$Ke){$U=array_values(unpack('V*',str_pad($Ed,4*ceil(strlen($Ed)/4),"\0")));if($Ke)$U[]=strlen($Ed);return$U;}function |
|
1053 | +as$V) { |
|
1054 | + $Ed.=pack('V',$V); |
|
1055 | +} |
|
1056 | +if($Ke) { |
|
1057 | + return |
|
1058 | +substr($Ed,0,end($U)); |
|
1059 | +} |
|
1060 | +return$Ed;}function |
|
1061 | +str2long($Ed,$Ke){$U=array_values(unpack('V*',str_pad($Ed,4*ceil(strlen($Ed)/4),"\0")));if($Ke) { |
|
1062 | + $U[]=strlen($Ed); |
|
1063 | +} |
|
1064 | +return$U;}function |
|
511 | 1065 | xxtea_mx($Z,$Oe,$ae,$w){return |
512 | 1066 | int32((($Z>>5&0x7FFFFFF)^$Oe<<2)+(($Oe>>3&0x1FFFFFFF)^$Z<<4))^int32(($ae^$Oe)+($w^$Z));}function |
513 | -encrypt_string($Vd,$x){if($Vd=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,true);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=0;while($rd-->0){$ae=int32($ae+0x9E3779B9);$lb=$ae>>2&3;for($cd=0;$cd<$C;$cd++){$Oe=$U[$cd+1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$cd]+$Kc);$U[$cd]=$Z;}$Oe=$U[0];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$C]+$Kc);$U[$C]=$Z;}return |
|
1067 | +encrypt_string($Vd,$x){if($Vd=="") { |
|
1068 | + return""; |
|
1069 | +} |
|
1070 | +$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,true);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=0;while($rd-->0){$ae=int32($ae+0x9E3779B9);$lb=$ae>>2&3;for($cd=0;$cd<$C;$cd++){$Oe=$U[$cd+1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$cd]+$Kc);$U[$cd]=$Z;}$Oe=$U[0];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$C]+$Kc);$U[$C]=$Z;}return |
|
514 | 1071 | long2str($U,false);}function |
515 | -decrypt_string($Vd,$x){if($Vd=="")return"";if(!$x)return |
|
516 | -false;$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,false);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=int32($rd*0x9E3779B9);while($ae){$lb=$ae>>2&3;for($cd=$C;$cd>0;$cd--){$Z=$U[$cd-1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[$cd]-$Kc);$U[$cd]=$Oe;}$Z=$U[$C];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[0]-$Kc);$U[0]=$Oe;$ae=int32($ae-0x9E3779B9);}return |
|
517 | -long2str($U,true);}$f='';$Zb=$_SESSION["token"];if(!$Zb)$_SESSION["token"]=rand(1,1e6);$qe=get_token();$gd=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$V){list($x)=explode(":",$V);$gd[$x]=$V;}}function |
|
518 | -add_invalid_login(){global$b;$Fb=get_temp_dir()."/adminer.invalid";$Rb=@fopen($Fb,"r+");if(!$Rb){$Rb=@fopen($Fb,"w");if(!$Rb)return;}flock($Rb,LOCK_EX);$oc=unserialize(stream_get_contents($Rb));$je=time();if($oc){foreach($oc |
|
519 | -as$pc=>$V){if($V[0]<$je)unset($oc[$pc]);}}$nc=&$oc[$b->bruteForceKey()];if(!$nc)$nc=array($je+30*60,0);$nc[1]++;$Ld=serialize($oc);rewind($Rb);fwrite($Rb,$Ld);ftruncate($Rb,strlen($Ld));flock($Rb,LOCK_UN);fclose($Rb);}$ra=$_POST["auth"];if($ra){$oc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$nc=$oc[$b->bruteForceKey()];$Mc=($nc[1]>30?$nc[0]-time():0);if($Mc>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Mc/60)));session_regenerate_id();$X=$ra["driver"];$O=$ra["server"];$T=$ra["username"];$G=(string)$ra["password"];$h=$ra["db"];set_password($X,$O,$T,$G);$_SESSION["db"][$X][$O][$T][$h]=true;if($ra["permanent"]){$x=base64_encode($X)."-".base64_encode($O)."-".base64_encode($T)."-".base64_encode($h);$od=$b->permanentLogin(true);$gd[$x]="$x:".base64_encode($od?encrypt_string($G,$od):"");cookie("adminer_permanent",implode(" ",$gd));}if(count($_POST)==1||DRIVER!=$X||SERVER!=$O||$_GET["username"]!==$T||DB!=$h)redirect(auth_url($X,$O,$T,$h));}elseif($_POST["logout"]){if($Zb&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}}elseif($gd&&!$_SESSION["pwds"]){session_regenerate_id();$od=$b->permanentLogin();foreach($gd |
|
1072 | +decrypt_string($Vd,$x){if($Vd=="") { |
|
1073 | + return""; |
|
1074 | +} |
|
1075 | +if(!$x) { |
|
1076 | + return |
|
1077 | +false; |
|
1078 | +} |
|
1079 | +$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,false);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=int32($rd*0x9E3779B9);while($ae){$lb=$ae>>2&3;for($cd=$C;$cd>0;$cd--){$Z=$U[$cd-1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[$cd]-$Kc);$U[$cd]=$Oe;}$Z=$U[$C];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[0]-$Kc);$U[0]=$Oe;$ae=int32($ae-0x9E3779B9);}return |
|
1080 | +long2str($U,true);}$f='';$Zb=$_SESSION["token"];if(!$Zb) { |
|
1081 | + $_SESSION["token"]=rand(1,1e6); |
|
1082 | +} |
|
1083 | +$qe=get_token();$gd=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$V){list($x)=explode(":",$V);$gd[$x]=$V;}}function |
|
1084 | +add_invalid_login(){global$b;$Fb=get_temp_dir()."/adminer.invalid";$Rb=@fopen($Fb,"r+");if(!$Rb){$Rb=@fopen($Fb,"w");if(!$Rb) { |
|
1085 | + return; |
|
1086 | +} |
|
1087 | +}flock($Rb,LOCK_EX);$oc=unserialize(stream_get_contents($Rb));$je=time();if($oc){foreach($oc |
|
1088 | +as$pc=>$V){if($V[0]<$je) { |
|
1089 | + unset($oc[$pc]); |
|
1090 | +} |
|
1091 | +}}$nc=&$oc[$b->bruteForceKey()];if(!$nc) { |
|
1092 | + $nc=array($je+30*60,0); |
|
1093 | +} |
|
1094 | +$nc[1]++;$Ld=serialize($oc);rewind($Rb);fwrite($Rb,$Ld);ftruncate($Rb,strlen($Ld));flock($Rb,LOCK_UN);fclose($Rb);}$ra=$_POST["auth"];if($ra){$oc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$nc=$oc[$b->bruteForceKey()];$Mc=($nc[1]>30?$nc[0]-time():0);if($Mc>0) { |
|
1095 | + auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Mc/60))); |
|
1096 | +} |
|
1097 | +session_regenerate_id();$X=$ra["driver"];$O=$ra["server"];$T=$ra["username"];$G=(string)$ra["password"];$h=$ra["db"];set_password($X,$O,$T,$G);$_SESSION["db"][$X][$O][$T][$h]=true;if($ra["permanent"]){$x=base64_encode($X)."-".base64_encode($O)."-".base64_encode($T)."-".base64_encode($h);$od=$b->permanentLogin(true);$gd[$x]="$x:".base64_encode($od?encrypt_string($G,$od):"");cookie("adminer_permanent",implode(" ",$gd));}if(count($_POST)==1||DRIVER!=$X||SERVER!=$O||$_GET["username"]!==$T||DB!=$h) { |
|
1098 | + redirect(auth_url($X,$O,$T,$h)); |
|
1099 | +} |
|
1100 | +} elseif($_POST["logout"]){if($Zb&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;} else{foreach(array("pwds","db","dbs","queries")as$x) { |
|
1101 | + set_session($x,null); |
|
1102 | +} |
|
1103 | +unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}} elseif($gd&&!$_SESSION["pwds"]){session_regenerate_id();$od=$b->permanentLogin();foreach($gd |
|
520 | 1104 | as$x=>$V){list(,$Ha)=explode(":",$V);list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));set_password($X,$O,$T,decrypt_string(base64_decode($Ha),$od));$_SESSION["db"][$X][$O][$T][$h]=true;}}function |
521 | 1105 | unset_permanent(){global$gd;foreach($gd |
522 | -as$x=>$V){list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));if($X==DRIVER&&$O==SERVER&&$T==$_GET["username"]&&$h==DB)unset($gd[$x]);}cookie("adminer_permanent",implode(" ",$gd));}function |
|
523 | -auth_error($k){global$b,$Zb;$k=h($k);$Od=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Od]||$_GET[$Od])&&!$Zb)$k='Session expired, please login again.';else{add_invalid_login();$G=get_password();if($G!==null){if($G===false)$k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$Od]&&$_GET[$Od]&&ini_bool("session.use_only_cookies"))$k='Session support must be enabled.';$ed=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$ed["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$kd)),false);page_footer("auth");exit;}$f=connect();}$i=new |
|
524 | -Min_Driver($f);if(!is_object($f)||($_c=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($f)?$f:(is_string($_c)?$_c:'Invalid credentials.')));if($ra&&$_POST["token"])$_POST["token"]=$qe;$k='';if($_POST){if(!verify_token()){$kc="max_input_vars";$Fc=ini_get($kc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$V=ini_get($x);if($V&&(!$Fc||$V<$Fc)){$kc=$x;$Fc=$V;}}}$k=(!$_POST["token"]&&$Fc?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$kc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$k.=' '.'You can upload a big SQL file via FTP and import it from server.';}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false)session_write_close();function |
|
1106 | +as$x=>$V){list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));if($X==DRIVER&&$O==SERVER&&$T==$_GET["username"]&&$h==DB) { |
|
1107 | + unset($gd[$x]); |
|
1108 | +} |
|
1109 | +}cookie("adminer_permanent",implode(" ",$gd));}function |
|
1110 | +auth_error($k){global$b,$Zb;$k=h($k);$Od=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Od]||$_GET[$Od])&&!$Zb) { |
|
1111 | + $k='Session expired, please login again.'; |
|
1112 | +} else{add_invalid_login();$G=get_password();if($G!==null){if($G===false) { |
|
1113 | + $k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>'); |
|
1114 | +} |
|
1115 | +set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$Od]&&$_GET[$Od]&&ini_bool("session.use_only_cookies")) { |
|
1116 | + $k='Session support must be enabled.'; |
|
1117 | +} |
|
1118 | +$ed=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$ed["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$kd)),false);page_footer("auth");exit;}$f=connect();}$i=new |
|
1119 | +Min_Driver($f);if(!is_object($f)||($_c=$b->login($_GET["username"],get_password()))!==true) { |
|
1120 | + auth_error((is_string($f)?$f:(is_string($_c)?$_c:'Invalid credentials.'))); |
|
1121 | +} |
|
1122 | +if($ra&&$_POST["token"]) { |
|
1123 | + $_POST["token"]=$qe; |
|
1124 | +} |
|
1125 | +$k='';if($_POST){if(!verify_token()){$kc="max_input_vars";$Fc=ini_get($kc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$V=ini_get($x);if($V&&(!$Fc||$V<$Fc)){$kc=$x;$Fc=$V;}}}$k=(!$_POST["token"]&&$Fc?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$kc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}} elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"])) { |
|
1126 | + $k.=' '.'You can upload a big SQL file via FTP and import it from server.'; |
|
1127 | +} |
|
1128 | +}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false) { |
|
1129 | + session_write_close(); |
|
1130 | +} |
|
1131 | +function |
|
525 | 1132 | email_header($ac){return"=?UTF-8?B?".base64_encode($ac)."?=";}function |
526 | -send_mail($pb,$Yd,$B,$Sb="",$Gb=array()){$j=(DIRECTORY_SEPARATOR=="/"?"\n":"\r\n");$B=str_replace("\n",$j,wordwrap(str_replace("\r","","$B\n")));$Ba=uniqid("boundary");$qa="";foreach((array)$Gb["error"]as$x=>$V){if(!$V)$qa.="--$Ba$j"."Content-Type: ".str_replace("\n","",$Gb["type"][$x]).$j."Content-Disposition: attachment; filename=\"".preg_replace('~["\\n]~','',$Gb["name"][$x])."\"$j"."Content-Transfer-Encoding: base64$j$j".chunk_split(base64_encode(file_get_contents($Gb["tmp_name"][$x])),76,$j).$j;}$ya="";$bc="Content-Type: text/plain; charset=utf-8$j"."Content-Transfer-Encoding: 8bit";if($qa){$qa.="--$Ba--$j";$ya="--$Ba$j$bc$j$j";$bc="Content-Type: multipart/mixed; boundary=\"$Ba\"";}$bc.=$j."MIME-Version: 1.0$j"."X-Mailer: Adminer Editor".($Sb?$j."From: ".str_replace("\n","",$Sb):"");return |
|
1133 | +send_mail($pb,$Yd,$B,$Sb="",$Gb=array()){$j=(DIRECTORY_SEPARATOR=="/"?"\n":"\r\n");$B=str_replace("\n",$j,wordwrap(str_replace("\r","","$B\n")));$Ba=uniqid("boundary");$qa="";foreach((array)$Gb["error"]as$x=>$V){if(!$V) { |
|
1134 | + $qa.="--$Ba$j"."Content-Type: ".str_replace("\n","",$Gb["type"][$x]).$j."Content-Disposition: attachment; filename=\"".preg_replace('~["\\n]~','',$Gb["name"][$x])."\"$j"."Content-Transfer-Encoding: base64$j$j".chunk_split(base64_encode(file_get_contents($Gb["tmp_name"][$x])),76,$j).$j; |
|
1135 | +} |
|
1136 | +}$ya="";$bc="Content-Type: text/plain; charset=utf-8$j"."Content-Transfer-Encoding: 8bit";if($qa){$qa.="--$Ba--$j";$ya="--$Ba$j$bc$j$j";$bc="Content-Type: multipart/mixed; boundary=\"$Ba\"";}$bc.=$j."MIME-Version: 1.0$j"."X-Mailer: Adminer Editor".($Sb?$j."From: ".str_replace("\n","",$Sb):"");return |
|
527 | 1137 | mail($pb,email_header($Yd),$ya.$B.$qa,$bc);}function |
528 | 1138 | like_bool($l){return |
529 | -preg_match("~bool|(tinyint|bit)\\(1\\)~",$l["full_type"]);}$f->select_db($b->database());$Rc="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";$jb[DRIVER]='Login';if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$i->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Y=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$De=(isset($_GET["select"])?$_POST["edit"]:$Y);foreach($m |
|
530 | -as$D=>$l){if(!isset($l["privileges"][$De?"update":"insert"])||$b->fieldName($l)=="")unset($m[$D]);}if($_POST&&!$k&&!isset($_GET["select"])){$_=$_POST["referer"];if($_POST["insert"])$_=($De?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$_))$_=ME."select=".urlencode($a);$t=indexes($a);$ze=unique_array($_GET["where"],$t);$ud="\nWHERE $Y";if(isset($_POST["delete"]))queries_redirect($_,'Item has been deleted.',$i->delete($a,$ud,!$ze));else{$P=array();foreach($m |
|
531 | -as$D=>$l){$V=process_input($l);if($V!==false&&$V!==null)$P[idf_escape($D)]=$V;}if($De){if(!$P)redirect($_);queries_redirect($_,'Item has been updated.',$i->update($a,$P,$ud,!$ze));if(is_ajax()){page_headers();page_messages($k);exit;}}else{$J=$i->insert($a,$P);$vc=($J?last_id():0);queries_redirect($_,sprintf('Item%s has been inserted.',($vc?" $vc":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Y){$N=array();foreach($m |
|
532 | -as$D=>$l){if(isset($l["privileges"]["select"])){$oa=convert_field($l);if($_POST["clone"]&&$l["auto_increment"])$oa="''";if($v=="sql"&&preg_match("~enum|set~",$l["type"]))$oa="1*".idf_escape($D);$N[]=($oa?"$oa AS ":"").idf_escape($D);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$i->select($a,$N,array($Y),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L)$L=false;if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$m){if(!$Y){$J=$i->select($a,array("*"),$Y,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($i->primary=>"");}if($L){foreach($L |
|
533 | -as$x=>$V){if(!$Y)$L[$x]=null;$m[$x]=array("field"=>$x,"null"=>($x!=$i->primary),"auto_increment"=>($x==$i->primary));}}}edit_form($a,$m,$L,$De);}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$t=indexes($a);$m=fields($a);$Ob=column_foreign_keys($a);$Qc="";if($S["Oid"]){$Qc=($v=="sqlite"?"rowid":"oid");$t[]=array("type"=>"PRIMARY","columns"=>array($Qc));}parse_str($_COOKIE["adminer_import"],$ia);$Dd=array();$e=array();$he=null;foreach($m |
|
534 | -as$x=>$l){$D=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$D!=""){$e[$x]=html_entity_decode(strip_tags($D),ENT_QUOTES);if(is_shortable($l))$he=$b->selectLengthProcess();}$Dd+=$l["privileges"];}list($N,$p)=$b->selectColumnsProcess($e,$t);$u=count($p)<count($N);$Y=$b->selectSearchProcess($m,$t);$E=$b->selectOrderProcess($m,$t);$y=$b->selectLimitProcess();$Sb=($N?implode(", ",$N):"*".($Qc?", $Qc":"")).convert_fields($e,$m,$N)."\nFROM ".table($a);$Ub=($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$_e=>$L){$oa=convert_field($m[key($L)]);$N=array($oa?$oa:idf_escape(key($L)));$Y[]=where_check($_e,$m);$K=$i->select($a,$N,$Y,$N);if($K)echo |
|
535 | -reset($K->fetch_row());}exit;}if($_POST&&!$k){$Me=$Y;if(!$_POST["all"]&&is_array($_POST["check"])){$Ga=array();foreach($_POST["check"]as$Ea)$Ga[]=where_check($Ea,$m);$Me[]="((".implode(") OR (",$Ga)."))";}$Me=($Me?"\nWHERE ".implode(" AND ",$Me):"");$md=$Be=null;foreach($t |
|
1139 | +preg_match("~bool|(tinyint|bit)\\(1\\)~",$l["full_type"]);}$f->select_db($b->database());$Rc="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";$jb[DRIVER]='Login';if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"]) { |
|
1140 | + $_GET["edit"]=$_GET["select"]; |
|
1141 | +} |
|
1142 | +if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$i->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;} elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Y=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$De=(isset($_GET["select"])?$_POST["edit"]:$Y);foreach($m |
|
1143 | +as$D=>$l){if(!isset($l["privileges"][$De?"update":"insert"])||$b->fieldName($l)=="") { |
|
1144 | + unset($m[$D]); |
|
1145 | +} |
|
1146 | +}if($_POST&&!$k&&!isset($_GET["select"])){$_=$_POST["referer"];if($_POST["insert"]) { |
|
1147 | + $_=($De?null:$_SERVER["REQUEST_URI"]); |
|
1148 | +} elseif(!preg_match('~^.+&select=.+$~',$_)) { |
|
1149 | + $_=ME."select=".urlencode($a); |
|
1150 | +} |
|
1151 | +$t=indexes($a);$ze=unique_array($_GET["where"],$t);$ud="\nWHERE $Y";if(isset($_POST["delete"])) { |
|
1152 | + queries_redirect($_,'Item has been deleted.',$i->delete($a,$ud,!$ze)); |
|
1153 | +} else{$P=array();foreach($m |
|
1154 | +as$D=>$l){$V=process_input($l);if($V!==false&&$V!==null) { |
|
1155 | + $P[idf_escape($D)]=$V; |
|
1156 | +} |
|
1157 | +}if($De){if(!$P) { |
|
1158 | + redirect($_); |
|
1159 | +} |
|
1160 | +queries_redirect($_,'Item has been updated.',$i->update($a,$P,$ud,!$ze));if(is_ajax()){page_headers();page_messages($k);exit;}} else{$J=$i->insert($a,$P);$vc=($J?last_id():0);queries_redirect($_,sprintf('Item%s has been inserted.',($vc?" $vc":"")),$J);}}}$L=null;if($_POST["save"]) { |
|
1161 | + $L=(array)$_POST["fields"]; |
|
1162 | +} elseif($Y){$N=array();foreach($m |
|
1163 | +as$D=>$l){if(isset($l["privileges"]["select"])){$oa=convert_field($l);if($_POST["clone"]&&$l["auto_increment"]) { |
|
1164 | + $oa="''"; |
|
1165 | +} |
|
1166 | +if($v=="sql"&&preg_match("~enum|set~",$l["type"])) { |
|
1167 | + $oa="1*".idf_escape($D); |
|
1168 | +} |
|
1169 | +$N[]=($oa?"$oa AS ":"").idf_escape($D);}}$L=array();if(!support("table")) { |
|
1170 | + $N=array("*"); |
|
1171 | +} |
|
1172 | +if($N){$J=$i->select($a,$N,array($Y),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L) { |
|
1173 | + $L=false; |
|
1174 | +} |
|
1175 | +if(isset($_GET["select"])&&(!$L||$J->fetch_assoc())) { |
|
1176 | + $L=null; |
|
1177 | +} |
|
1178 | +}}if(!support("table")&&!$m){if(!$Y){$J=$i->select($a,array("*"),$Y,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L) { |
|
1179 | + $L=array($i->primary=>""); |
|
1180 | +} |
|
1181 | +}if($L){foreach($L |
|
1182 | +as$x=>$V){if(!$Y) { |
|
1183 | + $L[$x]=null; |
|
1184 | +} |
|
1185 | +$m[$x]=array("field"=>$x,"null"=>($x!=$i->primary),"auto_increment"=>($x==$i->primary));}}}edit_form($a,$m,$L,$De);} elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$t=indexes($a);$m=fields($a);$Ob=column_foreign_keys($a);$Qc="";if($S["Oid"]){$Qc=($v=="sqlite"?"rowid":"oid");$t[]=array("type"=>"PRIMARY","columns"=>array($Qc));}parse_str($_COOKIE["adminer_import"],$ia);$Dd=array();$e=array();$he=null;foreach($m |
|
1186 | +as$x=>$l){$D=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$D!=""){$e[$x]=html_entity_decode(strip_tags($D),ENT_QUOTES);if(is_shortable($l)) { |
|
1187 | + $he=$b->selectLengthProcess(); |
|
1188 | +} |
|
1189 | +}$Dd+=$l["privileges"];}list($N,$p)=$b->selectColumnsProcess($e,$t);$u=count($p)<count($N);$Y=$b->selectSearchProcess($m,$t);$E=$b->selectOrderProcess($m,$t);$y=$b->selectLimitProcess();$Sb=($N?implode(", ",$N):"*".($Qc?", $Qc":"")).convert_fields($e,$m,$N)."\nFROM ".table($a);$Ub=($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$_e=>$L){$oa=convert_field($m[key($L)]);$N=array($oa?$oa:idf_escape(key($L)));$Y[]=where_check($_e,$m);$K=$i->select($a,$N,$Y,$N);if($K) { |
|
1190 | + echo |
|
1191 | +reset($K->fetch_row()); |
|
1192 | +} |
|
1193 | +}exit;}if($_POST&&!$k){$Me=$Y;if(!$_POST["all"]&&is_array($_POST["check"])){$Ga=array();foreach($_POST["check"]as$Ea) { |
|
1194 | + $Ga[]=where_check($Ea,$m); |
|
1195 | +} |
|
1196 | +$Me[]="((".implode(") OR (",$Ga)."))";}$Me=($Me?"\nWHERE ".implode(" AND ",$Me):"");$md=$Be=null;foreach($t |
|
536 | 1197 | as$s){if($s["type"]=="PRIMARY"){$md=array_flip($s["columns"]);$Be=($N?$md:array());break;}}foreach((array)$Be |
537 | -as$x=>$V){if(in_array(idf_escape($x),$N))unset($Be[$x]);}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$Be===array())$I="SELECT $Sb$Me$Ub";else{$ye=array();foreach($_POST["check"]as$V)$ye[]="(SELECT".limit($Sb,"\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m).$Ub,1).")";$I=implode(" UNION ALL ",$ye);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Y,$Ob)){if($_POST["save"]||$_POST["delete"]){$J=true;$ja=0;$P=array();if(!$_POST["delete"]){foreach($e |
|
538 | -as$D=>$V){$V=process_input($m[$D]);if($V!==null&&($_POST["clone"]||$V!==false))$P[idf_escape($D)]=($V!==false?$V:idf_escape($D));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($Be===array()&&is_array($_POST["check"]))||$u){$J=($_POST["delete"]?$i->delete($a,$Me):($_POST["clone"]?queries("INSERT $I$Me"):$i->update($a,$P,$Me)));$ja=$f->affected_rows;}else{foreach((array)$_POST["check"]as$V){$Le="\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m);$J=($_POST["delete"]?$i->delete($a,$Le,1):($_POST["clone"]?queries("INSERT".limit1($I,$Le)):$i->update($a,$P,$Le)));if(!$J)break;$ja+=$f->affected_rows;}}}$B=lang(array('%d item has been affected.','%d items have been affected.'),$ja);if($_POST["clone"]&&$J&&$ja==1){$vc=last_id();if($vc)$B=sprintf('Item%s has been inserted.'," $vc");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$B,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$k='Ctrl+click on a value to modify it.';else{$J=true;$ja=0;foreach($_POST["val"]as$_e=>$L){$P=array();foreach($L |
|
539 | -as$x=>$V){$x=bracket_escape($x,1);$P[idf_escape($x)]=(preg_match('~char|text~',$m[$x]["type"])||$V!=""?$b->processInput($m[$x],$V):"NULL");}$J=$i->update($a,$P," WHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($_e,$m),!($u||$Be===array())," ");if(!$J)break;$ja+=$f->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$ja),$J);}}elseif(!is_string($Eb=get_file("csv_file",true)))$k=upload_error($Eb);elseif(!preg_match('~~u',$Eb))$k='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($ia["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Oa=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$Eb,$Bc);$ja=count($Bc[0]);$i->begin();$Kd=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($Bc[0]as$x=>$V){preg_match_all("~((?>\"[^\"]*\")+|[^$Kd]*)$Kd~",$V.$Kd,$Cc);if(!$x&&!array_diff($Cc[1],$Oa)){$Oa=$Cc[1];$ja--;}else{$P=array();foreach($Cc[1]as$q=>$La)$P[idf_escape($Oa[$q])]=($La==""&&$m[$Oa[$q]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$La))));$M[]=$P;}}$J=(!$M||$i->insertUpdate($a,$M,$md));if($J)$i->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$ja),$J);$i->rollback();}}}$de=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else |
|
540 | -page_header('Select'.": $de",$k);$P=null;if(isset($Dd["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$V){if(count($Ob[$V["col"]])==1&&($V["op"]=="="||(!$V["op"]&&!preg_match('~[_%]~',$V["val"]))))$P.="&set".urlencode("[".bracket_escape($V["col"])."]")."=".urlencode($V["val"]);}}$b->selectLinks($S,$P);if(!$e&&support("table"))echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$e);$b->selectSearchPrint($Y,$e,$t);$b->selectOrderPrint($E,$e,$t);$b->selectLimitPrint($y);$b->selectLengthPrint($he);$b->selectActionPrint($t);echo"</form>\n";$F=$_GET["page"];if($F=="last"){$n=$f->result(count_rows($a,$Y,$u,$p));$F=floor(max(0,$n-1)/$y);}$Hd=$N;if(!$Hd){$Hd[]="*";if($Qc)$Hd[]=$Qc;}$Ua=convert_fields($e,$m,$N);if($Ua)$Hd[]=substr($Ua,2);$J=$i->select($a,$Hd,$Y,$p,$E,$y,$F,true);if(!$J)echo"<p class='error'>".error()."\n";else{if($v=="mssql"&&$F)$J->seek($y*$F);$rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($F&&$v=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql")$n=$f->result(" SELECT FOUND_ROWS()");if(!$M)echo"<p class='message'>".'No rows.'."\n";else{$xa=$b->backwardKeys($a,$de);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$p&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Lc=array();$Tb=array();reset($N);$wd=1;foreach($M[0]as$x=>$V){if($x!=$Qc){$V=$_GET["columns"][key($N)];$l=$m[$N?($V?$V["col"]:current($N)):$x];$D=($l?$b->fieldName($l,$wd):($V["fun"]?"*":$x));if($D!=""){$wd++;$Lc[$x]=$D;$d=idf_escape($x);$ec=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$db="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($ec.($E[0]==$d||$E[0]==$x||(!$E&&$u&&$p[0]==$d)?$db:'')).'">';echo |
|
541 | -apply_sql_function($V["fun"],$D)."</a>";echo"<span class='column hidden'>","<a href='".h($ec.$db)."' title='".'descending'."' class='text'> ↓</a>";if(!$V["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($x)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>';echo"</span>";}$Tb[$x]=$V["fun"];next($N);}}$yc=array();if($_GET["modify"]){foreach($M |
|
1198 | +as$x=>$V){if(in_array(idf_escape($x),$N)) { |
|
1199 | + unset($Be[$x]); |
|
1200 | +} |
|
1201 | +}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$Be===array()) { |
|
1202 | + $I="SELECT $Sb$Me$Ub"; |
|
1203 | +} else{$ye=array();foreach($_POST["check"]as$V) { |
|
1204 | + $ye[]="(SELECT".limit($Sb,"\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m).$Ub,1).")"; |
|
1205 | +} |
|
1206 | +$I=implode(" UNION ALL ",$ye);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Y,$Ob)){if($_POST["save"]||$_POST["delete"]){$J=true;$ja=0;$P=array();if(!$_POST["delete"]){foreach($e |
|
1207 | +as$D=>$V){$V=process_input($m[$D]);if($V!==null&&($_POST["clone"]||$V!==false)) { |
|
1208 | + $P[idf_escape($D)]=($V!==false?$V:idf_escape($D)); |
|
1209 | +} |
|
1210 | +}}if($_POST["delete"]||$P){if($_POST["clone"]) { |
|
1211 | + $I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a); |
|
1212 | +} |
|
1213 | +if($_POST["all"]||($Be===array()&&is_array($_POST["check"]))||$u){$J=($_POST["delete"]?$i->delete($a,$Me):($_POST["clone"]?queries("INSERT $I$Me"):$i->update($a,$P,$Me)));$ja=$f->affected_rows;} else{foreach((array)$_POST["check"]as$V){$Le="\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m);$J=($_POST["delete"]?$i->delete($a,$Le,1):($_POST["clone"]?queries("INSERT".limit1($I,$Le)):$i->update($a,$P,$Le)));if(!$J) { |
|
1214 | + break; |
|
1215 | +} |
|
1216 | +$ja+=$f->affected_rows;}}}$B=lang(array('%d item has been affected.','%d items have been affected.'),$ja);if($_POST["clone"]&&$J&&$ja==1){$vc=last_id();if($vc) { |
|
1217 | + $B=sprintf('Item%s has been inserted.'," $vc"); |
|
1218 | +} |
|
1219 | +}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$B,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}} elseif(!$_POST["import"]){if(!$_POST["val"]) { |
|
1220 | + $k='Ctrl+click on a value to modify it.'; |
|
1221 | +} else{$J=true;$ja=0;foreach($_POST["val"]as$_e=>$L){$P=array();foreach($L |
|
1222 | +as$x=>$V){$x=bracket_escape($x,1);$P[idf_escape($x)]=(preg_match('~char|text~',$m[$x]["type"])||$V!=""?$b->processInput($m[$x],$V):"NULL");}$J=$i->update($a,$P," WHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($_e,$m),!($u||$Be===array())," ");if(!$J) { |
|
1223 | + break; |
|
1224 | +} |
|
1225 | +$ja+=$f->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$ja),$J);}} elseif(!is_string($Eb=get_file("csv_file",true))) { |
|
1226 | + $k=upload_error($Eb); |
|
1227 | +} elseif(!preg_match('~~u',$Eb)) { |
|
1228 | + $k='File must be in UTF-8 encoding.'; |
|
1229 | +} else{cookie("adminer_import","output=".urlencode($ia["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Oa=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$Eb,$Bc);$ja=count($Bc[0]);$i->begin();$Kd=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($Bc[0]as$x=>$V){preg_match_all("~((?>\"[^\"]*\")+|[^$Kd]*)$Kd~",$V.$Kd,$Cc);if(!$x&&!array_diff($Cc[1],$Oa)){$Oa=$Cc[1];$ja--;} else{$P=array();foreach($Cc[1]as$q=>$La) { |
|
1230 | + $P[idf_escape($Oa[$q])]=($La==""&&$m[$Oa[$q]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$La)))); |
|
1231 | +} |
|
1232 | +$M[]=$P;}}$J=(!$M||$i->insertUpdate($a,$M,$md));if($J) { |
|
1233 | + $i->commit(); |
|
1234 | +} |
|
1235 | +queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$ja),$J);$i->rollback();}}}$de=$b->tableName($S);if(is_ajax()){page_headers();ob_start();} else { |
|
1236 | + page_header('Select'.": $de",$k); |
|
1237 | +} |
|
1238 | +$P=null;if(isset($Dd["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$V){if(count($Ob[$V["col"]])==1&&($V["op"]=="="||(!$V["op"]&&!preg_match('~[_%]~',$V["val"])))) { |
|
1239 | + $P.="&set".urlencode("[".bracket_escape($V["col"])."]")."=".urlencode($V["val"]); |
|
1240 | +} |
|
1241 | +}}$b->selectLinks($S,$P);if(!$e&&support("table")) { |
|
1242 | + echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n"; |
|
1243 | +} else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$e);$b->selectSearchPrint($Y,$e,$t);$b->selectOrderPrint($E,$e,$t);$b->selectLimitPrint($y);$b->selectLengthPrint($he);$b->selectActionPrint($t);echo"</form>\n";$F=$_GET["page"];if($F=="last"){$n=$f->result(count_rows($a,$Y,$u,$p));$F=floor(max(0,$n-1)/$y);}$Hd=$N;if(!$Hd){$Hd[]="*";if($Qc) { |
|
1244 | + $Hd[]=$Qc; |
|
1245 | +} |
|
1246 | +}$Ua=convert_fields($e,$m,$N);if($Ua) { |
|
1247 | + $Hd[]=substr($Ua,2); |
|
1248 | +} |
|
1249 | +$J=$i->select($a,$Hd,$Y,$p,$E,$y,$F,true);if(!$J) { |
|
1250 | + echo"<p class='error'>".error()."\n"; |
|
1251 | +} else{if($v=="mssql"&&$F) { |
|
1252 | + $J->seek($y*$F); |
|
1253 | +} |
|
1254 | +$rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($F&&$v=="oracle") { |
|
1255 | + unset($L["RNUM"]); |
|
1256 | +} |
|
1257 | +$M[]=$L;}if($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql") { |
|
1258 | + $n=$f->result(" SELECT FOUND_ROWS()"); |
|
1259 | +} |
|
1260 | +if(!$M) { |
|
1261 | + echo"<p class='message'>".'No rows.'."\n"; |
|
1262 | +} else{$xa=$b->backwardKeys($a,$de);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$p&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Lc=array();$Tb=array();reset($N);$wd=1;foreach($M[0]as$x=>$V){if($x!=$Qc){$V=$_GET["columns"][key($N)];$l=$m[$N?($V?$V["col"]:current($N)):$x];$D=($l?$b->fieldName($l,$wd):($V["fun"]?"*":$x));if($D!=""){$wd++;$Lc[$x]=$D;$d=idf_escape($x);$ec=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$db="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($ec.($E[0]==$d||$E[0]==$x||(!$E&&$u&&$p[0]==$d)?$db:'')).'">';echo |
|
1263 | +apply_sql_function($V["fun"],$D)."</a>";echo"<span class='column hidden'>","<a href='".h($ec.$db)."' title='".'descending'."' class='text'> ↓</a>";if(!$V["fun"]) { |
|
1264 | + echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($x)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>'; |
|
1265 | +} |
|
1266 | +echo"</span>";}$Tb[$x]=$V["fun"];next($N);}}$yc=array();if($_GET["modify"]){foreach($M |
|
542 | 1267 | as$L){foreach($L |
543 | -as$x=>$V)$yc[$x]=max($yc[$x],min(40,strlen(utf8_decode($V))));}}echo($xa?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($y%2==1&&$F%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($M,$Ob)as$C=>$L){$ze=unique_array($M[$C],$t);if(!$ze){$ze=array();foreach($M[$C]as$x=>$V){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$x))$ze[$x]=$V;}}$_e="";foreach($ze |
|
1268 | +as$x=>$V) { |
|
1269 | + $yc[$x]=max($yc[$x],min(40,strlen(utf8_decode($V)))); |
|
1270 | +} |
|
1271 | +}}echo($xa?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($y%2==1&&$F%2==1) { |
|
1272 | + odd(); |
|
1273 | +} |
|
1274 | +ob_end_clean();}foreach($b->rowDescriptions($M,$Ob)as$C=>$L){$ze=unique_array($M[$C],$t);if(!$ze){$ze=array();foreach($M[$C]as$x=>$V){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$x)) { |
|
1275 | + $ze[$x]=$V; |
|
1276 | +} |
|
1277 | +}}$_e="";foreach($ze |
|
544 | 1278 | as$x=>$V){if(($v=="sql"||$v=="pgsql")&&strlen($V)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".($v=='sql'&&preg_match("~^utf8_~",$m[$x]["collation"])?$x:"CONVERT($x USING ".charset($f).")").")";$V=md5($V);}$_e.="&".($V!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($V):"null%5B%5D=".urlencode($x));}echo"<tr".odd().">".(!$p&&$N?"":"<td>".checkbox("check[]",substr($_e,1),in_array(substr($_e,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($u||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$_e)."'>".'edit'."</a>"));foreach($L |
545 | -as$x=>$V){if(isset($Lc[$x])){$l=$m[$x];if($V!=""&&(!isset($rb[$x])||$rb[$x]!=""))$rb[$x]=(is_mail($V)?$Lc[$x]:"");$z="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$V!="")$z=ME.'download='.urlencode($a).'&field='.urlencode($x).$_e;if(!$z&&$V!==null){foreach((array)$Ob[$x]as$Nb){if(count($Ob[$x])==1||end($Nb["source"])==$x){$z="";foreach($Nb["source"]as$q=>$Rd)$z.=where_link($q,$Nb["target"][$q],$M[$C][$Rd]);$z=($Nb["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($Nb["db"]),ME):ME).'select='.urlencode($Nb["table"]).$z;if(count($Nb["source"])==1)break;}}}if($x=="COUNT(*)"){$z=ME."select=".urlencode($a);$q=0;foreach((array)$_GET["where"]as$U){if(!array_key_exists($U["col"],$ze))$z.=where_link($q++,$U["col"],$U["val"],$U["op"]);}foreach($ze |
|
546 | -as$w=>$U)$z.=where_link($q++,$w,$U);}$V=select_value($V,$z,$l,$he);$r=h("val[$_e][".bracket_escape($x)."]");$W=$_POST["val"][$_e][bracket_escape($x)];$nb=!is_array($L[$x])&&is_utf8($V)&&$M[$C][$x]==$L[$x]&&!$Tb[$x];$ge=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$nb)||$W!==null){$Wb=h($W!==null?$W:$L[$x]);echo"<td>".($ge?"<textarea name='$r' cols='30' rows='".(substr_count($L[$x],"\n")+1)."'>$Wb</textarea>":"<input name='$r' value='$Wb' size='$yc[$x]'>");}else{$Ac=strpos($V,"<i>...</i>");echo"<td id='$r' onclick=\"selectClick(this, event, ".($Ac?2:($ge?1:0)).($nb?"":", '".h('Use edit link to modify this value.')."'").");\">$V";}}}if($xa)echo"<td>";$b->backwardKeysPrint($xa,$M[$C]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n";}if(($M||$F)&&!is_ajax()){$yb=true;if($_GET["page"]!="last"){if(!+$y)$n=count($M);elseif($v!="sql"||!$u){$n=($u?false:found_rows($S,$Y));if($n<max(1e4,2*($F+1)*$y))$n=reset(slow_query(count_rows($a,$Y,$u,$p)));else$yb=false;}}if(+$y&&($n===false||$n>$y||$F)){echo"<p class='pages'>";$Dc=($n===false?$F+(count($M)>=$y?2:1):floor(($n-1)/$y));if($v!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($F+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$F).($F>5?" ...":"");for($q=max(1,$F-4);$q<min($Dc,$F+5);$q++)echo |
|
547 | -pagination($q,$F);if($Dc>0){echo($F+5<$Dc?" ...":""),($yb&&$n!==false?pagination($Dc,$F):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Dc'>".'last'."</a>");}echo(($n===false?count($M)+1:$n-$F*$y)>$y?' <a href="'.h(remove_from_uri("page")."&page=".($F+1)).'" onclick="return !selectLoadMore(this, '.(+$y).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');}else{echo'Page'.":",pagination(0,$F).($F>1?" ...":""),($F?pagination($F,$F):""),($Dc>$F?pagination($F+1,$F).($Dc>$F+1?" ...":""):"");}}echo"<p class='count'>\n",($n!==false?"(".($yb?"":"~ ").lang(array('%d row','%d rows'),$n).") ":"");$hb=($yb?"":"~ ").$n;echo |
|
1279 | +as$x=>$V){if(isset($Lc[$x])){$l=$m[$x];if($V!=""&&(!isset($rb[$x])||$rb[$x]!="")) { |
|
1280 | + $rb[$x]=(is_mail($V)?$Lc[$x]:""); |
|
1281 | +} |
|
1282 | +$z="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$V!="") { |
|
1283 | + $z=ME.'download='.urlencode($a).'&field='.urlencode($x).$_e; |
|
1284 | +} |
|
1285 | +if(!$z&&$V!==null){foreach((array)$Ob[$x]as$Nb){if(count($Ob[$x])==1||end($Nb["source"])==$x){$z="";foreach($Nb["source"]as$q=>$Rd) { |
|
1286 | + $z.=where_link($q,$Nb["target"][$q],$M[$C][$Rd]); |
|
1287 | +} |
|
1288 | +$z=($Nb["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($Nb["db"]),ME):ME).'select='.urlencode($Nb["table"]).$z;if(count($Nb["source"])==1) { |
|
1289 | + break; |
|
1290 | +} |
|
1291 | +}}}if($x=="COUNT(*)"){$z=ME."select=".urlencode($a);$q=0;foreach((array)$_GET["where"]as$U){if(!array_key_exists($U["col"],$ze)) { |
|
1292 | + $z.=where_link($q++,$U["col"],$U["val"],$U["op"]); |
|
1293 | +} |
|
1294 | +}foreach($ze |
|
1295 | +as$w=>$U) { |
|
1296 | + $z.=where_link($q++,$w,$U); |
|
1297 | +} |
|
1298 | +}$V=select_value($V,$z,$l,$he);$r=h("val[$_e][".bracket_escape($x)."]");$W=$_POST["val"][$_e][bracket_escape($x)];$nb=!is_array($L[$x])&&is_utf8($V)&&$M[$C][$x]==$L[$x]&&!$Tb[$x];$ge=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$nb)||$W!==null){$Wb=h($W!==null?$W:$L[$x]);echo"<td>".($ge?"<textarea name='$r' cols='30' rows='".(substr_count($L[$x],"\n")+1)."'>$Wb</textarea>":"<input name='$r' value='$Wb' size='$yc[$x]'>");} else{$Ac=strpos($V,"<i>...</i>");echo"<td id='$r' onclick=\"selectClick(this, event, ".($Ac?2:($ge?1:0)).($nb?"":", '".h('Use edit link to modify this value.')."'").");\">$V";}}}if($xa) { |
|
1299 | + echo"<td>"; |
|
1300 | +} |
|
1301 | +$b->backwardKeysPrint($xa,$M[$C]);echo"</tr>\n";}if(is_ajax()) { |
|
1302 | + exit; |
|
1303 | +} |
|
1304 | +echo"</table>\n";}if(($M||$F)&&!is_ajax()){$yb=true;if($_GET["page"]!="last"){if(!+$y) { |
|
1305 | + $n=count($M); |
|
1306 | +} elseif($v!="sql"||!$u){$n=($u?false:found_rows($S,$Y));if($n<max(1e4,2*($F+1)*$y)) { |
|
1307 | + $n=reset(slow_query(count_rows($a,$Y,$u,$p))); |
|
1308 | +} else { |
|
1309 | + $yb=false; |
|
1310 | +} |
|
1311 | +}}if(+$y&&($n===false||$n>$y||$F)){echo"<p class='pages'>";$Dc=($n===false?$F+(count($M)>=$y?2:1):floor(($n-1)/$y));if($v!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($F+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$F).($F>5?" ...":"");for($q=max(1,$F-4);$q<min($Dc,$F+5);$q++) { |
|
1312 | + echo |
|
1313 | +pagination($q,$F); |
|
1314 | +} |
|
1315 | +if($Dc>0){echo($F+5<$Dc?" ...":""),($yb&&$n!==false?pagination($Dc,$F):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Dc'>".'last'."</a>");}echo(($n===false?count($M)+1:$n-$F*$y)>$y?' <a href="'.h(remove_from_uri("page")."&page=".($F+1)).'" onclick="return !selectLoadMore(this, '.(+$y).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');} else{echo'Page'.":",pagination(0,$F).($F>1?" ...":""),($F?pagination($F,$F):""),($Dc>$F?pagination($F+1,$F).($Dc>$F+1?" ...":""):"");}}echo"<p class='count'>\n",($n!==false?"(".($yb?"":"~ ").lang(array('%d row','%d rows'),$n).") ":"");$hb=($yb?"":"~ ").$n;echo |
|
548 | 1316 | checkbox("all",1,0,'whole result',"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$hb' : checked); selectCount('selected2', this.checked || !checked ? '$hb' : checked);")."\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div> |
549 | 1317 | <input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'> |
550 | 1318 | </div></fieldset> |
@@ -553,4 +1321,15 @@ discard block |
||
553 | 1321 | <input type="submit" name="clone" value="Clone"> |
554 | 1322 | <input type="submit" name="delete" value="Delete"',confirm(),'> |
555 | 1323 | </div></fieldset> |
556 | -';}$Pb=$b->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($Pb['sql']);break;}}if($Pb){print_fieldset("export",'Export'." <span id='selected2'></span>");$bd=$b->dumpOutput();echo($bd?html_select("output",$bd,$ia["output"])." ":""),html_select("format",$Pb,$ia["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$p&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ia["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($rb,'strlen'),$e);echo"<p><input type='hidden' name='token' value='$qe'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["script"])){if($_GET["script"]=="kill")$f->query("KILL ".number($_POST["kill"]));elseif(list($R,$r,$D)=$b->_foreignColumn(column_foreign_keys($_GET["source"]),$_GET["field"])){$y=11;$J=$f->query("SELECT $r, $D FROM ".table($R)." WHERE ".(preg_match('~^[0-9]+$~',$_GET["value"])?"$r = $_GET[value] OR ":"")."$D LIKE ".q("$_GET[value]%")." ORDER BY 2 LIMIT $y");for($q=1;($L=$J->fetch_row())&&$q<$y;$q++)echo"<a href='".h(ME."edit=".urlencode($R)."&where".urlencode("[".bracket_escape(idf_unescape($r))."]")."=".urlencode($L[0]))."'>".h($L[1])."</a><br>\n";if($L)echo"...\n";}exit;}else{page_header('Server',"",false);if($b->homepage()){echo"<form action='' method='post'>\n","<p>".'Search data in tables'.": <input name='query' value='".h($_POST["query"])."'> <input type='submit' value='".'Search'."'>\n";if($_POST["query"]!="")search_tables();echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^tables\[/);"><th>'.'Table'.'<td>'.'Rows'."</thead>\n";foreach(table_status()as$R=>$L){$D=$b->tableName($L);if(isset($L["Engine"])&&$D!=""){echo'<tr'.odd().'><td>'.checkbox("tables[]",$R,in_array($R,(array)$_POST["tables"],true),"","formUncheck('check-all');"),"<th><a href='".h(ME).'select='.urlencode($R)."'>$D</a>";$V=format_number($L["Rows"]);echo"<td align='right'><a href='".h(ME."edit=").urlencode($R)."'>".($L["Engine"]=="InnoDB"&&$V?"~ $V":$V)."</a>";}}echo"</table>\n","<script type='text/javascript'>tableCheck();</script>\n","</form>\n";}}page_footer(); |
|
557 | 1324 | \ No newline at end of file |
1325 | +';}$Pb=$b->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($Pb['sql']);break;}}if($Pb){print_fieldset("export",'Export'." <span id='selected2'></span>");$bd=$b->dumpOutput();echo($bd?html_select("output",$bd,$ia["output"])." ":""),html_select("format",$Pb,$ia["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$p&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ia["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($rb,'strlen'),$e);echo"<p><input type='hidden' name='token' value='$qe'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}} elseif(isset($_GET["script"])){if($_GET["script"]=="kill") { |
|
1326 | + $f->query("KILL ".number($_POST["kill"])); |
|
1327 | +} elseif(list($R,$r,$D)=$b->_foreignColumn(column_foreign_keys($_GET["source"]),$_GET["field"])){$y=11;$J=$f->query("SELECT $r, $D FROM ".table($R)." WHERE ".(preg_match('~^[0-9]+$~',$_GET["value"])?"$r = $_GET[value] OR ":"")."$D LIKE ".q("$_GET[value]%")." ORDER BY 2 LIMIT $y");for($q=1;($L=$J->fetch_row())&&$q<$y;$q++) { |
|
1328 | + echo"<a href='".h(ME."edit=".urlencode($R)."&where".urlencode("[".bracket_escape(idf_unescape($r))."]")."=".urlencode($L[0]))."'>".h($L[1])."</a><br>\n"; |
|
1329 | +} |
|
1330 | +if($L) { |
|
1331 | + echo"...\n"; |
|
1332 | +} |
|
1333 | +}exit;} else{page_header('Server',"",false);if($b->homepage()){echo"<form action='' method='post'>\n","<p>".'Search data in tables'.": <input name='query' value='".h($_POST["query"])."'> <input type='submit' value='".'Search'."'>\n";if($_POST["query"]!="") { |
|
1334 | + search_tables(); |
|
1335 | +} |
|
1336 | +echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^tables\[/);"><th>'.'Table'.'<td>'.'Rows'."</thead>\n";foreach(table_status()as$R=>$L){$D=$b->tableName($L);if(isset($L["Engine"])&&$D!=""){echo'<tr'.odd().'><td>'.checkbox("tables[]",$R,in_array($R,(array)$_POST["tables"],true),"","formUncheck('check-all');"),"<th><a href='".h(ME).'select='.urlencode($R)."'>$D</a>";$V=format_number($L["Rows"]);echo"<td align='right'><a href='".h(ME."edit=").urlencode($R)."'>".($L["Engine"]=="InnoDB"&&$V?"~ $V":$V)."</a>";}}echo"</table>\n","<script type='text/javascript'>tableCheck();</script>\n","</form>\n";}}page_footer(); |
|
558 | 1337 | \ No newline at end of file |
@@ -24,34 +24,34 @@ |
||
24 | 24 | include(XOOPS_ROOT_PATH . '/header.php'); |
25 | 25 | |
26 | 26 | if (!is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid())) { |
27 | - exit(_NOPERM); |
|
27 | + exit(_NOPERM); |
|
28 | 28 | } |
29 | 29 | function adminer_object() |
30 | 30 | { |
31 | - class AdminerKfr extends Adminer |
|
32 | - { |
|
33 | - public function name() |
|
34 | - { |
|
35 | - return 'XOOPS Admin'; |
|
36 | - } |
|
37 | - |
|
38 | - public function credentials() |
|
39 | - { |
|
40 | - return array(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS); |
|
41 | - } |
|
42 | - |
|
43 | - public function database() |
|
44 | - { |
|
45 | - return XOOPS_DB_NAME; |
|
46 | - } |
|
47 | - |
|
48 | - public function login($login, $password) |
|
49 | - { |
|
50 | - return ($login == XOOPS_DB_USER); |
|
51 | - } |
|
52 | - } |
|
53 | - |
|
54 | - return new AdminerKfr; |
|
31 | + class AdminerKfr extends Adminer |
|
32 | + { |
|
33 | + public function name() |
|
34 | + { |
|
35 | + return 'XOOPS Admin'; |
|
36 | + } |
|
37 | + |
|
38 | + public function credentials() |
|
39 | + { |
|
40 | + return array(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS); |
|
41 | + } |
|
42 | + |
|
43 | + public function database() |
|
44 | + { |
|
45 | + return XOOPS_DB_NAME; |
|
46 | + } |
|
47 | + |
|
48 | + public function login($login, $password) |
|
49 | + { |
|
50 | + return ($login == XOOPS_DB_USER); |
|
51 | + } |
|
52 | + } |
|
53 | + |
|
54 | + return new AdminerKfr; |
|
55 | 55 | } |
56 | 56 | |
57 | 57 | include __DIR__ . '/include/editor.php'; |
@@ -13,7 +13,7 @@ |
||
13 | 13 | |
14 | 14 | //Help |
15 | 15 | define('_MI_ADMINER_DIRNAME', basename(dirname(dirname(__DIR__)))); |
16 | -define('_MI_ADMINER_HELP_HEADER', __DIR__.'/help/helpheader.html'); |
|
16 | +define('_MI_ADMINER_HELP_HEADER', __DIR__ . '/help/helpheader.html'); |
|
17 | 17 | define('_MI_ADMINER_BACK_2_ADMIN', 'Back to Administration of '); |
18 | 18 | define('_MI_ADMINER_HELP_OVERVIEW', 'Overview'); |
19 | 19 |