diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index c2d5659e82..4f40f0b7d0 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,6 +1,6 @@ --- name: Bug report -about: Create a report to help us improve +about: Create a report to help us improve phpMyAdmin --- @@ -22,7 +22,7 @@ A clear and concise description of what you expected to happen. ### Screenshots -If applicable, add screenshots to help explain your problem. +If applicable, add screenshots to help explain the bug. ### Server configuration @@ -39,4 +39,4 @@ If applicable, add screenshots to help explain your problem. ### Additional context -Add any other context about the problem here. +Add any other context about the bug here. diff --git a/.github/workflows/other-tools.yml b/.github/workflows/other-tools.yml index 4290946519..7405593415 100644 --- a/.github/workflows/other-tools.yml +++ b/.github/workflows/other-tools.yml @@ -27,6 +27,8 @@ jobs: if: "!contains(github.event.head_commit.message, '[ci skip]')" steps: - uses: actions/checkout@v2 + - name: Install gettext + run: sudo apt-get install -y gettext - name: Use php 7.1 uses: shivammathur/setup-php@v2 with: @@ -63,8 +65,6 @@ jobs: - uses: actions/setup-python@v2 with: python-version: '3.6' - - name: Install gettext - run: sudo apt-get install -y gettext - name: Install Sphinx for the documentation build run: pip install 'Sphinx' - name: Build the release diff --git a/.github/workflows/test-selenium.yml b/.github/workflows/test-selenium.yml index fe44790cb6..dc5cd6d0ce 100644 --- a/.github/workflows/test-selenium.yml +++ b/.github/workflows/test-selenium.yml @@ -92,8 +92,6 @@ jobs: ${{ runner.os }}-yarn- - name: Install modules run: yarn install --non-interactive --production - - name: Install nginx and php-fpm - run: sudo apt-get install -y nginx php7.1-fpm - name: Copy the config run: cp test/config.e2e.inc.php config.inc.php - name: Start server diff --git a/ChangeLog b/ChangeLog index 6c4cf2fef2..f28ce8bdd4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,18 @@ phpMyAdmin - ChangeLog ====================== +5.1.3 (2022-02-10) +- issue #17308 Fix broken pagination links in the navigation sidebar +- issue #17331 Fix MariaDB has no support for system variable "disabled_storage_engines" +- issue #17315 Fix unsupported operand types in Results.php when running "SHOW PROCESSLIST" SQL query +- issue #17288 Fixed importing browser settings question box after login when having no pmadb +- issue #17288 Fix "First day of calendar" user override has no effect +- issue #17239 Fixed repeating headers are not working +- issue #17298 Fixed import of email-adresses or links from ODS results in empty contents +- issue #17344 Fixed a type error on ODS import with non string values +- issue #17239 Fixed header row show/hide columns buttons on each line after hover are shown on each row +- issue [security] Fix for path disclosure under certain server configurations (if display_errors is on, for instance) + 5.1.2 (2022-01-20) - issue Replaced MySQL documentation redirected links - issue #16960 Fix JS error on Designer visual builder on some modal buttons @@ -544,6 +556,10 @@ phpMyAdmin - ChangeLog - issue #15677 Fix show process-list triggers a php exception - issue #15697 Fix uncaught php error: "Call to a member function get() on null" in db_export.php when exporting a table from the list +4.9.9 (not yet released) +- issue #17305 Fix syntax error for PHP 5 +- issue #17307 Fix hide_connection_errors being undefined when a controluser is set + 4.9.8 (2022-01-20) - issue #14321 Display a correct error page when "$cfg['Servers'][$i]['SignonURL']" is empty for auth_type=signon - issue #14321 [security] Remove leaked HTML on signon page redirect before login for auth_type=signon diff --git a/README b/README index c0bc742c1b..540ef2a22e 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ phpMyAdmin - Readme =================== -Version 5.1.2 +Version 5.1.3 A web interface for MySQL and MariaDB. diff --git a/composer.json b/composer.json index c980a03675..235c30b720 100644 --- a/composer.json +++ b/composer.json @@ -86,7 +86,7 @@ "php-webdriver/webdriver": "^1.11", "phpmyadmin/coding-standard": "^2.1.1", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.3", + "phpstan/phpstan": "^1.4.5", "phpstan/phpstan-phpunit": "^1.0", "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0", "pragmarx/google2fa-qrcode": "^1.0.1", @@ -94,7 +94,7 @@ "symfony/finder": "^4.4", "symfony/twig-bridge": "^4.4", "tecnickcom/tcpdf": "^6.4.4", - "vimeo/psalm": "^4.17" + "vimeo/psalm": "^4.19" }, "extra": { "branch-alias": { diff --git a/doc/conf.py b/doc/conf.py index 1e3087b591..d4a6768f40 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -51,7 +51,7 @@ copyright = u'2012 - 2021, The phpMyAdmin devel team' # built documents. # # The short X.Y version. -version = '5.1.2' +version = '5.1.3' # The full version, including alpha/beta/rc tags. release = version diff --git a/doc/config.rst b/doc/config.rst index 156c45de25..6d11263059 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -174,6 +174,12 @@ Basic settings :type: string :default: ``'ask'`` + Valid values are: + + * ``ask`` + * ``always`` + * ``never`` + Sets the default behavior for JavaScript error reporting. Whenever an error is detected in the JavaScript execution, an error report @@ -266,7 +272,7 @@ Server connection settings .. seealso:: :config:option:`$cfg['Servers'][$i]['port']`, - + .. config:option:: $cfg['Servers'][$i]['port'] @@ -286,7 +292,7 @@ Server connection settings .. seealso:: :config:option:`$cfg['Servers'][$i]['host']`, - + .. config:option:: $cfg['Servers'][$i]['socket'] @@ -306,7 +312,7 @@ Server connection settings .. seealso:: :config:option:`$cfg['Servers'][$i]['host']`, - + .. config:option:: $cfg['Servers'][$i]['ssl'] @@ -325,6 +331,7 @@ Server connection settings :ref:`ssl`, :ref:`example-google-ssl`, + :ref:`example-aws-ssl`, :config:option:`$cfg['Servers'][$i]['ssl_key']`, :config:option:`$cfg['Servers'][$i]['ssl_cert']`, :config:option:`$cfg['Servers'][$i]['ssl_ca']`, @@ -350,6 +357,7 @@ Server connection settings :ref:`ssl`, :ref:`example-google-ssl`, + :ref:`example-aws-ssl`, :config:option:`$cfg['Servers'][$i]['ssl']`, :config:option:`$cfg['Servers'][$i]['ssl_cert']`, :config:option:`$cfg['Servers'][$i]['ssl_ca']`, @@ -369,6 +377,7 @@ Server connection settings :ref:`ssl`, :ref:`example-google-ssl`, + :ref:`example-aws-ssl`, :config:option:`$cfg['Servers'][$i]['ssl']`, :config:option:`$cfg['Servers'][$i]['ssl_key']`, :config:option:`$cfg['Servers'][$i]['ssl_ca']`, @@ -387,6 +396,7 @@ Server connection settings :ref:`ssl`, :ref:`example-google-ssl`, + :ref:`example-aws-ssl`, :config:option:`$cfg['Servers'][$i]['ssl']`, :config:option:`$cfg['Servers'][$i]['ssl_key']`, :config:option:`$cfg['Servers'][$i]['ssl_cert']`, @@ -405,6 +415,7 @@ Server connection settings :ref:`ssl`, :ref:`example-google-ssl`, + :ref:`example-aws-ssl`, :config:option:`$cfg['Servers'][$i]['ssl']`, :config:option:`$cfg['Servers'][$i]['ssl_key']`, :config:option:`$cfg['Servers'][$i]['ssl_cert']`, @@ -423,6 +434,7 @@ Server connection settings :ref:`ssl`, :ref:`example-google-ssl`, + :ref:`example-aws-ssl`, :config:option:`$cfg['Servers'][$i]['ssl']`, :config:option:`$cfg['Servers'][$i]['ssl_key']`, :config:option:`$cfg['Servers'][$i]['ssl_cert']`, @@ -461,6 +473,7 @@ Server connection settings :ref:`ssl`, :ref:`example-google-ssl`, + :ref:`example-aws-ssl`, :config:option:`$cfg['Servers'][$i]['ssl']`, :config:option:`$cfg['Servers'][$i]['ssl_key']`, :config:option:`$cfg['Servers'][$i]['ssl_cert']`, @@ -755,6 +768,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 2.2.0 + Since release 2.2.0 phpMyAdmin allows users to bookmark queries. This can be useful for queries you often run. To allow the usage of this functionality: @@ -770,6 +785,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 2.2.4 + Since release 2.2.4 you can describe, in a special 'relation' table, which column is a key in another table (a foreign key). phpMyAdmin currently uses this to: @@ -811,6 +828,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 2.3.0 + Since release 2.3.0 you can describe, in a special 'table\_info' table, which column is to be displayed as a tool-tip when moving the cursor over the corresponding key. This configuration variable will @@ -845,6 +864,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 2.3.0 + Since release 2.3.0 you can have phpMyAdmin create :term:`PDF` pages showing the relations between your tables. Further, the designer interface permits visually managing the relations. To do this it needs two tables @@ -887,6 +908,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 2.3.0 + This part requires a content update! Since release 2.3.0 you can store comments to describe each column for each table. These will then be shown on the "printview". @@ -939,7 +962,7 @@ Server connection settings For auto-upgrade functionality to work, your :config:option:`$cfg['Servers'][$i]['controluser']` must have ALTER privilege on ``phpmyadmin`` database. See the `MySQL documentation for GRANT - `_ on how to + `_ on how to ``GRANT`` privileges to a user. .. _history: @@ -948,6 +971,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 2.5.0 + Since release 2.5.0 you can store your :term:`SQL` history, which means all queries you entered manually into the phpMyAdmin interface. If you don't want to use a table-based history, you can use the JavaScript-based @@ -975,6 +1000,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 3.5.0 + Since release 3.5.0 you can show recently used tables in the navigation panel. It helps you to jump across table directly, without the need to select the database, and then select the table. Using @@ -999,6 +1026,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 4.2.0 + Since release 4.2.0 you can show a list of selected tables in the navigation panel. It helps you to jump to the table directly, without the need to select the database, and then select the table. When you @@ -1027,6 +1056,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 3.5.0 + Since release 3.5.0 phpMyAdmin can be configured to remember several things (sorted column :config:option:`$cfg['RememberSorting']`, column order, and column visibility from a database table) for browsing tables. Without @@ -1055,6 +1086,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 4.1.0 + Since release 4.1.0 you can create different user groups with menu items attached to them. Users can be assigned to these groups and the logged in user would only see menu items configured to the usergroup they are assigned to. @@ -1078,6 +1111,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 4.1.0 + Since release 4.1.0 you can hide/show items in the navigation tree. To allow the usage of this functionality: @@ -1094,6 +1129,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 4.3.0 + Since release 4.3.0 you can have a central list of columns per database. You can add/remove columns to the list as per your requirement. These columns in the central list will be available to use while you create a new column for @@ -1115,6 +1152,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 4.5.0 + Since release 4.5.0 your designer settings can be remembered. Your choice regarding 'Angular/Direct Links', 'Snap to Grid', 'Toggle Relation Lines', 'Small/Big All', 'Move Menu' and 'Pin Text' can be remembered persistently. @@ -1133,6 +1172,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 4.2.0 + Since release 4.2.0 you can save and load query-by-example searches from the Database > Query panel. To allow the usage of this functionality: @@ -1149,6 +1190,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 4.5.0 + Since release 4.5.0 you can save and load export templates. To allow the usage of this functionality: @@ -1165,6 +1208,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 3.3.x + Since release 3.3.x a tracking mechanism is available. It helps you to track every :term:`SQL` command which is executed by phpMyAdmin. The mechanism supports logging of data @@ -1225,7 +1270,7 @@ Server connection settings :type: boolean :default: true - Whether a DROP VIEW IF EXISTS statement will be added as first line to + Whether a `DROP VIEW IF EXISTS` statement will be added as first line to the log when creating a view. .. _tracking5: @@ -1234,7 +1279,7 @@ Server connection settings :type: boolean :default: true - Whether a DROP TABLE IF EXISTS statement will be added as first line + Whether a `DROP TABLE IF EXISTS` statement will be added as first line to the log when creating a table. .. _tracking6: @@ -1243,7 +1288,7 @@ Server connection settings :type: boolean :default: true - Whether a DROP DATABASE IF EXISTS statement will be added as first + Whether a `DROP DATABASE IF EXISTS` statement will be added as first line to the log when creating a database. .. _userconfig: @@ -1252,6 +1297,8 @@ Server connection settings :type: string or false :default: ``''`` + .. versionadded:: 3.4.x + Since release 3.4.x phpMyAdmin allows users to set most preferences by themselves and store them in the database. @@ -1288,7 +1335,7 @@ Server connection settings Sets the time zone used by phpMyAdmin. Leave blank to use the time zone of your database server. Possible values are explained at - https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html + https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html This is useful when your database server uses a time zone which is different from the time zone you want to use in phpMyAdmin. @@ -1550,7 +1597,7 @@ Generic settings .. config:option:: $cfg['ProxyUrl'] :type: string - :default: "" + :default: ``''`` The url of the proxy to be used when phpmyadmin needs to access the outside internet such as when retrieving the latest version info or submitting error @@ -1561,7 +1608,7 @@ Generic settings .. config:option:: $cfg['ProxyUser'] :type: string - :default: "" + :default: ``''`` The username for authenticating with the proxy. By default, no authentication is performed. If a username is supplied, Basic @@ -1571,7 +1618,7 @@ Generic settings .. config:option:: $cfg['ProxyPass'] :type: string - :default: "" + :default: ``''`` The password for authenticating with the proxy. @@ -1616,13 +1663,11 @@ Generic settings :default: false Whether `persistent connections `_ should be used or not. Works with - following extensions: + .persistent-connections.php>`_ should be used or not. - * mysql (`mysql\_pconnect `_), - * mysqli (requires PHP 5.3.0 or newer, `more information - `_). +.. seealso:: + + `mysqli documentation for persistent connections `_ .. config:option:: $cfg['ForceSSL'] @@ -2018,6 +2063,8 @@ Cookie authentication options reCaptcha will be then used in :ref:`cookie`. + .. versionadded:: 4.1.0 + .. config:option:: $cfg['CaptchaLoginPrivateKey'] :type: string @@ -2030,6 +2077,8 @@ Cookie authentication options reCaptcha will be then used in :ref:`cookie`. + .. versionadded:: 4.1.0 + .. config:option:: $cfg['CaptchaSiteVerifyURL'] :type: string @@ -2407,7 +2456,7 @@ Database structure :type: boolean :default: true - Defines whether the table structure actions are hidden under a "More" + Defines whether the table structure actions are hidden under a ":guilabel:`More`" drop-down. .. config:option:: $cfg['ShowColumnComments'] @@ -2451,7 +2500,7 @@ Browse mode :type: boolean :default: false - Defines whether a user should be displayed a "Show all" button in browse + Defines whether a user should be displayed a ":guilabel:`Show all`" button in browse mode or not in all cases. By default it is shown only on small tables (less than 500 rows) to avoid performance issues while getting too many rows. @@ -2461,8 +2510,8 @@ Browse mode :default: 25 Number of rows displayed when browsing a result set and no LIMIT - clause is used. If the result set contains more rows, "Previous" and - "Next" links will be shown. Possible values: 25,50,100,250,500. + clause is used. If the result set contains more rows, ":guilabel:`Previous`" and + ":guilabel:`Next`" links will be shown. Possible values: 25,50,100,250,500. .. config:option:: $cfg['Order'] @@ -3036,7 +3085,7 @@ Design customization This will define the first day of week in the calendar. The number can be set from 0 to 6, which represents the seven days of the week, Sunday to Saturday respectively. This value can also be configured by the user - in server settings -> features -> general -> First Day calendar field. + in :guilabel:`Settings` -> :guilabel:`Features` -> :guilabel:`General` -> :guilabel:`First day of calendar` field. Text fields ----------- @@ -3382,6 +3431,8 @@ Various display setting :type: boolean :default: false + .. versionadded:: 3.4.0 + Activates in the user preferences a tab containing options for developers of phpMyAdmin. @@ -3648,7 +3699,7 @@ Developer It currently changes following behavior: * There is welcome message on the main page. - * There is footer information about demo server and used git revision. + * There is footer information about demo server and used Git revision. * The setup script is enabled even with existing configuration. * The setup does not try to connect to the MySQL server. @@ -3706,7 +3757,7 @@ for a password when accessing remotely, you can achieve it using following snipp .. code-block:: php - if ($_SERVER["REMOTE_ADDR"] == "127.0.0.1") { + if ($_SERVER['REMOTE_ADDR'] === '127.0.0.1') { $cfg['Servers'][$i]['auth_type'] = 'config'; $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = 'yourpassword'; @@ -3728,8 +3779,8 @@ following example shows two of them: .. code-block:: php +.. _example-aws-ssl: + +Amazon RDS Aurora with SSL +++++++++++++++++++++++++++ + +To connect phpMyAdmin to an Amazon RDS Aurora MySQL database instance using SSL, +download the CA server certificate and tell phpMyAdmin to use it: + +.. code-block:: php + + // Address of your instance + $cfg['Servers'][$i]['host'] = 'replace-me-custer-name.cluster-replace-me-id.replace-me-region.rds.amazonaws.com'; + // Use SSL for connection + $cfg['Servers'][$i]['ssl'] = true; + // You need to have the region CA file and the authority CA file (2019 edition CA for example) in the PEM bundle for it to work + $cfg['Servers'][$i]['ssl_ca'] = '../rds-combined-ca-bundle.pem'; + // Enable SSL verification + $cfg['Servers'][$i]['ssl_verify'] = true; + +.. seealso:: + + :ref:`ssl`, + :config:option:`$cfg['Servers'][$i]['ssl']`, + :config:option:`$cfg['Servers'][$i]['ssl_ca']`, + :config:option:`$cfg['Servers'][$i]['ssl_verify']` + +.. seealso:: + + - Current RDS CA bundle for all regions https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem + - The RDS CA (2019 edition) for the region `eu-west-3` without the parent CA https://s3.amazonaws.com/rds-downloads/rds-ca-2019-eu-west-3.pem + - `List of available Amazon RDS CA files `_ + - `Amazon MySQL Aurora security guide `_ + - `Amazon certificates bundles per region `_ + reCaptcha using hCaptcha ++++++++++++++++++++++++ diff --git a/doc/setup.rst b/doc/setup.rst index 4176705396..3e08dc8f11 100644 --- a/doc/setup.rst +++ b/doc/setup.rst @@ -1138,6 +1138,7 @@ you can use :config:option:`$cfg['MysqlSslWarningSafeHosts']` to explicitly list .. seealso:: :ref:`example-google-ssl`, + :ref:`example-aws-ssl`, :config:option:`$cfg['Servers'][$i]['ssl']`, :config:option:`$cfg['Servers'][$i]['ssl_key']`, :config:option:`$cfg['Servers'][$i]['ssl_cert']`, diff --git a/js/src/functions.js b/js/src/functions.js index 7875e2a94e..5d1bc8b5ce 100644 --- a/js/src/functions.js +++ b/js/src/functions.js @@ -1264,6 +1264,9 @@ Functions.insertQuery = function (queryType) { codeMirrorEditor.setValue(data.sql); } $('#querymessage').html(''); + }, + error: function () { + $('#querymessage').html(''); } }); } diff --git a/js/src/makegrid.js b/js/src/makegrid.js index c32c1b91d6..4c4ef75ddb 100644 --- a/js/src/makegrid.js +++ b/js/src/makegrid.js @@ -1715,7 +1715,7 @@ var makeGrid = function (t, enableResize, enableReorder, enableVisib, enableGrid // make sure we have more than one column if ($firstRowCols.length > 1) { - var $colVisibTh = $(g.t).find('th:not(.draggable)'); + var $colVisibTh = $(g.t).find('th:not(.draggable)').slice(0, 1); Functions.tooltip( $colVisibTh, 'th', diff --git a/js/src/navigation.js b/js/src/navigation.js index d2e7d59ff7..2ff04d07b1 100644 --- a/js/src/navigation.js +++ b/js/src/navigation.js @@ -1066,14 +1066,12 @@ Navigation.selectCurrentDatabase = function () { Navigation.treePagination = function ($this) { var $msgbox = Functions.ajaxShowMessage(); var isDbSelector = $this.closest('div.pageselector').is('.dbselector'); - var url; - var params; + var url = 'index.php?route=/navigation'; + var params = 'ajax_request=true'; if ($this[0].tagName === 'A') { - url = $this.attr('href'); - params = 'ajax_request=true'; + params += CommonParams.get('arg_separator') + $this.getPostData(); } else { // tagName === 'SELECT' - url = 'index.php?route=/navigation'; - params = $this.closest('form').serialize() + CommonParams.get('arg_separator') + 'ajax_request=true'; + params += CommonParams.get('arg_separator') + $this.closest('form').serialize(); } var searchClause = Navigation.FastFilter.getSearchClause(); if (searchClause) { diff --git a/libraries/classes/Config.php b/libraries/classes/Config.php index 979d639e08..6aa9b8202f 100644 --- a/libraries/classes/Config.php +++ b/libraries/classes/Config.php @@ -1433,6 +1433,8 @@ class Config $server = []; + $server['hide_connection_errors'] = $cfg['Server']['hide_connection_errors']; + if (! empty($cfg['Server']['controlhost'])) { $server['host'] = $cfg['Server']['controlhost']; } else { @@ -1504,6 +1506,10 @@ class Config $server['compress'] = false; } + if (! isset($server['hide_connection_errors'])) { + $server['hide_connection_errors'] = false; + } + return [ $user, $password, diff --git a/libraries/classes/DatabaseInterface.php b/libraries/classes/DatabaseInterface.php index 9c7066ea4b..ec5ae36777 100644 --- a/libraries/classes/DatabaseInterface.php +++ b/libraries/classes/DatabaseInterface.php @@ -288,6 +288,10 @@ class DatabaseInterface implements DbalInterface */ public function getTables(string $database, $link = self::CONNECT_USER): array { + if ($database === '') { + return []; + } + $tables = $this->fetchResult( 'SHOW TABLES FROM ' . Util::backquote($database) . ';', null, @@ -1170,9 +1174,7 @@ class DatabaseInterface implements DbalInterface { $storageDbName = $GLOBALS['cfg']['Server']['pmadb'] ?? ''; // Use "phpmyadmin" as a default database name to check to keep the behavior consistent - $storageDbName = $storageDbName !== null && is_string($storageDbName) && $storageDbName !== '' - ? $storageDbName - : 'phpmyadmin'; + $storageDbName = is_string($storageDbName) && $storageDbName !== '' ? $storageDbName : 'phpmyadmin'; // This will make users not having explicitly listed databases // have config values filled by the default phpMyAdmin storage table name values diff --git a/libraries/classes/Display/Results.php b/libraries/classes/Display/Results.php index e511386bab..f46fd3ab0a 100644 --- a/libraries/classes/Display/Results.php +++ b/libraries/classes/Display/Results.php @@ -2490,8 +2490,8 @@ class Results $whereClauseMap = $this->properties['whereClauseMap']; while ($row = $dbi->fetchRow($dt_result)) { // add repeating headers - if (($row_no != 0) && ($_SESSION['tmpval']['repeat_cells'] != 0) - && ! $row_no % $_SESSION['tmpval']['repeat_cells'] + if (($row_no !== 0) && ($_SESSION['tmpval']['repeat_cells'] > 0) + && ($row_no % $_SESSION['tmpval']['repeat_cells']) === 0 ) { $table_body_html .= $this->getRepeatingHeaders( $display_params @@ -2520,7 +2520,7 @@ class Results $copy_url = null; $copy_str = null; $edit_url = null; - $editCopyUrlParams = null; + $editCopyUrlParams = []; $delUrlParams = null; // 1.2 Defines the URLs for the modify/delete link(s) @@ -3258,8 +3258,12 @@ class Results * @param bool $clause_is_unique the unique condition of clause * @param string $url_sql_query the analyzed sql query * - * @return array 5 element array - $edit_url, $copy_url, - * $edit_str, $copy_str + * @phpstan-return array{string, string, string, string, + * array{ + * db: string, table: string, where_clause: string, + * clause_is_unique: bool, sql_query: string, goto: string + * } + * } * * @access private */ diff --git a/libraries/classes/ErrorHandler.php b/libraries/classes/ErrorHandler.php index 6a6084f445..8f29343487 100644 --- a/libraries/classes/ErrorHandler.php +++ b/libraries/classes/ErrorHandler.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin; +use Throwable; use const E_COMPILE_ERROR; use const E_COMPILE_WARNING; use const E_CORE_ERROR; @@ -26,6 +27,7 @@ use function error_reporting; use function headers_sent; use function htmlspecialchars; use function set_error_handler; +use function set_exception_handler; use function trigger_error; use const PHP_VERSION_ID; @@ -64,6 +66,7 @@ class ErrorHandler * rely on PHPUnit doing it's own error handling which we break here. */ if (! defined('TESTSUITE')) { + set_exception_handler([$this, 'handleException']); set_error_handler([$this, 'handleError']); } if (! Util::isErrorReportingAvailable()) { @@ -211,6 +214,22 @@ class ErrorHandler $this->addError($errstr, $errno, $errfile, $errline, true); } + /** + * Hides exception if it's not in the development environment. + * + * @throws Throwable + */ + public function handleException(Throwable $exception): void + { + $config = $GLOBALS['PMA_Config'] ?? null; + $environment = $config instanceof Config ? $config->get('environment') : 'production'; + if ($environment !== 'development') { + return; + } + + throw $exception; + } + /** * Add an error; can also be called directly (with or without escaping) * diff --git a/libraries/classes/Header.php b/libraries/classes/Header.php index 59fe4bc2fa..dd60c6d232 100644 --- a/libraries/classes/Header.php +++ b/libraries/classes/Header.php @@ -46,13 +46,7 @@ class Header * @var Menu */ private $menu; - /** - * Whether to offer the option of importing user settings - * - * @access private - * @var bool - */ - private $userprefsOfferImport; + /** * The page title * @@ -141,15 +135,6 @@ class Header $this->scripts = new Scripts(); $this->addDefaultScripts(); $this->headerIsSent = false; - // if database storage for user preferences is transient, - // offer to load exported settings from localStorage - // (detection will be done in JavaScript) - $this->userprefsOfferImport = false; - if ($GLOBALS['PMA_Config']->get('user_preferences') === 'session' - && ! isset($_SESSION['userprefs_autoload']) - ) { - $this->userprefsOfferImport = true; - } $this->userPreferences = new UserPreferences(); } @@ -176,21 +161,18 @@ class Header $this->scripts->addFile('menu_resizer.js'); // Cross-framing protection + // At this point browser settings are not merged + // this is good that we only use file configuration for this protection if ($GLOBALS['cfg']['AllowThirdPartyFraming'] === false) { $this->scripts->addFile('cross_framing_protection.js'); } $this->scripts->addFile('rte.js'); - if ($GLOBALS['cfg']['SendErrorReports'] !== 'never') { - $this->scripts->addFile('vendor/tracekit.js'); - $this->scripts->addFile('error_report.js'); - } // Here would not be a good place to add CodeMirror because // the user preferences have not been merged at this point $this->scripts->addFile('messages.php', ['l' => $GLOBALS['lang']]); - $this->scripts->addCode($this->getVariablesForJavaScript()); $this->scripts->addFile('config.js'); $this->scripts->addFile('doclinks.js'); $this->scripts->addFile('functions.js'); @@ -198,12 +180,7 @@ class Header $this->scripts->addFile('indexes.js'); $this->scripts->addFile('common.js'); $this->scripts->addFile('page_settings.js'); - if ($GLOBALS['cfg']['enable_drag_drop_import'] === true) { - $this->scripts->addFile('drag_drop_import.js'); - } - if (! $GLOBALS['PMA_Config']->get('DisableShortcutKeys')) { - $this->scripts->addFile('shortcuts_handler.js'); - } + $this->scripts->addCode($this->getJsParamsCode()); } @@ -398,7 +375,7 @@ class Header $version = self::getVersionParameter(); // The user preferences have been merged at this point - // so we can conditionally add CodeMirror + // so we can conditionally add CodeMirror, other scripts and settings if ($GLOBALS['cfg']['CodemirrorEnable']) { $this->scripts->addFile('vendor/codemirror/lib/codemirror.js'); $this->scripts->addFile('vendor/codemirror/mode/sql/sql.js'); @@ -413,13 +390,36 @@ class Header } } + if ($GLOBALS['cfg']['SendErrorReports'] !== 'never') { + $this->scripts->addFile('vendor/tracekit.js'); + $this->scripts->addFile('error_report.js'); + } + if ($GLOBALS['cfg']['enable_drag_drop_import'] === true) { + $this->scripts->addFile('drag_drop_import.js'); + } + if (! $GLOBALS['PMA_Config']->get('DisableShortcutKeys')) { + $this->scripts->addFile('shortcuts_handler.js'); + } + + $this->scripts->addCode($this->getVariablesForJavaScript()); + $this->scripts->addCode( 'ConsoleEnterExecutes=' . ($GLOBALS['cfg']['ConsoleEnterExecutes'] ? 'true' : 'false') ); $this->scripts->addFiles($this->console->getScripts()); - if ($this->userprefsOfferImport) { + // if database storage for user preferences is transient, + // offer to load exported settings from localStorage + // (detection will be done in JavaScript) + $userprefsOfferImport = false; + if ($GLOBALS['PMA_Config']->get('user_preferences') === 'session' + && ! isset($_SESSION['userprefs_autoload']) + ) { + $userprefsOfferImport = true; + } + + if ($userprefsOfferImport) { $this->scripts->addFile('config.js'); } @@ -435,7 +435,7 @@ class Header $customHeader = Config::renderHeader(); // offer to load user preferences from localStorage - if ($this->userprefsOfferImport) { + if ($userprefsOfferImport) { $loadUserPreferences = $this->userPreferences->autoloadGetHeader(); } diff --git a/libraries/classes/Html/Generator.php b/libraries/classes/Html/Generator.php index 0e5667200f..f8d7c6f2e3 100644 --- a/libraries/classes/Html/Generator.php +++ b/libraries/classes/Html/Generator.php @@ -1259,13 +1259,15 @@ class Generator $_url_params[$name] = 0; $list_navigator_html .= '' . $caption1 - . ''; + . '" data-post="' + . Url::getCommon($_url_params, '', false) + . '">' . $caption1 . ''; $_url_params[$name] = $pos - $max_count; - $list_navigator_html .= ' ' - . $caption2 . ''; + $list_navigator_html .= ' ' . $caption2 . ''; } $list_navigator_html .= '
' . $caption3 - . ''; + . '" data-post="' + . Url::getCommon($_url_params, '', false) + . '" >' . $caption3 . ''; $_url_params[$name] = floor($count / $max_count) * $max_count; if ($_url_params[$name] == $count) { $_url_params[$name] = $count - $max_count; } - $list_navigator_html .= ' ' - . $caption4 . ''; + $list_navigator_html .= ' ' . $caption4 . ''; } $list_navigator_html .= '' . "\n"; } diff --git a/libraries/classes/Plugins/Import/ImportOds.php b/libraries/classes/Plugins/Import/ImportOds.php index 0c174d916c..1c2af56101 100644 --- a/libraries/classes/Plugins/Import/ImportOds.php +++ b/libraries/classes/Plugins/Import/ImportOds.php @@ -239,8 +239,8 @@ class ImportOds extends ImportPlugin /** * Get value * - * @param array $cell_attrs Cell attributes - * @param array $text Texts + * @param SimpleXMLElement $cell_attrs Cell attributes + * @param SimpleXMLElement $text Texts * * @return float|string */ @@ -266,7 +266,14 @@ class ImportOds extends ImportPlugin /* We need to concatenate all paragraphs */ $values = []; foreach ($text as $paragraph) { - $values[] = (string) $paragraph; + // Maybe a text node has the content ? (email, url, ...) + // Example: test@example.fr + $paragraphValue = $paragraph->__toString(); + if ($paragraphValue === '' && isset($paragraph->{'a'})) { + $values[] = $paragraph->{'a'}->__toString(); + continue; + } + $values[] = $paragraphValue; } return implode("\n", $values); @@ -378,7 +385,7 @@ class ImportOds extends ImportPlugin if (! $col_names_in_first_row) { if ($_REQUEST['ods_empty_rows'] ?? false) { foreach ($tempRow as $cell) { - if (strcmp('NULL', $cell)) { + if (strcmp('NULL', (string) $cell)) { $tempRows[] = $tempRow; break; } diff --git a/libraries/classes/Plugins/Import/Upload/UploadProgress.php b/libraries/classes/Plugins/Import/Upload/UploadProgress.php index 35dbb2ae6c..1bb8345e77 100644 --- a/libraries/classes/Plugins/Import/Upload/UploadProgress.php +++ b/libraries/classes/Plugins/Import/Upload/UploadProgress.php @@ -12,7 +12,6 @@ use PhpMyAdmin\Plugins\UploadInterface; use function array_key_exists; use function function_exists; use function trim; -use function uploadprogress_get_info; /** * Implementation for upload progress @@ -65,7 +64,8 @@ class UploadProgress implements UploadInterface $status = null; // @see https://pecl.php.net/package/uploadprogress if (function_exists('uploadprogress_get_info')) { - $status = uploadprogress_get_info($id); + // phpcs:ignore SlevomatCodingStandard.Namespaces.ReferenceUsedNamesOnly.ReferenceViaFullyQualifiedName + $status = \uploadprogress_get_info($id); } if ($status) { diff --git a/libraries/classes/Routing.php b/libraries/classes/Routing.php index ec6865681c..1336dfabac 100644 --- a/libraries/classes/Routing.php +++ b/libraries/classes/Routing.php @@ -11,7 +11,7 @@ use FastRoute\DataGenerator\GroupCountBased as DataGeneratorGroupCountBased; use FastRoute\Dispatcher\GroupCountBased as DispatcherGroupCountBased; use FastRoute\RouteCollector; use function htmlspecialchars; -use function mb_strlen; +use function is_string; use function rawurldecode; use function sprintf; use function is_writable; @@ -124,21 +124,25 @@ class Routing return $couldWrite !== false; } + /** + * @psalm-return non-empty-string + */ public static function getCurrentRoute(): string { - /** @var string $route */ $route = $_GET['route'] ?? $_POST['route'] ?? '/'; + if (! is_string($route) || $route === '') { + $route = '/'; + } /** * See FAQ 1.34. * * @see https://docs.phpmyadmin.net/en/latest/faq.html#faq1-34 */ - if (($route === '/' || $route === '') && isset($_GET['db']) && mb_strlen($_GET['db']) !== 0) { - $route = '/database/structure'; - if (isset($_GET['table']) && mb_strlen($_GET['table']) !== 0) { - $route = '/sql'; - } + $db = isset($_GET['db']) && is_string($_GET['db']) ? $_GET['db'] : ''; + if ($route === '/' && $db !== '') { + $table = isset($_GET['table']) && is_string($_GET['table']) ? $_GET['table'] : ''; + $route = $table === '' ? '/database/structure' : '/sql'; } return $route; diff --git a/libraries/classes/StorageEngine.php b/libraries/classes/StorageEngine.php index a49c9e4541..ecf58e5c80 100644 --- a/libraries/classes/StorageEngine.php +++ b/libraries/classes/StorageEngine.php @@ -106,7 +106,7 @@ class StorageEngine if ($storage_engines == null) { $storage_engines = $dbi->fetchResult('SHOW STORAGE ENGINES', 'Engine'); - if ($dbi->getVersion() >= 50708) { + if (! $dbi->isMariaDB() && $dbi->getVersion() >= 50708) { $disabled = (string) SessionCache::get( 'disabled_storage_engines', static function () use ($dbi) { diff --git a/libraries/classes/Version.php b/libraries/classes/Version.php index 75c3de862f..9968d73d57 100644 --- a/libraries/classes/Version.php +++ b/libraries/classes/Version.php @@ -12,12 +12,12 @@ namespace PhpMyAdmin; final class Version { // The VERSION_SUFFIX constant is defined at libraries/vendor_config.php - public const VERSION = '5.1.2' . VERSION_SUFFIX; + public const VERSION = '5.1.3' . VERSION_SUFFIX; public const SERIES = '5.1'; public const MAJOR = 5; public const MINOR = 1; - public const PATCH = 2; - public const ID = 50102; + public const PATCH = 3; + public const ID = 50103; public const PRE_RELEASE_NAME = ''; public const IS_DEV = false; } diff --git a/package.json b/package.json index a3ef5c3bcd..88d7cfb892 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "phpmyadmin", - "version": "5.1.2", + "version": "5.1.3", "description": "A web interface for MySQL and MariaDB", "repository": "https://github.com/phpmyadmin/phpmyadmin.git", "author": "The phpMyAdmin Team (https://www.phpmyadmin.net/team/)", diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index dfdf327e12..7324fb8208 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1,5 +1,15 @@ parameters: ignoreErrors: + - + message: "#^Static property PhpMyAdmin\\\\Charsets\\:\\:\\$charsets \\(array\\\\) does not accept array\\\\.$#" + count: 1 + path: libraries/classes/Charsets.php + + - + message: "#^Static property PhpMyAdmin\\\\Charsets\\:\\:\\$collations \\(array\\\\>\\) does not accept array\\\\>\\.$#" + count: 1 + path: libraries/classes/Charsets.php + - message: "#^Strict comparison using \\=\\=\\= between non\\-empty\\-array\\ and false will always evaluate to false\\.$#" count: 1 @@ -316,7 +326,7 @@ parameters: path: libraries/classes/Controllers/Table/StructureController.php - - message: "#^Method PhpMyAdmin\\\\Controllers\\\\Table\\\\StructureController\\:\\:extractPartitionDetails\\(\\) should return array\\\\|null but returns array\\\\>\\|bool\\|int\\|string\\>\\.$#" + message: "#^Method PhpMyAdmin\\\\Controllers\\\\Table\\\\StructureController\\:\\:extractPartitionDetails\\(\\) should return array\\\\|null but returns array\\, array\\\\>\\|bool\\|int\\|string\\>\\.$#" count: 1 path: libraries/classes/Controllers/Table/StructureController.php @@ -361,7 +371,7 @@ parameters: path: libraries/classes/Core.php - - message: "#^Offset 'pass'\\|'port'\\|'user' does not exist on array\\{scheme\\?\\: string, host\\: string, port\\?\\: int, user\\?\\: string, pass\\?\\: string, path\\?\\: string, query\\?\\: string, fragment\\?\\: string\\}\\.$#" + message: "#^Offset 'pass'\\|'port'\\|'user' does not exist on array\\{host\\: non\\-empty\\-string, scheme\\?\\: string, port\\?\\: int, user\\?\\: string, pass\\?\\: string, path\\?\\: string, query\\?\\: string, fragment\\?\\: string\\}\\.$#" count: 1 path: libraries/classes/Core.php @@ -371,22 +381,22 @@ parameters: path: libraries/classes/Database/CentralColumns.php - - message: "#^Offset 'DCN' does not exist on array\\{C_NAME\\: array\\, DCN\\?\\: non\\-empty\\-array\\, DTN\\?\\: non\\-empty\\-array\\, SCN\\?\\: non\\-empty\\-array\\, STN\\?\\: non\\-empty\\-array\\\\}\\.$#" + message: "#^Offset 'DCN' does not exist on array\\{C_NAME\\: array\\, string\\>, DCN\\?\\: non\\-empty\\-array\\, string\\>, DTN\\?\\: non\\-empty\\-array\\, non\\-empty\\-string\\>, SCN\\?\\: non\\-empty\\-array\\, string\\>, STN\\?\\: non\\-empty\\-array\\, non\\-empty\\-string\\>\\}\\.$#" count: 1 path: libraries/classes/Database/Designer/Common.php - - message: "#^Offset 'DTN' does not exist on array\\{C_NAME\\: array\\, DCN\\?\\: non\\-empty\\-array\\, DTN\\?\\: non\\-empty\\-array\\, SCN\\?\\: non\\-empty\\-array\\, STN\\?\\: non\\-empty\\-array\\\\}\\.$#" + message: "#^Offset 'DTN' does not exist on array\\{C_NAME\\: array\\, string\\>, DCN\\?\\: non\\-empty\\-array\\, string\\>, DTN\\?\\: non\\-empty\\-array\\, non\\-empty\\-string\\>, SCN\\?\\: non\\-empty\\-array\\, string\\>, STN\\?\\: non\\-empty\\-array\\, non\\-empty\\-string\\>\\}\\.$#" count: 1 path: libraries/classes/Database/Designer/Common.php - - message: "#^Offset 'SCN' does not exist on array\\{C_NAME\\: array\\, DCN\\?\\: non\\-empty\\-array\\, DTN\\?\\: non\\-empty\\-array\\, SCN\\?\\: non\\-empty\\-array\\, STN\\?\\: non\\-empty\\-array\\\\}\\.$#" + message: "#^Offset 'SCN' does not exist on array\\{C_NAME\\: array\\, string\\>, DCN\\?\\: non\\-empty\\-array\\, string\\>, DTN\\?\\: non\\-empty\\-array\\, non\\-empty\\-string\\>, SCN\\?\\: non\\-empty\\-array\\, string\\>, STN\\?\\: non\\-empty\\-array\\, non\\-empty\\-string\\>\\}\\.$#" count: 1 path: libraries/classes/Database/Designer/Common.php - - message: "#^Offset 'STN' does not exist on array\\{C_NAME\\: array\\, DCN\\?\\: non\\-empty\\-array\\, DTN\\?\\: non\\-empty\\-array\\, SCN\\?\\: non\\-empty\\-array\\, STN\\?\\: non\\-empty\\-array\\\\}\\.$#" + message: "#^Offset 'STN' does not exist on array\\{C_NAME\\: array\\, string\\>, DCN\\?\\: non\\-empty\\-array\\, string\\>, DTN\\?\\: non\\-empty\\-array\\, non\\-empty\\-string\\>, SCN\\?\\: non\\-empty\\-array\\, string\\>, STN\\?\\: non\\-empty\\-array\\, non\\-empty\\-string\\>\\}\\.$#" count: 2 path: libraries/classes/Database/Designer/Common.php @@ -520,16 +530,6 @@ parameters: count: 2 path: libraries/classes/Dbal/DbiMysqli.php - - - message: "#^Binary operation \"\\+\" between array\\|string\\|null and array\\{default_action\\: 'insert'\\} results in an error\\.$#" - count: 3 - path: libraries/classes/Display/Results.php - - - - message: "#^Binary operation \"\\+\" between array\\|string\\|null and array\\{default_action\\: 'update'\\} results in an error\\.$#" - count: 3 - path: libraries/classes/Display/Results.php - - message: "#^Call to an undefined method object\\:\\:getMIMESubtype\\(\\)\\.$#" count: 1 @@ -571,37 +571,37 @@ parameters: path: libraries/classes/Display/Results.php - - message: "#^Parameter \\#5 \\$default_function of method PhpMyAdmin\\\\Display\\\\Results\\:\\:handleNonPrintableContents\\(\\) expects string, array\\ given\\.$#" + message: "#^Parameter \\#5 \\$default_function of method PhpMyAdmin\\\\Display\\\\Results\\:\\:handleNonPrintableContents\\(\\) expects string, array\\ given\\.$#" count: 2 path: libraries/classes/Display/Results.php - - message: "#^Parameter \\#7 \\$transformation_plugin of method PhpMyAdmin\\\\Display\\\\Results\\:\\:getDataCellForGeometryColumns\\(\\) expects PhpMyAdmin\\\\Plugins\\\\TransformationsPlugin, array\\\\|object given\\.$#" + message: "#^Parameter \\#7 \\$transformation_plugin of method PhpMyAdmin\\\\Display\\\\Results\\:\\:getDataCellForGeometryColumns\\(\\) expects PhpMyAdmin\\\\Plugins\\\\TransformationsPlugin, array\\\\|object given\\.$#" count: 1 path: libraries/classes/Display/Results.php - - message: "#^Parameter \\#7 \\$transformation_plugin of method PhpMyAdmin\\\\Display\\\\Results\\:\\:getDataCellForNonNumericColumns\\(\\) expects PhpMyAdmin\\\\Plugins\\\\TransformationsPlugin, array\\\\|object given\\.$#" + message: "#^Parameter \\#7 \\$transformation_plugin of method PhpMyAdmin\\\\Display\\\\Results\\:\\:getDataCellForNonNumericColumns\\(\\) expects PhpMyAdmin\\\\Plugins\\\\TransformationsPlugin, array\\\\|object given\\.$#" count: 1 path: libraries/classes/Display/Results.php - - message: "#^Parameter \\#8 \\$default_function of method PhpMyAdmin\\\\Display\\\\Results\\:\\:getDataCellForGeometryColumns\\(\\) expects string, array\\ given\\.$#" + message: "#^Parameter \\#8 \\$default_function of method PhpMyAdmin\\\\Display\\\\Results\\:\\:getDataCellForGeometryColumns\\(\\) expects string, array\\ given\\.$#" count: 1 path: libraries/classes/Display/Results.php - - message: "#^Parameter \\#8 \\$default_function of method PhpMyAdmin\\\\Display\\\\Results\\:\\:getDataCellForNonNumericColumns\\(\\) expects string, array\\ given\\.$#" + message: "#^Parameter \\#8 \\$default_function of method PhpMyAdmin\\\\Display\\\\Results\\:\\:getDataCellForNonNumericColumns\\(\\) expects string, array\\ given\\.$#" count: 1 path: libraries/classes/Display/Results.php - - message: "#^Parameter \\#8 \\$transformation_plugin of method PhpMyAdmin\\\\Display\\\\Results\\:\\:getDataCellForNumericColumns\\(\\) expects PhpMyAdmin\\\\Plugins\\\\TransformationsPlugin, array\\\\|object given\\.$#" + message: "#^Parameter \\#8 \\$transformation_plugin of method PhpMyAdmin\\\\Display\\\\Results\\:\\:getDataCellForNumericColumns\\(\\) expects PhpMyAdmin\\\\Plugins\\\\TransformationsPlugin, array\\\\|object given\\.$#" count: 1 path: libraries/classes/Display/Results.php - - message: "#^Parameter \\#9 \\$default_function of method PhpMyAdmin\\\\Display\\\\Results\\:\\:getDataCellForNumericColumns\\(\\) expects string, array\\ given\\.$#" + message: "#^Parameter \\#9 \\$default_function of method PhpMyAdmin\\\\Display\\\\Results\\:\\:getDataCellForNumericColumns\\(\\) expects string, array\\ given\\.$#" count: 1 path: libraries/classes/Display/Results.php @@ -615,6 +615,11 @@ parameters: count: 1 path: libraries/classes/Display/Results.php + - + message: "#^Result of && is always false\\.$#" + count: 1 + path: libraries/classes/Display/Results.php + - message: "#^Strict comparison using \\=\\=\\= between string and null will always evaluate to false\\.$#" count: 3 @@ -831,7 +836,7 @@ parameters: path: libraries/classes/Gis/GisGeometryCollection.php - - message: "#^Parameter \\#1 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getBoundsForOl\\(\\) expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getBoundsForOl\\(\\) expects string, int\\\\|int\\<1, max\\> given\\.$#" count: 1 path: libraries/classes/Gis/GisLineString.php @@ -841,7 +846,7 @@ parameters: path: libraries/classes/Gis/GisLineString.php - - message: "#^Parameter \\#2 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getLineForOpenLayers\\(\\) expects string, int given\\.$#" + message: "#^Parameter \\#2 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getLineForOpenLayers\\(\\) expects string, int\\\\|int\\<1, max\\> given\\.$#" count: 1 path: libraries/classes/Gis/GisLineString.php @@ -871,7 +876,7 @@ parameters: path: libraries/classes/Gis/GisLineString.php - - message: "#^Parameter \\#1 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getBoundsForOl\\(\\) expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getBoundsForOl\\(\\) expects string, int\\\\|int\\<1, max\\> given\\.$#" count: 1 path: libraries/classes/Gis/GisMultiLineString.php @@ -881,7 +886,7 @@ parameters: path: libraries/classes/Gis/GisMultiLineString.php - - message: "#^Parameter \\#2 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getLineArrayForOpenLayers\\(\\) expects string, int given\\.$#" + message: "#^Parameter \\#2 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getLineArrayForOpenLayers\\(\\) expects string, int\\\\|int\\<1, max\\> given\\.$#" count: 1 path: libraries/classes/Gis/GisMultiLineString.php @@ -911,7 +916,7 @@ parameters: path: libraries/classes/Gis/GisMultiLineString.php - - message: "#^Parameter \\#1 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getBoundsForOl\\(\\) expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getBoundsForOl\\(\\) expects string, int\\\\|int\\<1, max\\> given\\.$#" count: 1 path: libraries/classes/Gis/GisMultiPoint.php @@ -921,7 +926,7 @@ parameters: path: libraries/classes/Gis/GisMultiPoint.php - - message: "#^Parameter \\#2 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisMultiPoint\\:\\:getPointsArrayForOpenLayers\\(\\) expects string, int given\\.$#" + message: "#^Parameter \\#2 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisMultiPoint\\:\\:getPointsArrayForOpenLayers\\(\\) expects string, int\\\\|int\\<1, max\\> given\\.$#" count: 1 path: libraries/classes/Gis/GisMultiPoint.php @@ -951,7 +956,7 @@ parameters: path: libraries/classes/Gis/GisMultiPoint.php - - message: "#^Parameter \\#1 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getBoundsForOl\\(\\) expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getBoundsForOl\\(\\) expects string, int\\\\|int\\<1, max\\> given\\.$#" count: 1 path: libraries/classes/Gis/GisMultiPolygon.php @@ -961,7 +966,7 @@ parameters: path: libraries/classes/Gis/GisMultiPolygon.php - - message: "#^Parameter \\#2 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getPolygonArrayForOpenLayers\\(\\) expects string, int given\\.$#" + message: "#^Parameter \\#2 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getPolygonArrayForOpenLayers\\(\\) expects string, int\\\\|int\\<1, max\\> given\\.$#" count: 1 path: libraries/classes/Gis/GisMultiPolygon.php @@ -996,7 +1001,7 @@ parameters: path: libraries/classes/Gis/GisMultiPolygon.php - - message: "#^Parameter \\#1 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getBoundsForOl\\(\\) expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getBoundsForOl\\(\\) expects string, int\\\\|int\\<1, max\\> given\\.$#" count: 1 path: libraries/classes/Gis/GisPoint.php @@ -1006,7 +1011,7 @@ parameters: path: libraries/classes/Gis/GisPoint.php - - message: "#^Parameter \\#2 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getPointForOpenLayers\\(\\) expects string, int given\\.$#" + message: "#^Parameter \\#2 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getPointForOpenLayers\\(\\) expects string, int\\\\|int\\<1, max\\> given\\.$#" count: 1 path: libraries/classes/Gis/GisPoint.php @@ -1036,7 +1041,7 @@ parameters: path: libraries/classes/Gis/GisPoint.php - - message: "#^Parameter \\#1 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getBoundsForOl\\(\\) expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getBoundsForOl\\(\\) expects string, int\\\\|int\\<1, max\\> given\\.$#" count: 1 path: libraries/classes/Gis/GisPolygon.php @@ -1046,7 +1051,7 @@ parameters: path: libraries/classes/Gis/GisPolygon.php - - message: "#^Parameter \\#2 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getPolygonForOpenLayers\\(\\) expects string, int given\\.$#" + message: "#^Parameter \\#2 \\$srid of method PhpMyAdmin\\\\Gis\\\\GisGeometry\\:\\:getPolygonForOpenLayers\\(\\) expects string, int\\\\|int\\<1, max\\> given\\.$#" count: 1 path: libraries/classes/Gis/GisPolygon.php @@ -1122,7 +1127,12 @@ parameters: - message: "#^Cannot access offset int on array\\|false\\.$#" - count: 2 + count: 1 + path: libraries/classes/Git.php + + - + message: "#^Cannot access offset int\\\\|int\\<1, max\\> on array\\|false\\.$#" + count: 1 path: libraries/classes/Git.php - @@ -1131,7 +1141,7 @@ parameters: path: libraries/classes/Git.php - - message: "#^Offset int does not exist on array\\|null\\.$#" + message: "#^Offset int\\<0, max\\> does not exist on array\\|null\\.$#" count: 2 path: libraries/classes/Import.php @@ -1395,11 +1405,6 @@ parameters: count: 1 path: libraries/classes/Plugins/Export/ExportSql.php - - - message: "#^Cannot access offset mixed on array\\\\|PhpMyAdmin\\\\SqlParser\\\\Components\\\\ArrayObj\\.$#" - count: 4 - path: libraries/classes/Plugins/Export/ExportSql.php - - message: "#^Parameter \\#1 \\$create_query of method PhpMyAdmin\\\\Plugins\\\\Export\\\\ExportSql\\:\\:makeCreateTableMSSQLCompatible\\(\\) expects string, string\\|null given\\.$#" count: 1 @@ -1506,12 +1511,7 @@ parameters: path: libraries/classes/Plugins/Import/ImportOds.php - - message: "#^Parameter \\#1 \\$cell_attrs of method PhpMyAdmin\\\\Plugins\\\\Import\\\\ImportOds\\:\\:getValue\\(\\) expects array, SimpleXMLElement\\|null given\\.$#" - count: 1 - path: libraries/classes/Plugins/Import/ImportOds.php - - - - message: "#^Parameter \\#2 \\$text of method PhpMyAdmin\\\\Plugins\\\\Import\\\\ImportOds\\:\\:getValue\\(\\) expects array, SimpleXMLElement given\\.$#" + message: "#^Parameter \\#1 \\$cell_attrs of method PhpMyAdmin\\\\Plugins\\\\Import\\\\ImportOds\\:\\:getValue\\(\\) expects SimpleXMLElement, SimpleXMLElement\\|null given\\.$#" count: 1 path: libraries/classes/Plugins/Import/ImportOds.php @@ -1565,11 +1565,6 @@ parameters: count: 2 path: libraries/classes/Plugins/Import/ImportXml.php - - - message: "#^Used function uploadprogress_get_info not found\\.$#" - count: 1 - path: libraries/classes/Plugins/Import/Upload/UploadProgress.php - - message: "#^Method PhpMyAdmin\\\\Plugins\\\\Import\\\\Upload\\\\UploadSession\\:\\:getIdKey\\(\\) should return string but returns string\\|false\\.$#" count: 1 diff --git a/po/pt.po b/po/pt.po index ce289fa14d..88954b80d3 100644 --- a/po/pt.po +++ b/po/pt.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: phpMyAdmin 5.1.2-dev\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2021-08-27 17:07+0200\n" -"PO-Revision-Date: 2022-01-01 16:54+0000\n" +"PO-Revision-Date: 2022-01-31 15:55+0000\n" "Last-Translator: Salvador Domingues \n" "Language-Team: Portuguese \n" @@ -13,7 +13,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.10.1\n" +"X-Generator: Weblate 4.11-dev\n" #: libraries/advisory_rules_generic.php:9 msgid "Uptime below one day" @@ -2002,7 +2002,7 @@ msgstr "Personalizar as opções por defeito." #: libraries/classes/Config/Descriptions.php:203 msgid "Settings for phpMyAdmin developers." -msgstr "Configurações para programadores phpMyAdmin." +msgstr "Definições para programadores phpMyAdmin." #: libraries/classes/Config/Descriptions.php:204 msgid "Customize edit mode." @@ -2046,11 +2046,11 @@ msgstr "Opções de exibição de tabelas." #: libraries/classes/Config/Descriptions.php:217 msgid "Settings that didn't fit anywhere else." -msgstr "Configurações que não se encaixavam em nenhum outro lugar." +msgstr "Definições que não se encaixavam em nenhum outro lugar." #: libraries/classes/Config/Descriptions.php:218 msgid "Authentication settings." -msgstr "Configurações de autenticação." +msgstr "Definições de autenticação." #: libraries/classes/Config/Descriptions.php:219 msgid "Enter server connection parameters." @@ -3605,7 +3605,7 @@ msgstr "Microsoft Office" #: libraries/classes/Config/Descriptions.php:776 msgid "Other core settings" -msgstr "Outras configurações do núcleo" +msgstr "Outras definições do núcleo" #: libraries/classes/Config/Descriptions.php:777 msgid "Page titles" @@ -3617,7 +3617,7 @@ msgstr "Segurança" #: libraries/classes/Config/Descriptions.php:779 msgid "Basic settings" -msgstr "Configurações básicas" +msgstr "Definições básicas" #: libraries/classes/Config/Descriptions.php:780 msgid "Authentication" @@ -4419,7 +4419,7 @@ msgstr "Utilizar a pesquisa da base de dados" #: libraries/classes/Config/Descriptions.php:970 msgid "Enable the Developer tab in settings" -msgstr "Activar o separador Programador nas definições" +msgstr "Ativar o separador Programador nas definições" #: libraries/classes/Config/Descriptions.php:971 #: libraries/classes/Setup/Index.php:132 libraries/classes/Setup/Index.php:156 @@ -4502,7 +4502,7 @@ msgstr "Mostrar consulta de navegação atual" #: libraries/classes/Config/Descriptions.php:989 msgid "Execute queries on Enter and insert new line with Shift + Enter" msgstr "" -"Executa os queries carregando no Enter e insere uma nova linha com Shift + " +"Execute as queries carregando no Enter e insira uma nova linha com Shift + " "Enter" #: libraries/classes/Config/Descriptions.php:990 @@ -4837,7 +4837,7 @@ msgstr "Transformações predefinidas" #: libraries/classes/Config/PageSettings.php:138 msgid "Cannot save settings, submitted configuration form contains errors!" msgstr "" -"As configurações não podem ser gravadas, o formulário de configuração " +"As definições não podem ser guardadas, o formulário de configuração " "submetido contém erros!" #: libraries/classes/Config.php:741 @@ -5276,8 +5276,8 @@ msgid "" "An error has been detected and an error report has been automatically " "submitted based on your settings." msgstr "" -"Foi detectado um erro e enviado automaticamente um relatório de erro com " -"base nas suas configurações." +"Foi detetado um erro e enviado automaticamente um relatório de erro com base " +"nas suas definições." #: libraries/classes/Controllers/ErrorReportController.php:105 msgid "Thank you for submitting this report." @@ -5561,11 +5561,11 @@ msgstr "A eliminar os dados de rastreamento" #: libraries/classes/Controllers/JavaScriptMessagesController.php:49 msgid "Dropping Primary Key/Index" -msgstr "Eliminando Chave Primária/Índice" +msgstr "A eliminar Chave Primária/Índice" #: libraries/classes/Controllers/JavaScriptMessagesController.php:50 msgid "Dropping Foreign key." -msgstr "Eliminando Chave estrangeira." +msgstr "A eliminar Chave estrangeira." #: libraries/classes/Controllers/JavaScriptMessagesController.php:51 msgid "This operation could take a long time. Proceed anyway?" @@ -5851,9 +5851,9 @@ msgid "" "likely that your current configuration will not work anymore. Please reset " "your configuration to default in the Settings menu." msgstr "" -"As configurações da tabela de armazenamento local do seu browser já não são " -"compatíveis com a nova versão do monitor de diálogos. É provável que a sua " -"configuração actual deixe de funcionar. Por favor, reinicie as suas " +"As configurações da tabela de armazenamento local do seu navegador já não " +"são compatíveis com a nova versão do monitor de diálogos. É provável que a " +"sua configuração atual deixe de funcionar. Por favor, reinicie as suas " "configurações no menu Configurações." #: libraries/classes/Controllers/JavaScriptMessagesController.php:160 @@ -6096,8 +6096,8 @@ msgid "" "Following settings will be applied globally and reset to default on server " "restart:" msgstr "" -"As seguintes configurações vão ser aplicadas globalmente e redefinidas para " -"o valor predefinição após o reinicio do servidor:" +"As seguintes definições vão ser aplicadas globalmente e redefinidas para o " +"valor predefinição após o reinicio do servidor:" #. l10n: %s is FILE or TABLE #: libraries/classes/Controllers/JavaScriptMessagesController.php:226 @@ -6133,11 +6133,11 @@ msgstr "" #: libraries/classes/Controllers/JavaScriptMessagesController.php:237 msgid "Change settings" -msgstr "Alterar configurações" +msgstr "Alterar definições" #: libraries/classes/Controllers/JavaScriptMessagesController.php:238 msgid "Current settings" -msgstr "Configurações atuais" +msgstr "Definições atuais" #: libraries/classes/Controllers/JavaScriptMessagesController.php:240 msgid "Chart title" @@ -6402,7 +6402,7 @@ msgstr "Cancelar" #: libraries/classes/Controllers/JavaScriptMessagesController.php:327 #: templates/header.twig:50 msgid "Page-related settings" -msgstr "Configurações relacionadas com a página" +msgstr "Definições relacionadas com a página" #: libraries/classes/Controllers/JavaScriptMessagesController.php:328 #: templates/config/form_display/fieldset_bottom.twig:8 @@ -10132,7 +10132,7 @@ msgstr "Visualizar o conteúdo da estrutura clicando em seu nome." msgid "" "Change any of its settings by clicking the corresponding \"Options\" link." msgstr "" -"Alterar qualquer uma destas configurações clicando no link \"Opções\" " +"Alterar qualquer uma destas definições clicando no link \"Opções\" " "correspondente." #: libraries/classes/Import.php:1346 @@ -10147,7 +10147,7 @@ msgstr "Ir para o banco de dados: %s" #: libraries/classes/Import.php:1359 libraries/classes/Import.php:1402 #, php-format msgid "Edit settings for %s" -msgstr "Editar as configurações para %s" +msgstr "Editar as definições para %s" #: libraries/classes/Import.php:1387 #, php-format @@ -11026,7 +11026,7 @@ msgstr "Truncar" #: templates/table/structure/display_structure.twig:283 #: templates/table/structure/display_structure.twig:463 msgid "Drop" -msgstr "Elimina" +msgstr "Eliminar" #: libraries/classes/Operations.php:618 msgid "Coalesce" @@ -11070,7 +11070,7 @@ msgstr "Erro ao criar o PDF:" #: libraries/classes/Plugins/Auth/AuthenticationConfig.php:80 msgid "Cannot connect: invalid settings." -msgstr "Não é possível realizar a ligação: configurações inválidas." +msgstr "Não é possível realizar a ligação: definições inválidas." #: libraries/classes/Plugins/Auth/AuthenticationConfig.php:94 #: libraries/classes/Plugins/Auth/AuthenticationHttp.php:86 @@ -12692,8 +12692,7 @@ msgstr "Permite apagar Bases de Dados e tabelas." #: templates/server/privileges/privileges_table.twig:578 msgid "Allows reloading server settings and flushing the server's caches." msgstr "" -"Permite recarregar as configurações do servidor e limpar os caches do " -"servidor." +"Permite recarregar as definições do servidor e limpar as caches do servidor." #: libraries/classes/Server/Privileges.php:363 #: templates/server/privileges/privileges_table.twig:588 @@ -15524,7 +15523,7 @@ msgid "" "team for debugging the error." msgstr "" "Este relatório automaticamente inclui dados sobre o erro e informações sobre " -"configurações relevantes. Ele será enviado à equipa do phpMyAdmin para poder " +"definições relevantes. Será enviado à equipa do phpMyAdmin para poder " "depurar o erro." #: templates/error/report_form.twig:12 @@ -15853,7 +15852,7 @@ msgstr "Mais definições" #: templates/home/index.twig:89 msgid "Appearance settings" -msgstr "Configurações de aspecto" +msgstr "Definições de aspeto" #: templates/home/index.twig:113 msgid "Database server" @@ -16410,7 +16409,7 @@ msgstr "Documentação MySQL" #: templates/navigation/main.twig:43 templates/navigation/main.twig:44 msgid "Navigation panel settings" -msgstr "Configurações do painel de navegação" +msgstr "Definições do painel de navegação" #: templates/navigation/main.twig:47 templates/navigation/main.twig:48 msgid "Reload navigation panel" @@ -16434,16 +16433,15 @@ msgstr "" #: templates/preferences/autoload.twig:13 msgid "Delete settings" -msgstr "Apagar configurações" +msgstr "Apagar definições" #: templates/preferences/forms/main.twig:4 msgid "Cannot save settings, submitted form contains errors!" -msgstr "" -"As configurações não podem salvas, o formulário submetido contém erros!" +msgstr "As definições não podem guardadas, o formulário submetido contém erros!" #: templates/preferences/header.twig:6 msgid "Manage your settings" -msgstr "Gerencie suas configurações" +msgstr "Gira as suas definições" #: templates/preferences/header.twig:12 msgid "Two-factor authentication" @@ -16469,7 +16467,7 @@ msgstr "A configuração contém dados incorretos para alguns campos." #: templates/preferences/manage/error.twig:16 msgid "Do you want to import remaining settings?" -msgstr "Deseja importar as configurações restantes?" +msgstr "Deseja importar as definições restantes?" #: templates/preferences/manage/main.twig:3 #: templates/preferences/manage/main.twig:33 @@ -16487,11 +16485,11 @@ msgstr "Importar do armazenamento do seu browser" #: templates/preferences/manage/main.twig:30 msgid "Settings will be imported from your browser's local storage." msgstr "" -"As configurações vão ser importadas do armazenamento local do seu browser." +"As definições vão ser importadas do armazenamento local do seu navegador." #: templates/preferences/manage/main.twig:36 msgid "You have no saved settings!" -msgstr "Não dispõe de configurações guardadas!" +msgstr "Não dispõe de definições guardadas!" #: templates/preferences/manage/main.twig:40 #: templates/preferences/manage/main.twig:104 @@ -16508,8 +16506,8 @@ msgid "" "You can set more settings by modifying config.inc.php, eg. by using %sSetup " "script%s." msgstr "" -"Você pode definir mais configurações modificando config.inc.php, por exemplo " -"usando %sscript de configuração%s." +"Pode definir mais definições modificando o config.inc.php, por exemplo, ao " +"utilizar o %sscript de configuração%s." #: templates/preferences/manage/main.twig:81 msgid "Save as JSON file" @@ -16525,11 +16523,11 @@ msgstr "Gravar para o armazenamento do seu browser" #: templates/preferences/manage/main.twig:96 msgid "Settings will be saved in your browser's local storage." -msgstr "As configurações serão gravadas no armazenamento local do seu browser." +msgstr "As definições serão guardadas no armazenamento local do seu navegador." #: templates/preferences/manage/main.twig:99 msgid "Existing settings will be overwritten!" -msgstr "As configurações existentes serão sobre-escritas!" +msgstr "As definições existentes serão sobre-escritas!" #: templates/preferences/manage/main.twig:120 msgid "You can reset all your settings and restore them to default values." @@ -17598,7 +17596,7 @@ msgid "" msgstr "" "O seu navegador atualizará todos os gráficos exibidos em intervalo regular. " "Pode adicioná-los e alterar a taxa de atualização em 'Definições', ou " -"remover qualquer um usando o ícone da engrenagem em cada gráfico." +"remover qualquer um utilizando o ícone da engrenagem em cada gráfico." #: templates/server/status/monitor/index.twig:108 msgid "" @@ -17862,7 +17860,7 @@ msgstr "" #: templates/server/variables/index.twig:5 msgid "Server variables and settings" -msgstr "Variáveis do servidor e configurações" +msgstr "Variáveis do servidor e definições" #: templates/server/variables/index.twig:43 msgid "This is a read-only variable and can not be edited" diff --git a/po/ro.po b/po/ro.po index fb68f09d3d..be1766d342 100644 --- a/po/ro.po +++ b/po/ro.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: phpMyAdmin 5.1.2-dev\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" "POT-Creation-Date: 2021-08-27 17:07+0200\n" -"PO-Revision-Date: 2022-01-03 16:54+0000\n" -"Last-Translator: Emanuel \n" +"PO-Revision-Date: 2022-02-08 13:56+0000\n" +"Last-Translator: liviuconcioiu \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" -"X-Generator: Weblate 4.10.1\n" +"X-Generator: Weblate 4.11-dev\n" #: libraries/advisory_rules_generic.php:9 msgid "Uptime below one day" @@ -594,17 +594,15 @@ msgid "key_buffer_size is 0" msgstr "key_buffer_size este 0" #: libraries/advisory_rules_generic.php:373 -#, fuzzy, no-php-format -#| msgid "Max %% MyISAM key buffer ever used" +#, no-php-format msgid "Max % MyISAM key buffer ever used" -msgstr "%% maxim tampon cheie MyISAM folosit vreodată" +msgstr "% maxim tampon cheie MyISAM folosit vreodată" #: libraries/advisory_rules_generic.php:378 #: libraries/advisory_rules_generic.php:395 -#, fuzzy, no-php-format -#| msgid "MyISAM key buffer (index cache) %% used is low." +#, no-php-format msgid "MyISAM key buffer (index cache) % used is low." -msgstr "Tamponul cheie MyISAM folosit (cache index) %% este mic." +msgstr "Tamponul cheie MyISAM folosit (cache index) % este mic." #: libraries/advisory_rules_generic.php:380 #: libraries/advisory_rules_generic.php:397 @@ -641,10 +639,9 @@ msgid "Percentage of index reads from memory" msgstr "Procentul de citiri index din memorie" #: libraries/advisory_rules_generic.php:411 -#, fuzzy, no-php-format -#| msgid "The %% of indexes that use the MyISAM key buffer is low." +#, no-php-format msgid "The % of indexes that use the MyISAM key buffer is low." -msgstr "%% de indexuri care folosește tamponul cheii MyISAM este mic." +msgstr "% de indexuri care folosește tamponul cheii MyISAM este mic." #: libraries/advisory_rules_generic.php:412 msgid "You may need to increase {key_buffer_size}." @@ -728,10 +725,9 @@ msgstr "" "pe oră" #: libraries/advisory_rules_generic.php:462 -#, fuzzy, no-php-format -#| msgid "Immediate table locks %%" +#, no-php-format msgid "Immediate table locks %" -msgstr "Blocări de tabel imediate %%" +msgstr "Blocări de tabel imediate %" #: libraries/advisory_rules_generic.php:466 #: libraries/advisory_rules_generic.php:476 @@ -783,10 +779,9 @@ msgid "The thread cache is set to 0" msgstr "Cache-ul firului de execuție este setat la 0" #: libraries/advisory_rules_generic.php:493 -#, fuzzy, no-php-format -#| msgid "Thread cache hit rate %%" +#, no-php-format msgid "Thread cache hit rate %" -msgstr "Rată de succes cache fire de execuție %%" +msgstr "Rată de succes cache fire de execuție %" #: libraries/advisory_rules_generic.php:497 msgid "Thread cache is not efficient." @@ -1003,17 +998,17 @@ msgid "" "fine. See also this blog entry" msgstr "" -"De obicei, este suficientă setarea propietății {innodb_log_file_size} la 25%" -"% din mărimea lui {innodb_buffer_pool_size}. O valoare foarte mare pentru " +"De obicei, este suficientă setarea propietății {innodb_log_file_size} la " +"25%% din mărimea lui {innodb_buffer_pool_size}. O valoare foarte mare pentru " "{innodb_log_file_size} va încetini considerabil timpul de recuperare după o " -"distrugere(eroare gravă) a unei baze de date. A se vedea de asemenea Articolul acesta. Trebuie să se închidă server-" -"ul, elimine fișierele InnoDB cu intrări, seteze valoarea nouă în my.cnf, " -"pornească server-ul și apoi să se verifice intrările de erori, pentru a se " -"asigura că totul a decurs bine. A se vedea de asemenea acest post din blog" +"distrugere(eroare gravă) a unei baze de date. A se vedea de asemenea Articolul acesta. Trebuie să se " +"închidă server-ul, elimine fișierele InnoDB cu intrări, seteze valoarea nouă " +"în my.cnf, pornească server-ul și apoi să se verifice intrările de erori, " +"pentru a se asigura că totul a decurs bine. A se vedea de asemenea acest post din blog" #: libraries/advisory_rules_generic.php:633 #: libraries/advisory_rules_generic.php:662 @@ -1056,17 +1051,17 @@ msgid "" "\"https://mysqldatabaseadministration.blogspot.com/2007/01/increase-" "innodblogfilesize-proper-way.html\">this blog entry" msgstr "" -"De obicei, este suficientă setarea propietății {innodb_log_file_size} la 25%" -"% din mărimea lui {innodb_buffer_pool_size}. O valoare foarte mare pentru " +"De obicei, este suficientă setarea propietății {innodb_log_file_size} la " +"25%% din mărimea lui {innodb_buffer_pool_size}. O valoare foarte mare pentru " "{innodb_log_file_size} va încetini considerabil timpul de recuperare după o " -"distrugere(eroare gravă) a unei baze de date. A se vedea de asemenea Articolul acesta. Trebuie să se închidă server-" -"ul, elimine fișierele InnoDB cu intrări, seteze valoarea nouă în my.cnf, " -"pornească server-ul și apoi să se verifice intrările de erori, pentru a se " -"asigura că totul a decurs bine. A se vedea de asemenea acest post din blog" +"distrugere(eroare gravă) a unei baze de date. A se vedea de asemenea Articolul acesta. Trebuie să se " +"închidă server-ul, elimine fișierele InnoDB cu intrări, seteze valoarea nouă " +"în my.cnf, pornească server-ul și apoi să se verifice intrările de erori, " +"pentru a se asigura că totul a decurs bine. A se vedea de asemenea acest post din blog" #: libraries/advisory_rules_generic.php:685 #, php-format @@ -1110,12 +1105,12 @@ msgstr "" "InnoDB. Alocă toată memoria rămasă în acest tampon. Pentru serverele de bază " "de date care folosesc exclusiv InnoDB ca motor de stocare și nu a alte " "servicii care rulează (de exemplu, un server web), poți seta o valoare mare, " -"cum ar fi 80%% din memoria disponibilă. În caz contrar, trebuie să evaluezi " +"cum ar fi 80% din memoria disponibilă. În caz contrar, trebuie să evaluezi " "cu atenție consumul de memorie al celorlalte servicii și tabelele non-InnoDB " "și să setezi această variabilă în consecință. Dacă este setată o valoare " "prea mare, sistemul tău va începe să se schimbe, ceea ce scade semnificativ " -"performanța. De asemenea, vezi acest articol" +"performanța. De asemenea, vezi acest articol" #: libraries/advisory_rules_generic.php:706 #, php-format @@ -1178,10 +1173,9 @@ msgstr "" "query_cache_size este setat la 0 sau query_cache_type este setat la ”OPRIT”" #: libraries/advisory_rules_mysql_before80003.php:23 -#, fuzzy, no-php-format -#| msgid "Query cache efficiency (%%)" +#, no-php-format msgid "Query cache efficiency (%)" -msgstr "Eficiență cache interogări (%%)" +msgstr "Eficiență cache interogări (%)" #: libraries/advisory_rules_mysql_before80003.php:27 msgid "Query cache not running efficiently, it has a low hit rate." @@ -1201,10 +1195,9 @@ msgid "Query Cache usage" msgstr "Utilizare cache interogări" #: libraries/advisory_rules_mysql_before80003.php:39 -#, fuzzy, no-php-format -#| msgid "Less than 80%% of the query cache is being utilized." +#, no-php-format msgid "Less than 80% of the query cache is being utilized." -msgstr "Este utilizat mai puțin de 80%% din cache-ul interogări." +msgstr "Este utilizat mai puțin de 80% din cache-ul interogări." #: libraries/advisory_rules_mysql_before80003.php:41 msgid "" @@ -2252,16 +2245,12 @@ msgstr "" "sau a tabelului actual." #: libraries/classes/Config/Descriptions.php:292 -#, fuzzy -#| msgid "" -#| "Open the linked page in the main window ([kbd]main[/kbd]) or in a new one " -#| "([kbd]new[/kbd])." msgid "" "Open the linked page in the main window ([code]main[/code]) or in a new one " "([code]new[/code])." msgstr "" -"Deschide pagina legată în fereastra principală ([kbd]principală[/kbd]) sau " -"într-o fereastră nouă ([kbd]nouă[/kbd])." +"Deschide pagina legată în fereastra principală ([code]principală[/code]) sau " +"într-o fereastră nouă ([code]nouă[/code])." #: libraries/classes/Config/Descriptions.php:296 msgid "" @@ -2483,13 +2472,14 @@ msgstr "" "[kbd]pma__central_columns[/kbd]." #: libraries/classes/Config/Descriptions.php:391 +#, fuzzy msgid "" "You can use MySQL wildcard characters (% and _), escape them if you want to " "use their literal instances, i.e. use [kbd]'my\\_db'[/kbd] and not " "[kbd]'my_db'[/kbd]." msgstr "" "Poți folosi metacaractere MySQL (% și _), să le escapezi dacă vrei să " -"folosești instanțele lor literale, adică folosește [kbd]'my\\_db'[/kbd] și " +"folosești instanțele lor literale, adică folosește [kbd]'my\\_db'[/kbd] și " "nu [kbd]'my_db'[/kbd]." #: libraries/classes/Config/Descriptions.php:396 @@ -2663,11 +2653,10 @@ msgid "Leave blank for defaults." msgstr "Lasă gol pentru implicite." #: libraries/classes/Config/Descriptions.php:478 -#, fuzzy -#| msgid "HTTP Basic Auth Realm name to display when doing HTTP Auth" msgid "HTTP Basic Auth Realm name to display when doing HTTP Auth." msgstr "" -"Numele HTTP Basic Auth Realm ce va fi afișat când se face autentificarea HTTP" +"Numele HTTP Basic Auth Realm ce va fi afișat când se face autentificarea " +"HTTP." #: libraries/classes/Config/Descriptions.php:479 msgid "Authentication method to use." @@ -2830,12 +2819,6 @@ msgstr "" "mărită pentru zonele text ale interogărilor SQL (*2)." #: libraries/classes/Config/Descriptions.php:538 -#, fuzzy -#| msgid "" -#| "Input proxies as [kbd]IP: trusted HTTP header[/kbd]. The following " -#| "example specifies that phpMyAdmin should trust a HTTP_X_FORWARDED_FOR (X-" -#| "Forwarded-For) header coming from the proxy 1.2.3.4:[br][kbd]1.2.3.4: " -#| "HTTP_X_FORWARDED_FOR[/kbd]" msgid "" "Input proxies as [kbd]IP: trusted HTTP header[/kbd]. The following example " "specifies that phpMyAdmin should trust a HTTP_X_FORWARDED_FOR (X-Forwarded-" @@ -2844,8 +2827,8 @@ msgid "" msgstr "" "Proxy-uri de intrare ca [kbd] IP: header HTTP de încredere [/kbd]. Următorul " "exemplu specifică faptul că phpMyAdmin ar trebui să încredere într-un antet " -"HTTP_X_FORWARDED_FOR (X-Forwarded-For) provenind de la proxy 1.2.3.4: [br]" -"[kbd] 1.2.3.4: HTTP_X_FORWARDED_FOR [/kbd]" +"HTTP_X_FORWARDED_FOR (X-Forwarded-For) provenind de la proxy 1.2.3.4: " +"[br][kbd] 1.2.3.4: HTTP_X_FORWARDED_FOR [/kbd]." #: libraries/classes/Config/Descriptions.php:544 msgid "" @@ -3331,7 +3314,7 @@ msgstr "Coloane escapate cu" #: libraries/classes/Config/Descriptions.php:706 #: libraries/classes/Config/Descriptions.php:751 msgid "Replace NULL with" -msgstr "Înlocuiește NUL cu" +msgstr "Înlocuiește NULL cu" #: libraries/classes/Config/Descriptions.php:673 #: libraries/classes/Config/Descriptions.php:679 @@ -3574,7 +3557,7 @@ msgstr "Verificări chei străine" #: libraries/classes/Config/Descriptions.php:756 msgid "First day of calendar" -msgstr "" +msgstr "Prima zi din calendar" #: libraries/classes/Config/Descriptions.php:757 #: libraries/classes/Config/Descriptions.php:768 libraries/classes/Menu.php:530 @@ -3780,7 +3763,7 @@ msgstr "Nu anulează la eroarea de INSERARE" #: libraries/classes/Config/Descriptions.php:806 #: libraries/classes/Config/Descriptions.php:813 msgid "Add ON DUPLICATE KEY UPDATE" -msgstr "" +msgstr "Adaugă ON DUPLICATE KEY UPDATE" #: libraries/classes/Config/Descriptions.php:808 msgid "Format of imported file" @@ -4939,7 +4922,7 @@ msgid "Invalid server index: %s" msgstr "Index server invalid: %s" #: libraries/classes/Config.php:1401 -#, fuzzy, php-format +#, php-format msgid "Server %d" msgstr "Server %d" @@ -5199,10 +5182,8 @@ msgstr "Nu am putut încărca modulele de export, te rog verifică-ți instalare #: libraries/classes/Controllers/Table/MaintenanceController.php:117 #: libraries/classes/Controllers/Table/MaintenanceController.php:153 #: libraries/classes/Controllers/Table/MaintenanceController.php:188 -#, fuzzy -#| msgid "No tables selected." msgid "No table selected." -msgstr "Nicio bază de date selectată." +msgstr "Niciun tabel selectat." #: libraries/classes/Controllers/Database/ImportController.php:75 #: libraries/classes/Controllers/ImportController.php:619 @@ -5815,10 +5796,8 @@ msgid "Y values" msgstr "Valori Y" #: libraries/classes/Controllers/JavaScriptMessagesController.php:126 -#, fuzzy -#| msgid "Please enter the same value again" msgid "Please enter the SQL query first." -msgstr "Te rog introdu din nou aceeași valoare" +msgstr "Te rog introdu mai întâi interogarea SQL." #: libraries/classes/Controllers/JavaScriptMessagesController.php:129 msgid "The host name is empty!" @@ -6414,16 +6393,12 @@ msgid "Please select the file you want to import." msgstr "Te rog selectează fișierul pe care vrei să-l imporți." #: libraries/classes/Controllers/JavaScriptMessagesController.php:312 -#, fuzzy -#| msgid "Please enter a valid page name" msgid "Please enter a valid table name." -msgstr "Te rog introdu un nume de pagină valid" +msgstr "Te rog introdu un nume de tabel valid." #: libraries/classes/Controllers/JavaScriptMessagesController.php:313 -#, fuzzy -#| msgid "Please enter a valid page name" msgid "Please enter a valid database name." -msgstr "Te rog introdu un nume de pagină valid" +msgstr "Te rog introdu un nume de bază de date valid." #: libraries/classes/Controllers/JavaScriptMessagesController.php:314 msgid "No files available on server for import!" @@ -6894,8 +6869,7 @@ msgstr "Pentru a mări, selectează o secțiune a plotului cu mausul." #: libraries/classes/Controllers/JavaScriptMessagesController.php:472 msgid "Click reset zoom button to come back to original state." msgstr "" -"Dă clic pe pe butonul de resetare a măririi pentru a reveni la starea " -"inițială." +"Dă clic pe butonul de resetare a măririi pentru a reveni la starea inițială." #: libraries/classes/Controllers/JavaScriptMessagesController.php:474 msgid "Click a data point to view and possibly edit the data row." @@ -7096,6 +7070,8 @@ msgstr "Șterge pagina" #: libraries/classes/Controllers/JavaScriptMessagesController.php:542 msgid "Some tables saved in this page might have been renamed or deleted." msgstr "" +"Este posibil ca unele tabele salvate în această pagină să fi fost redenumite " +"sau șterse." #: libraries/classes/Controllers/JavaScriptMessagesController.php:543 #: templates/database/designer/main.twig:10 @@ -7398,16 +7374,12 @@ msgstr "" "În funcție de setările tale, aceste sunt trimise acum, te rog ai răbdare." #: libraries/classes/Controllers/JavaScriptMessagesController.php:682 -#, fuzzy -#| msgid "Successfully deleted the page" msgid "Successfully copied!" -msgstr "Pagină ștearsă cu succes" +msgstr "Copiat cu succes!" #: libraries/classes/Controllers/JavaScriptMessagesController.php:683 -#, fuzzy -#| msgid "Copying database" msgid "Copying failed!" -msgstr "Copiez baza de date" +msgstr "Copiere eșuată!" #: libraries/classes/Controllers/JavaScriptMessagesController.php:686 msgid "Execute this query again?" @@ -7507,17 +7479,15 @@ msgstr "Tip invalid de export" #. l10n: unknown error code (from U2F API) #: libraries/classes/Controllers/JavaScriptMessagesController.php:720 -#, fuzzy -#| msgid "Unknown error" msgctxt "U2F error" msgid "Unknown security key error." -msgstr "Eroare necunoscută" +msgstr "Eroare cheie de securitate necunoscută." #. l10n: error code 3 (from U2F API) #: libraries/classes/Controllers/JavaScriptMessagesController.php:722 msgctxt "U2F error" msgid "Client does not support security key." -msgstr "" +msgstr "Clientul nu suportă cheie de securitate." #. l10n: error code 4 (from U2F API) on register #: libraries/classes/Controllers/JavaScriptMessagesController.php:724 @@ -7529,11 +7499,9 @@ msgstr "Activarea cheii de securitate a eșuat (%s)." #. l10n: error code 4 (from U2F API) on authanticate #: libraries/classes/Controllers/JavaScriptMessagesController.php:726 -#, fuzzy -#| msgid "Invalid export type" msgctxt "U2F error" msgid "Invalid security key." -msgstr "Tip invalid de export" +msgstr "Cheie de securitate invalidă." #: libraries/classes/Controllers/JavaScriptMessagesController.php:731 #, fuzzy, php-format @@ -8690,6 +8658,8 @@ msgid "" "The ini_get and/or ini_set functions are disabled in php.ini. phpMyAdmin " "requires these functions!" msgstr "" +"Funcțiile ini_get și/sau ini_set sunt dezactivate în php.ini. phpMyAdmin are " +"nevoie de aceste funcții!" #: libraries/classes/Core.php:1261 msgid "GLOBALS overwrite attempt" @@ -8874,8 +8844,8 @@ msgstr "Editează evenimentul" #| msgid "The definer must be in the \"username@hostname\" format" msgid "The definer must be in the \"username@hostname\" format!" msgstr "" -"Datele introduse aici trebuie sa fie în format-ul \"nume-de-" -"utilizator@numele-gazdei\" (username@hostname)" +"Datele introduse aici trebuie să fie în formatul \"nume-de-utilizator@numele-" +"gazdei\"!" #: libraries/classes/Database/Events.php:402 msgid "You must provide an event name!" @@ -10546,10 +10516,8 @@ msgstr "" "de navigare." #: libraries/classes/Navigation/NavigationTree.php:816 -#, fuzzy -#| msgid "Groups:" msgid "Groups" -msgstr "Grupuri:" +msgstr "Grupuri" #: libraries/classes/Navigation/NavigationTree.php:982 #, php-format @@ -11133,6 +11101,8 @@ msgid "" "Your password is too long. To prevent denial-of-service attacks, phpMyAdmin " "restricts passwords to less than 1000 characters." msgstr "" +"Parola ta este prea lungă. Pentru a preveni atacurile DoS, phpMyAdmin " +"restricționează parolele la mai puțin de 1000 caractere." #: libraries/classes/Plugins/Auth/AuthenticationCookie.php:372 msgid "You are not allowed to log in to this MySQL server!" @@ -11778,10 +11748,8 @@ msgstr "" "ghilimele." #: libraries/classes/Plugins/Import/ImportCsv.php:128 -#, fuzzy -#| msgid "Column names: " msgid "Column names:" -msgstr "Nume coloane: " +msgstr "Nume coloane:" #: libraries/classes/Plugins/Import/ImportCsv.php:267 #: libraries/classes/Plugins/Import/ImportCsv.php:643 @@ -12086,7 +12054,7 @@ msgstr "" "listarea codului HTML. Din motive de securitate, va trebui sa editati manual " "fisierul libraries/transformations/text_plain__external.inc.php și să " "inserați uneltele permise să ruleze. Prima opțiune este apoi numărul de " -"programe care vor fi utilizate și a doua opțiune sînt parametri pentru " +"programe care vor fi utilizate și a doua opțiune sînt parametri pentru " "program. Al treilea parametru, dacă este stabilit la 1 va transforma ieșirea " "folosind htmlspecialchars() (implicit este 1). Un al patrulea parametru, " "dacă este stabilit la 1, va aplica NOWRAP la conținut, astfel încît întregul " @@ -12182,7 +12150,7 @@ msgstr "" "pentru definirea punctului de început a outputului de text (Default 0). A " "doua optiune este un offset de text returnat. Daca este gol, returneaza " "textul ramas. A treia optiune defineste caracterele care vor fi atasate la " -"output la returnarea unui substring (Default: …) ." +"output la returnarea unui substring (Default: …) ." #: libraries/classes/Plugins/Transformations/Abs/TextFileUploadTransformationsPlugin.php:28 msgid "" @@ -12455,19 +12423,15 @@ msgid "no description" msgstr "nicio descriere" #: libraries/classes/Relation.php:2039 -#, fuzzy, php-format -#| msgid "" -#| "You do not have necessary privileges to create a database named '%s'. You " -#| "may go to 'Operations' tab of any database to set up the phpMyAdmin " -#| "configuration storage there." +#, php-format msgid "" "You do not have necessary privileges to create a database named '%s'. You " "may go to 'Operations' tab of any database to set up the phpMyAdmin " "configuration storage there." msgstr "" -"Nu ai privilegiile necesare pentru a crea o bază de date numită " -"„phpmyadmin”. Poți merge la fila „Operații” a oricărei baze de date pentru a " -"inițializa acolo spațiul de stocare pentru configurarea phpMyAdmin." +"Nu ai privilegiile necesare pentru a crea o bază de date numită „%s”. Poți " +"merge la fila „Operații” a oricărei baze de date pentru a inițializa acolo " +"spațiul de stocare pentru configurarea phpMyAdmin." #: libraries/classes/Relation.php:2163 #, php-format @@ -12566,10 +12530,9 @@ msgid "" msgstr "" #: libraries/classes/Routing.php:165 -#, fuzzy, php-format -#| msgid "Source database `%s` was not found!" +#, php-format msgid "Error 404! The page %s was not found." -msgstr "Baza de date sursă „%s” nu a fost găsită!" +msgstr "Eroare 404! Pagina %s nu a fost găsită." #: libraries/classes/Routing.php:176 msgid "Error 405! Request method not allowed." @@ -13469,9 +13432,9 @@ msgid "" "-1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and " "2.2250738585072014E-308 to 1.7976931348623157E+308" msgstr "" -"Un număr cu virgulă mobilă cu dublă precizie, valorile permise sunt " -"-1.7976931348623157E+308 până la -2.2250738585072014E-308, 0, şi " -"2.2250738585072014E-308 până la 1.7976931348623157E+308" +"Un număr cu virgulă mobilă cu dublă precizie, valorile permise sunt -1." +"7976931348623157E+308 până la -2.2250738585072014E-308, 0, şi 2." +"2250738585072014E-308 până la 1.7976931348623157E+308" #: libraries/classes/Types.php:251 msgid "" @@ -14222,9 +14185,9 @@ msgid "" "example '\\\\xyz' or 'a\\'b')." msgstr "" "Dacă câmpul este „enum” sau „set”, vă rugăm să adăugați valori folosind " -"formatul: 'a','b','c'…
Daca aveti nevoie sa puneti bara intoarsa " -"(backslash) (\"\\\") sau semnul (\"'\") la aceste valori, folosiți exemplul " -"( '\\\\xyz' or 'a\\'b')." +"formatul: 'a','b','c'…
Dacă aveti nevoie sa puneti bara intoarsa " +"(backslash) (\"\\\") sau semnul (\"'\") la aceste valori, folosiți exemplul (" +" '\\\\xyz' or 'a\\'b')." #: templates/columns_definitions/table_fields_definitions.twig:21 msgid "" @@ -14476,10 +14439,8 @@ msgid "A_I" msgstr "A_I" #: templates/database/central_columns/main.twig:131 -#, fuzzy -#| msgid "The central list of columns for the current database is empty." msgid "The central list of columns for the current database is empty" -msgstr "Lista centrală de coloane pentru baza de date curentă este goală." +msgstr "Lista centrală de coloane pentru baza de date curentă este goală" #: templates/database/central_columns/main.twig:168 #: templates/display/results/table.twig:62 @@ -14544,10 +14505,8 @@ msgid "Number of columns" msgstr "Număr de coloane" #: templates/database/data_dictionary/index.twig:3 -#, fuzzy -#| msgid "Database comment" msgid "Database comment:" -msgstr "Comentariu bază de date" +msgstr "Comentariu bază de date:" #: templates/database/data_dictionary/index.twig:68 templates/indexes.twig:18 #: templates/table/structure/display_structure.twig:417 @@ -14876,12 +14835,12 @@ msgid "OFF" msgstr "OPRIT" #: templates/database/export/index.twig:62 -#, fuzzy -#| msgid ", @DATABASE@ will become the database name" msgid "" "@SERVER@ will become the server name and @DATABASE@ will become the database " "name." -msgstr ", @DATABASE@ va deveni numele bazei de date" +msgstr "" +"@SERVER@ va deveni numele server-ului și @DATABASE@ va deveni numele bazei " +"de date." #. l10n: A query that the user has written freely #: templates/database/export/index.twig:5 templates/table/export/index.twig:5 @@ -14907,10 +14866,8 @@ msgstr "Interogare în mai multe tabele" #: templates/database/multi_table_query/form.twig:10 #: templates/database/qbe/index.twig:10 -#, fuzzy -#| msgid "Query failed" msgid "Query by example" -msgstr "Interogare eșuată" +msgstr "Interogare prin exemplu" #: templates/database/multi_table_query/form.twig:15 msgid "Query window" @@ -14987,16 +14944,12 @@ msgstr "Nume bază de date nouă" #: templates/table/operations/index.twig:79 #: templates/table/operations/index.twig:113 #: templates/table/operations/index.twig:291 -#, fuzzy -#| msgid "" -#| "You don't have sufficient privileges to perform this operation; Please " -#| "refer to the documentation for more details" msgid "" "You don't have sufficient privileges to perform this operation; Please refer " "to the documentation for more details." msgstr "" "Nu ai suficiente privilegii pentru a efectua această operație; te rog " -"consultă documentația pentru mai multe detalii" +"consultă documentația pentru mai multe detalii." #: templates/database/operations/index.twig:89 msgid "Remove database" @@ -15129,10 +15082,8 @@ msgid "Ins:" msgstr "Inserează:" #: templates/database/qbe/ins_del_and_or_cell.twig:12 -#, fuzzy -#| msgid "And:" msgid "And" -msgstr "Și:" +msgstr "Și" #: templates/database/qbe/ins_del_and_or_cell.twig:17 #, fuzzy @@ -15169,16 +15120,12 @@ msgid "Modify:" msgstr "Modifică:" #: templates/database/qbe/selection_form.twig:54 -#, fuzzy -#| msgid "Add/Delete criteria rows" msgid "Add/Delete criteria rows:" -msgstr "Adaugă/șterge rândurile de criterii" +msgstr "Adaugă/șterge rândurile de criterii:" #: templates/database/qbe/selection_form.twig:67 -#, fuzzy -#| msgid "Add/Delete columns" msgid "Add/Delete columns:" -msgstr "Adaugă/șterge coloane" +msgstr "Adaugă/șterge coloane:" #: templates/database/qbe/selection_form.twig:86 #: templates/database/qbe/selection_form.twig:88 @@ -15382,10 +15329,8 @@ msgid "Make consistent with central list" msgstr "Asigură consecvență în lista centrală" #: templates/database/structure/copy_form.twig:14 -#, fuzzy -#| msgid "Options" msgid "Options:" -msgstr "Opțiuni" +msgstr "Opțiuni:" #: templates/database/structure/copy_form.twig:39 msgid "Add AUTO INCREMENT value" @@ -15513,10 +15458,8 @@ msgid "There are no triggers to display." msgstr "Nu există niciun declanșator de afișat." #: templates/display/results/sort_by_key.twig:3 -#, fuzzy -#| msgid "Sort by key" msgid "Sort by key:" -msgstr "Sortează după cheie" +msgstr "Sortează după cheie:" #: templates/display/results/table.twig:32 msgid "Save edited data" @@ -15744,10 +15687,10 @@ msgid "" "formatting strings. Additionally the following transformations will happen: " "%s Other text will be kept as is. See the FAQ 6.27 for details." msgstr "" -"Această valoare este interpretată folosind %1$sstrftime%2$s, deci poți " +"Această valoare este interpretată folosind funcția 'strftime', deci poți " "folosi șiruri de formatare pentru timp. În plus, vor avea loc următoarele " -"transformări: %3$s. Orice alt text va fi păstrat așa cum este. Vezi " -"%4$sÎntrebări frecvente%5$s pentru detalii." +"transformări: %s Orice alt text va fi păstrat așa cum este. Vezi Întrebări " +"frecvente 6.27 pentru detalii." #: templates/export.twig:329 msgid "use this for future exports" @@ -15831,10 +15774,9 @@ msgstr "Punct:" #: templates/gis_data_editor_form.twig:93 #: templates/gis_data_editor_form.twig:134 #: templates/gis_data_editor_form.twig:186 -#, fuzzy, php-format -#| msgid "Point %d" +#, php-format msgid "Point %d:" -msgstr "Punct %d" +msgstr "Punct %d:" #: templates/gis_data_editor_form.twig:113 #, php-format @@ -15898,22 +15840,19 @@ msgid "no branch" msgstr "nicio ramură" #: templates/home/git_info.twig:15 templates/home/git_info.twig:22 -#, fuzzy, php-format -#| msgid "%1$s from %2$s branch" +#, php-format msgid "from %s branch" -msgstr "%1$s din ramura %2$s" +msgstr "din ramura %s" #: templates/home/git_info.twig:25 -#, fuzzy, php-format -#| msgid "committed on %1$s by %2$s" +#, php-format msgid "committed on %s by %s" -msgstr "consemnat pe %1$s de %2$s" +msgstr "consemnat pe %s de %s" #: templates/home/git_info.twig:32 -#, fuzzy, php-format -#| msgid "authored on %1$s by %2$s" +#, php-format msgid "authored on %s by %s" -msgstr "scris pe %1$s de %2$s" +msgstr "scris pe %s de %s" #: templates/home/index.twig:22 templates/login/form.twig:7 #, php-format @@ -15923,7 +15862,7 @@ msgid "" "at %s." msgstr "" "Folosești serverul demonstrativ. Poți face orice aici, dar te rog nu " -"modifica rădăcina, devian-sys-maint sau utilizatorii pma. Mai multe " +"modifica rădăcina, debian-sys-maint sau utilizatorii pma. Mai multe " "informații sunt disponibile la %s." #: templates/home/index.twig:32 @@ -15931,10 +15870,8 @@ msgid "General settings" msgstr "Setări generale" #: templates/home/index.twig:56 -#, fuzzy -#| msgid "Server connection collation" msgid "Server connection collation:" -msgstr "Colaționare conexiune server" +msgstr "Colaționare conexiune server:" #: templates/home/index.twig:79 templates/preferences/manage/main.twig:56 msgid "More settings" @@ -16094,16 +16031,15 @@ msgid "You may also drag and drop a file on any page." msgstr "De asemenea, poți trage și plasa un fișier în orice pagină." #: templates/import.twig:74 templates/import.twig:104 -#, fuzzy, php-format -#| msgid "Select from the web server upload directory %s:" +#, php-format msgid "Select from the web server upload directory [strong]%s[/strong]:" -msgstr "Selectează de pe serverul web un director pentru încărcări %s:" +msgstr "" +"Selectează de pe serverul web un director pentru încărcări " +"[strong]%s[/strong]:" #: templates/import.twig:80 -#, fuzzy -#| msgid "File to import:" msgid "Select file to import" -msgstr "Fișier de importat:" +msgstr "Selectează fișierul de importat" #: templates/import.twig:85 templates/import.twig:115 msgid "There are no files to upload!" @@ -16410,8 +16346,6 @@ msgid "Password:" msgstr "Parolă:" #: templates/login/form.twig:67 -#, fuzzy -#| msgid "Server Choice:" msgid "Server choice:" msgstr "Alegere server:" @@ -16626,10 +16560,8 @@ msgstr "" "%sscriptul de inițializare%s." #: templates/preferences/manage/main.twig:81 -#, fuzzy -#| msgid "Save as file" msgid "Save as JSON file" -msgstr "Salvează ca fișier" +msgstr "Salvează ca fișier JSON" #: templates/preferences/manage/main.twig:85 msgid "Save as PHP file" @@ -16808,10 +16740,8 @@ msgid "Create database" msgstr "Creează bază de date" #: templates/server/databases/index.twig:72 -#, fuzzy -#| msgid "Check privileges for database \"%s\"." msgid "No privileges to create databases" -msgstr "Verifică privilegiile pentru baza de date „%s”." +msgstr "Nu ai privilegii pentru a crea baze de date" #: templates/server/databases/index.twig:159 #: templates/server/replication/index.twig:18 @@ -16864,16 +16794,12 @@ msgid "Storage Engine" msgstr "Motor de stocare" #: templates/server/engines/show.twig:45 -#, fuzzy -#| msgid "Storage engines" msgid "Unknown storage engine." -msgstr "Motoare de stocare" +msgstr "Motor de stocare necunoscut." #: templates/server/export/index.twig:32 -#, fuzzy -#| msgid "@SERVER@ will become the server name" msgid "@SERVER@ will become the server name." -msgstr "@SERVER@ va deveni numele serverului" +msgstr "@SERVER@ va deveni numele server-ului." #: templates/server/export/index.twig:3 msgid "Exporting databases from the current server" @@ -16916,10 +16842,8 @@ msgid "deleting" msgstr "Șterg" #: templates/server/plugins/index.twig:47 -#, fuzzy -#| msgid "Delete" msgid "deleted" -msgstr "Șterge" +msgstr "șterse" #: templates/server/privileges/add_user.twig:12 msgid "Database for user account" @@ -16948,11 +16872,9 @@ msgstr "Introdu:" #: templates/server/privileges/change_password.twig:28 #: templates/server/privileges/login_information_fields.twig:54 -#, fuzzy -#| msgid "Data length" msgctxt "Password strength" msgid "Strength:" -msgstr "Lungime date" +msgstr "Putere:" #: templates/server/privileges/change_password.twig:32 #: templates/server/privileges/login_information_fields.twig:60 @@ -16961,10 +16883,8 @@ msgid "Re-type:" msgstr "Tastează din nou:" #: templates/server/privileges/change_password.twig:40 -#, fuzzy -#| msgid "Password Hashing" msgid "Password Hashing:" -msgstr "Criptare Parola" +msgstr "Criptare parolă:" #: templates/server/privileges/change_password.twig:58 msgid "" @@ -16982,10 +16902,8 @@ msgid "User group" msgstr "Grup de utilizatori" #: templates/server/privileges/choose_user_group.twig:6 -#, fuzzy -#| msgid "User group" msgid "User group:" -msgstr "Grup de utilizatori" +msgstr "Grup de utilizatori:" #: templates/server/privileges/edit_routine_privileges.twig:4 #: templates/server/privileges/user_properties.twig:4 @@ -17138,18 +17056,13 @@ msgid "Password hashing method" msgstr "Criptare Parola" #: templates/server/privileges/login_information_fields.twig:83 -#, fuzzy -#| msgid "" -#| "This method requires using an 'SSL connection' or an " -#| "'unencrypted connection that encrypts the password using RSA'; " -#| "while connecting to the server." msgid "" "This method requires using an 'SSL connection' or an " "'unencrypted connection that encrypts the password using RSA'; " "while connecting to the server." msgstr "" -"Această metodă necesită folosirea unei „conexiuni SSL” sau a unei " -"„conexiuni necriptate care criptează parola folosind RSA”; în timpul " +"Această metodă necesită folosirea unei „conexiuni SSL” sau a unei „" +"conexiuni necriptate care criptează parola folosind RSA”; în timpul " "conectării la server." #: templates/server/privileges/new_user_ajax.twig:52 @@ -17388,10 +17301,8 @@ msgstr "" "să-l %sconfigurezi%s?" #: templates/server/replication/index.twig:43 -#, fuzzy -#| msgid "No privileges." msgid "No privileges" -msgstr "Niciun privilegiu." +msgstr "Niciun privilegiu" #: templates/server/replication/master_add_slave_user.twig:6 #: templates/server/replication/master_replication.twig:44 @@ -17626,34 +17537,24 @@ msgid "Possible performance issues" msgstr "Probleme de performanță posibile" #: templates/server/status/advisor/index.twig:78 -#, fuzzy -#| msgid "Issue" msgid "Issue:" -msgstr "Problemă" +msgstr "Problemă:" #: templates/server/status/advisor/index.twig:81 -#, fuzzy -#| msgid "Recommendation" msgid "Recommendation:" -msgstr "Recomandare" +msgstr "Recomandare:" #: templates/server/status/advisor/index.twig:84 -#, fuzzy -#| msgid "Justification" msgid "Justification:" -msgstr "Justificare" +msgstr "Justificare:" #: templates/server/status/advisor/index.twig:87 -#, fuzzy -#| msgid "Used variable / formula" msgid "Used variable / formula:" -msgstr "Variabilă/formulă folosită" +msgstr "Variabilă/formulă folosită:" #: templates/server/status/advisor/index.twig:90 -#, fuzzy -#| msgid "Test" msgid "Test:" -msgstr "Test" +msgstr "Test:" #: templates/server/status/base.twig:16 msgid "Query statistics" @@ -17899,10 +17800,8 @@ msgstr "" #. l10n: Questions is the name of a MySQL Status variable #: templates/server/status/queries/index.twig:8 -#, fuzzy -#| msgid "Questions since startup: %s" msgid "Questions since startup:" -msgstr "Întrebări de la pornire: %s" +msgstr "Întrebări de la pornire:" #: templates/server/status/queries/index.twig:20 msgid "per hour:" @@ -18202,10 +18101,8 @@ msgid "Rollback when finished" msgstr "Restaurează când termini" #: templates/sql/query.twig:149 -#, fuzzy -#| msgid "Bookmark" msgid "Bookmark:" -msgstr "Semn de carte" +msgstr "Semn de carte:" #: templates/sql/query.twig:156 msgid "shared" @@ -18312,12 +18209,12 @@ msgid "Save chart as image" msgstr "Salvează diagrama ca imagine" #: templates/table/export/index.twig:12 -#, fuzzy -#| msgid ", @DATABASE@ will become the database name" msgid "" "@SERVER@ will become the server name, @DATABASE@ will become the database " "name and @TABLE@ will become the table name." -msgstr ", @DATABASE@ va deveni numele bazei de date" +msgstr "" +"@SERVER@ va deveni numele server-ului, @DATABASE@ va deveni numele bazei de " +"date și @TABLE@ va deveni numele tabelului." #: templates/table/export/index.twig:7 #, php-format @@ -18512,10 +18409,8 @@ msgid "Remove partitioning" msgstr "Înlătură partiționarea" #: templates/table/operations/index.twig:469 -#, fuzzy -#| msgid "Check referential integrity:" msgid "Check referential integrity" -msgstr "Verifică integritatea referențială:" +msgstr "Verifică integritatea referențială" #: templates/table/operations/view.twig:11 msgid "Rename view to" diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 1589f01c73..846ce7f720 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,5 +1,5 @@ - + (int) $this->id @@ -343,10 +343,9 @@ $_FILES['import_file'] - + $bookmark_created $finished - $memory_limit == -1 $timeout_passed @@ -779,9 +778,6 @@ - - ! $row_no - $message @@ -802,6 +798,8 @@ $original_length + + ! isset($column) || $column === null ! isset($column) || $column === null @@ -812,14 +810,6 @@ $col_visib $sortExpressionNoDirection - - $editCopyUrlParams - $editCopyUrlParams - $editCopyUrlParams - $editCopyUrlParams - $editCopyUrlParams - $editCopyUrlParams - $col_visib_current $col_visib_current @@ -1658,12 +1648,6 @@ $analyses - - - $cell_attrs - $text - - [] @@ -2285,7 +2269,8 @@ showOutput startSvgDoc - + + setFont tableDraw diff --git a/test/classes/ConfigTest.php b/test/classes/ConfigTest.php index 655b5c2425..a2ae82bf8e 100644 --- a/test/classes/ConfigTest.php +++ b/test/classes/ConfigTest.php @@ -1211,6 +1211,7 @@ class ConfigTest extends AbstractTestCase 'host' => '', 'controluser' => 'u2', 'controlpass' => 'p2', + 'hide_connection_errors' => false, ]; $cfg_ssl = [ 'user' => 'u', @@ -1219,6 +1220,7 @@ class ConfigTest extends AbstractTestCase 'ssl' => true, 'controluser' => 'u2', 'controlpass' => 'p2', + 'hide_connection_errors' => false, ]; $cfg_control_ssl = [ 'user' => 'u', @@ -1227,6 +1229,7 @@ class ConfigTest extends AbstractTestCase 'control_ssl' => true, 'controluser' => 'u2', 'controlpass' => 'p2', + 'hide_connection_errors' => false, ]; return [ @@ -1247,6 +1250,7 @@ class ConfigTest extends AbstractTestCase 'compress' => false, 'controluser' => 'u2', 'controlpass' => 'p2', + 'hide_connection_errors' => false, ], ], ], @@ -1263,6 +1267,7 @@ class ConfigTest extends AbstractTestCase 'port' => 0, 'ssl' => false, 'compress' => false, + 'hide_connection_errors' => false, ], ], ], @@ -1283,6 +1288,7 @@ class ConfigTest extends AbstractTestCase 'compress' => false, 'controluser' => 'u2', 'controlpass' => 'p2', + 'hide_connection_errors' => false, ], ], ], @@ -1299,6 +1305,7 @@ class ConfigTest extends AbstractTestCase 'port' => 0, 'ssl' => true, 'compress' => false, + 'hide_connection_errors' => false, ], ], ], @@ -1320,6 +1327,7 @@ class ConfigTest extends AbstractTestCase 'controluser' => 'u2', 'controlpass' => 'p2', 'control_ssl' => true, + 'hide_connection_errors' => false, ], ], ], @@ -1336,6 +1344,7 @@ class ConfigTest extends AbstractTestCase 'port' => 0, 'ssl' => true, 'compress' => false, + 'hide_connection_errors' => false, ], ], ], diff --git a/test/classes/Plugins/Import/ImportOdsTest.php b/test/classes/Plugins/Import/ImportOdsTest.php index 1d4f68ba99..e7f41ebaae 100644 --- a/test/classes/Plugins/Import/ImportOdsTest.php +++ b/test/classes/Plugins/Import/ImportOdsTest.php @@ -186,32 +186,12 @@ class ImportOdsTest extends AbstractTestCase $nullCells = ''; $nullCellNames = ''; - $nulls = ', NULL' . str_repeat(', NULL', 44);// 45 empty cells - - $nullCells = ', `T` varchar(10), `U` varchar(10),' - . ' `V` varchar(10), `W` varchar(10), `X` varchar(10), `Y` varchar(10), `Z` varchar(10),' - . ' `AA` varchar(10), `AB` varchar(10), `AC` varchar(10), `AD` varchar(10), `AE` varchar(10),' - . ' `AF` varchar(10), `AG` varchar(10), `AH` varchar(10), `AI` varchar(10), `AJ` varchar(10),' - . ' `AK` varchar(10), `AL` varchar(10), `AM` varchar(10), `AN` varchar(10), `AO` varchar(10),' - . ' `AP` varchar(10), `AQ` varchar(10), `AR` varchar(10), `AS` varchar(10), `AT` varchar(10),' - . ' `AU` varchar(10), `AV` varchar(10), `AW` varchar(10), `AX` varchar(10), `AY` varchar(10),' - . ' `AZ` varchar(10), `BA` varchar(10), `BB` varchar(10), `BC` varchar(10), `BD` varchar(10),' - . ' `BE` varchar(10), `BF` varchar(10), `BG` varchar(10), `BH` varchar(10), `BI` varchar(10),' - . ' `BJ` varchar(10), `BK` varchar(10), `BL` varchar(10)'; - - $nullCellNames = ', `T`, `U`, `V`, `W`, `X`, `Y`, `Z`, `AA`, `AB`, `AC`,' - . ' `AD`, `AE`, `AF`, `AG`, `AH`, `AI`, `AJ`, `AK`, `AL`, `AM`, `AN`, `AO`, `AP`, `AQ`,' - . ' `AR`, `AS`, `AT`, `AU`, `AV`, `AW`, `AX`, `AY`, `AZ`, `BA`, `BB`, `BC`, `BD`, `BE`,' - . ' `BF`, `BG`, `BH`, `BI`, `BJ`, `BK`, `BL`'; - $endOfSql = ');;'; if (! $odsEmptyRowsMode) { - $fullCols = 'NULL' . str_repeat(', NULL', 44 + 19); - $endOfSql = '),' . "\n"// three more empty lines - . ' (' . $fullCols . '),' . "\n" - . ' (' . $fullCols . '),' . "\n" - . ' (' . $fullCols . ');;'; + $nulls = ''; + $fullCols = 'NULL' . str_repeat(', NULL', 18);// 19 empty cells + $endOfSql = '),' . "\n" . ' (' . $fullCols . '),' . "\n" . ' (' . $fullCols . ');;'; } //Test function called @@ -227,6 +207,8 @@ class ImportOdsTest extends AbstractTestCase . ' `Gefahrstoff` varchar(11), `GefahrArbeitsbereich` varchar(14), `Verwendungszweck` varchar(10),' . ' `Verbrauch` varchar(10), `showLagerbestand` varchar(7)' . $nullCells . ') ' . 'DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;;' + . 'CREATE TABLE IF NOT EXISTS `ODS_DB`.`Feuille 1` (`value` varchar(19)) ' + . 'DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;;' . 'INSERT INTO `ODS_DB`.`Shop` (' . '`Artikelnummer`, `Name`, `keywords`, `EK_Preis`, `Preis`, `Details`, `addInfo`, `Einheit`,' . ' `Wirkstoff`, `verkuerztHaltbar`, `kuehlkette`, `Gebinde`, `Verbrauchsnachweis`,' @@ -237,31 +219,45 @@ class ImportOdsTest extends AbstractTestCase . ' \'Stück,Rolle,Pack,Flasche,Sack,Eimer,Karton,Palette,Beutel,Kanister,Paar\', \'ja/nein\',' . ' \'ja/nein\', \'GHS01-GHS09\', \'Arbeitsbereich\', NULL, NULL, \'ja/nein\'' . $nulls . '),' . "\n" - . ' (\'1005\', \'Beatmungsfilter\', NULL, \'0,85\', \'1,2\', NULL, NULL, \'5\', NULL, NULL, \'nein\',' + . ' (\'1005\', \'Beatmungsfilter\', NULL, \'0.85\', \'1,2\', NULL, NULL, \'5\', NULL, NULL, \'nein\',' . ' \'Stück\', \'nein\', \'nein\', NULL, NULL, NULL, NULL, \'ja\'' . $nulls . '),' . "\n" - . ' (\'04-3-06\', \'Absaugkatheter, CH06 grün\', NULL, \'0.13\', \'0.13\', NULL, NULL, \'1\',' + . ' (\'04-3-06\', \'Absaugkatheter, CH06 grün\', NULL, \'0.13\', \'0,13\', NULL, NULL, \'1\',' . ' NULL, NULL,' . ' NULL, \'Stück\', \'nein\', \'nein\', NULL, NULL, NULL, NULL, \'ja\'' . $nulls . '),' . "\n" - . ' (\'04-3-10\', \'Absaugkatheter, CH10 schwarz\', NULL, \'0.13\', \'0.13\', NULL, NULL, \'1\',' + . ' (\'04-3-10\', \'Absaugkatheter, CH10 schwarz\', NULL, \'0.13\', \'0,13\', NULL, NULL, \'1\',' . ' NULL, NULL, NULL, \'Stück\', \'nein\', \'nein\', NULL, NULL, NULL, NULL, \'ja\'' . $nulls . '),' . "\n" - . ' (\'04-3-18\', \'Absaugkatheter, CH18 rot\', NULL, \'0.13\', \'0.13\', NULL, NULL, \'1\',' + . ' (\'04-3-18\', \'Absaugkatheter, CH18 rot\', NULL, \'0.13\', \'0,13\', NULL, NULL, \'1\',' . ' NULL, NULL, NULL, \'Stück\', \'nein\', \'nein\', NULL, NULL, NULL, NULL, \'ja\'' . $nulls . '),' . "\n" - . ' (\'06-38\', \'Bakterienfilter\', NULL, \'1.25\', \'1.25\', NULL, NULL, \'1\', NULL, NULL, NULL,' + . ' (\'06-38\', \'Bakterienfilter\', NULL, \'1.25\', \'1,25\', NULL, NULL, \'1\', NULL, NULL, NULL,' . ' \'Stück\', \'nein\', \'nein\', NULL, NULL, NULL, NULL, \'ja\'' . $nulls . '),' . "\n" - . ' (\'05-453\', \'Blockerspritze für Larynxtubus, Erwachsen\', NULL, \'2.6\', \'2.6\', NULL, NULL,' + . ' (\'05-453\', \'Blockerspritze für Larynxtubus, Erwachsen\', NULL, \'2.6\', \'2,6\', NULL, NULL,' . ' \'1\', NULL, NULL, NULL, \'Stück\', \'nein\', \'nein\', NULL, NULL, NULL, NULL, \'ja\'' . $nulls . '),' . "\n" - . ' (\'04-402\', \'Absaugschlauch mit Fingertip für Accuvac\', NULL, \'1.7\', \'1.7\', NULL, NULL,' + . ' (\'04-402\', \'Absaugschlauch mit Fingertip für Accuvac\', NULL, \'1.7\', \'1,7\', NULL, NULL,' . ' \'1\', NULL, NULL, NULL, \'Stück\', \'nein\', \'nein\', NULL, NULL, NULL, NULL, \'ja\'' . $nulls . '),' . "\n" - . ' (\'02-580\', \'Einmalbeatmungsbeutel, Erwachsen\', NULL, \'8.9\', \'8.9\', NULL, NULL,' + . ' (\'02-580\', \'Einmalbeatmungsbeutel, Erwachsen\', NULL, \'8.9\', \'8,9\', NULL, NULL,' . ' \'1\', NULL, NULL, NULL, \'Stück\', \'nein\', \'nein\', NULL, NULL, NULL, NULL, \'ja\'' . $nulls - . $endOfSql, + . $endOfSql + . 'INSERT INTO `ODS_DB`.`Feuille 1` (`value`) VALUES (' + . '\'test@example.org\'),' . "\n" + . ' (\'123 45\'),' . "\n" + . ' (\'123 \'),' . "\n" + . ' (\'test@example.fr\'),' . "\n" + . ' (\'https://example.org\'),' . "\n" + . ' (\'example.txt\'),' . "\n" + . ' (\'\\\'Feuille 1\\\'!A1:A4\'),' . "\n" + . ' (\'1,50\'),' . "\n" + . ' (\'0.05\'),' . "\n" + . ' (\'true\'),' . "\n" + . ' (\'12\')' + . ($odsEmptyRowsMode ? '' : ',' . "\n" . ' (NULL)') + . ($odsEmptyRowsMode ? ';;' : ',' . "\n" . ' (NULL);;'), $sql_query ); diff --git a/test/classes/Stubs/DbiDummy.php b/test/classes/Stubs/DbiDummy.php index 7cf8c64dea..039794fbd7 100644 --- a/test/classes/Stubs/DbiDummy.php +++ b/test/classes/Stubs/DbiDummy.php @@ -1071,6 +1071,11 @@ class DbiDummy implements DbiExtension . ' WHERE TABLE_SCHEMA = \'ODS_DB\' AND TABLE_NAME = \'Shop\'', 'result' => [], ], + [ + 'query' => 'SELECT TABLE_NAME FROM information_schema.VIEWS' + . ' WHERE TABLE_SCHEMA = \'ODS_DB\' AND TABLE_NAME = \'Feuille 1\'', + 'result' => [], + ], [ 'query' => 'SELECT TABLE_NAME FROM information_schema.VIEWS' . ' WHERE TABLE_SCHEMA = \'ODS_DB\' AND TABLE_NAME = \'pma_bookmark\'', diff --git a/test/test_data/import-slim.ods.xml b/test/test_data/import-slim.ods.xml index aab2135ec6..00665db476 100644 --- a/test/test_data/import-slim.ods.xml +++ b/test/test_data/import-slim.ods.xml @@ -1,2 +1,661 @@ -ArtikelnummerNamekeywordsEK_PreisPreisDetailsaddInfoEinheitWirkstoffverkuerztHaltbarkuehlketteGebindeVerbrauchsnachweisGenehmigungspflichtigGefahrstoffGefahrArbeitsbereichVerwendungszweckVerbrauchshowLagerbestandSchlüsselwörterEinkaufspreis (Netto)VK-Preis (Orientierung)HintergrundinformationVPEverkürzte Haltbarkeitja/neinStück,Rolle,Pack,Flasche,Sack,Eimer,Karton,Palette,Beutel,Kanister,Paarja/neinGHS01-GHS09Arbeitsbereichja/nein1005Beatmungsfilter0,851,25neinStückneinja04-3-06Absaugkatheter, CH06 grün0,13 €1Stückneinja04-3-10Absaugkatheter, CH10 schwarz0,13 €1Stückneinja04-3-18Absaugkatheter, CH18 rot0,13 €1Stückneinja06-38Bakterienfilter1,25 €1Stückneinja05-453Blockerspritze für Larynxtubus, Erwachsen2,60 €1Stückneinja04-402Absaugschlauch mit Fingertip für Accuvac1,70 €1Stückneinja02-580Einmalbeatmungsbeutel, Erwachsen8,90 €1Stückneinja \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Artikelnummer + + + Name + + + keywords + + + EK_Preis + + + Preis + + + Details + + + addInfo + + + Einheit + + + Wirkstoff + + + verkuerztHaltbar + + + kuehlkette + + + Gebinde + + + Verbrauchsnachweis + + + Genehmigungspflichtig + + + Gefahrstoff + + + GefahrArbeitsbereich + + + Verwendungszweck + + + Verbrauch + + + showLagerbestand + + + + + + + Schlüsselwörter + + + Einkaufspreis (Netto) + + + VK-Preis (Orientierung) + + + + Hintergrundinformation + + + VPE + + + + verkürzte Haltbarkeit + + + ja/nein + + + Stück,Rolle,Pack,Flasche,Sack,Eimer,Karton,Palette,Beutel,Kanister,Paar + + + ja/nein + + + ja/nein + + + GHS01-GHS09 + + + Arbeitsbereich + + + + ja/nein + + + + + + 1005 + + + Beatmungsfilter + + + + 0,85 € + + + 1,2 + + + + 5 + + + + nein + + + Stück + + + nein + + + nein + + + + ja + + + + + + 04-3-06 + + + Absaugkatheter, CH06 grün + + + + 0,13 € + + + 0,13 + + + + 1 + + + + Stück + + + nein + + + nein + + + + ja + + + + + + 04-3-10 + + + Absaugkatheter, CH10 schwarz + + + + 0,13 € + + + 0,13 + + + + 1 + + + + Stück + + + nein + + + nein + + + + ja + + + + + + 04-3-18 + + + Absaugkatheter, CH18 rot + + + + 0,13 € + + + 0,13 + + + + 1 + + + + Stück + + + nein + + + nein + + + + ja + + + + + + 06-38 + + + Bakterienfilter + + + + 1,25 € + + + 1,25 + + + + 1 + + + + Stück + + + nein + + + nein + + + + ja + + + + + + 05-453 + + + Blockerspritze für Larynxtubus, Erwachsen + + + + 2,60 € + + + 2,6 + + + + 1 + + + + Stück + + + nein + + + nein + + + + ja + + + + + + 04-402 + + + Absaugschlauch mit Fingertip für Accuvac + + + + 1,70 € + + + 1,7 + + + + 1 + + + + Stück + + + nein + + + nein + + + + ja + + + + + + 02-580 + + + Einmalbeatmungsbeutel, Erwachsen + + + + 8,90 € + + + 8,9 + + + + 1 + + + + Stück + + + nein + + + nein + + + + ja + + + + + + + + + + + + + + + + + + + + value + + + + test@example.org + + + + 123 45 + + + + 123 + + + + test@example.fr + + + + https://example.org + + + + example.txt + + + + 'Feuille 1'!A1:A4 + + + + 1,50 + + + + 05,0000% + + + + true + + + + 012,000 € + + + + + + + + + + + + + + + + + + \ No newline at end of file