Adminer 5.0.0 - jmenný prostor
Adminer 5 odstraňuje podporu pro staré verze: MySQL 4, SQLite 2, extenze MSSQL (podporovaná je SQLSRV a nově i PDO_SQLSRV) a extenze mongo (podporovaná je MongoDB). Adminer také již nějakou dobu vyžaduje PHP alespoň 5.3, tato verze je i nadále podporovaná. Zachoval jsem podporu extenze mysql (spolu s mysqli a PDO_MySQL).
Další velké změny se udály na úrovni zdrojového kódu a doufám, že se navenek nijak neprojeví:
- Adminer je nyní zavřený ve jmenném prostoru. Týká se to všech tříd, funkcí a konstant. Netýká se to pluginů, které můžou žít, v jakém jmenném prostoru chtějí. Funkce
adminer_object
je nadále globální. - Odstranil jsem řadu globálních proměnných, které Adminer používal.
- Formalizoval jsem coding style a kód jsem trochu učesal.
Další změna se týká výkonnosti. Při vypnyutí output_buffering
běžel Adminer o něco pomaleji, proto ho nyní vždy zapíná (pokud už není zapnutý v konfiguraci PHP).
Dokončil jsem podporu generovaných sloupců. Podporují se při vytváření a změně tabulky, při vkládání, editaci a klonování řádků, při hromadné editaci a při exportu. K dispozici jsou v MySQL, PostgreSQL, SQLite a MS SQL.
K drobné změně došlo při vkládání řádek. Dříve se autofocusoval první sloupec, nyní se přeskočí, pokud je auto_increment.
V PostgreSQL jsem udělal tyto změny:
- Lze spočítat velikost všech databází (bug #881).
- Pokud index obsahuje výraz, tak se ho Adminer nepokouší editovat. Tyto indexy se nyní i správně exportují (bug #768).
- Při editaci se nabízí hodnoty ze sloupce typu enum. Tento typ se nyní i exportuje (bug #587).
- U tabulek s neznámým počtem řádků Adminer zobrazoval -1, nyní ukazuje ? (bug #883).
- Uživateli se zobrazují databáze, ke kterým má přístup, i pokud není jejich vlastník (regrese z verze 4.9.1).
- U schématu
information_schema
se nyní nezobrazují akce pro práci s tabulkami. Stejná změna je i v MS SQL a Oracle.
SQLite:
- Podpora klauzule CHECK. Předchozí verze to udělala pro ostatní ovladače.
- V přehledu tabulek lze provést akci integrity_check.
- V seznamu proměnných se nyní zobrazují všechny řádky, pokud jich proměnná má víc.
MS SQL:
- Podpora exportu (bug #480).
- U cizích klíčů se zobrazuje
ON UPDATE
aON DELETE
. - Oprava CSV importu (bug #859).
- Oprava změny cizího klíče.
- Podpora stránkování s ovladačem PDO.
- U systémových tabulek se zobrazuje odkaz do dokumentace.
- Oprava zvýrazňování sloupců primárního klíče. Dřív se zvýrazňoval jen auto_increment sloupec.
V Elasticsearch lze textově vyhledávat v boolean hodnotách.
Verze 5.0.1 opravuje hromadné operace s tabulkami (chyběl jmenný prostor), odstraňuje duplicitní sloupce ze selectu (bug #670), v MariaDB opravuje odkaz na dokumentaci proměnných (bug #658) a v PostgreSQL přidává podporu indexů na materializovaných pohledech (PR #467).
Do pluginů se dá jmenný prostor Admineru doplnit tímto skriptem:
<?php array_shift($argv); foreach ($argv as $filename) { $file = file_get_contents($filename); $file = preg_replace('~(?<![\\\\$"])\b((DRIVER|SERVER|DB|ME|PAGE_HEADER)\b|(' . 'idf_escape|table|connect|get_databases|limit|limit1|db_collation|engines|logged_user|tables_list|count_tables|table_status|is_view|fk_support|fields|indexes|foreign_keys|view|collations|information_schema|error|create_database|drop_databases|rename_database|auto_increment|alter_table|alter_indexes|truncate_tables|drop_views|drop_tables|move_tables|copy_tables|trigger|triggers|trigger_options|routine|routines|routine_languages|routine_id|last_id|explain|found_rows|types|type_values|schemas|get_schema|set_schema|create_sql|truncate_sql|use_sql|trigger_sql|show_variables|process_list|show_status|convert_field|unconvert_field|support|kill_process|connection_id|max_connections' . '|add_invalid_login|check_invalid_login|unset_permanent|auth_error' . '|page_header|page_headers|csp|get_nonce|page_messages|page_footer' . '|add_driver|get_driver' . '|select|referencable_primary|adminer_settings|adminer_setting|set_adminer_settings|textarea|select_input|json_row|edit_type|get_partitions_info|process_length|process_type|process_field|default_value|type_class|edit_fields|process_fields|normalize_enum|grant|drop_create|create_trigger|create_routine|remove_definer|format_foreign_key|tar_file|ini_bytes|doc_link|ob_gzencode|db_size|set_utf8mb4' . '|connection|adminer|version|idf_unescape|escape_string|number|number_type|remove_slashes|bracket_escape|min_version|charset|script|script_src|nonce|target_blank|h|nl_br|checkbox|optionlist|html_select|confirm|print_fieldset|bold|js_escape|ini_bool|sid|set_password|get_password|q|get_val|get_vals|get_key_vals|get_rows|unique_array|escape_key|where|where_check|where_link|convert_fields|cookie|restart_session|stop_session|get_session|set_session|auth_url|is_ajax|redirect|query_redirect|queries|apply_queries|queries_redirect|format_time|relative_uri|remove_from_uri|pagination|get_file|upload_error|repeat_pattern|is_utf8|shorten_utf8|format_number|friendly_url|hidden_fields|hidden_fields_get|table_status1|column_foreign_keys|enum_input|input|process_input|fields_from_edit|search_tables|dump_headers|dump_csv|apply_sql_function|get_temp_dir|file_open_lock|file_write_unlock|password_file|rand_string|select_value|is_mail|is_url|is_shortable|count_rows|slow_query|get_token|verify_token|lzw_decompress|on_help|edit_form' . '|get_lang|lang|switch_lang' . '|email_header|send_mail|like_bool' . ')\()~', 'Adminer\\\\\0', $file, -1, $count); echo "$count: $filename\n"; file_put_contents($filename, $file); } ?>
Verze 5.0.2 opravuje zadávání hodnoty NULL do sloupce typu ENUM v PostgreSQL (bug #884), přidává podporu CockroachDB a v Elasticsearch zohledňuje práva where
a order
.
Diskuse
Tobias:
Hi Jakub,thanks for coming back and your great work!
I saw that you are working together with Peter from AdminerNeo on some aspects of the two projects.
Can you maybe share what the future of Adminer (and AdminerNeo) holds? Are they going to be merged again or are they likely going to develop into different directions?
I'm asking because I'm not sure what to do and which of the projects to use now.
Thanks!
Tobias
Jakub Vrána
:
AdminerNeo was renamed to AdminNeo. I've invited Peter to join me to work on Adminer but he has different priorities:
- Drop support for PHP < 7.1.
- Drop all current designs.
- Add a configuration file.
His past commits often added something useful but also made irrelevant changes to the code style which made it inconsistent with the rest of the codebase. It was hard for me to read and understand these commits. So we've decided to keep the fork separate. We agreed to inform each other about security or other serious issues.
I'd suggest to stick with Adminer but the choice is yours.


Tobias:
Hi Jakub,Thanks a lot for these details and explanation! That is very helpful!
Best wishes,
Tobias
hrach:
Nezvazujes migraci na github issues? :)
Jakub Vrána
:
Umožnil jsem vytvářet issues na GitHubu a znemožnil na SourceForge. Staré issues jsem nepřeváděl. Nejtěžší bylo nastavit číselnou řadu, aby čísla nekolidovala.


mbunal:
I've been using adminer since I heard about it, despite all the other alternatives.I wish you would update notorm too!!!
Michal Vrabel:
Změnilo se něco s pluginy? Nějak přestal v 5.x fungovat třeba obyčejný login-servers... je k tomu nějaké info jak s pluginy pracovat?
Jakub Vrána
:
Pluginy musí volat funkce Admineru přes jmenný prostor Adminer\. To se dá buď trochu na prasáka udělat tak, že se taky vloží do tohoto jmenného prostoru, nebo je tam jmenný prostor potřeba doplnit skriptem v článku.
U pluginů distribuovaných s Adminerem jsem to udělal, login-servers mi funguje.


David Grudl:
Skvělé zprávy!!!Diskuse je zrušena z důvodu spamu.

