The branch, STABLE has been updated via 3fe82098c91f784c312ca27d01a07a14515a641d (commit) via 48cf4d398d3b5667522ceb702827fe24061d43f0 (commit) via e5ceb497df8563f73296d7fc894ff00101e21bde (commit) via b68b7d1cdd48d48e4b2009a1cfd24e81a09a127d (commit) via c0b12a1eeac7b9acb46063236b772b5d5b14b3a3 (commit) via 95f6c0a13756c25fa8b98f7153324152a6db4378 (commit) via 7e40035275d28fa38fef7f7628bdda3a44d83de5 (commit) via 7d217c9f57d5b97b62439c89f0010d36dac73d28 (commit) via ee26cd1a4001d63c34881ffe2abfff89cebcefac (commit) via a0d1071ec314de73e162839b629e0285c96d606f (commit) via 1f62ea1932a3b4d39cbc64d5b2dcaab81ead78d7 (commit) via 44ec2ede9560fdb63d7d61708dfdffd5813869b6 (commit) via 366d50a79b53c827926f97e14ee2f6937f161909 (commit) via acb30d5a2ae4d4235f95fe1087065c5562ae194f (commit) via 58c33c410e2699484d6183b3fb0318d108cebd8d (commit) via eb5e03880e579d572ec8e45a8fc0777929defddc (commit) via 1e984375b6ab0253b8c1860b55a11e705be772c0 (commit) via 428ed49d17533adb5444d85e8b194883fea99bb5 (commit) via fad777ecb23ac323ba4b1a86220f8b4b7c612306 (commit) via bb0ad40413a0d049126bfa4f040e5bdc43a9f488 (commit) via 86cd86fc513aa79eafdf9910b60976ac5750d4eb (commit) via a78fc120480240f8bbd7492b250215530978c396 (commit) via a4ca1638e95cb7892c878394440a103d015be6fa (commit) via 589504fe8a423b794797f72cf61b60fc8b770b3e (commit) via 291f2a1d1d97299b3b47dc2b9871e3646ae7d3f8 (commit) via 459fe9e905be784bcb0d3ce8ad54486c906be938 (commit) via cdef72f707e0f2a5ebf0a6a897811795f7dea165 (commit) via c70bd771719efa2fd1711f163e2aabb6bb304325 (commit) via 9f155b618c65ba2bf49f8a6dbf51d7e6f562087c (commit) via e8d86a5869d45a5e019bf9460d5fb0c9b398216f (commit) via 6810e568f61cab1adbb23f34f6b4d07cbd971184 (commit) via 82905fa361f54701226cc580e3dc2561e4427ca4 (commit) via 0f6215f70ed47a1c26743dab636fb74042d98833 (commit) via e859e311496ae25e1c6de6412084bc336f0798b9 (commit) via cdfc277bb7bd3b8fad0e45d9317fdd4578282206 (commit) via 142b1e2183660d25cb4827c56f8760f4cb66e714 (commit) via e2aaeaf1d621f5dd0ae4d97af383f8afe5b1ba73 (commit) via 13cb9e7e3e18208962f50e751891af3bcde3ec00 (commit) via b90805f7eb266967480295c02c9eb94680c4f7fb (commit) via 7b831bc8777c3f8195d33f3e7720d8123f3d9ce2 (commit) via f0672d82c38af1593523e2271f4cadcd27e64e39 (commit) via 7a366c3f088cc060b769d56378605c6473b185e8 (commit) via 337b2254d85808c5d35df59174250d25a47d5599 (commit) via b686640a06916ddc65bc46f5a057990914ac091a (commit) via 7c818d046a4c9f01a8e94b55a0726a1cc3d6a60d (commit) via 4a53eb19160936770d32244939ee82906e0f88c8 (commit) via 0db3d899eed5dd09d6e0e018e5c175c1b4d53e08 (commit) via 4ac7e466053422ae48b328b6be2aa9a17812d1dd (commit) via d659f3ba2b6dafbd818caca1f22a45455690198c (commit) via 47ec6a7b7eb899533213136ea7f22cb690dc137c (commit) via 3f5d1063ff6af5aa036be26a4d5fac9806eccfac (commit) via 09896700e4c90916997da5d5d0579ea92a1f6d5a (commit) via 7443d8286dfe655dfd38ed20cf26099ae65d2ab2 (commit) via 05477fff976073aa2074e905bdfa249779e1fcca (commit) via 861dd5c0c2fed019954ab2129db2d27adfe958a9 (commit) via 0d16251c6b9ad831daed75df4db73d8e7e5a3b64 (commit) via bc908c732a577b054a3046b2386afe77edd8a8cd (commit) via 0fa6c3d985160ccb857ffe311267a7df22435f75 (commit) via 9bcc37451d42dce0f522bf0d51462bb82abc14d8 (commit) via f4d129ac03ff7011d6e54d60243c88aebf790e52 (commit) via d24640d62ef13e733f22445a7d3fb5e4cc32a9ca (commit) via bf857315b9ca14ebb9dad2d3f1d195fe1a14d331 (commit) via b9daf34b79b0271e62e4de3bc7b6bf9008e719c5 (commit) via f900210a0f05511658a8d64d8876b935ab7a5972 (commit) via 66c830e2a5deaa4196fe82e1df45f1f89bbc5a60 (commit) via 548d96d611b100ef1bf10165eaacb8cd2c5d75f9 (commit) via cbe8f389821d2fb0a107478e73b654309566380d (commit) via 326deca827d87eb148afb96fa6ec7ce29644cb93 (commit) via a239f9bb3ebe0994a76d5d946418bdce4a9298e4 (commit) via 5fd02248cd4f410d963daf55150c33e8d4e01850 (commit) via fd739840cdb07739c8b971363291c9d0534764ec (commit) via 624dde89ef6ac51adea3f1be045128bcbcd7eeb8 (commit) via 644b56f65594244fc0f8ec5f25398ab9b3678e7c (commit) via e5a58432b523ea22d1ec1332e55a758bd7adced2 (commit) via 0a6badd2d60b6cc216f714ea777905566de14e60 (commit) via f1b8b850eb559ae202fb7220c5cf3d7703df5e60 (commit) via aecbb213aaf4f779f8feaa4ad4cc3fa9d59ce673 (commit) via c67fd7f732e56d668399a4d44bcdf5f2a803a7c3 (commit) via fe5e8999b42b98873a032a937cb873f2d47a1826 (commit) via 182ca44769a3940616e42de5b90ad97693dec362 (commit) via 8adc82666bca869bdf73f2b92d40df532fe10f57 (commit) via e16be872b64cab229784a0700a329871454f8baf (commit) via 4beb8bdff67ad57e27ed1d1ae02451fc356a5df7 (commit) via 079cb404c776821bc9b161bd297b956a6e6418a4 (commit) via 6b56175cd1b8e9bbaca5ab56266039b8129b34af (commit) via cd6b2795d3168aba7c8c0ff7069b99d86e98c6a7 (commit) via 867782d82ffe888feb40091aa417818e115090b8 (commit) via 994381d3c827271b61ccd203f5c953b434a6b772 (commit) via b10d8c63abb010c9917f3a20b192b22da62bf478 (commit) via db93a7fb0dfc674934d72e3174d024c99b7a0ff1 (commit) via 34fbba8ef5a04ad182687bb9a0a5349243cd9790 (commit) via f92e4dfad9c33f1c822d375b638ad65fcdd815d1 (commit) via 1f56635db547a7440b6463fc4d9d8d5bb1ed65ec (commit) via 78ee46662ac7e0371109fef2ad5a782a1aa7cc72 (commit) via c3259a276c5a455c6e0907cd42edd94f644df7d6 (commit) via 93bebe47bc8c3b68e2b9df1c3cb6885503aee17b (commit) via a2fa8219c85f49b1aeadc5edf37ad4afb89ae6cf (commit) from 123c3c3656565babbb8cb4442d1e2feb43e6c503 (commit)
- Log ----------------------------------------------------------------- commit 3fe82098c91f784c312ca27d01a07a14515a641d Merge: 123c3c3656565babbb8cb4442d1e2feb43e6c503 48cf4d398d3b5667522ceb702827fe24061d43f0 Author: Marc Delisle marc@infomarc.info Date: Tue Apr 13 18:34:00 2010 -0400
Merge branch 'MAINT_3_3_2' into STABLE
-----------------------------------------------------------------------
Summary of changes: .gitignore | 1 + ChangeLog | 261 +++-------------------------------- Documentation.html | 78 ++++++++--- README | 2 +- db_operations.php | 2 +- db_printview.php | 2 +- db_structure.php | 6 +- export.php | 7 +- lang/belarusian_latin-utf-8.inc.php | 66 ++++----- libraries/Config.class.php | 2 +- libraries/Table.class.php | 32 ++++- libraries/common.lib.php | 5 + libraries/config.default.php | 8 +- libraries/db_events.inc.php | 2 +- libraries/display_export.lib.php | 5 +- libraries/display_tbl.lib.php | 17 ++- libraries/export/xls.php | 1 + libraries/export/xlsx.php | 36 +++--- libraries/export/xml.php | 2 +- libraries/import.lib.php | 2 +- libraries/import/ods.php | 2 +- libraries/select_lang.lib.php | 2 +- libraries/server_links.inc.php | 6 +- libraries/tbl_links.inc.php | 1 + main.php | 4 +- navigation.php | 3 +- pdf_schema.php | 60 +++++--- server_status.php | 4 + setup/lib/FormDisplay.class.php | 2 +- sql.php | 7 - tbl_change.php | 6 + tbl_printview.php | 7 +- tbl_row_action.php | 2 +- tbl_structure.php | 7 +- translators.html | 4 +- 35 files changed, 259 insertions(+), 395 deletions(-)
diff --git a/.gitignore b/.gitignore index 83fc036..8a1aa74 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ phpmyadmin.wpj .buildpath .cache *.sw[op] +locale diff --git a/ChangeLog b/ChangeLog index 774c13a..a5c87d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,27 @@ phpMyAdmin - ChangeLog $Id$ $HeadURL: https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/trunk/phpMyAdmin/C... $
+3.3.2.0 (2010-04-13) +- patch #2969449 [core] Name for MERGE engine varies depending on the + MySQL version, thanks to Dieter Adriaenssens - ruleant +- bug #2966078 [browse] Incorrect LIMIT is saved and sticks while browsing +- bug #2967366 [Structure] Some results of Propose table structure are + shown in hex +- bug #2967565 [insert] UNHEX not selected by default when inserting BINARY +- [navi] Changed link to git repository on main page +- bug #2972232 [menu] Import menu tab not present on main page +- patch #2976790 [menu] Go to the upper level after table DROP, + thanks to Kaarel Nummert - kaarelnu +- patch #2978815 [pdf] Fix generating PDF with table dimensions, thanks to BlinK_ +- patch #2977725 [export] XML wrongly encoded, thanks to Victor Volkov - hanut +- patch #2979234 [import] Create tables with current charset and collation. +- patch #2979234, bug #2960105 [import] Properly import unicode text from ODS. +- bug #2973280 [export] Proper handling of temporary directory in XLS export. +- bug #2980582 [interface] Properly format server status parameter. +- bug #2973949 [session] SQL History broken (revert patch #2899969), + thanks to Dieter Adriaenssens - ruleant +- [doc] Be more specific about problems with Suhosin. + 3.3.1.0 (2010-03-16) - bug #2941037 [core] Database structure not sorted by table correctly - bug #2948492 [interface] Slide effect masks some fields on search page @@ -98,246 +119,6 @@ $HeadURL: https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/trunk/phpMyA in a BLOB, thanks to Vincent van der Tuin - [privileges] Improve escaping of hostname
-3.2.4.0 (2009-12-02) -- bug [engines] Innodb_buffer_pool_pages_latched no longer returned in status -- bug #2890451 [setup] Inconsistent generated "designer_coords" -- bug #2890443 [mysqli] "No index used in query" exception is reported -- bug #2891250 [ob] Garbled data in navi frame (PHP 5.2.11 bug) -- bug #2887357 [core] Slow loading times with large databases (partial fix) -- bug #2893931 [lang] Typo and empty message -+ [lang] Russian update, thanks to Victor Volkov -- bug #2823599 [edit] UUID Primary Key wrongly updated -- bug #2895894 [structure] Empty default value not set properly -- bug #2897536 [parser] Copying table with bit field with default -- bug #2893221 [core] Statement may not be safe to log in statement format - -3.2.3.0 (2009-10-30) -- patch #2856664 [export] Date, time, and datetime column types now export correctly to - OpenOffice Spreadsheet, thanks to Thomas Pulickal - jemajoign -- patch #2859788 [parser] Double-character delimiters (bug #2846239), - thanks to Thomas Pulickal - jemajoign -- bug #2832600 [export] Slow export when having lots of databases -- bug #2537766 [import] Comments are stripped when editing store procedures -- bug #2852370 [operations] Renaming database deletes triggers -- bug #2872247 [interface] Failed opening required 'mysql_charsets.lib.php', thanks to CyberLeo Kitsana - cyberleo -- bug [structure] "In use" table incorrectly reported as "view" -- bug #2879909 [interface] Removed double htmlspecialchars when editing enum column -- bug #2868328 [relations] Adding foreign key when table name contains a dot -- bug #2883381 [doc] Side effects of MemoryLimit setting -- bug #2826128 [display] Inverting sort order when expression contains a function name - -3.2.2.1 (2009-10-12) -- [security] XSS and SQL injection, thanks to Herman van Rink - -3.2.2.0 (2009-09-13) -- bug #2825293 [structure] Default value for a BIT column -- bug [display] Red arrows were reversed in the list of tables -- bug #2813879 [export] Duplicate empty lines when exporting without comments -- bug #2825919 [export] Trigger export with database name -- bug #2823996 [data] Cannot edit row with no PK and a BIT field -- bug [export] Exporting results of a query which contains a LIMIT clause - inside a subquery -- bug #2837722 [export] Run complex SQL then export does not work -- bug #2839548 [export] Triggers order on export -- bug #2826986 [display] Order by BLOB and range display -- bug [display] After clicking on Show Function or Function, the UPDATE query - is not shown after execution -- bug [structure] Missing validation for BINARY and VARBINARY - -3.2.1.0 (2009-08-09) -- bug #2799009 Login with ipv6 IP address breaks redirect -- bug #2796066 [priv] Inconsistent display of databases list -- bug #2802870 [display] Incorrect overhead value for InnoDB -- bug [display] Incorrect display in replication status, - thanks to Tomas Srnka - tomassrnka -- bug #1601625 [display] The Ignore checkbox is not unchecked for ENUM -- bug #2809930 [setup] Notice: Undefined variable: k in setup/index.php -- bug [features] Incorrect report of missing relational features -- [security] XSS: Insufficient output sanitizing (not exploitable without a valid token) - thanks to Sven Vetsch/Disenchant for informing us in a responsible manner -- bug #2634827 [import] Using DELIMITER produces infinite cycle -+ new language files: uzbek_cyrillic and urbek_latin -- bug #2814109 [search] Right frame is blank -- bug #2816840 [priv] Cannot change a user's details -- bug #2816165 [display] Executed query not always displayed -- bug #2819944 [setup] Incorrect mention of designer_coords -- bug #2821757 [insert] "Insert another new row" no longer worked -+ [lang] Norwegian update, thanks to Sven-Erik Andersen -- bug [core] PMA_pow() can support negative exponents in the pow() case -+ [lang] Brazilian Portuguese update, thanks to Fabio Bucior - fabiobucior -- patch #2822384 [docs] Missing auth_type in docs-example, - thanks to Jürgen Wind - windkiel -- patch #2819728 [display] Slider effect jumping to top of page, - thanks to Jan Radem - summsel -- bug [display] Incorrect computation of overhead stats in server view - for tables under the InnoDB engine -+ [lang] Swedish update, thanks to Björn T. Hallberg - -3.2.0.1 (2009-06-30) -- [security] XSS: Insufficient output sanitizing in bookmarks - -3.2.0.0 (2009-06-15) -- [core] better support for vendor customisation (based on what Debian needs) -+ rfe #2127987 warn when session.gc_maxlifetime is less than cookie validity -+ rfe #2100910 configurable default charset for import -+ rfe #1913541 link to InnoDB status when error 150 occurs -+ rfe #1927189 strip ` from column names on import -+ rfe #1821619 LeftFrameDBSeparator can be an array -+ patch #1821619 [privileges] Extra back reference when editing table-specific - privileges, thanks to Herman van Rink - helmo -+ patch #2356575 [display] Sortable database columns, - thanks to Bryce Thornton - brycethornton -- patch #2486825 [lang] Wrong string in setup script hints, - thanks to Isaac Bennetch - ibennetch -- patch #2498350 [cleanup] XHTML cleanup, thanks to Virsacer - virsacer -+ patch #2494192 [display] Possibility of disabling the sliders, - thanks to Virsacer - virsacer -+ patch #2506831 [privileges] Create user for existing database, - thanks to Herman van Rink and Virsacer -+ patch #2505255 [privileges] Cleanup, thanks to Virsacer - virsacer -- bug #2414056 [auth] AllowNoPasswordRoot error message is too vague -- patch #2596230 [XHTML] View table headers/footers completely, - thanks to Virsacer - virsacer -- patch #2602633 [core] support column name having square brackets, - thanks to Herman van Rink - helmo -+ [lang] Lithuanian update, thanks to Rytis Slatkevicius - rytis_s -+ [auth] New setting AllowNoPassword (supercedes AllowNoPasswordRoot) that - applies to all accounts (even the anonymous user) -- patch #2652972 [relation] Missing code with hashing for relationship - editing, thanks to knittl - knittl -+ rfe #2123386 Added option to disable mcrypt warning. -- bug #2648502 Request-URI Too Large error from Location header -+ rfe #1731967 Check for relations support on main page. -+ rfe #2186820 Explanation for using Host table. -+ rfe #1369509 Link to download more themes. -+ rfe #1666487 Add option to generate password on change password page. -+ rfe #1694104 Allow logging of user status with Apache. -- patch #2649087 None default is different than other None in some languages. -+ [lang] Chinese Simplified update, thanks to Shanyan Baishui - rimyxp -- patch #2550286 [display] Sort arrows problem, thanks to Virsacer - virsacer -- [security] warn about existence of config directory on main page -+ patch #2706761 [lang] Polish update, - thanks to Pawel Smolinski - zipoking -+ patch #2715142 [export] (rfe 2416960, escape new line in CSV export) - thanks to Derek Schaefer - drummingds1 -- patch #2727250 Optimizations for PHP loops - thanks to Haeber -- bug #2650776 [import] SQL_MODE not saved during Partial Import -- patch #1863739 [auth] cache control missing (PHP-CGI), thanks to stmfd -- patch #2750541 [parser] Incorrect parsing of constraints in ALTER TABLE, - thanks to Yannick Betemps - arkhee -+ patch #2735162 [status] Server status - replication, - thanks to Tomas Srnka - tomassrnka -+ patch #2745215 [edit] Multi-row change with "]" improved, - thanks to Virsacer - virsacer -+ rfe #2657696 Automatically copy generated password -- bug #2787162 [interface] Table with name 'log_views' is incorrectly displayed as a view -+ patch #2665440 Detect mcrypt initialization failure -+ [lang] Galician update, thanks to Xosé Calvo - xosecalvo -+ [lang] Swedish update, thanks to Björn T. Hallberg -+ [lang] Norwegian update, thanks to Sven-Erik Andersen -+ [lang] Catalan update, thanks to Xavier Navarro -+ [lang] Finnish update, thanks to Jouni Kahkonen -+ [lang] Hungarian update, thanks to Jozsef Tamas Herczeg - dodika - -3.1.6.0 (not released) -- bug #2785912 [doc] no ON UPDATE CURRENT_TIMESTAMP in list of attributes - -3.1.5.0 (2009-05-15) -- patch #2739001 [export] XML does not allow spaces in element names, - thanks to Derek Schaefer - drummingds1 -- bug #2780722 [import] Incorrect maximum file size -- bug #2780356 [calendar] Null checkbox not unchecked when date is chosen -- bug [calendar] js error "window.parent.addEvent is not a function" -- patch #2773818 [export] Invalid "Content-Encoding" header, - thanks to abignale - abignale -- bug #2787162 [interface] Table with name 'log_views' is incorrectly displayed as a view -- bug #2784400 [parser] INVOKER not understood by parser -- [core] Compatibility with PHP 5.3.0RC2 - -3.1.4.0 (2009-04-25) -+ patch #1808339 [doc] Apache SSLOptions and StdEnvVars FAQ, - thanks to JT Justman - jtjustman -- bug #2491017 [operations] ANSI mode not supported (db rename and table move) -- bug #2609346 [operations] Fix copying views. -- rfe #2127983 Readd documentation link, it does not protect against anything. -- bug #1675249 [doc] Apache reverse proxy and cookies FAQ -- bug #2682140 UUID() and CURRENT_USER() should not accept arguments -- patch #2682833 [core] Fatal error: Call to a member function isDisplayed(), - thanks to Christian Rodriguez - judas_iscariote -- patch #2702772 [lang] Duplicate sentence in Polish, - thanks to Pawel Smolinski - zipoking -- patch #2709040 [doc] Wrong link in ChangeLog formatter, - thanks to Petr Vorel - pevik -- patch #2715417 [interface] Fixed truncation of enum/set values containing parenthesis - thanks to Marco Moreno - mmoreno -+ [lang] Spanish update, thanks to Daniel Hinostroza -- bug #2724844 Add Fields: Add index is missing quotes - thanks to Luke Armstrong -- bug #2740550 [interface] Using textarea CharEditing drops default values -- bug #2729191 [config] CheckConfigurationPermissions = false is worthless -- bug #2687046 [export] Structure export: Null always YES -- [doc] typos, thanks to Cédric Corazza - -3.1.3.2 (2009-04-14) -- [security] Insufficient output sanitizing when generating configuration file - -3.1.3.1 (2009-03-24) -- [security] HTTP Response Splitting and file inclusion vulnerabilities -- [security] XSS vulnerability on export page -- [security] Insufficient output sanitizing when generating configuration file - -3.1.3.0 (2009-02-28) -+ [lang] Turkish update, thanks to Burak Yavuz -- patch #2496403 [display] Multi-row change with "]", - thanks to Virsacer - virsacer -- bug #2027720 [parser] Missing space after BINARY used as cast -- patch #2520747 [core] E_DEPRECATED compatibility for PHP 5.3, - thanks to Giovanni Giacobbi - themnemonic -- bug [display] Message "Bookmark created" is not displaying -+ [display] Show AUTO_INCREMENT instead of A_I when in vertical mode -- patch #2538358 [display] Conditions for relational display field, - thanks to Virsacer - virsacer -+ [lang] Mongolian update, thanks to Bayarsaikhan Enkhtaivan - bayaraa -- patch #2553372 [display] DB comment tooltips not shown on navi, - thanks to Erdem - ahard -- patch #2561433 [structure] Display true number of rows in a view - if it contains less than MaxExactCountViews, - thanks to Virsacer - virsacer -+ [lang] Polish update, thanks to Fixer - fixeron -- bug #2568722 [designer] Compound key not shown -- patch #2550323 [XHTML] in server_databases.php, thanks to Virsacer - virsacer -- patch #2358861 [navi] Row count tooltip wrong for information_schema, - thanks to Herman van Rink - helmo -- bug #2565948 [core] Changing the connection collation changed the client - charset. -+ [lang] Romanian update, thanks to Sergiu Bivol - sbivol -- patch #1760205 [data] Insert as new row: BLOB is lost, - thanks to Herman van Rink - helmo -+ [lang] Georgian update, thanks to George Machitidze - -3.1.2.0 (2009-01-19) -- bug #1253252 [display] Can't NULL a column with relation defined -- bug #2009500 [SQL] Small improvements in generated SQL (partial fix) -- bug #1963184 [export] YAML export improvement, - thanks to Bryce Thornton - brycethornton -+ [lang] Dutch update, thanks to Herman van Rink - helmo -- patch #2407785 [cleanup] ereg*() deprecated in PHP 5.3, - thanks to Alex Frase - atfrase -- bug #2417058 [properties] Edit fields: losing auto-increment setting -- patch #2444082 [changelog] changelog.php linkifies one link wrong, - thanks to Robert Xiao - nneonneo -- bug #2363653 [properties] Various problems with table structure -- bug [display] BIT field contents disappear when edited -+ [lang] Czech update, thanks to Ondřej Vadinský. -- bug #2461735 [operations] Table operations adds "row_format" -- bug #2445213 [export] Commas for CSV Excel 2008 for Mac -- bug #2397877 [core] ForceSSL and http auth_type -- bug #2473127 [display] Deleting rows displays tbl structure, not contents -- patch #2478940 [core] PHP 5.2+ warning does not work, - thanks to Jürgen Wind - windkiel -- bug #2416418 [privileges] Escaping special characters - --- Older ChangeLogs can be found on our project website --- http://www.phpmyadmin.net/old-stuff/ChangeLogs/
diff --git a/Documentation.html b/Documentation.html index 44dafe5..330161f 100644 --- a/Documentation.html +++ b/Documentation.html @@ -10,7 +10,7 @@ vim: expandtab ts=4 sw=4 sts=4 tw=78 <link rel="icon" href="./favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" href="./favicon.ico" type="image/x-icon" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <title>phpMyAdmin 3.3.1 - Documentation</title> + <title>phpMyAdmin 3.3.2 - Documentation</title> <link rel="stylesheet" type="text/css" href="docs.css" /> </head>
@@ -18,7 +18,7 @@ vim: expandtab ts=4 sw=4 sts=4 tw=78 <div id="header"> <h1> <a href="http://www.phpmyadmin.net/">php<span class="myadmin">MyAdmin</span></a> - 3.3.1 + 3.3.2 Documentation </h1> </div> @@ -1103,7 +1103,7 @@ CREATE DATABASE,ALTER DATABASE,DROP DATABASE</pre> <span id="cfg_Servers_tracking_drop_view">$cfg['Servers'][$i]['tracking_version_drop_view']</span> boolean </dt> <dd> - Whether a DROP VIEW IF EXISTS statement will added as first line to the log when creating a view. Default value is true. + Whether a DROP VIEW IF EXISTS statement will be added as first line to the log when creating a view. Default value is true. <br/><br/> </dd>
@@ -1112,7 +1112,7 @@ CREATE DATABASE,ALTER DATABASE,DROP DATABASE</pre> <span id="cfg_Servers_tracking_drop_table">$cfg['Servers'][$i]['tracking_version_drop_table']</span> boolean </dt> <dd> - Whether a DROP TABLE IF EXISTS statement will added as first line to the log when creating a table. Default value is true. + Whether a DROP TABLE IF EXISTS statement will be added as first line to the log when creating a table. Default value is true. <br/><br/> </dd>
@@ -1120,7 +1120,7 @@ CREATE DATABASE,ALTER DATABASE,DROP DATABASE</pre> <span id="cfg_Servers_tracking_drop_database">$cfg['Servers'][$i]['tracking_version_drop_database']</span> boolean </dt> <dd> - Whether a DROP DATABASE IF EXISTS statement will added as first line to the log when creating a database. Default value is true. + Whether a DROP DATABASE IF EXISTS statement will be added as first line to the log when creating a database. Default value is true. <br/><br/> </dd>
@@ -1379,6 +1379,12 @@ CREATE DATABASE,ALTER DATABASE,DROP DATABASE</pre> <abbr title="HyperText Transfer Protocol">HTTP</abbr> server is placed. </dd>
+ <dt id ="cfg_Error_Handler_display">$cfg['Error_Handler']['display'] boolean</dt> + <dd>Whether to display errors from PHP or not.</dd> + + <dt id ="cfg_Error_Handler_gather">$cfg['Error_Handler']['gather'] boolean</dt> + <dd>Whether to gather errors from PHP or not.</dd> + <dt id="cfg_LeftFrameLight">$cfg['LeftFrameLight'] boolean</dt> <dd>Defines whether to use a select-based menu and display only the current tables in the left frame (smaller page). Only in Non-Lightmode you can @@ -1883,20 +1889,20 @@ $cfg['TrustedProxies'] = name of the field. The comment is shown as a tool-tip for that field. </dd>
- <dt id ="cfb_SQLQuery_Edit">$cfg['SQLQuery']['Edit'] boolean</dt> + <dt id ="cfg_SQLQuery_Edit">$cfg['SQLQuery']['Edit'] boolean</dt> <dd>Whether to display an edit link to change a query in any SQL Query box.</dd>
- <dt id ="cfb_SQLQuery_Explain">$cfg['SQLQuery']['Explain'] boolean</dt> + <dt id ="cfg_SQLQuery_Explain">$cfg['SQLQuery']['Explain'] boolean</dt> <dd>Whether to display a link to explain a SELECT query in any SQL Query box.</dd>
- <dt id ="cfb_SQLQuery_ShowAsPHP">$cfg['SQLQuery']['ShowAsPHP'] boolean</dt> + <dt id ="cfg_SQLQuery_ShowAsPHP">$cfg['SQLQuery']['ShowAsPHP'] boolean</dt> <dd>Whether to display a link to wrap a query in PHP code in any SQL Query box.</dd>
- <dt id ="cfb_SQLQuery_Validate">$cfg['SQLQuery']['Validate'] boolean</dt> + <dt id ="cfg_SQLQuery_Validate">$cfg['SQLQuery']['Validate'] boolean</dt> <dd>Whether to display a link to validate a query in any SQL Query box. See also <tt><a href="#cfg_SQLValidator">$cfg_SQLValidator</a></tt>.</dd>
- <dt id ="cfb_SQLQuery_Refresh">$cfg['SQLQuery']['Refresh'] boolean</dt> + <dt id ="cfg_SQLQuery_Refresh">$cfg['SQLQuery']['Refresh'] boolean</dt> <dd>Whether to display a link to refresh a query in any SQL Query box.</dd>
<dt id="cfg_UploadDir">$cfg['UploadDir'] string</dt> @@ -3055,11 +3061,37 @@ RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
<p> Yes but the default configuration values of Suhosin are known to cause problems with some operations, for example editing a table with many - columns and no primary key. Tuning information is available at - <a href="http://www.hardened-php.net/hphp/troubleshooting.html"> - http://www.hardened-php.net/hphp/troubleshooting.html</a>, - although the parameter names have changed (<tt>suhosin</tt> instead - of <tt>hphp</tt>). See also the <a href="#cfg_SuhosinDisableWarning"> + columns and no primary key or with textual primary key. +</p> +<p> + Suhosin configuration might lead to malfunction in some cases and it can + not be fully avoided as phpMyAdmin is kind of application which needs to + transfer big amounts of fields in single HTTP request, what is something + what Suhosin tries to prevent. Generally all + <code>suhosin.request.*</code>, <code>suhosin.post.*</code> and + <code>suhosin.get.*</code> directives can have negative effect on + phpMyAdmin usability. You can always find in your error logs which limit + did cause dropping of variable, so you can diagnose the problem and adjust + matching configuration variable. +</p> +<p> + The default values for most Suhosin configuration options will work in most + scenarios, however you might want to adjust at least following parameters: +</p> + +<ul> + <li><a href="http://www.hardened-php.net/suhosin/configuration.html#suhosin.request.max_vars">suhosin.request.max_vars</a> should be increased (eg. 2048)</li> + <li><a href="http://www.hardened-php.net/suhosin/configuration.html#suhosin.post.max_vars">suhosin.post.max_vars</a> should be increased (eg. 2048)</li> + <li><a href="http://www.hardened-php.net/suhosin/configuration.html#suhosin.request.max_array_index_length">suhosin.request.max_array_index_length</a> should be increased (eg. 256)</li> + <li><a href="http://www.hardened-php.net/suhosin/configuration.html#suhosin.post.max_array_index_length">suhosin.post.max_array_index_length</a> should be increased (eg. 256)</li> + <li><a href="http://www.hardened-php.net/suhosin/configuration.html#suhosin.request.max_totalname_length">suhosin.request.max_totalname_length</a> should be increased (eg. 8192)</li> + <li><a href="http://www.hardened-php.net/suhosin/configuration.html#suhosin.post.max_totalname_length">suhosin.post.max_totalname_length</a> should be increased (eg. 8192)</li> + <li><a href="http://www.hardened-php.net/suhosin/configuration.html#suhosin.sql.bailout_on_error">suhosin.sql.bailout_on_error</a> needs to be disabled (the default)</li> + <li><a href="http://www.hardened-php.net/suhosin/configuration.html#logging_configuration">suhosin.log.*</a> should not include SQL, otherwise you get big slowdown</li> +</ul> + + <p> + You can also disable the warning using the <a href="#cfg_SuhosinDisableWarning"> <tt>SuhosinDisableWarning</tt> directive</a>. </p>
@@ -4326,20 +4358,23 @@ chmod o+rwx tmp
<p> The following method is preferred for new developers:</p>
-<ol><li>fetch the current SVN tree over anonymous SVN:<br /> - <tt>svn co https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/trunk/phpMyAdmin</tt><br /> +<ol><li>fetch the current git repository over anonymous git:<br /> + <tt>git clone + git://phpmyadmin.git.sourceforge.net/gitroot/phpmyadmin/phpmyadmin</tt><br /> </li> <li>add your stuff</li> <li>generate patch with your changes: - <tt>svn diff</tt><br /> + <tt>git diff > xxx.diff</tt><br /> </li> - <li>put the patch inside the <a + <li>submit your patch via the <a href="https://sourceforge.net/tracker/?group_id=23067&atid=377410">patch tracker of the phpMyAdmin project</a>. </li> </ol>
-<p> Write access to the SVN tree is granted only to experienced developers who +<p>More details on git are available on <a href="http://wiki.phpmyadmin.net/pma/Devel:Git">our wiki</a>.</p> + +<p> Write access to the repository is granted only to experienced developers who have already contributed something useful to phpMyAdmin.<br /> Also, have a look at the <a href="#developers">Developers section</a>.</p>
@@ -4422,6 +4457,9 @@ now synchronize your databases placed on the same server or some remote server. <abbr title="PHP Extension and Application Repository">PEAR</abbr> coding standards</a> on the other hand. Please pay attention to this.</li> + <li>Please enable showing PHP errors and warnings by the + <code><a href="#cfg_Error_Handler_display">$cfg['Error_Handler']['display']</a></code> + configuration directive.</li> <li>Please try to keep up the file-naming conventions. Table-related stuff goes to <i>tbl_*.php</i>, db-related code to <i>db_*.php</i>, server-related tools to <i>server_*.php</i> and so on.</li> diff --git a/README b/README index 3581064..ae0af44 100644 --- a/README +++ b/README @@ -5,7 +5,7 @@ phpMyAdmin - Readme
A set of PHP-scripts to manage MySQL over the web.
- Version 3.3.1 + Version 3.3.2 ------------- http://www.phpmyadmin.net/
diff --git a/db_operations.php b/db_operations.php index 624007e..f051877 100644 --- a/db_operations.php +++ b/db_operations.php @@ -110,7 +110,7 @@ if (strlen($db) && (! empty($db_rename) || ! empty($db_copy))) {
// do not copy the data from a Merge table // note: on the calling FORM, 'data' means 'structure and data' - if ($tables_full[$each_table]['Engine'] == 'MRG_MyISAM') { + if (PMA_Table::isMerge($db, $each_table)) { if ($this_what == 'data') { $this_what = 'structure'; } diff --git a/db_printview.php b/db_printview.php index bf51015..d656f0e 100644 --- a/db_printview.php +++ b/db_printview.php @@ -117,7 +117,7 @@ else { $sum_entries = $sum_size = 0; $odd_row = true; foreach ($tables as $sts_data) { - if (strtoupper($sts_data['ENGINE']) == 'MRG_MYISAM' + if (PMA_Table::isMerge($db, $sts_data['TABLE_NAME']) || strtoupper($sts_data['ENGINE']) == 'FEDERATED') { $merged_size = true; } else { diff --git a/db_structure.php b/db_structure.php index fa18390..845ffd3 100644 --- a/db_structure.php +++ b/db_structure.php @@ -226,7 +226,11 @@ foreach ($tables as $keyname => $each_table) { } //$display_rows = ' - '; break; + // Mysql 5.0.x (and lower) uses MRG_MyISAM and MySQL 5.1.x (and higher) uses MRG_MYISAM + // Both are aliases for MERGE + case 'MRG_MyISAM' : case 'MRG_MYISAM' : + case 'MERGE' : case 'BerkeleyDB' : // Merge or BerkleyDB table: Only row count is accurate. if ($is_show_stats) { @@ -255,7 +259,7 @@ foreach ($tables as $keyname => $each_table) { } } // end switch
- if ('MRG_MYISAM' != $each_table['ENGINE']) { + if (! PMA_Table::isMerge($db, $each_table['TABLE_NAME'])) { $sum_entries += $each_table['TABLE_ROWS']; }
diff --git a/export.php b/export.php index f8c9914..dae4cf4 100644 --- a/export.php +++ b/export.php @@ -439,7 +439,7 @@ if ($export_type == 'server') { } } // if this is a view or a merge table, don't export data - if (isset($GLOBALS[$what . '_data']) && !($is_view || (strcasecmp(PMA_Table::sGetStatusInfo($current_db, $table, 'Engine'),'MRG_MYISAM') == 0))) { + if (isset($GLOBALS[$what . '_data']) && !($is_view || PMA_Table::isMerge($current_db, $table))) { $local_query = 'SELECT * FROM ' . PMA_backquote($current_db) . '.' . PMA_backquote($table); if (!PMA_exportData($current_db, $table, $crlf, $err_url, $local_query)) { break 3; @@ -488,7 +488,7 @@ if ($export_type == 'server') { } } // if this is a view or a merge table, don't export data - if (isset($GLOBALS[$what . '_data']) && !($is_view || (strcasecmp(PMA_Table::sGetStatusInfo($db, $table, 'Engine'),'MRG_MYISAM') == 0))) { + if (isset($GLOBALS[$what . '_data']) && !($is_view || PMA_Table::isMerge($db, $table))) { $local_query = 'SELECT * FROM ' . PMA_backquote($db) . '.' . PMA_backquote($table); if (!PMA_exportData($db, $table, $crlf, $err_url, $local_query)) { break 2; @@ -537,8 +537,7 @@ if ($export_type == 'server') { // If this is an export of a single view, we have to export data; // for example, a PDF report // if it is a merge table, no data is exported - $is_merge = ! PMA_Table::isView($db, $table) && (strcasecmp(PMA_Table::sGetStatusInfo($db, $table, 'Engine'),'MRG_MYISAM') == 0); - if (isset($GLOBALS[$what . '_data']) && ! $is_merge) { + if (isset($GLOBALS[$what . '_data']) && ! PMA_Table::isMerge($db, $table)) { if (!empty($sql_query)) { // only preg_replace if needed if (!empty($add_query)) { diff --git a/lang/belarusian_latin-utf-8.inc.php b/lang/belarusian_latin-utf-8.inc.php index de2985e..bb0bc70 100644 --- a/lang/belarusian_latin-utf-8.inc.php +++ b/lang/belarusian_latin-utf-8.inc.php @@ -21,18 +21,6 @@ $month = array('Stu', 'Lut', 'Sak', 'Kra', 'Tra', 'Čer', 'Lip', 'Žni', 'Vier', $datefmt = '%d %B %Y, %H:%M'; $timespanfmt = '%s dzion, %s hadzinaŭ, %s chvilinaŭ i %s sekundaŭ';
-kali łaska, praviercie kanfihuracyju PHP'; -Heta moža adbycca ŭ vypadku, kali PHP znojdzie syntaksyčnuju pamyłku ŭ im abo kali PHP nia moža znajści fajł. -Kali łaska, zahruzicie kanfihuracyjny fajł niepasredna, vykarystoŭvajučy spasyłku, pryviedzienuju nižej, i pračytajcie paviedamleńni PHP pra pamyłki. U bolšaści vypadkaŭ, niedzie prapuščany apostraf abo kropka z koskaj. -Kali vy atrymajecie čystuju staronku, značyć, usio dobra.'; - -Kali łaska, spytajcie aŭtara, što robić %s.'; -Kali vam treba ŭžyć zvarotny słeš ("") abo apostraf ("'") u hetych značeńniach, ustaŭcie zvarotny słeš pierad imi (naprykład, '\\xyz' abo 'a\'b').'; - -Kali vam patrebna ŭžyć zvarotny słeš ("") abo apostraf ("'") siarod hetych značeńniaŭ, pastaŭcie pierad imi zvarotny słeš (naprykład, '\\xyz' abo 'a\'b').'; - -hetaje pole nia moža być adredagavanaje '; - $strAbortedClients = 'Spyniena'; $strAccessDeniedCreateConfig = 'Imavierna, pryčyna hetaha ŭ tym, što nia stvorany kanfihuracyjny fajł. Kab jaho stvaryć, možna vykarystać %1$snaładačny skrypt%2$s.'; $strAccessDeniedExplanation = 'phpMyAdmin pasprabavaŭ padłučycca da servera MySQL, ale server adchiliŭ złučeńnie. Praviercie imia chostu, karystalnika i parol u config.inc.php i ŭpeŭniciesia, što jany adpaviadajuć infarmacyi, jakuju daŭ administratar MySQL-servera.'; @@ -124,7 +112,7 @@ $strCancel = 'Skasavać'; $strCanNotLoadExportPlugins = 'Niemahčyma zahruzić płahiny ekspartavańnia, kali łaska, praviercie ŭstalavanyja fajły!'; $strCanNotLoadImportPlugins = 'Niemahčyma zahruzić płahiny impartavańnia, kali łaska, praviercie ŭstaloŭku!'; $strCannotLogin = 'Niemahčyma załahavacca na server MySQL'; -$strCantLoad = 'niemahčyma zahruzić pašyreńnie %s; +$strCantLoad = 'niemahčyma zahruzić pašyreńnie %s; kali łaska, praviercie kanfihuracyju PHP'; $strCantLoadRecodeIconv = 'Niemahčyma zahruzić pašyreńnie iconv abo pašyreńnie recode, nieabchodnyja dla pierakadavańnia symbalaŭ. Naładźcie PHP na vykarystańnie hetych pašyreńniaŭ abo ŭvohule adklučycie pierakadavańnie symbalaŭ u phpMyAdmin.'; $strCantRenameIdxToPrimary = 'Niemahčyma pierajmienavać indeks u PRIMARY!'; $strCantUseRecodeIconv = 'Niemahčyma vykarystać ni funkcyju iconv, ni libiconvr, ni recode_string u toj čas, jak pašyreńnie paviedamlaje, što jano zahružanaje. Praviercie vašuju kanfihuracyju PHP.'; @@ -164,7 +152,7 @@ $strCompleteInserts = 'Poŭnaja ŭstaŭka'; $strCompression = 'Ścisk'; $strCompressionWillBeDetected = 'Metad ścisku impartavanaha fajła budzie vyznačanaja aŭtamatyčna z: %s'; $strConfigDefaultFileError = 'Niemahčyma zahruzić kanfihuracyju pa zmoŭčańni z: "%1$s"'; -$strConfigFileError = 'phpMyAdmin nia moža pračytać kanfihuracyjny fajł! +$strConfigFileError = 'phpMyAdmin nia moža pračytać kanfihuracyjny fajł! Heta moža adbycca ŭ vypadku, kali PHP znojdzie syntaksyčnuju pamyłku ŭ im abo kali PHP nia moža znajści fajł. Kali łaska, zahruzicie kanfihuracyjny fajł niepasredna, vykarystoŭvajučy spasyłku, pryviedzienuju nižej, i pračytajcie paviedamleńni PHP pra pamyłki. U bolšaści vypadkaŭ, niedzie prapuščany apostraf abo kropka z koskaj. Kali vy atrymajecie čystuju staronku, značyć, usio dobra.'; $strConfigureTableCoord = 'Kali łaska, skanfihurujcie kaardynaty dla tablicy %s'; $strConnectionError = 'Niemahčyma padłučycca: niapravilnyja nałady.'; $strConnections = 'Padłučeńni'; @@ -352,13 +340,13 @@ $strHaveToShow = 'Vam nieabchodna vybrać prynamsi adnu kalonku dla adlustravań $strHebrew = 'Habrejskaja'; $strHelp = 'Dapamoha'; $strHexForBLOB = 'Šasnaccatkovyja značeńni dla polaŭ typu BLOB'; -$strHide = 'Schavać'; $strHideShowAll = 'Schavać/pakazać usie tablicy'; $strHideShowNoRelation = 'Schavać/pakazać tablicy biaz suviaziaŭ'; +$strHide = 'Schavać'; $strHome = 'Da pačatku'; $strHomepageOfficial = 'Aficyjnaja staronka phpMyAdmin'; -$strHost = 'Chost'; $strHostEmpty = 'Pustoje imia chostu!'; +$strHost = 'Chost'; $strHTMLExcel = 'Microsoft Excel 2000'; $strHTMLWord = 'Microsoft Word 2000'; $strHungarian = 'Vuhorskaja'; @@ -387,8 +375,8 @@ $strInnoDBAutoextendIncrementDesc = ' Pamier pryraščeńnia dla pašyreńnia pa $strInnoDBBufferPoolSizeDesc = 'Pamier buferu ŭ pamiaci, jaki InnoDB vykarystoŭvaje dla kešavańnia dadzienych i indeksaŭ tablic.'; $strInnoDBBufferPoolSize = 'Pamier pułu buferu'; $strInnoDBDataFilePath = 'Fajły dadzienych'; -$strInnoDBDataHomeDir = 'Chatniaja tečka dadzienych'; $strInnoDBDataHomeDirDesc = 'Ahulnaja častka šlachu tečki da ŭsich fajłaŭ dadzienych InnoDB.'; +$strInnoDBDataHomeDir = 'Chatniaja tečka dadzienych'; $strInnoDBPages = 'staronak'; $strInnodbStat = 'Stan InnoDB'; $strInsecureMySQL = 'Vaš kanfihuracyjny fajł utrymlivaje nałady (karystalnik root biez parolu), jakija adpaviadajuć pryvilejavanamu karystalniku MySQL pa zmoŭčańni. Vaš server MySQL pracuje z hetaj naładaj pa zmoŭčańni i źjaŭlajecca adkrytym dla źniešniaha ŭryvańnia, i tamu vam abaviazkova treba vypravić hetuju chibu ŭ biaśpiecy.'; @@ -431,7 +419,6 @@ $strKorean = 'Karejskaja'; $strLandscape = 'Krajavid'; $strLanguage = 'Mova'; $strLanguageUnknown = 'Nieviadomaja mova: %1$s.'; -$strLatchedPages = 'Fiksavanyja staronki'; $strLatexCaption = 'Zahałovak tablicy'; $strLatexContent = 'Źmieściva tablicy __TABLE__'; $strLatexContinuedCaption = 'Praciahnuty zahałovak tablicy'; @@ -440,6 +427,7 @@ $strLatexIncludeCaption = 'Uklučyć zahałovak tablicy'; $strLatexLabel = 'Kluč mietki'; $strLaTeX = 'LaTeX'; $strLatexStructure = 'Struktura tablicy __TABLE__'; +$strLatchedPages = 'Fiksavanyja staronki'; $strLatvian = 'Łatvijskaja'; $strLDI = 'CSV z vykarystańniem LOAD DATA'; $strLDILocal = 'Vykarystoŭvać klučavoje słova LOCAL'; @@ -468,9 +456,9 @@ $strMIME_available_mime = 'Dastupnyja MIME-typy'; $strMIME_available_transform = 'Dastupnyja pieraŭtvareńni'; $strMIME_description = 'Apisańnie'; $strMIME_MIMEtype = 'MIME-typ'; -$strMIME_nodescription = 'Niama dastupnych apisańniaŭ dla hetaha pieraŭtvareńnia. +$strMIME_nodescription = 'Niama dastupnych apisańniaŭ dla hetaha pieraŭtvareńnia. Kali łaska, spytajcie aŭtara, što robić %s.'; $strMIME_transformation_note = 'Dla atrymańnia śpisu dastupnych opcyjaŭ transfarmacyi i pieraŭtvareńniaŭ ichnych MIME-typaŭ, naciśnicie na %sapisańni pieraŭtvareńniaŭ%s'; -$strMIME_transformation_options_note = 'Kali łaska, uvodźcie značeńni opcyjaŭ pieraŭtvareńnia vykarystoŭvajučy hety farmat: 'a', 100, b,'c'... +$strMIME_transformation_options_note = 'Kali łaska, uvodźcie značeńni opcyjaŭ pieraŭtvareńnia vykarystoŭvajučy hety farmat: 'a', 100, b,'c'... Kali vam treba ŭžyć zvarotny słeš ("") abo apostraf ("'") u hetych značeńniach, ustaŭcie zvarotny słeš pierad imi (naprykład, '\\xyz' abo 'a\'b').'; $strMIME_transformation_options = 'Opcyi pieraŭtvareńnia'; $strMIME_transformation = 'Pieraŭtvareńnie MIME-typu braŭzeram'; $strMIMETypesForTable = 'MIME-typy tablicy'; @@ -776,7 +764,7 @@ $strServerVars = 'Nałady i źmiennyja servera'; $strServerVersion = 'Versija servera'; $strSessionStartupErrorGeneral = 'Niemahčyma biez pamyłak raspačać sesiju. Kali łaska, praviercie pamyłki ŭ vašym łogu PHP i, mahčyma, taksama ŭ łogu web-servera i skanfihurujcie PHP pravilna.'; $strSessionValue = 'Značeńnie sesii'; -$strSetEnumVal = 'Kali typ pola "enum" abo "set", kali łaska, uvodźcie značeńni vykarystoŭvajučy hety farmat: 'a','b','c'... +$strSetEnumVal = 'Kali typ pola "enum" abo "set", kali łaska, uvodźcie značeńni vykarystoŭvajučy hety farmat: 'a','b','c'... Kali vam patrebna ŭžyć zvarotny słeš ("") abo apostraf ("'") siarod hetych značeńniaŭ, pastaŭcie pierad imi zvarotny słeš (naprykład, '\\xyz' abo 'a\'b').'; $strShowAll = 'Pakazać usie'; $strShowColor = 'Pakazać koler'; $strShowDatadictAs = 'Farmat słoŭnika dadzienych'; @@ -928,9 +916,9 @@ $strSQPBugInvalidIdentifer = 'Niapravilny identyfikatar'; $strSQPBugUnclosedQuote = 'Niezakrytaje dvukośsie'; $strSQPBugUnknownPunctuation = 'Nieviadomy symbal punktuacyi'; $strStandInStructureForView = 'Zamianialnaja struktura dla prahladu'; -$strStatCheckTime = 'Apošniaja pravierka'; $strStatCreateTime = 'Stvoranaja'; $strStatement = 'Vyrazy'; +$strStatCheckTime = 'Apošniaja pravierka'; $strStatisticsOverrun = 'Na zahružanym servery bajtavyja ličylniki mohuć pieraskokvać koła, tamu statystyka, jakuju pakazvaje MySQL-server, moža być niapravilnaj.'; $strStatUpdateTime = 'Apošniaje abnaŭleńnie'; $strStatus = 'Stan'; @@ -975,7 +963,7 @@ $strTable = 'Tablica'; $strTakeIt = 'hetaja'; $strTblPrivileges = 'Pryvilei, specyfičnyja dla tablicy'; $strTempData = 'Časovyja dadzienyja'; -$strTextAreaLength = ' Z-za vialikaj daŭžyni, +$strTextAreaLength = ' Z-za vialikaj daŭžyni, hetaje pole nia moža być adredagavanaje '; $strTexyText = 'Tekst Texy!'; $strThai = 'Tajlandzkaja'; $strThemeDefaultNotFound = 'Tema pa zmoŭčańni %s nia znojdzienaja!'; @@ -1111,7 +1099,7 @@ $strCouldNotConnectTarget = 'Could not connect to the target'; //to translate $strCreateUserDatabasePrivileges = 'Grant all privileges on database "%s"'; //to translate $strCurrentServer = 'Current server'; //to translate
-$strDatabaseNotExisting = ''%s' database does not exist.'; //to translate +$strDatabaseNotExisting = ''%s' database does not exist.'; //to translate $strDatabase_src = 'Source database'; //to translate $strDatabase_trg = 'Target database'; //to translate $strDataDiff = 'Data Difference'; //to translate @@ -1166,11 +1154,11 @@ $strRemoteServer = 'Remote server'; //to translate $strRemoveCRLF = 'Remove CRLF characters within fields'; //to translate $strReplicationAddLines = 'Now, add the following lines at the end of your my.cnf and please restart the MySQL server afterwards.'; //to translate $strReplicationAddSlaveUser = 'Add slave replication user'; //to translate -$strReplicationChangedSuccesfully = 'Master server changed succesfully to %s'; //to translate $strReplicationConfiguredMaster = 'This server is configured as master in a replication process.'; //to translate $strReplicationControlSlave = 'Control slave:'; //to translate $strReplicationErrorGetPosition = 'Unable to read master log position. Possible privilege problem on master.'; //to translate $strReplicationErrorMasterConnect = 'Unable to connect to master %s.'; //to translate +$strReplicationChangedSuccesfully = 'Master server changed succesfully to %s'; //to translate $strReplicationMasterChooseAll = 'Replicate all databases; Ignore:'; //to translate $strReplicationMasterChooseIgn = 'Ignore all databases; Replicate:'; //to translate $strReplicationMasterChooseMode = 'This server is not configured as master server in a replication process. You can choose from either replicating all databases and ignoring certain (useful if you want to replicate majority of databases) or you can choose to ignore all databases by default and allow only certain databases to be replicated. Please select the mode:'; //to translate @@ -1183,10 +1171,10 @@ $strReplicationShowConnectedSlavesNote = 'Only slaves started with the --report- $strReplicationShowConnectedSlaves = 'Show connected slaves'; //to translate $strReplicationShowMasterStatus = 'Show master status'; //to translate $strReplicationSkippingErrorWarn = 'Skipping error(s) might lead into unsynchronized master and slave!'; //to translate -$strReplicationSlaveChangeMaster = 'Change or reconfigure master server'; //to translate $strReplicationSlaveConfiguration = 'Slave configuration'; //to translate $strReplicationSlaveConfigured = 'Server is configured as slave in a replication process. Would you like to:'; //to translate $strReplicationSlaveErrorManagement = 'Error management:'; //to translate +$strReplicationSlaveChangeMaster = 'Change or reconfigure master server'; //to translate $strReplicationSlaveIOThread = 'IO Thread %s only'; //to translate $strReplicationSlaveNotConfigured = 'This server is not configured as slave in a replication process. Would you like to <a href="%s">configure</a> it?'; //to translate $strReplicationSlaveReset = 'Reset slave'; //to translate @@ -1225,13 +1213,6 @@ $strSetupBZipDump_name = 'Bzip2'; //to translate $strSetupBZipDumpWarning = '[a@?page=form&formset=features#tab_Import_export]Bzip2 compression and decompression[/a] requires functions (%s) which are unavailable on this system.'; //to translate $strSetupCannotLoadConfig = 'Cannot load or save configuration'; //to translate $strSetupCannotLoadConfigMsg = 'Please create web server writable folder [em]config[/em] in phpMyAdmin top level directory as described in [a@../Documentation.html#setup_script]documentation[/a]. Otherwise you will be only able to download or display it.'; //to translate -$strSetupCharEditing_desc = 'Defines which type of editing controls should be used for CHAR and VARCHAR fields; [kbd]input[/kbd] - allows limiting of input length, [kbd]textarea[/kbd] - allows newlines in fields'; //to translate -$strSetupCharEditing_name = 'CHAR fields editing'; //to translate -$strSetupCharTextareaCols_desc = 'Number of columns for CHAR/VARCHAR textareas'; //to translate -$strSetupCharTextareaCols_name = 'CHAR textarea columns'; //to translate -$strSetupCharTextareaRows_desc = 'Number of rows for CHAR/VARCHAR textareas'; //to translate -$strSetupCharTextareaRows_name = 'CHAR textarea rows'; //to translate -$strSetupCheckConfigurationPermissions_name = 'Check config file permissions'; //to translate $strSetupClear = 'Clear'; //to translate $strSetupCompressOnFly_desc = 'Compress gzip/bzip2 exports on the fly without the need for much memory; if you encounter problems with created gzip/bzip2 files disable this feature'; //to translate $strSetupCompressOnFly_name = 'Compress on the fly'; //to translate @@ -1273,12 +1254,12 @@ $strSetuperror_nan_p = 'Not a positive number'; //to translate $strSetupExecTimeLimit_desc = 'Set the number of seconds a script is allowed to run ([kbd]0[/kbd] for no limit)'; //to translate $strSetupExecTimeLimit_name = 'Maximum execution time'; //to translate $strSetupExport_asfile_name = 'Save as file'; //to translate -$strSetupExport_charset_name = 'Character set of the file'; //to translate $strSetupExport_compression_name = 'Compression'; //to translate $strSetupExport_file_template_database_name = 'Database name template'; //to translate $strSetupExport_file_template_server_name = 'Server name template'; //to translate $strSetupExport_file_template_table_name = 'Table name template'; //to translate $strSetupExport_format_name = 'Format'; //to translate +$strSetupExport_charset_name = 'Character set of the file'; //to translate $strSetupExport_onserver_name = 'Save on server'; //to translate $strSetupExport_onserver_overwrite_name = 'Overwrite existing file(s)'; //to translate $strSetupExport_remember_file_template_name = 'Remember file name template'; //to translate @@ -1341,6 +1322,13 @@ $strSetupGZipDump_desc = 'Enable [a@http://en.wikipedia.org/wiki/Gzip%5Dgzip%5B/a] c $strSetupGZipDump_name = 'GZip'; //to translate $strSetupGZipDumpWarning = '[a@?page=form&formset=features#tab_Import_export]GZip compression and decompression[/a] requires functions (%s) which are unavailable on this system.'; //to translate $strSetupHomepageLink = 'phpMyAdmin homepage'; //to translate +$strSetupCharEditing_desc = 'Defines which type of editing controls should be used for CHAR and VARCHAR fields; [kbd]input[/kbd] - allows limiting of input length, [kbd]textarea[/kbd] - allows newlines in fields'; //to translate +$strSetupCharEditing_name = 'CHAR fields editing'; //to translate +$strSetupCharTextareaCols_desc = 'Number of columns for CHAR/VARCHAR textareas'; //to translate +$strSetupCharTextareaCols_name = 'CHAR textarea columns'; //to translate +$strSetupCharTextareaRows_desc = 'Number of rows for CHAR/VARCHAR textareas'; //to translate +$strSetupCharTextareaRows_name = 'CHAR textarea rows'; //to translate +$strSetupCheckConfigurationPermissions_name = 'Check config file permissions'; //to translate $strSetupIconvExtraParams_name = 'Extra parameters for iconv'; //to translate $strSetupIgnoreErrors = 'Ignore errors'; //to translate $strSetupIgnoreMultiSubmitErrors_desc = 'If enabled, phpMyAdmin continues computing multiple-statement queries even if one of the queries failed'; //to translate @@ -1388,10 +1376,10 @@ $strSetupLoginCookieStore_name = 'Login cookie store'; //to translate $strSetupLoginCookieValidity_desc = 'Define how long (in seconds) a login cookie is valid'; //to translate $strSetupLoginCookieValidityMsg = '[a@?page=form&formset=features#tab_Security]Login cookie validity[/a] should be should be set to 1800 seconds (30 minutes) at most. Values larger than 1800 may pose a security risk such as impersonation.'; //to translate $strSetupLoginCookieValidity_name = 'Login cookie validity'; //to translate -$strSetupMaxCharactersInDisplayedSQL_desc = 'Maximum number of characters used when a SQL query is displayed'; //to translate -$strSetupMaxCharactersInDisplayedSQL_name = 'Maximum displayed SQL length'; //to translate $strSetupMaxDbList_desc = 'Maximum number of databases displayed in left frame and database list'; //to translate $strSetupMaxDbList_name = 'Maximum databases'; //to translate +$strSetupMaxCharactersInDisplayedSQL_desc = 'Maximum number of characters used when a SQL query is displayed'; //to translate +$strSetupMaxCharactersInDisplayedSQL_name = 'Maximum displayed SQL length'; //to translate $strSetupMaxRows_desc = 'Number of rows displayed when browsing a result set. If the result set contains more rows, "Previous" and "Next" links will be shown.'; //to translate $strSetupMaxRows_name = 'Maximum number of rows to display'; //to translate $strSetupMaxTableList_desc = 'Maximum number of tables displayed in table list'; //to translate @@ -1498,20 +1486,20 @@ $strSetupServers_table_info_desc = 'Table to describe the display fields, leave $strSetupServers_table_info_name = 'Display fields table'; //to translate $strSetupServers_user_desc = 'Leave empty if not using config auth'; //to translate $strSetupServers_user_name = 'User for config auth'; //to translate +$strSetupServers_verbose_desc = 'A user-friendly description of this server. Leave blank to display the hostname instead.'; //to translate $strSetupServers_verbose_check_desc = 'Disable if you know that your pma_* tables are up to date. This prevents compatibility checks and thereby increases performance'; //to translate $strSetupServers_verbose_check_name = 'Verbose check'; //to translate -$strSetupServers_verbose_desc = 'A user-friendly description of this server. Leave blank to display the hostname instead.'; //to translate $strSetupServers_verbose_name = 'Verbose name of this server'; //to translate $strSetupSetValue = 'Set value: %s'; //to translate $strSetupShowAll_desc = 'Whether a user should be displayed a "show all (records)" button'; //to translate $strSetupShowAll_name = 'Allow to display all the rows'; //to translate -$strSetupShowChgPassword_desc = 'Please note that enabling this has no effect with [kbd]config[/kbd] authentication mode because the password is hard coded in the configuration file; this does not limit the ability to execute the same command directly'; //to translate -$strSetupShowChgPassword_name = 'Show password change form'; //to translate $strSetupShowCreateDb_name = 'Show create database form'; //to translate $strSetupShowForm = 'Show form'; //to translate $strSetupShowFunctionFields_desc = 'Display the function fields in edit/insert mode'; //to translate $strSetupShowFunctionFields_name = 'Show function fields'; //to translate $strSetupShowHiddenMessages = 'Show hidden messages (#MSG_COUNT)'; //to translate +$strSetupShowChgPassword_desc = 'Please note that enabling this has no effect with [kbd]config[/kbd] authentication mode because the password is hard coded in the configuration file; this does not limit the ability to execute the same command directly'; //to translate +$strSetupShowChgPassword_name = 'Show password change form'; //to translate $strSetupShowPhpInfo_desc = 'Shows link to [a@http://php.net/manual/function.phpinfo.php%5Dphpinfo()%5B/a] output'; //to translate $strSetupShowPhpInfo_name = 'Show phpinfo() link'; //to translate $strSetupShowServerInfo_name = 'Show detailed MySQL server information'; //to translate diff --git a/libraries/Config.class.php b/libraries/Config.class.php index f5feca8..63b314a 100644 --- a/libraries/Config.class.php +++ b/libraries/Config.class.php @@ -92,7 +92,7 @@ class PMA_Config */ function checkSystem() { - $this->set('PMA_VERSION', '3.3.1'); + $this->set('PMA_VERSION', '3.3.2'); /** * @deprecated */ diff --git a/libraries/Table.class.php b/libraries/Table.class.php index 0f407e7..ceed355 100644 --- a/libraries/Table.class.php +++ b/libraries/Table.class.php @@ -238,6 +238,31 @@ class PMA_Table return $type == 'VIEW'; }
+ /** + * Checks if this is a merge table + * + * If the ENGINE of the table is MERGE or MRG_MYISAM (alias), this is a merge table. + * + * @param string the database name + * @param string the table name + * @return boolean true if it is a merge table + * @access public + */ + static public function isMerge($db = null, $table = null) + { + // if called static, with parameters + if (! empty($db) && ! empty($table)) { + $engine = PMA_Table::sGetStatusInfo($db, $table, 'ENGINE', null, true); + } + // if called as an object + // does not work yet, because $this->settings[] is not filled correctly + else if (! empty($this)) { + $engine = $this->get('ENGINE'); + } + + return (! empty($engine) && ((strtoupper($engine) == 'MERGE') || (strtoupper($engine) == 'MRG_MYISAM'))); + } + static public function sGetToolTip($db, $table) { return PMA_Table::sGetStatusInfo($db, $table, 'Comment') @@ -254,9 +279,10 @@ class PMA_Table * @param string $table * @param string $info * @param boolean $force_read + * @param boolean if true, disables error message * @return mixed */ - static public function sGetStatusInfo($db, $table, $info = null, $force_read = false) + static public function sGetStatusInfo($db, $table, $info = null, $force_read = false, $disable_error = false) { if (! isset(PMA_Table::$cache[$db][$table]) || $force_read) { PMA_DBI_get_tables_full($db, $table); @@ -274,7 +300,9 @@ class PMA_Table }
if (! isset(PMA_Table::$cache[$db][$table][$info])) { - trigger_error('unknown table status: ' . $info, E_USER_WARNING); + if (! $disable_error) { + trigger_error('unknown table status: ' . $info, E_USER_WARNING); + } return false; }
diff --git a/libraries/common.lib.php b/libraries/common.lib.php index 522a224..d9ff7c5 100644 --- a/libraries/common.lib.php +++ b/libraries/common.lib.php @@ -1591,6 +1591,11 @@ function PMA_generate_html_tab($tab, $url_params = array()) $tab['attr'] .= ' title="' . htmlspecialchars($tab['warning']) . '"'; }
+ // If there are any tab specific URL parameters, merge those with the general URL parameters + if(! empty($tab['url_params']) && is_array($tab['url_params'])) { + $url_params = array_merge($url_params, $tab['url_params']); + } + // build the link if (!empty($tab['link'])) { $tab['link'] = htmlentities($tab['link']); diff --git a/libraries/config.default.php b/libraries/config.default.php index 3450739..b1fef17 100644 --- a/libraries/config.default.php +++ b/libraries/config.default.php @@ -439,7 +439,7 @@ $cfg['Servers'][$i]['tracking_default_statements'] = 'CREATE TABLE,ALTER TABLE,D 'CREATE DATABASE,ALTER DATABASE,DROP DATABASE';
/** - * Whether a DROP VIEW IF EXISTS statement will added as first line to the log when creating a view. + * Whether a DROP VIEW IF EXISTS statement will be added as first line to the log when creating a view. * * @global bool $cfg['Servers'][$i]['tracking_add_drop_view'] */ @@ -447,7 +447,7 @@ $cfg['Servers'][$i]['tracking_default_statements'] = 'CREATE TABLE,ALTER TABLE,D $cfg['Servers'][$i]['tracking_add_drop_view'] = true;
/** - * Whether a DROP TABLE IF EXISTS statement will added as first line to the log when creating a table. + * Whether a DROP TABLE IF EXISTS statement will be added as first line to the log when creating a table. * * @global bool $cfg['Servers'][$i]['tracking_add_drop_table'] */ @@ -455,7 +455,7 @@ $cfg['Servers'][$i]['tracking_add_drop_view'] = true; $cfg['Servers'][$i]['tracking_add_drop_table'] = true;
/** - * Whether a DROP DATABASE IF EXISTS statement will added as first line to the log when creating a database. + * Whether a DROP DATABASE IF EXISTS statement will be added as first line to the log when creating a database. * * @global bool $cfg['Servers'][$i]['tracking_add_drop_database'] */ @@ -463,7 +463,7 @@ $cfg['Servers'][$i]['tracking_add_drop_table'] = true; $cfg['Servers'][$i]['tracking_add_drop_database'] = true;
/** - * Whether a DROP DATABASE IF EXISTS statement will added as first line to the log when creating a database. + * Whether a DROP DATABASE IF EXISTS statement will be added as first line to the log when creating a database. * * @global bool $cfg['Servers'][$i]['tracking_version_drop_database'] */ diff --git a/libraries/db_events.inc.php b/libraries/db_events.inc.php index 5f99a8b..9ff5f76 100644 --- a/libraries/db_events.inc.php +++ b/libraries/db_events.inc.php @@ -51,7 +51,7 @@ if ($events) { ($ct%2 == 0) ? 'even' : 'odd', $event['EVENT_NAME'], ! empty($definition) ? PMA_linkOrButton('db_sql.php?' . $url_query . '&sql_query=' . urlencode($definition) . '&show_query=1&delimiter=' . urlencode($delimiter), $titles['Structure']) : ' ', - '<a href="sql.php?' . $url_query . '&sql_query=' . urlencode($sqlDrop) . '" onclick="return confirmLink(this, \'' . PMA_jsFormat($sqlDrop, false) . '\')">' . $titles['Drop'] . '</a>', + '<a href="sql.php?' . $url_query . '&sql_query=' . urlencode($sqlDrop) . '" onclick="return confirmLink(this, \'' . PMA_jsFormat($sqlDrop, false) . '\')">' . $titles['Drop'] . '</a>', $event['EVENT_TYPE']); $ct++; } diff --git a/libraries/display_export.lib.php b/libraries/display_export.lib.php index a680995..186b0d3 100644 --- a/libraries/display_export.lib.php +++ b/libraries/display_export.lib.php @@ -104,10 +104,7 @@ echo PMA_pluginGetJavascript($export_list); //]]> </script>
-<?php - $is_merge = ! PMA_Table::isView($db, $table) && (strcasecmp(PMA_Table::sGetStatusInfo($db, $table, 'Engine'),'MRG_MYISAM') == 0); - if (strlen($table) && ! isset($num_tables) && ! $is_merge) { -?> +<?php if (strlen($table) && ! isset($num_tables) && ! PMA_Table::isMerge($db, $table)) { ?> <div class="formelementrow"> <?php echo '<input type="radio" name="allrows" value="0" id="radio_allrows_0" checked="checked" />'; diff --git a/libraries/display_tbl.lib.php b/libraries/display_tbl.lib.php index 4f16ca5..41bb987 100644 --- a/libraries/display_tbl.lib.php +++ b/libraries/display_tbl.lib.php @@ -1361,12 +1361,13 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) { $field_flags = PMA_DBI_field_flags($dt_result, $i); if (isset($meta->_type) && $meta->_type === MYSQLI_TYPE_BIT) { $row[$i] = PMA_printable_bit_value($row[$i], $meta->length); - } elseif (stristr($field_flags, 'BINARY') && $meta->type == 'string') { - if ($_SESSION['tmp_user_values']['display_binary'] || (isset($GLOBALS['is_analyse']) && $GLOBALS['is_analyse'])) { + // some results of PROCEDURE ANALYSE() are reported as + // being BINARY but they are quite readable, + // so don't treat them as BINARY + } elseif (stristr($field_flags, 'BINARY') && $meta->type == 'string' && !(isset($GLOBALS['is_analyse']) && $GLOBALS['is_analyse'])) { + if ($_SESSION['tmp_user_values']['display_binary']) { // user asked to see the real contents of BINARY - // fields, or we detected a PROCEDURE ANALYSE in - // the query (results are reported as being - // binary strings) + // fields if ($_SESSION['tmp_user_values']['display_binary_as_hex']) { $row[$i] = bin2hex($row[$i]); } @@ -1670,7 +1671,11 @@ function PMA_displayTable_checkConfigParams() $_SESSION['tmp_user_values']['query'][$sql_key]['repeat_cells'] = $GLOBALS['cfg']['RepeatCells']; }
- if (PMA_isValid($_REQUEST['session_max_rows'], 'numeric') || $_REQUEST['session_max_rows'] == 'all') { + // as this is a form value, the type is always string so we cannot + // use PMA_isValid($_REQUEST['session_max_rows'], 'integer') + if ((PMA_isValid($_REQUEST['session_max_rows'], 'numeric') + && (int) $_REQUEST['session_max_rows'] == $_REQUEST['session_max_rows']) + || $_REQUEST['session_max_rows'] == 'all') { $_SESSION['tmp_user_values']['query'][$sql_key]['max_rows'] = $_REQUEST['session_max_rows']; unset($_REQUEST['session_max_rows']); } elseif (empty($_SESSION['tmp_user_values']['query'][$sql_key]['max_rows'])) { diff --git a/libraries/export/xls.php b/libraries/export/xls.php index b450d6f..efbb481 100644 --- a/libraries/export/xls.php +++ b/libraries/export/xls.php @@ -59,6 +59,7 @@ function PMA_exportFooter() { $tmp_filename = tempnam(realpath($GLOBALS['cfg']['TempDir']), 'pma_xls_');
$workbookWriter = new PHPExcel_Writer_Excel5($workbook); + $workbookWriter->setTempDir(realpath($GLOBALS['cfg']['TempDir'])); $workbookWriter->save($tmp_filename);
if (!PMA_exportOutputHandler(file_get_contents($tmp_filename))) { diff --git a/libraries/export/xlsx.php b/libraries/export/xlsx.php index 5a8ec70..1b24c4c 100644 --- a/libraries/export/xlsx.php +++ b/libraries/export/xlsx.php @@ -55,18 +55,18 @@ function PMA_exportComment($text) { function PMA_exportFooter() { global $workbook; global $tmp_filename; - + $tmp_filename = tempnam(realpath($GLOBALS['cfg']['TempDir']), 'pma_xlsx_'); - + $workbookWriter = new PHPExcel_Writer_Excel2007($workbook); $workbookWriter->save($tmp_filename); - + if (!PMA_exportOutputHandler(file_get_contents($tmp_filename))) { return FALSE; } - + unlink($tmp_filename); - + unset($GLOBALS['workbook']); unset($GLOBALS['sheet_index']);
@@ -82,17 +82,17 @@ function PMA_exportFooter() { */ function PMA_exportHeader() { global $db; - + /* Initialize the workbook */ $GLOBALS['workbook'] = new PHPExcel(); $GLOBALS['sheet_index'] = 0; global $workbook; - + $workbook->getProperties()->setCreator('phpMyAdmin ' . PMA_VERSION); $workbook->getProperties()->setLastModifiedBy('phpMyAdmin ' . PMA_VERSION); $workbook->getProperties()->setTitle($db); $workbook->getProperties()->setSubject('phpMyAdmin ' . PMA_VERSION . ' XLSX Dump'); - + return TRUE; }
@@ -106,8 +106,8 @@ function PMA_exportHeader() { * @access public */ function PMA_exportDBHeader($db) { - - + + return TRUE; }
@@ -153,33 +153,33 @@ function PMA_exportDBCreate($db) { function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) { global $workbook; global $sheet_index; - + /** * Get the data from the database using the original query */ $result = PMA_DBI_fetch_result($sql_query); $row_cnt = count($result); - + if ($row_cnt > 0) { $col_names = array_keys($result[0]); $fields_cnt = count($result[0]); $row_offset = 1; - + /* Only one sheet is created on workbook initialization */ if ($sheet_index > 0) { $workbook->createSheet(); } - + $workbook->setActiveSheetIndex($sheet_index); $workbook->getActiveSheet()->setTitle(substr($table, 0, 31)); - + if (isset($GLOBALS['xlsx_columns']) && $GLOBALS['xlsx_columns']) { for ($i = 0; $i < $fields_cnt; ++$i) { $workbook->getActiveSheet()->setCellValueByColumnAndRow($i, $row_offset, $col_names[$i]); } $row_offset++; } - + for ($r = 0; ($r < 65536) && ($r < $row_cnt); ++$r) { for ($c = 0; $c < $fields_cnt; ++$c) { if (!isset($result[$r][$col_names[$c]]) || is_null($result[$r][$col_names[$c]])) { @@ -194,10 +194,10 @@ function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) { } } } - + $sheet_index++; } - + return TRUE; }
diff --git a/libraries/export/xml.php b/libraries/export/xml.php index 5b82ad5..aab58d0 100644 --- a/libraries/export/xml.php +++ b/libraries/export/xml.php @@ -337,7 +337,7 @@ function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) { if (!isset($record[$i]) || is_null($record[$i])) { $record[$i] = 'NULL'; } - $buffer .= ' <column name="' . $columns[$i] . '">' . htmlspecialchars(utf8_encode((string)$record[$i])) + $buffer .= ' <column name="' . $columns[$i] . '">' . htmlspecialchars((string)$record[$i]) . '</column>' . $crlf; } $buffer .= ' </table>' . $crlf; diff --git a/libraries/import.lib.php b/libraries/import.lib.php index ca2ac2c..2f50c5d 100644 --- a/libraries/import.lib.php +++ b/libraries/import.lib.php @@ -947,7 +947,7 @@ function PMA_buildSQL($db_name, &$tables, &$analyses = NULL, &$additional_sql = $tempSQLStr .= ", "; } } - $tempSQLStr .= ") ENGINE=MyISAM;"; + $tempSQLStr .= ") ENGINE=MyISAM DEFAULT CHARACTER SET " . $charset . " COLLATE " . $collation . ";";
/** * Each SQL statement is executed immediately diff --git a/libraries/import/ods.php b/libraries/import/ods.php index 89701ec..81aed5e 100644 --- a/libraries/import/ods.php +++ b/libraries/import/ods.php @@ -68,7 +68,7 @@ unset($data); * result in increased performance without the need to * alter the code in any way. It's basically a freebee. */ -$xml = simplexml_load_string(utf8_encode($buffer), "SimpleXMLElement", LIBXML_COMPACT); +$xml = simplexml_load_string($buffer, "SimpleXMLElement", LIBXML_COMPACT);
unset($buffer);
diff --git a/libraries/select_lang.lib.php b/libraries/select_lang.lib.php index 6ee5bec..c1589c4 100644 --- a/libraries/select_lang.lib.php +++ b/libraries/select_lang.lib.php @@ -129,7 +129,7 @@ function PMA_langSet(&$lang) * * @access private */ -function PMA_langDetect(&$str, $envType) +function PMA_langDetect($str, $envType) { if (empty($str)) { return false; diff --git a/libraries/server_links.inc.php b/libraries/server_links.inc.php index 1366baa..40479d2 100644 --- a/libraries/server_links.inc.php +++ b/libraries/server_links.inc.php @@ -87,9 +87,9 @@ $tabs['import']['icon'] = 'b_import.png'; $tabs['import']['link'] = 'server_import.php'; $tabs['import']['text'] = $strImport;
-$tabs['import']['icon'] = 's_sync.png'; -$tabs['import']['link'] = 'server_synchronize.php'; -$tabs['import']['text'] = $strSynchronize; +$tabs['synchronize']['icon'] = 's_sync.png'; +$tabs['synchronize']['link'] = 'server_synchronize.php'; +$tabs['synchronize']['text'] = $strSynchronize;
echo PMA_generate_html_tabs($tabs, array()); unset($tabs); diff --git a/libraries/tbl_links.inc.php b/libraries/tbl_links.inc.php index b6c9121..4731501 100644 --- a/libraries/tbl_links.inc.php +++ b/libraries/tbl_links.inc.php @@ -114,6 +114,7 @@ if (! $tbl_is_view && ! (isset($db_is_information_schema) && $db_is_information_ if (! (isset($db_is_information_schema) && $db_is_information_schema)) { $tabs['drop']['icon'] = 'b_deltbl.png'; $tabs['drop']['link'] = 'sql.php'; + $tabs['drop']['url_params'] = array('table' => NULL); $tabs['drop']['text'] = $strDrop; $tabs['drop']['args']['reload'] = 1; $tabs['drop']['args']['purge'] = 1; diff --git a/main.php b/main.php index bad9b9e..4bb6a75 100644 --- a/main.php +++ b/main.php @@ -239,8 +239,8 @@ PMA_printListItem($strHomepageOfficial, 'li_pma_homepage', 'http://www.phpMyAdmi ?> <li><bdo xml:lang="en" dir="ltr"> [<a href="changelog.php" target="_blank">ChangeLog</a>] - [<a href="http://phpmyadmin.svn.sourceforge.net/viewvc/phpmyadmin/" - target="_blank">Subversion</a>] + [<a href="http://phpmyadmin.git.sourceforge.net/git/gitweb-index.cgi" + target="_blank">Git</a>] [<a href="http://sourceforge.net/mail/?group_id=23067" target="_blank">Lists</a>] </bdo> diff --git a/navigation.php b/navigation.php index fe6fccc..fb5e52c 100644 --- a/navigation.php +++ b/navigation.php @@ -36,7 +36,6 @@ * @uses PMA_getTableList() * @uses PMA_getRelationsParam() * @uses PMA_outBufferPre() - * @uses session_write_close() * @uses strlen() * @uses session_write_close() * @uses is_array() @@ -299,7 +298,7 @@ if ($GLOBALS['cfg']['LeftFrameLight'] && strlen($GLOBALS['db'])) { } echo '</a></p>'; if ($table_count) { - echo '<span id='NavFilter' style="display:none;"><span onclick="document.getElementById(\'fast_filter\').value=\'\'; fast_filter(\'\');document.getElementById(\'fast_filter\').focus();" style="background:white;color:black;cursor:pointer;padding:2px;margin:0 0 0 -20px;position:relative;float:right;" title="' . $strReset . '">X</span><input type="text" name="fast_filter" id="fast_filter" title="' . $strNavTableFilter . '" onkeyup="setTimeout(function(word){ return function(){ fast_filter(word);}}(this.value),1000);" style="width:100%;padding:0 -20px 0 0; padding:2px;" onfocus="this.select();" /></span><script type="text/javascript">document.getElementById('NavFilter').style.display='';</script>'; + echo '<span id='NavFilter' style="display:none;"><span onclick="document.getElementById(\'fast_filter\').value=\'\'; fast_filter(\'\');document.getElementById(\'fast_filter\').focus();" style="background:white;color:black;cursor:pointer;padding:2px;margin:0 0 0 -20px;position:relative;float:right;" title="' . $strReset . '">X</span><input type="text" name="fast_filter" id="fast_filter" title="' . $strNavTableFilter . '" onkeyup="setTimeout(function(word){ return function(){ fast_filter(word);}}(this.value),1000);" style="width:90%;padding:0 -20px 0 0; padding:2px;" onfocus="this.select();" /></span><script type="text/javascript">document.getElementById('NavFilter').style.display='';</script>'; }
/** diff --git a/pdf_schema.php b/pdf_schema.php index 82a07c1..552ee32 100644 --- a/pdf_schema.php +++ b/pdf_schema.php @@ -511,8 +511,19 @@ class PMA_RT_Table { var $height_cell = 6; var $x, $y; var $primary = array(); + var $show_info = false;
/** + * Returns title of the current table, + * title can have the dimensions of the table + * + * @access private + */ + function getTitle() + { + return ($this->show_info ? sprintf('%.0f', $this->width) . 'x' . sprintf('%.0f', $this->height) : '') . ' ' . $this->table_name; + } // end of the "getTitle" function + /** * Sets the width of the table * * @param integer $ The font size @@ -522,8 +533,6 @@ class PMA_RT_Table { */ function PMA_RT_Table_setWidth($ff) { - // this looks buggy to me... does it really work if - // there are fields that require wider cells than the name of the table? global $pdf;
foreach ($this->fields AS $field) { @@ -531,7 +540,11 @@ class PMA_RT_Table { } $this->width += $pdf->GetStringWidth(' '); $pdf->SetFont($ff, 'B'); - $this->width = max($this->width, $pdf->GetStringWidth(' ' . $this->table_name)); + // it is unknown what value must be added, because + // table title is affected by the tabe width value + while ($this->width < $pdf->GetStringWidth($this->getTitle())) { + $this->width += 5; + } $pdf->SetFont($ff, ''); } // end of the "PMA_RT_Table_setWidth()" method /** @@ -546,7 +559,6 @@ class PMA_RT_Table { /** * Do draw the table * - * @param boolean $ Whether to display table position or not * @param integer $ The font size * @param boolean $ Whether to display color * @param integer $ The max. with among tables @@ -554,7 +566,7 @@ class PMA_RT_Table { * @access private * @see PMA_PDF */ - function PMA_RT_Table_draw($show_info, $ff, $setcolor = 0) + function PMA_RT_Table_draw($ff, $setcolor = 0) { global $pdf, $with_doc;
@@ -570,11 +582,7 @@ class PMA_RT_Table { $pdf->PMA_links['doc'][$this->table_name]['-'] = ''; }
- if ($show_info) { - $pdf->PMA_PDF_cellScale($this->width, $this->height_cell, sprintf('%.0f', $this->width) . 'x' . sprintf('%.0f', $this->height) . ' ' . $this->table_name, 1, 1, 'C', $setcolor, $pdf->PMA_links['doc'][$this->table_name]['-']); - } else { - $pdf->PMA_PDF_cellScale($this->width, $this->height_cell, $this->table_name, 1, 1, 'C', $setcolor, $pdf->PMA_links['doc'][$this->table_name]['-']); - } + $pdf->PMA_PDF_cellScale($this->width, $this->height_cell, $this->getTitle(), 1, 1, 'C', $setcolor, $pdf->PMA_links['doc'][$this->table_name]['-']); $pdf->PMA_PDF_setXScale($this->x); $pdf->SetFont($ff, ''); $pdf->SetTextColor(0); @@ -611,6 +619,8 @@ class PMA_RT_Table { * @param string $ The table name * @param integer $ The font size * @param integer $ The max. with among tables + * @param boolean $ Whether to display keys or not + * @param boolean $ Whether to display table position or not * @global object The current PDF document * @global integer The current page number (from the * $cfg['Servers'][$i]['table_coords'] table) @@ -620,7 +630,7 @@ class PMA_RT_Table { * @see PMA_PDF, PMA_RT_Table::PMA_RT_Table_setWidth, PMA_RT_Table::PMA_RT_Table_setHeight */ - function __construct($table_name, $ff, &$same_wide_width, $show_keys) + function __construct($table_name, $ff, &$same_wide_width, $show_keys = false, $show_info = false) { global $pdf, $pdf_page_number, $cfgRelation, $db;
@@ -644,9 +654,14 @@ class PMA_RT_Table { $this->fields[] = $row[0]; } } + + $this->show_info = $show_info; + // height and width - $this->PMA_RT_Table_setWidth($ff); $this->PMA_RT_Table_setHeight(); + // setWidth must me after setHeight, because title + // can include table height which changes table width + $this->PMA_RT_Table_setWidth($ff); if ($same_wide_width < $this->width) { $same_wide_width = $this->width; } @@ -850,17 +865,18 @@ class PMA_RT { * @param string $ The relation field in the master table * @param string $ The foreign table name * @param string $ The relation field in the foreign table + * @param boolean $ Whether to display table position or not * @access private * @see PMA_RT_setMinMax */ - function PMA_RT_addRelation($master_table, $master_field, $foreign_table, $foreign_field) + function PMA_RT_addRelation($master_table, $master_field, $foreign_table, $foreign_field, $show_info) { if (!isset($this->tables[$master_table])) { - $this->tables[$master_table] = new PMA_RT_Table($master_table, $this->ff, $this->tablewidth); + $this->tables[$master_table] = new PMA_RT_Table($master_table, $this->ff, $this->tablewidth, false, $show_info); $this->PMA_RT_setMinMax($this->tables[$master_table]); } if (!isset($this->tables[$foreign_table])) { - $this->tables[$foreign_table] = new PMA_RT_Table($foreign_table, $this->ff, $this->tablewidth); + $this->tables[$foreign_table] = new PMA_RT_Table($foreign_table, $this->ff, $this->tablewidth, false, $show_info); $this->PMA_RT_setMinMax($this->tables[$foreign_table]); } $this->relations[] = new PMA_RT_Relation($this->tables[$master_table], $master_field, $this->tables[$foreign_table], $foreign_field); @@ -880,7 +896,7 @@ class PMA_RT { $pdf->SetDrawColor(200, 200, 200); // Draws horizontal lines for ($l = 0; $l < 21; $l++) { - $pdf->line(0, $l * 10, $pdf->fh, $l * 10); + $pdf->line(0, $l * 10, $pdf->getFh(), $l * 10); // Avoid duplicates if ($l > 0) { $pdf->SetXY(0, $l * 10); @@ -890,7 +906,7 @@ class PMA_RT { } // end for // Draws vertical lines for ($j = 0; $j < 30 ;$j++) { - $pdf->line($j * 10, 0, $j * 10, $pdf->fw); + $pdf->line($j * 10, 0, $j * 10, $pdf->getFw()); $pdf->SetXY($j * 10, 0); $label = (string) sprintf('%.0f', ($j * 10 - $this->l_marg) * $this->scale + $this->x_min); $pdf->Cell(5, 7, $label); @@ -918,10 +934,10 @@ class PMA_RT { * @access private * @see PMA_RT_Table::PMA_RT_Table_draw() */ - function PMA_RT_drawTables($show_info, $draw_color = 0) + function PMA_RT_drawTables($draw_color = 0) { foreach ($this->tables AS $table) { - $table->PMA_RT_Table_draw($show_info, $this->ff, $draw_color); + $table->PMA_RT_Table_draw($this->ff, $draw_color); } } // end of the "PMA_RT_drawTables()" method /** @@ -1029,7 +1045,7 @@ class PMA_RT {
foreach ($alltables AS $table) { if (!isset($this->tables[$table])) { - $this->tables[$table] = new PMA_RT_Table($table, $this->ff, $this->tablewidth, $show_keys); + $this->tables[$table] = new PMA_RT_Table($table, $this->ff, $this->tablewidth, $show_keys, $show_info); }
if ($this->same_wide) { @@ -1075,7 +1091,7 @@ class PMA_RT { // (do not use array_search() because we would have to // to do a === FALSE and this is not PHP3 compatible) if (in_array($rel['foreign_table'], $alltables)) { - $this->PMA_RT_addRelation($one_table, $master_field, $rel['foreign_table'], $rel['foreign_field']); + $this->PMA_RT_addRelation($one_table, $master_field, $rel['foreign_table'], $rel['foreign_field'], $show_info); } } // end while } // end if @@ -1093,7 +1109,7 @@ class PMA_RT { $this->PMA_RT_drawRelations($change_color); }
- $this->PMA_RT_drawTables($show_info, $change_color); + $this->PMA_RT_drawTables($change_color);
$this->PMA_RT_showRt(); } // end of the "PMA_RT()" method diff --git a/server_status.php b/server_status.php index 64048b3..9c8fe01 100644 --- a/server_status.php +++ b/server_status.php @@ -143,6 +143,10 @@ if (isset($server_status['Threads_created']) * 100; }
+// Format Uptime_since_flush_status : show as days, hours, minutes, seconds +if (isset($server_status['Uptime_since_flush_status'])) { + $server_status['Uptime_since_flush_status'] = PMA_timespanFormat($server_status['Uptime_since_flush_status']); +}
/** * define some alerts diff --git a/setup/lib/FormDisplay.class.php b/setup/lib/FormDisplay.class.php index 5483b00..b229a1a 100644 --- a/setup/lib/FormDisplay.class.php +++ b/setup/lib/FormDisplay.class.php @@ -456,7 +456,7 @@ class FormDisplay break; case 'select': if (!$this->_validateSelect($_POST[$key], $form->getOptionValueList($system_path))) { - $this->errors[$work_path][] = $GLOBALS["strstrSetuperror_incorrect_value"]; + $this->errors[$work_path][] = $GLOBALS["strSetuperror_incorrect_value"]; $result = false; continue; } diff --git a/sql.php b/sql.php index 248ebe3..4898860 100644 --- a/sql.php +++ b/sql.php @@ -294,13 +294,6 @@ if (isset($GLOBALS['show_as_php']) || !empty($GLOBALS['validatequery'])) { PMA_DBI_query('SET PROFILING=1;'); }
- // fisharebest: release the session lock, otherwise we won't be able to run other - // scripts until the query has finished (which could take a very long time). - // Note: footer.inc.php writes debug info to $_SESSION, so debuggers will have to wait. - if (empty($_SESSION['debug'])) { - session_write_close(); - } - // garvin: Measure query time. // TODO-Item http://sourceforge.net/tracker/index.php?func=detail&aid=571934&grou... $querytime_before = array_sum(explode(' ', microtime())); diff --git a/tbl_change.php b/tbl_change.php index c2fb93a..f8cc1c0 100644 --- a/tbl_change.php +++ b/tbl_change.php @@ -429,6 +429,7 @@ foreach ($rows as $row_id => $vrow) { $real_null_value = FALSE; $special_chars_encoded = ''; if (isset($vrow)) { + // (we are editing)
// On a BLOB that can have a NULL value, the is_null() returns // true if it has no content but for me this is different than // having been set explicitely to NULL so I put an exception here @@ -464,6 +465,7 @@ foreach ($rows as $row_id => $vrow) { . $field_name_appendix . '" value="' . htmlspecialchars($vrow[$field['Field']]) . '" />'; } else { + // (we are inserting) // loic1: display default values if (!isset($field['Default'])) { $field['Default'] = ''; @@ -479,6 +481,10 @@ foreach ($rows as $row_id => $vrow) { } $backup_field = ''; $special_chars_encoded = PMA_duplicateFirstNewline($special_chars); + // this will select the UNHEX function while inserting + if (($field['is_binary'] || $field['is_blob']) && $_SESSION['tmp_user_values']['display_binary_as_hex'] && $cfg['ShowFunctionFields']) { + $field['display_binary_as_hex'] = true; + } }
$idindex = ($o_rows * $fields_cnt) + $i + 1; diff --git a/tbl_printview.php b/tbl_printview.php index 949a78a..c5b17ab 100644 --- a/tbl_printview.php +++ b/tbl_printview.php @@ -279,10 +279,9 @@ foreach ($the_tables as $key => $table) { } if ($nonisam == false) { // Gets some sizes - $mergetable = false; - if (isset($showtable['Type']) && $showtable['Type'] == 'MRG_MyISAM') { - $mergetable = true; - } + + $mergetable = PMA_Table::isMerge($db, $table); + list($data_size, $data_unit) = PMA_formatByteDown($showtable['Data_length']); if ($mergetable == false) { list($index_size, $index_unit) = PMA_formatByteDown($showtable['Index_length']); diff --git a/tbl_row_action.php b/tbl_row_action.php index d72c7d5..efcc74d 100644 --- a/tbl_row_action.php +++ b/tbl_row_action.php @@ -43,7 +43,7 @@ if (isset($_REQUEST['submit_mult'])) { $submit_mult = 'row_export'; }
-// garvin: If the 'Ask for confirmation' button was pressed, this can only come +// If the 'Ask for confirmation' button was pressed, this can only come // from 'delete' mode, so we set it straight away. if (isset($_REQUEST['mult_btn'])) { $submit_mult = 'row_delete'; diff --git a/tbl_structure.php b/tbl_structure.php index 750fbdc..0d966cc 100644 --- a/tbl_structure.php +++ b/tbl_structure.php @@ -612,10 +612,9 @@ if ($cfg['ShowStats']) { }
// Gets some sizes - $mergetable = false; - if (isset($showtable['Type']) && $showtable['Type'] == 'MRG_MyISAM') { - $mergetable = true; - } + + $mergetable = PMA_Table::isMerge($GLOBALS['db'], $GLOBALS['table']); + // this is to display for example 261.2 MiB instead of 268k KiB $max_digits = 5; $decimals = 1; diff --git a/translators.html b/translators.html index d3a0fbf..00f7ab3 100644 --- a/translators.html +++ b/translators.html @@ -11,7 +11,7 @@ <link rel="icon" href="./favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" href="./favicon.ico" type="image/x-icon" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <title>phpMyAdmin 3.3.1 - Official translators</title> + <title>phpMyAdmin 3.3.2 - Official translators</title> <link rel="stylesheet" type="text/css" href="docs.css" /> </head>
@@ -19,7 +19,7 @@ <div id="header"> <h1> <a href="http://www.phpmyadmin.net/">php<span class="myadmin">MyAdmin</span></a> - 3.3.1 + 3.3.2 official translators list </h1> </div>
hooks/post-receive